Source code for torx.measure.heat_flux_m

"""Functions related to heat fluxes."""
import xarray as xr
import numpy as np
from torx import make_xarray
from torx.grid import Grid2D
from torx.measure import electric_field
from torx.equilibrium.equilibrium_m import EquilibriumBaseClass
from torx.normalization.normalization_m import Normalization
from .velocities_m import ExB_velocity
from torx.autodoc_decorators_m import autodoc_function

[docs] @autodoc_function def electrostatic_ExB_heat_flux( grid: Grid2D, equi: EquilibriumBaseClass, norm: Normalization, es_pot: xr.DataArray, E_par: xr.DataArray, E_perp: xr.DataArray, **kwargs ): """Calculate the electrostatic cross field ExB heat flux.""" assert es_pot.shape == E_par.shape assert es_pot.shape == E_perp.shape # Total energy E = E_par + E_perp E.attrs["norm"] = E_par.norm E_field = electric_field(grid, es_pot) v_exb = ExB_velocity( E_field, grid=grid, equi=equi, norm=norm, component="radial", **kwargs ) return make_xarray( v_exb * E, norm=v_exb.norm * E.norm, )
[docs] @autodoc_function def electromagnetic_heat_flux( grid: Grid2D, equi: EquilibriumBaseClass, norm: Normalization, A_par: xr.DataArray, Q_par: xr.DataArray, Q_perp: xr.DataArray, **kwargs ): """Calculate the electromagnetic cross field heat flux.""" assert A_par.shape == Q_par.shape assert A_par.shape == Q_perp.shape # Total energy flux Q = Q_par + Q_perp Q.attrs["norm"] = Q_par.norm E_field = grid.perpendicular_gradient(A_par) v_exb = ExB_velocity( E_field, grid=grid, equi=equi, norm=norm, component="radial", **kwargs ) return make_xarray( v_exb * Q, norm=v_exb.norm * Q.norm, )