Skip to content

v1.3.0

Latest

Choose a tag to compare

@jcitrin jcitrin released this 09 Feb 15:42
· 88 commits to main since this release

What's Changed

In this version, we introduce significant improvements to the geometry grid handling, enabling support for non-uniform grids. We also expand the physics capabilities with the Redl bootstrap current model, extended radiation modeling, and increased robustness in edge coupling. IMAS integration has improved with imas-core integration, and improved handling of core_profiles.

Physics features

  • Neoclassical and Bootstrap Current
    • Added the Redl model for bootstrap current calculation.
    • Added Shaing corrections to the Angioni-Sauter neoclassical model, including smooth transitions between collision regimes.
  • Radiation
    • Refactored Mavrin radiative cooling models to support smooth interpolation between coronal and non-coronal models.
    • Added extrapolation logic to better model radiative collapse scenarios (e.g., smoothly decaying to 0 below the polynomial fit range).
  • Edge Modeling (Extended Lengyel)
    • Improved robustness
    • Added configuration for initial guesses and the ability to use previous time-step outputs as initial guesses to improve convergence speed and stability.
    • Parallelized multi-solution exploration in the Extended Lengyel forward mode solver, due to the possible existence of multiple roots. All unique roots are saved in output.
    • Fixed handling of impurity concentrations to prevent negative seeded impurities in inverse solver modes.
  • Transport Models
    • Combined Transport Model: Introduced ADD and OVERWRITE merge modes. OVERWRITE allows specific models to lock transport coefficients in their domain, preventing subsequent models from modifying them.
    • Output Masking: Added flags (enable_chi_i, enable_D_e, etc.) to selectively disable specific transport channels within transport models.
    • Rotation: Changed the definition of toroidal_velocity from linear velocity (m/s) to angular velocity (rad/s). Introduced two different ExB suppression rules: a simple "Waltz rule" and a rule from van de Plassche 2020 which is more appropriate for toroidal-velocity limited cases.
  • Heating and Source Terms
    • Added dW/dt smoothing (exponential moving average) to $P_{SOL}$ and $P_{loss}$ calculations to reduce noise in confinement time estimates.

Technical features

  • Grid and Geometry
    • Non-uniform Grid Support: Major refactor of Grid1D and finite difference operators (face_grad, diffusion terms) to support non-uniformly spaced grids defined by face centers.
    • Updated CoreProfiles and Geometry to allow configuration via face_centers.

IMAS Integration

  • IMAS Core
    TORAX now depends on IMAS Core as part of the imas Python v2.1.0 upgrade.
  • Versioning
    • Upgraded support for imas Python library to v2.1.0.
    • Added options to explicitly convert equilibrium IDSs to the current Data Dictionary (DD) version during validation.
  • Core Profiles
    • Added explicit validators for core_profiles IDS.
    • CoreProfiles now stores full ChargeStateInfo, optimizing impurity density scaling calculations.

UX/QoL improvements

  • Outputs
    • Added new post-processing outputs for non-inductive currents: total non-inductive current density, total external current, and non-inductive current fraction.
  • Documentation
    • Added CONTRIBUTING.rst to the documentation.
    • Updated documentation for rotation physics, sawtooth crash durations, and transport model inputs.

Bugfixes

  • Lengyel Model: Fixed a bug where fixed impurities were incorrectly included in seeded impurity outputs, causing NaNs.
  • Transport: Fixed a bug where optional transport sub-channels (like chi_bohm) were leaking outside their configured radial domains.
  • Transport: Fixed a numerical instability for the QLKNN transport model when rotation was enabled.
  • Transport: Fixed tracer leak in tglf_based_transport_model
  • Numerics: Fixed an issue where deterministic time-stepping (with adaptive steps done internally as substeps) could hang if a minimum time-step (min_dt) was reached; it now exits gracefully.
  • Geometry: Fixed boundary gradient calculations (face_grad) to correctly handle extrapolation on non-uniform grids.