Recent Releases of artis

artis - v2025.08.01

Performance

  • sim2010 classic mode 2-120 days 2e7pkt 960 core JUWELS runtime decreased from 915.7 core hrs (v2024.02.17) to 776.8 core hours (12% faster). Compared to classic (5741.5 core hours) this is 7.39x faster.
  • W7 (Shingles et al. 2022) NLTE nebular 960 core 2e9pkt 150-410d JUWELS decreased from 4888.0 core hrs (v2024.02.17) to 4358.7 core hrs (12% speedup).

What's Changed

  • Add scripts to sum CPU core hours from sn3d or slurm logs by @lukeshingles in https://github.com/artis-mcrt/artis/pull/169
  • Refactor boundary checks and remove last_cross by @lukeshingles in https://github.com/artis-mcrt/artis/pull/176
  • DIRECTCOLHEAT: Don't allocate or update colheatingestimator by @lukeshingles in https://github.com/artis-mcrt/artis/pull/177
  • Sort linelist by wavelength (not always unique), element, ion, lowerlevel, upperlevel by @lukeshingles in https://github.com/artis-mcrt/artis/pull/178
  • Create nuclides.out to associate packets with decays of specific nuclides by @lukeshingles in https://github.com/artis-mcrt/artis/pull/179
  • Add pellet_decaytype column to packets*.out by @lukeshingles in https://github.com/artis-mcrt/artis/pull/183
  • Fix unit error in XCOM gamma-ray photoionization cross sections (non-default settings) by @gleck97 in https://github.com/artis-mcrt/artis/pull/185
  • Avoid malloc and replace some raw pointer usage by @lukeshingles in https://github.com/artis-mcrt/artis/pull/188
  • Block allocate all levels and share on node by @lukeshingles in https://github.com/artis-mcrt/artis/pull/189
  • GSI Virgo cluster: Update from vae24 to vae25 and drop gcc-12 from test matrix by @lukeshingles in https://github.com/artis-mcrt/artis/pull/197
  • Fix phi binning for rare theta=0 packets by @lukeshingles in https://github.com/artis-mcrt/artis/pull/198
  • Allow removing unimportant ion stages from the NLTE population solver by @fionntancallan in https://github.com/artis-mcrt/artis/pull/187
  • Add extra clang-tidy checks for implicit narrowing conversions by @lukeshingles in https://github.com/artis-mcrt/artis/pull/196
  • Refactor and define doemissionres = true (removing input.txt option) by @lukeshingles in https://github.com/artis-mcrt/artis/pull/200
  • Handle species with zero bound electrons (e.g. He III) by @fionntancallan in https://github.com/artis-mcrt/artis/pull/199
  • Add safe wrappers around MPI calls by @lukeshingles in https://github.com/artis-mcrt/artis/pull/202
  • Fix DO_TITER option by @AlexHls in https://github.com/artis-mcrt/artis/pull/186
  • Fix checks on superlevel population inversions when STRICTPOPULATIONCHECKING is true by @fionntancallan in https://github.com/artis-mcrt/artis/pull/204
  • Update nltephotospheric tests to include Fe VI and VII and He in atomic data by @fionntancallan in https://github.com/artis-mcrt/artis/pull/203
  • Add IONNLEVELSNLTE to artisoptions by @fionntancallan in https://github.com/artis-mcrt/artis/pull/206
  • Fix no LTE reset when NLTELIMITIONSTAGESAFTER_FAILURE can not find solution by @fionntancallan in https://github.com/artis-mcrt/artis/pull/207
  • Enable libc++ unsafe-buffer warnings and remove almost all pointer arithmetic by @lukeshingles in https://github.com/artis-mcrt/artis/pull/205
  • Remove unused TRACKIONSTATS by @lukeshingles in https://github.com/artis-mcrt/artis/pull/211
  • Write angle-resolved output during simulation by @lukeshingles in https://github.com/artis-mcrt/artis/pull/215
  • Refactor NLTE solver by @lukeshingles in https://github.com/artis-mcrt/artis/pull/218
  • Add initial support for dielectronic recombination by @ssim in https://github.com/artis-mcrt/artis/pull/161
  • Use atomic operations to accumulate spectra/lc to node shared memory on all ranks simultaneously by @lukeshingles in https://github.com/artis-mcrt/artis/pull/220
  • Fix for LLVM clang-tidy 21.1.0-rc1 by @lukeshingles in https://github.com/artis-mcrt/artis/pull/221

Full Changelog: https://github.com/artis-mcrt/artis/compare/v2025.02.17...v2025.08.01

- C++
Published by lukeshingles 11 months ago

artis - v2025.02.17

Performance

  • sim2010 classic mode 2-120 days 2e7pkt 960 core JUWELS runtime decreased from 1.13k core hrs (v2024.09.1) to 1.04k core hours (9% faster). Compared to classic (11.45k core hours) this is 11.0x faster.
  • W7 (Shingles et al. 2022) NLTE nebular 960 core 2e9pkt 150-410d JUWELS decreased from 6436 core hrs (v2024.09.1) to 6241 core hrs (3% speedup).

What's Changed

  • Remove redundant checks in get_nphixstargets() by @lukeshingles in https://github.com/artis-mcrt/artis/pull/126
  • Treat alpha deposition as pure heating instead of non-thermal lepton ionisation/excitation/heating by @lukeshingles in https://github.com/artis-mcrt/artis/pull/128
  • Support statically-linking GSL with STATICGSL=ON by @lukeshingles in https://github.com/artis-mcrt/artis/pull/129
  • Add Lotz approximation for non-thermal ionisation without Arnaud & Rothenflug data by @lukeshingles in https://github.com/artis-mcrt/artis/pull/132
  • Makefile: set ffp-contract=off in reproducible mode by @lukeshingles in https://github.com/artis-mcrt/artis/pull/137
  • Replace printout macro with function (to prepare for C++23 std::format) by @lukeshingles in https://github.com/artis-mcrt/artis/pull/138
  • Improve hybrid NLTE performance by @lukeshingles in https://github.com/artis-mcrt/artis/pull/133
  • Use more nonemptymgi indicies and remove more pointers from ModelGridCell by @lukeshingles in https://github.com/artis-mcrt/artis/pull/140
  • Share on node modelgrid array, non-thermal solver solution by @lukeshingles in https://github.com/artis-mcrt/artis/pull/142
  • Auto-detect model dimensions by @lukeshingles in https://github.com/artis-mcrt/artis/pull/143
  • Always require MPI by @lukeshingles in https://github.com/artis-mcrt/artis/pull/144
  • Don't save nonthermalspec files by @lukeshingles in https://github.com/artis-mcrt/artis/pull/146
  • Check working directory matched as well as pid running to prevent multiple sn3d running in same directory by @lukeshingles in https://github.com/artis-mcrt/artis/pull/147
  • Speed up hybrid NLTE mode when LTEPOPEXCITATIONUSE_TJ = false by @lukeshingles in https://github.com/artis-mcrt/artis/pull/148
  • Enable more clangd/clang-tidy warnings by @lukeshingles in https://github.com/artis-mcrt/artis/pull/150
  • CI: split slow test mode into separate workflow by @lukeshingles in https://github.com/artis-mcrt/artis/pull/152
  • Add STACKTRACE=ON for assertion failures (C++23 feature supported by gcc >= 14) by @lukeshingles in https://github.com/artis-mcrt/artis/pull/151
  • Add Apple clang compile check by @lukeshingles in https://github.com/artis-mcrt/artis/pull/155
  • Switch _builtinunreachable to std::unreachable() by @lukeshingles in https://github.com/artis-mcrt/artis/pull/156
  • Fix artisoptions_christinenonthermal.h and add check for compilation of all option files by @lukeshingles in https://github.com/artis-mcrt/artis/pull/158
  • STDPAR parallelise update_grid components by @lukeshingles in https://github.com/artis-mcrt/artis/pull/157
  • Ignore spurious gamma emission from nuclear de-excitations included in betaminusdecays.txt by @lukeshingles in https://github.com/artis-mcrt/artis/pull/160
  • Adding submit file for kelvin2 @ qub by @fmcneill49 in https://github.com/artis-mcrt/artis/pull/162
  • Replace raw pointers with spans by @lukeshingles in https://github.com/artis-mcrt/artis/pull/165

New Contributors

  • @fmcneill49 made their first contribution in https://github.com/artis-mcrt/artis/pull/162

Full Changelog: https://github.com/artis-mcrt/artis/compare/v2024.09.1...v2025.02.17

- C++
Published by lukeshingles over 1 year ago

artis - v2024.09.1

What's Changed

  • Fix resetting particle dep estimators (low impact) by @lukeshingles in https://github.com/artis-mcrt/artis/pull/124
  • Replace level transition and phixtarget pointers with indicies into block allocations by @lukeshingles in https://github.com/artis-mcrt/artis/pull/123
  • Move warning for Planck peak outside NUMINR, NUMAXR from packet prop to grid update

Full Changelog: https://github.com/artis-mcrt/artis/compare/v2024.09...v2024.09.1

Performance

sim2010 classic mode 2-120 days 2e7pkt 960 core JUWELS runtime decreased from 1.18k core hrs (v2024.09) to 1.13k core hours (4.5% faster). Compared to classic (11.45k core hours) this is 10.1x faster.

- C++
Published by lukeshingles almost 2 years ago

artis - v2024.09

What's Changed

  • Detect and disallow variable shadowing by @lukeshingles in https://github.com/artis-mcrt/artis/pull/115
  • Perf: Cache array of level pops in photoionisation nu_edge order by @lukeshingles in https://github.com/artis-mcrt/artis/pull/118
  • Reduce heap fragmentation during startup and store allcont keep condition in cell cache by @lukeshingles https://github.com/artis-mcrt/artis/pull/116
  • Default off for VERIFYWRITTENPACKETS_FILES by @lukeshingles in https://github.com/artis-mcrt/artis/pull/122

Full Changelog: https://github.com/artis-mcrt/artis/compare/v2024.08...v2024.09

Performance

The previous release v2024.08 was not benchmarked, but significant gains have been made since v2024.04 with bit-identical output (except for the classic phixs read-in fix in v2024.08). - W7 (Shingles et al. 2022) NLTE nebular 960 core 2e9pkt 150-410d JUWELS runtime decreased from 18.6k core hrs (published 2022) to 10.4k core hrs (v2024.04 version) to 6.4k core hrs (2.9x faster than 2022). - With the Simpson-rule integrator, time decreases to 4.96k core hrs (3.7x faster than 2022) - subMch Shen+2018 NLTE nebular 960 core 1e9pkt 150-410d runtime decreased from 13.14k core hrs (20210417 version) to 7.30 k core hrs (v2024.04) to 5.36k core hrs (2.45x faster than 20210417). - sim2010 classic mode 2-120 days 2e7pkt 960 core JUWELS runtime decreased from 11.45k core hrs (ARTIS-CLASSIC) to 3.81k core hrs (20230526 version) to 1.87k core hrs (v2024.04) to 1.18k core hrs (9.7x faster than classic).

- C++
Published by lukeshingles almost 2 years ago

artis - v2024.08

What's Changed

Important fix for reading classic phixsdata.txt tables (broken since v2023.05)

  • Fix phixs classic readin by @fionntancallan in https://github.com/artis-mcrt/artis/pull/113

Other changes

  • Reduce bfrate raw on each node and Broadcast reduced quantity; Replace nt_bcast with MPI Pack/Unpack by @jpollin98 in https://github.com/artis-mcrt/artis/pull/82
  • Extend electron binding energies and shell occupancy data for work function approximation of non-thermal ionisation by @ccollins22 in https://github.com/artis-mcrt/artis/pull/62
  • Update Just opacity in every time step by @gleck97 in https://github.com/artis-mcrt/artis/pull/84
  • Add Wollaeger thermalisation scheme by @gleck97 in https://github.com/artis-mcrt/artis/pull/89
  • Makefile: Avoid unnecessary compilation and linking of up-to-date sn3d and exspec by @lukeshingles in https://github.com/artis-mcrt/artis/pull/87
  • Avoid dereferencing pointers to zero-size photoionisation arrays by @lukeshingles in https://github.com/artis-mcrt/artis/pull/90
  • Fix time bug in Barnes gamma thermalisation and ray-tracing error in Wollaeger gamma thermalisation by @lukeshingles in https://github.com/artis-mcrt/artis/pull/95
  • Track per-cell emission and deposition rates for alphas, positrons, and electrons by @lukeshingles in https://github.com/artis-mcrt/artis/pull/86
  • Add Guttman Gamma Thermalisation by @gleck97 in https://github.com/artis-mcrt/artis/pull/93
  • Fix compilation errors for nvc++ 24.5 with unified-memory GPUs and clang 19 by @lukeshingles in https://github.com/artis-mcrt/artis/pull/98
  • Use stable_sort for test reproducibility across C++ standard library implementations by @lukeshingles in https://github.com/artis-mcrt/artis/pull/102
  • Fix some clang-tidy 19 warnings, use more std::ranges, const correctness, and anonymous namespaces by @lukeshingles in https://github.com/artis-mcrt/artis/pull/103
  • Convert more raw pointers to std::vectors, flatten nested arrays, and simplify naming by @lukeshingles in https://github.com/artis-mcrt/artis/pull/104
  • Communicate elemental abundance updates between ranks by @lukeshingles in https://github.com/artis-mcrt/artis/pull/105
  • Use node-shared memory for non-thermal excitation ratecoeffs by @jpollin98 in https://github.com/artis-mcrt/artis/pull/99
  • Nonthermal: simplify and reduce memory use, clean up comments by @lukeshingles in https://github.com/artis-mcrt/artis/pull/107
  • NLTE: Reuse matrix and vector storage instead of alloc/free on each element solution by @lukeshingles in https://github.com/artis-mcrt/artis/pull/108
  • Non-thermal: Reduce heap allocations during update_grid by @lukeshingles in https://github.com/artis-mcrt/artis/pull/109
  • Shrink upper-triangular Spencer-Fano matrix during construction and avoid linelist lookups while looping through excitations by @lukeshingles in https://github.com/artis-mcrt/artis/pull/110
  • Use stable_sort only for reproducible CI mode by @lukeshingles in https://github.com/artis-mcrt/artis/pull/111
  • Improve checks during phixs file reads and make PHIXSCLASSICNO_INTERPOLATION constexpr by @lukeshingles in https://github.com/artis-mcrt/artis/pull/114

Full Changelog: https://github.com/artis-mcrt/artis/compare/v2024.06.03...v2024.08

- C++
Published by lukeshingles almost 2 years ago

artis - v2024.06.03

What's Changed

  • Fix race condition with node-shared corrphotoionrenorm array by removing unnecessary zero-fill by @lukeshingles in https://github.com/artis-mcrt/artis/pull/80
  • Revert attempted classic fix by @lukeshingles in https://github.com/artis-mcrt/artis/pull/81
  • Normalise bound-free estimators on each rank independently to eliminate MPI_Bcast and skip NLTE solver if Te=MINTEMP by @jpollin98 in https://github.com/artis-mcrt/artis/pull/54
  • Add Just grey opacity mode 6 by @gleck97 in https://github.com/artis-mcrt/artis/pull/71
  • CI: Test in 2x2 multi-node configuration by adding optional MAXNODESIZE override by @lukeshingles in https://github.com/artis-mcrt/artis/pull/78

Full Changelog: https://github.com/artis-mcrt/artis/compare/v2024.05.2...v2024.06.03

- C++
Published by lukeshingles about 2 years ago

artis - v2024.05.2

What's Changed

  • Fix major issues in classic mode for deflagration model by @lukeshingles in https://github.com/artis-mcrt/artis/pull/72
  • Add optional thermalisation coefficient for bound-bound interactions by @lukeshingles in https://github.com/artis-mcrt/artis/pull/67

Full Changelog: https://github.com/artis-mcrt/artis/compare/v2024.5.1...v2024.05.2

- C++
Published by lukeshingles about 2 years ago

artis - v2024.5.1

What's Changed

  • Remove unused includes by @lukeshingles in https://github.com/artis-mcrt/artis/pull/63
  • Fix accidental reversion of #47 to prevent negative tau_sobolev by @lukeshingles in https://github.com/artis-mcrt/artis/pull/65

Full Changelog: https://github.com/artis-mcrt/artis/compare/v2024.5...v2024.5.1

- C++
Published by lukeshingles about 2 years ago

artis - v2024.5

What's Changed

  • Fix virtual packet save contribs mode on resume from crash by @lukeshingles #55
  • Add option for Barnes thermalisation of gamma-ray energy by @gleck97 #56
  • Assert grid corner < CLIGHT not needed with FORCESPHERICALESCAPE_SURFACE by @ccollins22 #57
  • CI: Add gcc-14 and run on Ubuntu-24.04 by @lukeshingles in https://github.com/artis-mcrt/artis/pull/61

Full Changelog: https://github.com/artis-mcrt/artis/compare/v2024.04...v2024.5

- C++
Published by lukeshingles about 2 years ago

artis - v2024.04

What's Changed

  • v2024.04 by @lukeshingles in https://github.com/artis-mcrt/artis/pull/50

New Contributors

  • @jpollin98 made their first contribution in https://github.com/artis-mcrt/artis/pull/47

Full Changelog: https://github.com/artis-mcrt/artis/compare/v2023.10...v2024.04

- C++
Published by lukeshingles about 2 years ago

artis - v2023.10

What's Changed

  • v2023.10 by @lukeshingles in https://github.com/artis-mcrt/artis/pull/40

Full Changelog: https://github.com/artis-mcrt/artis/compare/v2023.5.3...v2023.10

- C++
Published by lukeshingles over 2 years ago

artis - v2023.5.3

What's Changed

  • Fix for assertion failure coolingcontribion != Cion when resuming in an LTE timestep with NLTEPOPS_ON
  • Add citation information by @lukeshingles in https://github.com/artis-mcrt/artis/pull/38
  • Update cambridge icelake scripts by @lukeshingles in https://github.com/artis-mcrt/artis/pull/39

Full Changelog: https://github.com/artis-mcrt/artis/compare/v2023.5.2...v2023.5.3

- C++
Published by lukeshingles almost 3 years ago

artis - v2023.5.2

What's Changed

  • Fix duplicate transition handling by @lukeshingles in https://github.com/artis-mcrt/artis/pull/37

Full Changelog: https://github.com/artis-mcrt/artis/compare/v2023.5.1...v2023.5.2

- C++
Published by lukeshingles about 3 years ago

artis - v2023.5.1

What's Changed

  • v2023.5.1 by @lukeshingles in https://github.com/artis-mcrt/artis/pull/36

Full Changelog: https://github.com/artis-mcrt/artis/compare/v2023.5...v2023.5.1

- C++
Published by lukeshingles about 3 years ago

artis - v2023.5

What's Changed

  • v2023.5 by @lukeshingles in https://github.com/artis-mcrt/artis/pull/30

Full Changelog: https://github.com/artis-mcrt/artis/compare/v2022.11...v2023.5

- C++
Published by lukeshingles about 3 years ago

artis - v2022.11

  • For kilonovae, enable seeding with initial energy in the q column of model.txt
  • Add kilonova test calculation to GitHub actions (to test alpha/beta decays and thermalisation)
  • exspec: read all packets files into memory if total size is below a limit (maxpktmem_mb = 6000). This makes angle-resolved files much faster to generate.
  • Prepend each log line with the date and time
  • Fix escaping direction bin for non-normalised direction vectors
  • Reduce memory fragmentation by making block allocation for atomic transition arrays and sharing on node
  • Use C++ std library search functions (faster and less code)

A 1D Sim+2010 Sub-MCh test with classic options gives about an 8-11% decrease in run time.

- C++
Published by lukeshingles over 3 years ago

artis - Classic ARTIS

- C++
Published by lukeshingles over 6 years ago