Source code for torx.measure.fluctuations_m

"""Functions related to fluctuations."""
import xarray as xr
import numpy as np
from torx import make_xarray
from torx.grid import Grid2D
from torx.equilibrium.equilibrium_m import EquilibriumBaseClass
from torx.normalization.normalization_m import Normalization
from torx.vector import vector_dot, vector_cross, toroidal_vector
from torx.autodoc_decorators_m import autodoc_function

[docs] @autodoc_function def radial_magnetic_field_fluctuation( grid: Grid2D, equi: EquilibriumBaseClass, norm: Normalization, A_par: xr.DataArray, **kwargs ): """Calculate the radial component of the magnetic field fluctuation.""" # equi.magnetic_field_toroidal yields Btor in units of B0. We use # norm.convert_norm to convert this into a Quantity with the actual value for B0 B_toroidal = norm.convert_norm( equi.magfield_component_toroidal(grid.r_s, grid.z_s, grid=True, **kwargs) ) grad_A_par = grid.perpendicular_gradient(A_par) B_1 = vector_cross(grad_A_par, toroidal_vector(B_toroidal)) / B_toroidal B_1.attrs["norm"] = grad_A_par.norm e_rho = equi.magfield_vector_radial(grid.r_s, grid.z_s, normalize=True, **kwargs) return make_xarray( vector_dot(B_1, e_rho), norm=B_1.norm, name="Radial magnetic field fluctuation", )