Releases: Goobley/Lightweaver
Minor fixes and versioning support
- Improve path handling (mostly seemed to work, but was not correct)
- Fix some missing arguments in the validation of optional arguments to
Atmosphere.make_1d
introduced in v0.7.6. - Better filter for numpy/numba versions. Need numpy internals to restabilise (and numba to catch up) to remove the upper limit.
v0.7.6
Enabled Universal2 builds for ARM on macOS
Removed AVX compiler flags on macOS as it isn't supported on Rosetta2 for the new ARM machines. The ARM component of the universal2 build is not properly tested, due to the lack of native conda/miniconda support for this platform at the moment, but should now be installable and usable directly from pyPI without illegal instruction problems.
Disabled ARM Builds
Due to reported illegal instruction problems, the ARM builds have been disabled. Hopefully will be able to re-enable when I can personally test. The Rosetta 2 approach works fine for now (even if not optimal in performance terms).
Improved edge case treatments in 2D
Fixes:
- Lower thermalised boundaries improved in non-periodic grids (they could occasionally wrap before, but this is a non issue unless one is doing very strange things with the photosphere). Better formalised now.
- In some situations final column purely vertical ray would be forced to degenerate to linear solution (when using BESSER).
Apple ARM Support & Bug Fixes
Fixes:
- Bug relating to fully vertical rays in 2D formal solver
- Dimensioned view for
SpeciesStateTable
Features:
- Python 3.9 Wheels
- Apple ARM Wheels
nlteStartingPops bug fix
Several mistakes on conditions in the very rarely used nlteStartingPops
path of compute_eq_pops
and iterate_lte_ne_eq_pops
now corrected.
For compute_eq_pops
this path ends up equivalent to simply setting the NLTE or detailed static populations in the SpeciesStateTable
after the fact. This path may be needed for iterate_lte_ne_eq_pops
when some of the populations are known and need to be taken into account for the electron density.
Updated 2D Boundary Conditions
This update should significantly improve the usability of 1D boundary conditions (for use with 2D simulations) with compute_rays
, in particular for when a single ray is used e.g. for muz=0.9
. This is used in cases of things like MsLw2d.
So long as the boundary condition returns an array of [Nlambda, Nrays, Ndepth] as before everything should work, (see BoundaryCondition.muz
etc and BoundaryCondition.indexVector
for the ordering as always), but it should now be easier for single upgoing rays (not vertical, as this worked trivially before, and continues to do so), just return a [Nlambda, 1, Ndepth] array from compute_bcs
synthesised at the right angle.
This also adds an upOnly
argument to compute_rays
and formal_sol
which helps to avoid unintended boundary condition access from the down ray in 2D. This also halves the cost of the formal solution used in compute_rays
, but is likely to be pretty minor overall.
v0.6.1
Fixes:
Features:
- Added
printUpdate
parameter to mostContext
methods that otherwise print their iteration update progress. This defaults toTrue
for no default change in behaviour. Inspired by #27. - Added
recompute_gII
method toLwTransition
(accesible throughctx.activeAtoms[x].trans[x].recompute_gII()
). For PRD lines this lazily indicates that the redistribution function needs to be recomputed (e.g. if the atmospheric parameters have been adjusted). This will be recomputed the next time.prd_redistribute
is called on theContext
.
Misc:
- Updated README and added references to preprint.
Grotrian Diagram & BESSER Bug Fixes
A function for plotting Grotrian Diagrams has been added to utils
.
Additionally, bug fixes for the BESSER formal solver in 2D with fixed boundary conditions which could attempt to "wrap-around" the grid, despite the fixed boundary conditions. Now correctly falls back to linear for the final column of each sweep in this setting.