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_synched between 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.yaml file 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.py https://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
  • 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 HydrogenFractionByMass parameter https://github.com/grackle-project/grackle/pull/200
  • Introduce gr_initialize_field_data function https://github.com/grackle-project/grackle/pull/205 https://github.com/grackle-project/grackle/pull/233
  • Introduce GR_SUCCESS and GR_FAIL as named constants for status-reporting https://github.com/grackle-project/grackle/pull/217
  • get_temperature_units and get_velocity_units now accept const* code_units as an argument https://github.com/grackle-project/grackle/pull/230
  • Introduce gr_required_units function https://github.com/grackle-project/grackle/pull/209
  • Introduce gr_check_consistency function 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 config directory so that it's now called support https://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 Pygrackle from setuptools to scikit-build-core https://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_example to 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 pytest invokable 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_grackle test-case when YT_DATA_DIR isn'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.md file 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.h and grackle.def https://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 numpy line 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/Makefile cleanup 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 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_data struct so that the grid_{dimension,parameters} members are fixed-size arrays https://github.com/grackle-project/grackle/pull/167
  • Add error-check on grackle_field_data.grid_dx https://github.com/grackle-project/grackle/pull/190, https://github.com/grackle-project/grackle/pull/191

Bugfixes

  • Minor tweaks to initialize_rates.c https://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_dx https://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_example and fixed inconsistencies in c_example https://github.com/grackle-project/grackle/pull/170
  • Update linux-gnu makefile https://github.com/grackle-project/grackle/pull/183
  • Add c_local_example to list of executable removed by make clean https://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_data and dynamic API. https://github.com/grackle-project/grackle/pull/136
  • Modified the chemistry_data struct so that the omp_nthreads is 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_start and grid_stop https://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 inline to 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's grackle_data_file field from char* to const char* https://github.com/grackle-project/grackle/pull/147
  • fix oversight where some dynamic API functions initially had size_t in 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