Repository navigation
Significant Enhancements
Significant optimisations to the 2D formal solver/iteration, making much better use of sparisty in the model (i.e. reduced memory consumption). Often >5x lower runtime and memory consumption.
Configuration options have more documentation: see source/UserConfig2d.hpp.
Highlights
- Quality of life improvements to python ecosystem and printouts.
- Atmosphere stored in sparse blocks (e.g. 16x16) if any cells are below the threshold temperature
- Empty blocks can be stepped through quickly in the formal solver.
- This
BlockMapforms the core of most iteration across kernels.
- New schemes for evaluating line emissivity/opacity:
VelocityInterpcomputes the emissivity and opacity on a basis of velocity that is linearly interpolated depending on the velocity projection onto the ray in question.CoreAndVoigtcomputes the line core emissivity/opacity, and modulates it with the correctly projected line profile.
- These new schemes are amenable to "mipmapping", that is reducing the blocks to lower resolution proxies that are used to accelerate raymarching on the higher cascades where rays are longer and more expensive. This is handled by
MultiResBlockMapandMultiResMipChain.- The formation regions of very thick lines such as the H resonance lines can't be mipmapped without significant error. As such when each mip level is computed the maximum opacity in any voxel is compared to a threshold, along with the variance in emissivity and opacity. These regions will be treated at the resolution dictated by these criteria.
- Mips do not simply reduce the computational cost, but also reduce the memory touched in computing these upper cascades. This is key for future domain decomposition. Indeed in 2D the first mip (a 2x2 box filter) requires 0.25x the memory of mip 0, and so on. The cost of storing the complete mip chain is 1.34x mip0. In 3d this reduces to 1.15x.