Skip to content

1.4.0 Release Candidate#159

Draft
haykh wants to merge 318 commits intomasterfrom
1.4.0rc
Draft

1.4.0 Release Candidate#159
haykh wants to merge 318 commits intomasterfrom
1.4.0rc

Conversation

@haykh
Copy link
Copy Markdown
Collaborator

@haykh haykh commented Dec 16, 2025

TODO

New features

Breaking changes for the users

  • C++20 is the new standard, CMake 3.5+ is now required (per 98669a2)
  • Unnecessary inheritances of arch::ProblemGenerator are now removed
  • Unnecessary inheritances of arch::EnergyDistribution, arch::SpatialDistribution are removed

API changes for the users

  • [radiation] added to input substituting the previous [algorithms.synchrotron] etc.
  • [species.cooling] is now [species.radiative_drag].
  • traits::compatible_with in PGen is now ::traits::pgen::compatible_with, imported from a header #include "traits/pgen.h". All default pgens have been changed.
  • pgen::ext_force is substituted with pgen::ExternalFields to also support external field components ::ex1, ::ex2, ::ex3, ::bx1, ::bx2, ::bx3 (external em fields) on top of the already supported ::fx1, ::fx2, ::fx3 (external force). Example usage included in pgens/examples/external_fields.

Architectural changes for the devs

  • C++20 concept-s and requires-clauses replace the sfinae tests C++20 Concepts #161
  • plog and toml11 headers are now explicitly in the include directory and are fixed fc13991.
  • Parameter reading is fully modularized.
  • Cooling changed to RadiativeDrag; now accepts multiple entries.
  • PrtlPusher similarly changed to ParticlePusher; now accepts composition of different values.
  • Contstructor for kernel::[sr/gr]::Pusher_kernel are now cleaner accepting auxiliary classes: PusherParams, PusherArrays, and PusherBoundaries as well as Policies.
  • additional unit tests added for the problem generator traits.
  • srpic.hpp and grpic.hpp are now subdivided into different dedicated header files with explicit functions.
  • kernel::sr::Pusher_kernel now accepts a set of extra policies, which encode (a) whether to apply atmospheric boundary conditions, (b) custom particle update, (c) external fields/forces, (d) emission policies.
  • code styles are now enforced with clang-tidy, clang-format and cmake-format.
  • added mandatory pre-merge test scripts to be run before any merge takes place.

Bug fixes

Minor changes

  • bumped all dependency version (incl. Kokkos to 5.0.0, and ADIOS2 to 2.11.0)
  • support for 2D arrays in input file (per e207373)
  • -D TESTS=ON can now be used together with pgen to also compile all unit tests.
  • GRPIC now compiles when no init_flds is present in pgen (per f13a68d)
  • stdc++fs now only links with non-AppleClang compilers, since on Apple Clang it's linked by default, and will raise an error if linked explicitly.
  • clear_interval can now be controlled per each species.
  • stats output which is written into the .csv file now has a better print precision (per 5603df3).
  • Consistent Integer Sizes across different categories #201 npart_t and ncells_t are now tied to uint32_t. new counter (loop index) types introduced: cellidx_t and prtlidx_t
    new range types introduced: cell_range_t and prtl_slice_t; use of implicit size_t is minimized

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment