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.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 - 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