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 the *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 list) 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 <https://grackle.readthedocs.io/en/latest/Installation.html> 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
<https://grackle.readthedocs.io/en/latest/Integration.html> 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
      
<https://grackle.readthedocs.io/en/latest/Integration.html#embed-grackle-in-sim-build>.
      For example, Enzo-E <https://github.com/enzo-project/enzo-e>'s
      build-system can automatically download, compile, & link Grackle
as part of
      building Enzo-E
      - use CMake's find_package command
      
<https://grackle.readthedocs.io/en/latest/Integration.html#cmake-s-find-package>
      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
      
<https://grackle.readthedocs.io/en/latest/Integration.html#pkgconfig-grackle-linking>
      (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 facilities) 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 query Grackle metadata during builds (e.g.
version number, precision of gr_float, whether it's configured with 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
   <https://github.com/grackle-project/grackle/pull/199>
   - Updating behavior of HydrogenFractionByMass parameter  #200
   <https://github.com/grackle-project/grackle/pull/200>
   - Introduce gr_initialize_field_data function  #205
   <https://github.com/grackle-project/grackle/pull/205>  #233
   <https://github.com/grackle-project/grackle/pull/233>
   - Introduce GR_SUCCESS and GR_FAIL as named constants for
   status-reporting  #217
   <https://github.com/grackle-project/grackle/pull/217>
   - get_temperature_units and get_velocity_units now accept const*
   code_units as an argument #230
   <https://github.com/grackle-project/grackle/pull/230>
   - Introduce gr_required_units function  #209
   <https://github.com/grackle-project/grackle/pull/209>
   - Introduce gr_check_consistency function #279
   <https://github.com/grackle-project/grackle/pull/279>
   - Pygrackle: allow unsupported simulation types to work with grackle yt
   fields  #213 <https://github.com/grackle-project/grackle/pull/213>

*Bugfixes:*

   - fix import VisibleDeprecationWarning numpy 2.0  #240
   <https://github.com/grackle-project/grackle/pull/240>
   - Tweaks required for 3.4 release (Fortran Binding bugfix and a few
   removals)  #265 <https://github.com/grackle-project/grackle/pull/265>
   - Backport some minor bugfixes  #289
   <https://github.com/grackle-project/grackle/pull/289>
   - Fix bugs in H_2 self-shielding implementations in *solve_rate_cool_g.F*
   #299 <https://github.com/grackle-project/grackle/pull/299>

*Build System:*

   - Refactoring so all autogenerated files are put in separate dir  #203
   <https://github.com/grackle-project/grackle/pull/203>
   - Introducing Experimental Supplementary CMake Build System  #182
   <https://github.com/grackle-project/grackle/pull/182> #238
   <https://github.com/grackle-project/grackle/pull/238>
   - Fixup query_version.py  #242
   <https://github.com/grackle-project/grackle/pull/242>
   - mach file for fedora #252
   <https://github.com/grackle-project/grackle/pull/252>
   - Rename `config` directory so that it's now called `support`  #305
   <https://github.com/grackle-project/grackle/pull/305>
   - Address Less Common CMake Configuration Issues  #310
   <https://github.com/grackle-project/grackle/pull/310>
   - Mention Enzo-E as an example for auto-install  #314
   <https://github.com/grackle-project/grackle/pull/314>

*Testing:*

   - Testing Refactor  #215
   <https://github.com/grackle-project/grackle/pull/215>
   - Convert reaction rate test to gold standard model  #236
   <https://github.com/grackle-project/grackle/pull/236>
   - Update grackle data files submodule.  #239
   <https://github.com/grackle-project/grackle/pull/239>
   - Transition Pygrackle from "setuptools" to "scikit-build-core" #208
   <https://github.com/grackle-project/grackle/pull/208>
   - Example Google Test created #243
   <https://github.com/grackle-project/grackle/pull/243>
   - Answer test refactor  #245
   <https://github.com/grackle-project/grackle/pull/245>
   - Convert "cxx_grid_example" to a googletest test-case  #254
   <https://github.com/grackle-project/grackle/pull/254>
   - Tweaking code example tests  #258
   <https://github.com/grackle-project/grackle/pull/258>
   - Make pytest invokable from the root directory  #282
   <https://github.com/grackle-project/grackle/pull/282>
   - Add instructions for running the corelib tests  #284
   <https://github.com/grackle-project/grackle/pull/284>
   - 2 minor (but important) googletest-related CMake tweaks  #295
   <https://github.com/grackle-project/grackle/pull/295>
   - tests: gracefully handle "yt_grackle" test-case when YT_DATA_DIR isn't
   defined  #302 <https://github.com/grackle-project/grackle/pull/302>

*Documentation*

   - Better Describe Local Functions - with "sphinx_tabs"  #206
   <https://github.com/grackle-project/grackle/pull/206>
   - Adopt ReadTheDocs theme  #221
   <https://github.com/grackle-project/grackle/pull/221>
   - add a list of software that uses Grackle to *README.md*  #225
   <https://github.com/grackle-project/grackle/pull/225>
   - Update *README.md*  #293
   <https://github.com/grackle-project/grackle/pull/293>

*Deprecations:*

   - Deprecate public headers other than *grackle.h* and *grackle.def*  #229
   <https://github.com/grackle-project/grackle/pull/229>  #288
   <https://github.com/grackle-project/grackle/pull/288>
   - Deprecate classic build system (scheduled for removal in 3.5) #304
   <https://github.com/grackle-project/grackle/pull/304>

*Miscellaneous:*

   - Moved public headers into a separate directory #188
   <https://github.com/grackle-project/grackle/pull/188>
   - Remove the lone cimport numpy line #224
   <https://github.com/grackle-project/grackle/pull/224>
   - Centralized configuration information within __config__.py.in  #244
   <https://github.com/grackle-project/grackle/pull/244>
   - Fix ReadTheDocs doc CI build  #257
   <https://github.com/grackle-project/grackle/pull/257>
   - CI: shift core-library tests to a separate "job"  #283
   <https://github.com/grackle-project/grackle/pull/283>
   - Circleci tweaks -- from Gold Standard Update  #298
   <https://github.com/grackle-project/grackle/pull/298> #308
   <https://github.com/grackle-project/grackle/pull/308>
   - *src/example/Makefile* cleanup  #311
   <https://github.com/grackle-project/grackle/pull/311>
   - Introduce a warning discouraging people from using
   pygrackle.utilities.data_path.grackle_data_dir in external code #297
   <https://github.com/grackle-project/grackle/pull/297>

*Contributors*

   - Britton Smith (@brittonsmith <https://github.com/brittonsmith>)
   - Christopher Bignamini (@ChristopherBignamini
   <https://github.com/ChristopherBignamini>) (new!)
   - Hsinhao Huang (@hsinhaoHHuang <https://github.com/hsinhaoHHuang>)
   (new!)
   - Matthew Abruzzo (@mabruzzo <https://github.com/mabruzzo>)
   - @omne-shree <https://github.com/omne-shree> (new!)
   - Thinh H. Nguyen (@thinhhn2 <https://github.com/thinhhn2>) (new!)

*Grackle Advisory Council*

   - Matthew Abruzzo
   - Greg Bryan
   - Desika Narayanan
   - Marta Reina-Campos
   - Britton Smith
   - Matthew Turk

*Full Changelog**:*
https://github.com/grackle-project/grackle/compare/grackle-3.3.0...grackle-3.4.0
_______________________________________________
yt-users mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/yt-users.python.org/
Member address: [email protected]

Reply via email to