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]
