Skip to content

Releases: grackle-project/grackle

grackle 3.4.1 and gracklepy 1.2

22 Aug 18:41
af79394

Choose a tag to compare

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 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 #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_synched between 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.yaml file #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

Full Changelog: grackle-3.4.0...grackle-3.4.1

grackle-3.4.0

14 May 15:50
d70ea71

Choose a tag to compare

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 ./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
  • 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 HydrogenFractionByMass parameter #200
  • Introduce gr_initialize_field_data function #205 #233
  • Introduce GR_SUCCESS and GR_FAIL as named constants for status-reporting #217
  • get_temperature_units and get_velocity_units now accept const* code_units as an argument #230
  • Introduce gr_required_units function #209
  • Introduce gr_check_consistency function #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 config directory so that it's now called support #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 Pygrackle from setuptools to scikit-build-core #208
  • Example Google Test created #243
  • Answer test refactor #245
  • Convert cxx_grid_example to a googletest test-case #254
  • Tweaking code example tests #258
  • Make pytest invokable 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_grackle test-case when YT_DATA_DIR isn'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.md file #225
  • Updating the README #293

Deprecations

  • Deprecate public headers other than grackle.h and grackle.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 numpy line #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/Makefile cleanup #311
  • Introduce a warning discouraging people from using pygrackle.utilities.data_path.grackle_data_dir in external code #297

Contributors

Full Changelog: grackle-3.3.0...grackle-3.4.0

grackle-3.3.0

28 May 00:58
33d7ee2

Choose a tag to compare

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_data struct so that the grid_{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_example and fixed inconsistencies in c_example #170
  • Update linux-gnu makefile #183
  • Add c_local_example to list of executable removed by make 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

Full Changelog: grackle-3.2.1...grackle-3.3.0

grackle-3.2.1

19 Jul 10:42
787cd0f

Choose a tag to compare

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

Full Changelog: grackle-3.2.0...grackle-3.2.1

grackle-3.2.0

22 May 14:23
fa5c6ba

Choose a tag to compare

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_data and dynamic API. #136
  • Modified the chemistry_data struct so that the omp_nthreads is 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_start and grid_stop #106
  • provide sensible version info without git #114
  • Change get_grackle_version to explicitly accept zero arguments. #115
  • Changing _inner_range to static inline to avoid undefined reference #117
  • Remove duplicate precision definition during compile #137
  • Changed the type of chemistry_data's grackle_data_file field from char* to const char* #147
  • fix oversight where some dynamic API functions initially had size_t in 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 (renamed local_initialize_chemistry_parameters)
    • _initialize_chemistry_data (renamed local_initialize_chemistry_data)
    • _free_chemistry_data (renaned local_free_chemistry_data)
    • free_chemistry_data added to free structures in grackle.h

Contributors

Full Changelog: https://github.com/grackle-project/grackle/commits/grackle-3.2.0