Skip to content

Commit 76ec440

Browse files
committed
Add nu_star (collisionality) to post-processed outputs.
Exposes the electron-ion collisionality (nu_star) already computed by collisions.calc_nu_star() as a post-processed output on the face grid. Uses collisionality_multiplier=1.0 for the physical value (the non-unity multiplier in QLKNN is a model-specific calibration factor, not physics). Useful for particle transport predictions and analysis. Closes #2094
1 parent b751c80 commit 76ec440

1 file changed

Lines changed: 14 additions & 0 deletions

File tree

torax/_src/output_tools/post_processing.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
from torax._src.orchestration import sim_state as sim_state_lib
3232
from torax._src.output_tools import impurity_radiation
3333
from torax._src.output_tools import safety_factor_fit
34+
from torax._src.physics import collisions
3435
from torax._src.physics import formulas
3536
from torax._src.physics import psi_calculations
3637
from torax._src.physics import rotation
@@ -203,6 +204,8 @@ class PostProcessedOutputs:
203204
impurity_species: Dictionary of outputs for each impurity species.
204205
poloidal_velocity: Poloidal velocity [m/s]
205206
radial_electric_field: Radial electric field [V/m]
207+
nu_star: Electron-ion collisionality (collision frequency normalized by
208+
bounce frequency) on the face grid [dimensionless].
206209
first_step: Whether the outputs are from the first step of the simulation.
207210
"""
208211

@@ -319,6 +322,7 @@ class PostProcessedOutputs:
319322
impurity_species: dict[str, impurity_radiation.ImpuritySpeciesOutput]
320323
poloidal_velocity: array_typing.FloatVector
321324
radial_electric_field: array_typing.FloatVector
325+
nu_star: array_typing.FloatVector
322326
first_step: array_typing.BoolScalar
323327
# pylint: enable=invalid-name
324328

@@ -432,6 +436,7 @@ def zeros(cls, geo: geometry.Geometry) -> typing_extensions.Self:
432436
impurity_species={},
433437
poloidal_velocity=jnp.zeros(geo.rho_face.shape),
434438
radial_electric_field=jnp.zeros(geo.rho_face.shape),
439+
nu_star=jnp.zeros(geo.rho_face.shape),
435440
first_step=jnp.array(True),
436441
)
437442

@@ -931,6 +936,14 @@ def cumulative_values():
931936
sim_state.core_profiles, sim_state.geometry
932937
)
933938

939+
# Use collisionality_multiplier=1.0 for the physical value. The non-unity
940+
# multiplier in QLKNN is a model-specific calibration factor, not physics.
941+
nu_star = collisions.calc_nu_star(
942+
geo=sim_state.geometry,
943+
core_profiles=sim_state.core_profiles,
944+
collisionality_multiplier=1.0,
945+
)
946+
934947
rotation_output = rotation.calculate_rotation(
935948
T_i=sim_state.core_profiles.T_i,
936949
psi=sim_state.core_profiles.psi,
@@ -1021,6 +1034,7 @@ def cumulative_values():
10211034
impurity_species=impurity_radiation_outputs,
10221035
poloidal_velocity=rotation_output.poloidal_velocity.face_value(),
10231036
radial_electric_field=rotation_output.Er.face_value(),
1037+
nu_star=nu_star,
10241038
first_step=jnp.array(False),
10251039
)
10261040

0 commit comments

Comments
 (0)