Releases: grackle-project/grackle
grackle 3.4.1 and gracklepy 1.2
We are pleased to announce the release of Grackle 3.4.1 and Gracklepy 1.2.
Grackle is a library that provides chemistry and radiative cooling solver for astrophysical simulations and models. Gracklepy provides python bindings to the Grackle library.
This release consists of 43 Pull Requests from 4 contributors (2 of them are first-time contributors).
Highlight: Releasing Gracklepy 1.2
The highlight of this announcement is the release of Gracklepy 1.2. Gracklepy was formerly known as Pygrackle, but the name has been changed in this release (to let us upload to PyPI).
As of this release, you can now install Gracklepy from PyPI by invoking
$ pip install gracklepyOn most typical platforms, this will install precompiled wheels. On more exotic platforms, this will try to build Gracklepy from source.
Please be aware that:
- You should manually uninstall Pygrackle from your python environment (if it's present) before you install Gracklepy
- Gracklepy and Grackle rely upon data files for most use-cases. At this time, you will still need to manually download the data files yourself (but there are some pending pull requests that will change this in a future release)
List of All Changes:
Bugfixes
- Fix a significant oversight in GrackleConfig.cmake #330
- H2 self shielding length scale factor fix #325
- address a bug in calc_temp_cloudy_g.F #367
Enhancements
- Standard Status Reporting Machinery #269
- Remove pygrackle/api.py & pygrackle/utilities/api.py #352
- Rename pygrackle -> gracklepy (so we can upload to PyPI) #371
Build-System
- (core lib) introduce CMakePresets.json to enable compiler warnings in a CI job #334
- (core lib) Relocated all CMake dependency information into dependencies.cmake #296
- (core lib) assorted tweaks: #326 #329 #337
- (gracklepy) tweak cython handling #319 #328
- (gracklepy) Introduce dependency groups #347
Testing
- Support running subset of gracklepy test without an editable install #335
- Move
test_chemistry_struct_synchedbetween test suites #327 - Fix a bug in test_get_grackle_version.py #390
Documentation
- gracklepy test instruction tweaks #309
- Assorted tweaks to appearance of doc website #285 #291 #346
- Fix spacing issues in docs #340
- Simplify GitHub hyperlinks for repository locations in docs #300
- Add more detail to gracklepy build documentation #294
- Added missing He #362
- Added chemistry network table #361
Infrastructure
- Optimize circleci workflows #338
- Introduce an extremely simplistic
.pre-commit-config.yamlfile #348 - Introduce GHA to upload Gracklepy wheels to PyPI #320 #355 #356 #389
- Bump versions of GHA action groups #360 #363 #365 #372 #373
- Move test-data retrieval logic into
scripts/ci/fetch-test-data.py#307 - Address flake8 warnings (in files that it previously ignored) #368 #369
- Use builtin GitHub feature to nicely redirect to Code of Conduct #342
- Convert README.md to README.rst (and deduplicate content on the website landing page) #350 #351
Contributors
- @brittonsmith
- @KeiganM (new!)
- @mabruzzo
- @mcsmithastro (new!)
Full Changelog: grackle-3.4.0...grackle-3.4.1
grackle-3.4.0
Grackle 3.4 and pygrackle 1.1 are released!
Grackle is a library that provides chemistry and radiative cooling solver for astrophysical simulations and models. Pygrackle provides python bindings to the Grackle library.
This release consists of 53 Pull Requests from 6 contributors (4 of them are first-time contributors). It includes 8 minor enhancements and 4 bugfixes. This release features a number of usability improvements: (i) a new CMake Build System, (ii) introduce machinery to make it easier for simulation codes to link against Grackle, and (iii) making Pygrackle easier to install
If you're updating an existing git-repository, we suggest invoking make clean within src/clib directory before updating to the newest commit. The placement of artifacts produced by the Classic build-system had to be slightly modified to better coexist with the new CMake Build System.
Important
Grackle's Classic Makefile-based build-system has been deprecated and is scheduled for removal in the next minor release (3.5). Please, start using the new CMake-based system, and reach out to us (via GitHub/Slack/the mailing) with any questions/problems/issues.
The new CMake Build System
We have introduced a new CMake build-system. On most platforms, you can compile Grackle by simply cloning the repository and invoking the standard CMake commands (from the root of the repository):
cmake -B build
cmake --build ./buildMachine-specific files aren't needed! (But they can still be used). Our Installation Guide provides detailed instructions for users that have never used CMake before, provides a troubleshooting guide (e.g. if HDF5 is installed in an irregular location), and describes additional configuration options (e.g. selecting floating point precision, enabling OpenMP).
The new CMake build-system is generally more robust than the classic build system (e.g. build-artifacts are more likely to be correct when using a new machine).
Easier Grackle-Integration in Simulation Codes
Our new Integration Guide provides detailed descriptions of functionality that the new CMake Build System provides to make Grackle easier to use as a dependency in external applications. Some highlights include:
- If an external code is built with CMake, the code's build-system can
- perform automatic dependency management of Grackle. For example, Enzo-E's build-system can automatically download, compile, & link Grackle as part of building Enzo-E
- use CMake's
find_packagecommand to link against standalone Grackle installations. There's experimental support for linking against Grackle builds (i.e. that aren't installed)
- For external codes build with ANY build-system:
- use the grackle.pc file (provided in Grackle installations). To use this file you you can either use the pkg-config (or pkgconf) command-line tool (a standard tool provided at many computing facillities) or wrapper-commands provided by many popular build systems (e.g. autotools, Meson, or even CMake).
- the grackle.pc files provides meta-data and the compiler/linker flags needed to use Grackle
Importantly, all of the above functionality makes it possible to easily use Grackle as a static library and for the query Grackle metadata during builds (e.g. version number, precision of gr_float, configuration of OpenMP)
Making Pygrackle easier to install
Installing Pygrackle has never been easier. After downloading Grackle (and making sure HDF5 installed), you can simply invoke pip install . from the root directory. While installing Pygrackle, this will automatically compile a fresh copy of Grackle and include it as part of Pygrackle (the documentation explains how to link against pre-installed copies of Grackle).
Behind the scenes, we've replaced Pygrackle's build backend. We have plans to support installation of Pygrackle from PyPI in the near future.
List of All Changes
Minor Enhancements
- headers can now be directly included in C++ source files (without wrapping them in
extern "C"blocks) #199 - Updating behavior of
HydrogenFractionByMassparameter #200 - Introduce
gr_initialize_field_datafunction #205 #233 - Introduce
GR_SUCCESSandGR_FAILas named constants for status-reporting #217 get_temperature_unitsandget_velocity_unitsnow acceptconst* code_unitsas an argument #230- Introduce
gr_required_unitsfunction #209 - Introduce
gr_check_consistencyfunction #279 - Pygrackle: allow unsupported simulation types to work with grackle yt fields. #213
Bugfixes
- fix import VisibleDeprecationWarning numpy 2.0 #240
- Tweaks required for 3.4 release (Fortran Binding bugfix and a few removals) #265
- Backport some minor bugfixes #289
- Fix bugs in
$H_2$ self-shielding implementations in solve_rate_cool_g.F #299
Build System
- Refactoring so all autogenerated files are put in separate dir #203
- Introducing Experimental Supplementary CMake Build System #182 #238
- Fixup query_version.py #242
- mach file for fedora #252
- Rename
configdirectory so that it's now calledsupport#305 - Address Less Common CMake Configuration Issues #310
- Mention Enzo-E as an example for auto-install #314
Testing
- Testing Refactor #215
- Convert reaction rate test to gold standard model #236
- Update grackle data files submodule. #239
- Transition
Pygracklefromsetuptoolstoscikit-build-core#208 - Example Google Test created #243
- Answer test refactor #245
- Convert
cxx_grid_exampleto a googletest test-case #254 - Tweaking code example tests #258
- Make
pytestinvokable from the root directory #282 - Add instructions for running the corelib tests #284
- 2 minor (but important) googletest-related CMake tweaks #295
- tests: gracefully handle
yt_grackletest-case whenYT_DATA_DIRisn't defined #302
Documentation
- Better Describe Local Functions - with
"sphinx_tabs"#206 - Adopt ReadTheDocs theme #221
- add a list of software that uses Grackle to the
README.mdfile #225 - Updating the README #293
Deprecations
- Deprecate public headers other than
grackle.handgrackle.def#229 #288 - Deprecated classic build system (scheduled for removal in the next PR) #304
Miscellaneous
- Moved public headers into a separate directory. #188
- Remove the lone
cimport numpyline #224 - Centralized configuration information within config.py.in #244
- Fix ReadTheDocs doc CI build #257
- CI: shift core-library tests to a separate "job" #283
- Circleci tweaks -- from Gold Standard Update #298 #308
src/example/Makefilecleanup #311- Introduce a warning discouraging people from using
pygrackle.utilities.data_path.grackle_data_dirin external code #297
Contributors
- @brittonsmith
- @ChristopherBignamini (new!)
- @hsinhaoHHuang (new!)
- @mabruzzo
- @omne-shree (new!)
- @thinhhn2 (new!)
Full Changelog: grackle-3.3.0...grackle-3.4.0
grackle-3.3.0
Grackle 3.3 is released!
Grackle is a chemistry and radiative cooling solver for astrophysical simulations and models.
The Grackle 3.3 release consists of 20 pull requests from 5 contributors, 2 of them new to the project. It contains 1 new feature, 2 minor enhancements, 5 bugfixes, and some documentation improvements. 8 previously deprecated functions have also been removed. See below for further details.
This also marks the release of version 1.0.1 of Pygrackle (the Python interface to Grackle).
New Features
- Add temperature floor field #159
Minor Enhancements
- Refactor the
cloudy_datastruct so that thegrid_{dimension,parameters}members are fixed-size arrays #167 - Add error-check on
grackle_field_data.grid_dx#190, #191
Bugfixes
- Minor tweaks to
initialize_rates.c#168 - explicitly initialize all struct members to solve plethora of issues #166
- Fix memory leak #169
- Add missing fields to pygrackle #173
- Fix pygrackle H number density and mean molecular weight calculations in #180
Documentation Updates
- Add mention of c_local_example to docs #174
- Fix a minor typo in documentation related to
grid_dx#176 - Document release procedure and describe versioning policy #194
Infrastructure Updates
- Introduce
c_local_exampleand fixed inconsistencies inc_example#170 - Update linux-gnu makefile #183
- Add
c_local_exampleto list of executable removed bymake clean#186 - Factor out some file-generation machinery #181
Removed Functions
All functions deprecated in the 3.2 release were fully removed in #184. The functions include:
- functions taking all field arrays as arguments:
_solve_chemistry,_calculate_cooling_time,_calculate_gamma,_calculate_pressure,_calculate_temperature - other functions prefixed with a "_":
_set_default_chemistry_parameters,_initialize_chemistry_data,_free_chemistry_data
Contributors
- @brittonsmith
- @EwanBJones98
- @mabruzzo
- @mladenivkovic (new!)
- @tiapac (new!)
Full Changelog: grackle-3.2.1...grackle-3.3.0
grackle-3.2.1
Grackle 3.2.1 is released!
Grackle is a chemistry and radiative cooling solver for astrophysical simulations and models.
The Grackle 3.2.1 release contains two bugfixes.
Bugfixes
- Add missing return value in local_free_chemistry_data #161
- Add missing declaration of local_free_chemistry_data #163
Contributors
- @brittonsmith
- @snigdaa (new!)
Full Changelog: grackle-3.2.0...grackle-3.2.1
grackle-3.2.0
Grackle 3.2 is released!
Grackle is a chemistry and radiative cooling solver for astrophysical simulations and models.
The Grackle 3.2 release consists of 75 pull requests from 13 contributors, 8 of them new to the project. It contains 7 new features, 14 minor enhancements, 15 bugfixes, and significantly enhanced documentation. 8 functions have also been deprecated and will be removed in the future. See below for further details.
This also marks the official release of Pygrackle 1.0. Pygrackle is the Python interface to Grackle. Pygrackle has been a part of Grackle since the beginning, but from this point on it will be properly versioned.
New Features
- Enhanced dust treatment #43, #94
- Use Grackle in yt fields #62
- New high density cooling table #71
- Callable functions for all reaction rates #87
- New get_velocity_units and get_temperature_units functions #97, #96
- Updated H2 self-shielding (reissue of PR #72) #98
- New dynamic API #130, #141
Minor Enhancements
- Use gamma in mean molecular weight. #65
- Add ability to query the Grackle Version #109
- Embed compiled precision into grackle header. #118
- Convert iteration limit to a runtime parameter #124
- Pygrackle mu improvements #54
- Change redshift interpolation to log(1+z) #126
- Significant Pygrackle refactor #88, #140
- Add updated H2-H rate based on Lique (2015) #61
- Add test of synchronization between
chemistry_dataand dynamic API. #136 - Modified the
chemistry_datastruct so that theomp_nthreadsis always a field #148 - Add machine file for tigercpu at Princeton #74
- MacOS Big Sur makefile #84
- Updating makefiles for NASA's HECC machines #86
- Updates for Stampede Builds #58
Bugfixes
- Mmw bugfix #79
- fix energy and pressure units in pygrackle #49
- Update cool1d_multi_g.F #59
- Fixing lifetime issue for grackle_data_path in the Cython Grackle wrapper #80
- Fix velocity_units in freefall.py #92
- fix internal velocity units #97
- Fix line length issues #102
- Avoid use of uninitialized variables when setting the timestep in dense gas #103
- Modify property calculations to respect
grid_startandgrid_stop#106 - provide sensible version info without git #114
- Change get_grackle_version to explicitly accept zero arguments. #115
- Changing _inner_range to
static inlineto avoid undefined reference #117 - Remove duplicate precision definition during compile #137
- Changed the type of
chemistry_data'sgrackle_data_filefield fromchar*toconst char*#147 - fix oversight where some dynamic API functions initially had
size_tin their signature & necessitated inclusion of<stddef.h>#144, #149 - Bugfix: making inline legacy internal grackle functions work in C codes #157
Documentation Updates
- Update comment #52
- Add instructions for how to initialize data submodule. #82
- Updated Documentation #90
- Expand units documentation and remove ceiling on metal density #121
- Document optimization issues in Fortran example with gfortran 9.2.1 & 9.4.0 #125
- Add warnings about compiling in single precision. #120
- Add documentation for CaseBRecombination parameter. #122
- Add clarification to docs on electron density. #131
- documentation fixes for later sphinx versions #132
- Expand discussion in documentation of cooling units. #154
- Add warning about self-shielding cooling tables. #155
Infrastructure Updates
- Switch from csh to bash in configure. #47
- add data files as submodule #75
- Update pygrackle version to 1.0.0 and add metadata. #151
Deprecations
The following functions have been deprecated and will be removed in the next feature release.
- Functions taking all field arrays as arguments (starting in "_") #44
_solve_chemistry_calculate_cooling_time_calculate_gamma_calculate_pressure_calculate_temperature
- Remaining functions starting with "_" #139
_set_default_chemistry_parameters(renamedlocal_initialize_chemistry_parameters)_initialize_chemistry_data(renamedlocal_initialize_chemistry_data)_free_chemistry_data(renanedlocal_free_chemistry_data)free_chemistry_dataadded to free structures in grackle.h
Contributors
- @AviFriedlander (new!)
- @BenWibking (new!)
- @brittonsmith
- @clairekope (new!)
- @EwanBJones98 (new!)
- @h3jia (new!)
- @jwise77
- @leonardromano (new!)
- @loikki
- @mabruzzo (new!)
- @peeples
- @scog1234
- @weiguangcui (new!)
Full Changelog: https://github.com/grackle-project/grackle/commits/grackle-3.2.0