You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Combine Waltz and Victor rules for E×B shear suppression
Refactors the rotation/shear suppression in the QLKNN transport model to simultaneously apply both the Waltz rule and the Victor rule (Van de Plassche 2020) to different physical components of the E×B shear, rather than treating them as mutually exclusive options.
The E×B shearing rate is decomposed into:
Poloidal/pressure contributions (from ∇Pᵢ and v_θB_φ): Waltz rule applied, giving pure suppression f_waltz = -α.
Toroidal contribution (from -v_φB_θ): Victor rule applied, a fitted model that can produce both suppression and enhancement depending on local plasma parameters.
The combined scaling factor becomes:
f_rot = clip(1 + f_waltz * |γ_pp| / γ_max + f_victor * |γ_tor| / γ_max, 0)
Changes:
rotation.py: Introduce RotationOutput dataclass. Split _calculate_radial_electric_field to return separate Er components for poloidal/pressure and toroidal contributions.
qualikiz_based_transport_model.py: Propagate separate v_ExB components through to QualikizInputs with individual gamma_E_GB_poloidal_pressure and gamma_E_GB_toroidal shearing rates.
qlknn_transport_model.py: Apply both rules simultaneously. Remove ShearSuppressionModel enum.
pydantic_model.py: Remove shear_suppression_model config field. Retain shear_suppression_alpha for Waltz rule strength.
tglf_based_transport_model.py, post_processing.py: Update to new RotationOutput API.
Docs: Update physics_models.rst to describe combined model; add Waltz 1998 reference to links.rst.
Tests: Remove separate Waltz suppression sim test. Update unit tests and regenerate reference .nc data.
PiperOrigin-RevId: 868764762
0 commit comments