Transport Physics And Flux Models¶
This page summarizes the transport equations solved by NEOPAX and the mathematical structure of the built-in flux models. The goal is to make the notation explicit and to separate clearly:
the conservation-law structure of the transport system
the flux decomposition into neoclassical, turbulent, and classical channels
the way NTX/NTSS-inspired neoclassical models are assembled
Flux-Surface-Averaged Transport Form¶
The underlying transport equations are conservation laws of the form
NEOPAX solves a 1D radial, flux-surface-averaged version of these equations on the radial coordinate \(\rho\). In this reduced form, the divergence operator is represented as
where \(V'(\rho)\) is the differential volume factor carried by the
geometry model. In the code, this is the same conservative volume-weighted
operator used in conservative_update(...).
With that convention, NEOPAX evolves:
densities \(n_s\)
pressures \(p_s = n_s T_s\)
optionally the radial electric field \(E_r\)
Density Equation¶
For each independently evolved species,
Here:
\(\Gamma_s\) is the radial particle flux
\(S^{(n)}_s\) is the density-source contribution
NEOPAX can evolve only the independent ion/impurity densities and reconstruct the electron density algebraically through quasi-neutrality.
Pressure / Temperature Equation¶
NEOPAX evolves pressure rather than temperature directly. For each active species,
The fluxes are split as
So the pressure equation contains:
conductive heat flux \(Q_s\)
convective energy transport \(T_s \Gamma_s\)
pressure-source terms \(S^{(p)}_s\)
the optional work term \(q_s \Gamma_s E_r\)
Radial Electric Field Equation¶
The \(E_r\) equation is written as a relaxation-diffusion equation driven by ambipolar charge balance:
with
for the local ambipolar source mode. In the transport-centered mode, NEOPAX builds the charge balance from face-reconstructed particle fluxes before mapping them back to cell centers.
Flux-Model Composition¶
The runtime transport model is built as a composition of up to three channels:
neoclassical
turbulent
classical
At the combined-model level, NEOPAX keeps the components separate as long as possible and exposes both:
total outputs:
Gamma,Q,Uparsplit outputs: -
Gamma_neo,Q_neo,Upar_neo-Gamma_turb,Q_turb,Upar_turb-Gamma_classical,Q_classical,Upar_classical
This split is important because the pressure equation assembles the convective terms channel-by-channel, even though the final conservative update uses the total radial energy flux.
NTX / NTSS-Inspired Neoclassical Models¶
The built-in neoclassical models are based on the standard transport-matrix representation
where:
\(a\) labels the species
\(A_1\), \(A_2\), \(A_3\) are the thermodynamic-force terms used internally by NEOPAX
\(L_{ij}^{(a)}\) are the species transport coefficients after energy convolution
In the database-driven NTX pathway, the monoenergetic inputs are
\(D_{11}\)
\(D_{13}\)
\(D_{33}\)
tabulated as functions of radial position, collisionality, and \(E_r / v\). NEOPAX interpolates these coefficients and performs the energy convolution on the active Laguerre velocity grid:
with the appropriate geometry- and species-dependent prefactors. In the current implementation:
\(D_{11}\) is stored in logarithmic form in the database path
\(D_{13}\) and \(D_{33}\) are used directly after interpolation
\(D_{33}\) is divided by \(\nu / v\) in the final assembly, matching the code path used to build \(L_{33}\)
This is the same broad NTX/NTSS-style strategy: monoenergetic transport data first, thermodynamic-force assembly second, fluxes last.
Built-In Neoclassical Models¶
ntx_database¶
This is the standard database-driven neoclassical model.
Workflow:
read a precomputed monoenergetic NTX database
interpolate \(D_{11}\), \(D_{13}\), \(D_{33}\) at the local \((\rho,\nu/v,E_r/v)\) state
convolve over the active energy grid
assemble \(L_{ij}\)
evaluate \(\Gamma\), \(Q\), and \(U_{\parallel}\)
This is the main NTX-backed model used in the stock transport examples.
ntx_scan_runtime¶
This model uses the same final transport law as ntx_database, but the
monoenergetic database is built on the fly from NTX scan grids supplied in the
TOML file:
ntx_scan_rhontx_scan_nu_vntx_scan_er_tilde
So the distinction is:
ntx_databasereads a prebuilt database from filentx_scan_runtimebuilds the database at runtime and then uses the same interpolation-and-convolution structure
ntx_exact_lij_runtime¶
This model bypasses the intermediate interpolated monoenergetic database. Instead, it solves NTX directly on the active NEOPAX energy grid at the local state and assembles \(L_{ij}\) in real time.
Conceptually:
evaluate the local \(\nu / v\) and \(E_r / v\) arrays on the active energy grid
call NTX directly for those energy-grid points
assemble \(L_{ij}\) immediately
evaluate \(\Gamma\), \(Q\), and \(U_{\parallel}\)
This is the most direct NTX-backed path currently available in NEOPAX and is the main benchmark target for the lagged-response work.
ntx_database_with_momentum¶
This is the momentum-correction branch built on top of the same NTX-style transport-matrix framework. It extends the coefficient assembly with the extra matrix structure required by the momentum-correction closure.
Built-In Turbulent Models¶
turbulent_analytical¶
This model uses simple diffusive closures:
It is a lightweight analytical model useful for controlled transport tests.
turbulent_power_analytical and ntss_power_over_n¶
These models use the same diffusive structure but normalize the transport
coefficients with a total-power scaling consistent with the NTSS
power-over-n style:
Then
In the code, the total-power factor is either provided explicitly or inferred from the active pressure-source model.
File-Driven Flux Model¶
fluxes_r_file¶
This model reads radial profiles of:
\(\Gamma_s(\rho)\)
\(Q_s(\rho)\)
\(U_{\parallel,s}(\rho)\)
from file and interpolates them onto the active NEOPAX radial grid.
This is mainly useful for:
benchmark playback
isolated transport-equation tests
feeding externally generated fluxes into the transport solver
Classical Channel¶
The combined transport interface reserves a classical channel in the same way
as the neoclassical and turbulent channels. In the stock examples this is
usually set to none, but the split remains explicit in the transport
assembly so that classical contributions can be added without changing the
equation structure.