Recent Releases of gracklepy
gracklepy - 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
shell
$ pip install gracklepy
On most typical platforms, this will install precompiled wheels. On more exotic platforms, this will try to build Gracklepy from source.
Please be aware that: 1. You should manually uninstall Pygrackle from your python environment (if it's present) before you install Gracklepy 2. 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 https://github.com/grackle-project/grackle/pull/330
- H2 self shielding length scale factor fix https://github.com/grackle-project/grackle/pull/325
- address a bug in calctempcloudy_g.F https://github.com/grackle-project/grackle/pull/367
Enhancements
- Standard Status Reporting Machinery https://github.com/grackle-project/grackle/pull/269
- Remove pygrackle/api.py & pygrackle/utilities/api.py https://github.com/grackle-project/grackle/pull/352
- Rename pygrackle -> gracklepy (so we can upload to PyPI) https://github.com/grackle-project/grackle/pull/371
Build-System
- (core lib) introduce CMakePresets.json to enable compiler warnings in a CI job https://github.com/grackle-project/grackle/pull/334
- (core lib) Relocated all CMake dependency information into dependencies.cmake https://github.com/grackle-project/grackle/pull/296
- (core lib) assorted tweaks: https://github.com/grackle-project/grackle/pull/326 https://github.com/grackle-project/grackle/pull/329 https://github.com/grackle-project/grackle/pull/337
- (gracklepy) tweak cython handling https://github.com/grackle-project/grackle/pull/319 https://github.com/grackle-project/grackle/pull/328
- (gracklepy) Introduce dependency groups https://github.com/grackle-project/grackle/pull/347
Testing
- Support running subset of gracklepy test without an editable install https://github.com/grackle-project/grackle/pull/335
- Move
test_chemistry_struct_synchedbetween test suites https://github.com/grackle-project/grackle/pull/327 - Fix a bug in testgetgrackle_version.py https://github.com/grackle-project/grackle/pull/390
Documentation
- gracklepy test instruction tweaks https://github.com/grackle-project/grackle/pull/309
- Assorted tweaks to appearance of doc website https://github.com/grackle-project/grackle/pull/285 https://github.com/grackle-project/grackle/pull/291 https://github.com/grackle-project/grackle/pull/346
- Fix spacing issues in docs https://github.com/grackle-project/grackle/pull/340
- Simplify GitHub hyperlinks for repository locations in docs https://github.com/grackle-project/grackle/pull/300
- Add more detail to gracklepy build documentation https://github.com/grackle-project/grackle/pull/294
- Added missing He https://github.com/grackle-project/grackle/pull/362
- Added chemistry network table https://github.com/grackle-project/grackle/pull/361
Infrastructure
- Optimize circleci workflows https://github.com/grackle-project/grackle/pull/338
- Introduce an extremely simplistic
.pre-commit-config.yamlfile https://github.com/grackle-project/grackle/pull/348 - Introduce GHA to upload Gracklepy wheels to PyPI https://github.com/grackle-project/grackle/pull/320 https://github.com/grackle-project/grackle/pull/355 https://github.com/grackle-project/grackle/pull/356 https://github.com/grackle-project/grackle/pull/389
- Bump versions of GHA action groups https://github.com/grackle-project/grackle/pull/360 https://github.com/grackle-project/grackle/pull/363 https://github.com/grackle-project/grackle/pull/365 https://github.com/grackle-project/grackle/pull/372 https://github.com/grackle-project/grackle/pull/373
- Move test-data retrieval logic into
scripts/ci/fetch-test-data.pyhttps://github.com/grackle-project/grackle/pull/307 - Address flake8 warnings (in files that it previously ignored) https://github.com/grackle-project/grackle/pull/368 https://github.com/grackle-project/grackle/pull/369
- Use builtin GitHub feature to nicely redirect to Code of Conduct https://github.com/grackle-project/grackle/pull/342
- Convert README.md to README.rst (and deduplicate content on the website landing page) https://github.com/grackle-project/grackle/pull/350 https://github.com/grackle-project/grackle/pull/351
Contributors
- @brittonsmith
- @KeiganM (new!)
- @mabruzzo
- @mcsmithastro (new!)
Full Changelog: https://github.com/grackle-project/grackle/compare/grackle-3.4.0...grackle-3.4.1
- C
Published by mabruzzo 10 months ago
gracklepy - 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):
sh
cmake -B build
cmake --build ./build
Machine-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) https://github.com/grackle-project/grackle/pull/199 - Updating behavior of
HydrogenFractionByMassparameter https://github.com/grackle-project/grackle/pull/200 - Introduce
gr_initialize_field_datafunction https://github.com/grackle-project/grackle/pull/205 https://github.com/grackle-project/grackle/pull/233 - Introduce
GR_SUCCESSandGR_FAILas named constants for status-reporting https://github.com/grackle-project/grackle/pull/217 get_temperature_unitsandget_velocity_unitsnow acceptconst* code_unitsas an argument https://github.com/grackle-project/grackle/pull/230- Introduce
gr_required_unitsfunction https://github.com/grackle-project/grackle/pull/209 - Introduce
gr_check_consistencyfunction https://github.com/grackle-project/grackle/pull/279 - Pygrackle: allow unsupported simulation types to work with grackle yt fields. https://github.com/grackle-project/grackle/pull/213 #### Bugfixes
- fix import VisibleDeprecationWarning numpy 2.0 https://github.com/grackle-project/grackle/pull/240
- Tweaks required for 3.4 release (Fortran Binding bugfix and a few removals) https://github.com/grackle-project/grackle/pull/265
- Backport some minor bugfixes https://github.com/grackle-project/grackle/pull/289
- Fix bugs in $H2$ self-shielding implementations in solveratecoolg.F https://github.com/grackle-project/grackle/pull/299 #### Build System
- Refactoring so all autogenerated files are put in separate dir https://github.com/grackle-project/grackle/pull/203
- Introducing Experimental Supplementary CMake Build System https://github.com/grackle-project/grackle/pull/182 https://github.com/grackle-project/grackle/pull/238
- Fixup query_version.py https://github.com/grackle-project/grackle/pull/242
- mach file for fedora https://github.com/grackle-project/grackle/pull/252
- Rename
configdirectory so that it's now calledsupporthttps://github.com/grackle-project/grackle/pull/305 - Address Less Common CMake Configuration Issues https://github.com/grackle-project/grackle/pull/310
- Mention Enzo-E as an example for auto-install https://github.com/grackle-project/grackle/pull/314 #### Testing
- Testing Refactor https://github.com/grackle-project/grackle/pull/215
- Convert reaction rate test to gold standard model https://github.com/grackle-project/grackle/pull/236
- Update grackle data files submodule. https://github.com/grackle-project/grackle/pull/239
- Transition
Pygracklefromsetuptoolstoscikit-build-corehttps://github.com/grackle-project/grackle/pull/208 - Example Google Test created https://github.com/grackle-project/grackle/pull/243
- Answer test refactor https://github.com/grackle-project/grackle/pull/245
- Convert
cxx_grid_exampleto a googletest test-case https://github.com/grackle-project/grackle/pull/254 - Tweaking code example tests https://github.com/grackle-project/grackle/pull/258
- Make
pytestinvokable from the root directory https://github.com/grackle-project/grackle/pull/282 - Add instructions for running the corelib tests https://github.com/grackle-project/grackle/pull/284
- 2 minor (but important) googletest-related CMake tweaks https://github.com/grackle-project/grackle/pull/295
- tests: gracefully handle
yt_grackletest-case whenYT_DATA_DIRisn't defined https://github.com/grackle-project/grackle/pull/302
Documentation
- Better Describe Local Functions - with
"sphinx_tabs"https://github.com/grackle-project/grackle/pull/206 - Adopt ReadTheDocs theme https://github.com/grackle-project/grackle/pull/221
- add a list of software that uses Grackle to the
README.mdfile https://github.com/grackle-project/grackle/pull/225 - Updating the README https://github.com/grackle-project/grackle/pull/293
Deprecations
- Deprecate public headers other than
grackle.handgrackle.defhttps://github.com/grackle-project/grackle/pull/229 https://github.com/grackle-project/grackle/pull/288 - Deprecated classic build system (scheduled for removal in the next PR) https://github.com/grackle-project/grackle/pull/304 #### Miscellaneous
- Moved public headers into a separate directory. https://github.com/grackle-project/grackle/pull/188
- Remove the lone
cimport numpyline https://github.com/grackle-project/grackle/pull/224 - Centralized configuration information within config.py.in https://github.com/grackle-project/grackle/pull/244
- Fix ReadTheDocs doc CI build https://github.com/grackle-project/grackle/pull/257
- CI: shift core-library tests to a separate "job" https://github.com/grackle-project/grackle/pull/283
- Circleci tweaks -- from Gold Standard Update https://github.com/grackle-project/grackle/pull/298 https://github.com/grackle-project/grackle/pull/308
src/example/Makefilecleanup https://github.com/grackle-project/grackle/pull/311- Introduce a warning discouraging people from using
pygrackle.utilities.data_path.grackle_data_dirin external code https://github.com/grackle-project/grackle/pull/297 ## Contributors - @brittonsmith
- @ChristopherBignamini (new!)
- @hsinhaoHHuang (new!)
- @mabruzzo
- @omne-shree (new!)
- @thinhhn2 (new!)
Full Changelog: https://github.com/grackle-project/grackle/compare/grackle-3.3.0...grackle-3.4.0
- C
Published by mabruzzo about 1 year ago
gracklepy - 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 https://github.com/grackle-project/grackle/pull/159
Minor Enhancements
- Refactor the
cloudy_datastruct so that thegrid_{dimension,parameters}members are fixed-size arrays https://github.com/grackle-project/grackle/pull/167 - Add error-check on
grackle_field_data.grid_dxhttps://github.com/grackle-project/grackle/pull/190, https://github.com/grackle-project/grackle/pull/191
Bugfixes
- Minor tweaks to
initialize_rates.chttps://github.com/grackle-project/grackle/pull/168 - explicitly initialize all struct members to solve plethora of issues https://github.com/grackle-project/grackle/pull/166
- Fix memory leak https://github.com/grackle-project/grackle/pull/169
- Add missing fields to pygrackle https://github.com/grackle-project/grackle/pull/173
- Fix pygrackle H number density and mean molecular weight calculations in https://github.com/grackle-project/grackle/pull/180
Documentation Updates
- Add mention of clocalexample to docs https://github.com/grackle-project/grackle/pull/174
- Fix a minor typo in documentation related to
grid_dxhttps://github.com/grackle-project/grackle/pull/176 - Document release procedure and describe versioning policy https://github.com/grackle-project/grackle/pull/194
Infrastructure Updates
- Introduce
c_local_exampleand fixed inconsistencies inc_examplehttps://github.com/grackle-project/grackle/pull/170 - Update linux-gnu makefile https://github.com/grackle-project/grackle/pull/183
- Add
c_local_exampleto list of executable removed bymake cleanhttps://github.com/grackle-project/grackle/pull/186 - Factor out some file-generation machinery https://github.com/grackle-project/grackle/pull/181
Removed Functions
All functions deprecated in the 3.2 release were fully removed in https://github.com/grackle-project/grackle/pull/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 "": `setdefaultchemistryparameters,initializechemistrydata,freechemistry_data`
Contributors
- @brittonsmith
- @EwanBJones98
- @mabruzzo
- @mladenivkovic (new!)
- @tiapac (new!)
Full Changelog: https://github.com/grackle-project/grackle/compare/grackle-3.2.1...grackle-3.3.0
- C
Published by mabruzzo about 2 years ago
gracklepy - 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 localfreechemistry_data https://github.com/grackle-project/grackle/pull/161
- Add missing declaration of localfreechemistry_data https://github.com/grackle-project/grackle/pull/163
Contributors
- @brittonsmith
- @snigdaa (new!)
Full Changelog: https://github.com/grackle-project/grackle/compare/grackle-3.2.0...grackle-3.2.1
- C
Published by brittonsmith almost 3 years ago
gracklepy - 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 https://github.com/grackle-project/grackle/pull/43, https://github.com/grackle-project/grackle/pull/94
- Use Grackle in yt fields https://github.com/grackle-project/grackle/pull/62
- New high density cooling table https://github.com/grackle-project/grackle/pull/71
- Callable functions for all reaction rates https://github.com/grackle-project/grackle/pull/87
- New getvelocityunits and gettemperatureunits functions https://github.com/grackle-project/grackle/pull/97, https://github.com/grackle-project/grackle/pull/96
- Updated H2 self-shielding (reissue of PR #72) https://github.com/grackle-project/grackle/pull/98
- New dynamic API https://github.com/grackle-project/grackle/pull/130, https://github.com/grackle-project/grackle/pull/141
Minor Enhancements
- Use gamma in mean molecular weight. https://github.com/grackle-project/grackle/pull/65
- Add ability to query the Grackle Version https://github.com/grackle-project/grackle/pull/109
- Embed compiled precision into grackle header. https://github.com/grackle-project/grackle/pull/118
- Convert iteration limit to a runtime parameter https://github.com/grackle-project/grackle/pull/124
- Pygrackle mu improvements https://github.com/grackle-project/grackle/pull/54
- Change redshift interpolation to log(1+z) https://github.com/grackle-project/grackle/pull/126
- Significant Pygrackle refactor https://github.com/grackle-project/grackle/pull/88, https://github.com/grackle-project/grackle/pull/140
- Add updated H2-H rate based on Lique (2015) https://github.com/grackle-project/grackle/pull/61
- Add test of synchronization between
chemistry_dataand dynamic API. https://github.com/grackle-project/grackle/pull/136 - Modified the
chemistry_datastruct so that theomp_nthreadsis always a field https://github.com/grackle-project/grackle/pull/148 - Add machine file for tigercpu at Princeton https://github.com/grackle-project/grackle/pull/74
- MacOS Big Sur makefile https://github.com/grackle-project/grackle/pull/84
- Updating makefiles for NASA's HECC machines https://github.com/grackle-project/grackle/pull/86
- Updates for Stampede Builds https://github.com/grackle-project/grackle/pull/58
Bugfixes
- Mmw bugfix https://github.com/grackle-project/grackle/pull/79
- fix energy and pressure units in pygrackle https://github.com/grackle-project/grackle/pull/49
- Update cool1dmultig.F https://github.com/grackle-project/grackle/pull/59
- Fixing lifetime issue for grackledatapath in the Cython Grackle wrapper https://github.com/grackle-project/grackle/pull/80
- Fix velocity_units in freefall.py https://github.com/grackle-project/grackle/pull/92
- fix internal velocity units https://github.com/grackle-project/grackle/pull/97
- Fix line length issues https://github.com/grackle-project/grackle/pull/102
- Avoid use of uninitialized variables when setting the timestep in dense gas https://github.com/grackle-project/grackle/pull/103
- Modify property calculations to respect
grid_startandgrid_stophttps://github.com/grackle-project/grackle/pull/106 - provide sensible version info without git https://github.com/grackle-project/grackle/pull/114
- Change getgrackleversion to explicitly accept zero arguments. https://github.com/grackle-project/grackle/pull/115
- Changing innerrange to
static inlineto avoid undefined reference https://github.com/grackle-project/grackle/pull/117 - Remove duplicate precision definition during compile https://github.com/grackle-project/grackle/pull/137
- Changed the type of
chemistry_data'sgrackle_data_filefield fromchar*toconst char*https://github.com/grackle-project/grackle/pull/147 - fix oversight where some dynamic API functions initially had
size_tin their signature & necessitated inclusion of<stddef.h>https://github.com/grackle-project/grackle/pull/144, https://github.com/grackle-project/grackle/pull/149 - Bugfix: making inline legacy internal grackle functions work in C codes https://github.com/grackle-project/grackle/pull/157
Documentation Updates
- Update comment https://github.com/grackle-project/grackle/pull/52
- Add instructions for how to initialize data submodule. https://github.com/grackle-project/grackle/pull/82
- Updated Documentation https://github.com/grackle-project/grackle/pull/90
- Expand units documentation and remove ceiling on metal density https://github.com/grackle-project/grackle/pull/121
- Document optimization issues in Fortran example with gfortran 9.2.1 & 9.4.0 https://github.com/grackle-project/grackle/pull/125
- Add warnings about compiling in single precision. https://github.com/grackle-project/grackle/pull/120
- Add documentation for CaseBRecombination parameter. https://github.com/grackle-project/grackle/pull/122
- Add clarification to docs on electron density. https://github.com/grackle-project/grackle/pull/131
- documentation fixes for later sphinx versions https://github.com/grackle-project/grackle/pull/132
- Expand discussion in documentation of cooling units. https://github.com/grackle-project/grackle/pull/154
- Add warning about self-shielding cooling tables. https://github.com/grackle-project/grackle/pull/155
Infrastructure Updates
- Switch from csh to bash in configure. https://github.com/grackle-project/grackle/pull/47
- add data files as submodule https://github.com/grackle-project/grackle/pull/75
- Update pygrackle version to 1.0.0 and add metadata. https://github.com/grackle-project/grackle/pull/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 "") https://github.com/grackle-project/grackle/pull/44
* ``solvechemistry
*calculatecoolingtime
*calculategamma
*calculatepressure
*calculatetemperature
* Remaining functions starting with "_" https://github.com/grackle-project/grackle/pull/139
*setdefaultchemistryparameters(renamedlocalinitializechemistryparameters)
*initializechemistrydata(renamedlocalinitializechemistrydata)
*freechemistrydata(renanedlocalfreechemistrydata)
*freechemistry_data`` added 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
- C
Published by brittonsmith about 3 years ago