Skip to content

Version 0.5.0

Latest
Compare
Choose a tag to compare
@sethrj sethrj released this 07 Oct 12:30
· 82 commits to develop since this release
a3088af

Version 0.5.0 is a major update to Celeritas featuring:

  • Numerous performance improvements
  • Automatic Geant4-to-ORANGE geometry translation
  • Single coulomb scattering process and improved MSC options
  • Rasterization using any navigation engine with celer-geo

Several major new capabilities are at an experimental, proof-of-concept
level of readiness and reach prototype stage during the v0.5 series:

  • Optical photon generation and physics
  • Muon physics
  • High-energy neutron physics

A few minor features are noteworthy:

  • Improved error detection and output
  • New diagnostic output for slots and steps
  • Support for native CLHEP or SI unit systems
  • CPU profiling available through Perfetto
  • Support for saving and loading offloaded primaries via ROOT

Major infrastructure changes include:

  • Nlohmann JSON is now required (downloaded automatically if unavailable)
  • SWIG wrappers have been removed
  • More granular CMake options are available for threading model and debugging

The release includes the following changes, plus all features and bug fixes
from v0.4.4.

New features

Reviewers: @sethrj (53), @elliottbiondo (32), @amandalund (25), @whokion (12), @stognini (8), @mrguilima (7), @pcanal (5), @esseivaju (4), @drbenmorgan (3), @hhollenb (1)

Bug fixes

  • Change propagation fatal error to be recoverable (@sethrj, #1090)
  • Fix position check after propagating (@amandalund, #1094)
  • Workaround missing G4persistency target bug in Geant4 11.2 (@drbenmorgan, #1122)
  • Fix single-precision soft equivalence for plane (@sethrj, #1139)
  • Fix prism orientation in Geant4 ORANGE solid converter (@sethrj, #1193)
  • Fix no-JSON and Windows builds (@sethrj, #1200)
  • Fix Wentzel OK&VI transport cross section (@amandalund, #1202)
  • Fix gentrap orientation (@sethrj, #1206)
  • Fix polar angle sampling and Mott factor in Wentzel distribution (@amandalund, #1212)
  • Fix minor dependency issues (@sethrj, #1219)
  • Fix trapezoid construction for negative phi and older Geant4 (@sethrj, #1227)
  • Propagate parent bounding boxes to ensure objects have finite extents (@sethrj, #1225)
  • Regularize quadric surfaces to deduplicate opposing surfaces (@sethrj, #1237)
  • Fix windows test builds (@sethrj, #1255)
  • Fix Geant4-to-ORANGE transformation conversion (@sethrj, #1257)
  • Fix CSG tree simplification needed by tilecal (@sethrj, #1256)
  • Fix trapezoid construction (@sethrj, #1265)
  • Work around union/polysolid boundaries and fix transformation of explicit daughters (@sethrj, #1264)
  • Use pre-step optical material ID in optical pre-generators (@amandalund, #1297)
  • Fix muon bremsstrahlung energy limits and sampling (@amandalund, #1319)
  • Fix downstream CMake when using CUDA and not included at top level (@esseivaju, #1323)
  • Properly clear state counters and data for reuse (@amandalund, #1367)
  • Fix initialization of geometry state when inserting multiple sets of primaries (@amandalund, #1369)
  • Clear along-step action when track is marked as errored (@amandalund, #1377)
  • Fix Geant4 setup when single Coulomb scattering is enabled (@amandalund, #1392)
  • Improve multithread GPU performance by removing subtle device sync (@amandalund, #1405)
  • Work around GCC 12.3 compiler bugs (@whokion, #1407)
  • Fix construction of single-volume Geant4 with ORANGE and activate examples (@sethrj, #1409)
  • Loosen numerically iffy test tolerance (@esseivaju, #1435)
  • Fix weak vtables causing dynamic_cast error in apple clang 16 (@sethrj, #1436)
  • Test and fix nuclear form factors (@sethrj, #1398)

Reviewers: @sethrj (14), @elliottbiondo (8), @mrguilima (5), @amandalund (2), @pcanal (2), @hhollenb (1), @whokion (1), @esseivaju (1)

Documentation improvements

Reviewers: @amandalund (19), @sethrj (10), @pcanal (5), @esseivaju (5), @stognini (4), @elliottbiondo (1), @drbenmorgan (1)

Minor internal changes

  • Remove unused data from ImportElement/Material (@sethrj, #1089)
  • Refactor Geant4 utilities in preparation for g4vg (@sethrj, #1095)
  • Reorganize geometry wrappers into a new "geocel" directory (@sethrj, #1099)
  • Rename ORANGE construction files (@sethrj, #1106)
  • Split CMake RDC utilities from Celeritas macros (@pcanal, #1104)
  • Fix ORANGE namespaces (@sethrj, #1117)
  • Fix missing explicit instantiations in ORANGE CSB (@sethrj, #1124)
  • Add compile-time consistency check for Celeritas and Geant4 versions (@sethrj, #1123)
  • Transform refactoring (@sethrj, #1127)
  • Use correct form of enable_if for functions (@sethrj, #1135)
  • Refactor MSC params and add Wentzel VI params and data (@amandalund, #1129)
  • Rename Wentzel model to CoulombScattering and add em/params subdirectory (@amandalund, #1154)
  • Add generic grid builder and refactor builder code that uses generic grids (@sethrj, #1157)
  • Split ExplicitActionInterface to support optical data (@pcanal, #1160)
  • Fix SWIG build (@sethrj, #1159)
  • Rename scale methods in g4vg (@sethrj, #1175)
  • Tweak ORANGE construction (@sethrj, #1178)
  • Add small utilities for rasterization work (@sethrj, #1185)
  • Update CMake user preset (@esseivaju, #1195)
  • Move unit enumeration to corecel and improve assertion flexibility (@sethrj, #1197)
  • Make "output interface" streamable (@sethrj, #1203)
  • Refactor ActionSequence to be templated on Params (@esseivaju, #1209)
  • Use string view for interface labels and descriptions (@sethrj, #1210)
  • Fix library macro compatibility wrappers (@sethrj, #1215)
  • Split optical pre-generator action into separate Cerenkov and scintillation actions (@amandalund, #1217)
  • Write celer-sim results as 'null' when they're disabled (@sethrj, #1223)
  • Refactor trapezoid construction (@sethrj, #1221)
  • Add generic grid inserter to simplify construction (@hhollenb, #1229)
  • Split ORANGE test into subtests (@sethrj, #1234)
  • Update single and multiple Coulomb scattering configurations in GeantPhysicsList (@amandalund, #1239)
  • Rename ConvexRegion to IntersectRegion (@sethrj, #1245)
  • Minor refactoring/niceties for upcoming polycone work (@sethrj, #1246)
  • Add gdml-to-dot and improve celer-geo (@sethrj, #1252)
  • Set correct energy limits for Coulomb scattering (@amandalund, #1266)
  • Refactor nuclear zone builder to separate numerical integration (@sethrj, #1275)
  • Improve GenTrap regularization and construction (@sethrj, #1262)
  • Refactor optical data to use extensible params/states (@sethrj, #1280)
  • Require JSON (@sethrj, #1254)
  • Store model action IDs in model class instead of in data (@amandalund, #1293)
  • Add helper functions for sampling/calculating direction in interactors (@amandalund, #1301)
  • Add final state helper for ionization interactions (@amandalund, #1306)
  • Add a helper function to copy a "collection group" back to the host (@sethrj, #1310)
  • Skip indirection array for sorted track slots (@sethrj, #1315)
  • Remove celeritas include in corecel (@esseivaju, #1328)
  • Refactor types to reduce duplication and cyclic dependencies (@sethrj, #1327)
  • Update frontier toolchain and backward compatibility (@sethrj, #1330)
  • Consolidate header naming convention (@esseivaju, #1325)
  • Reduce string duplication from assertion messages (@sethrj, #1338)
  • Add optical sub-namespace (@hhollenb, #1314)
  • Fix minor compile error/warning with nvcc+clang (@esseivaju, #1343)
  • Fix clang-tidy checks, including some use-after-move (@esseivaju, #1352)
  • Refactor rejection sampling using a helper class (@sethrj, #1354)
  • Improve use of distributions and simplify interactions (@sethrj, #1357)
  • Accept single CsgTree from stdin (@esseivaju, #1366)
  • Clang format develop with clang 18 (@sethrj, #1372)
  • Allow normal distribution to preserve spare value (@sethrj, #1371)
  • Define optical MaterialView and rename MaterialParams (@sethrj, #1370)
  • Sample cerenkov photons one at a time using rejection (@sethrj, #1373)
  • Sample scintillation photons individually (@sethrj, #1376)
  • Count number of optical primaries to be generated from distributions (@amandalund, #1379)
  • Fix warnings on updated Cray/ROCm toolchain (@sethrj, #1381)
  • Allow sim params without looping (@sethrj, #1382)
  • Rename ExplicitAction to StepAction and add templating (@sethrj, #1387)
  • Refactor primaries as aux data (@sethrj, #1393)
  • Change LocalTransporter deallocation semantics (@sethrj, #1403)
  • Refactor action sequence into action group plus extras (@sethrj, #1410)
  • Define "static" concrete action for those with unique name/description (@sethrj, #1416)
  • Improve PRINT_EXPECTED formatting for long strings and vectors (@sethrj, #1420)
  • Support aliased nodes during CsgTree simplification (@esseivaju, #1418)
  • Refactor action launcher components into kernel launcher (@sethrj, #1423)
  • Add total_energy accessor to ParticleTrackView (@amandalund, #1432)
  • Clang format develop with clang 18 (@sethrj, #1437)
  • Rename track slot enumerations (@sethrj, #1434)
  • Add a hack to override ORANGE max intersections/faces (@sethrj, #1430)
  • Add global MPI communicator and refactor some internals (@sethrj, #1428)

Reviewers: @amandalund (30), @sethrj (21), @elliottbiondo (7), @stognini (5), @esseivaju (5), @whokion (4), @mrguilima (4), @drbenmorgan (3), @pcanal (2), @tmdelellis (1)

Full Changelog: v0.4.4...v0.5.0