bluemira.radiation_transport.advective_transport
A simplified 2-D solver for calculating charged particle heat loads.
Classes
A simplified charged particle transport model along open field lines. |
|
Parameters for use with |
Module Contents
- class bluemira.radiation_transport.advective_transport.ChargedParticleSolver(config: ChargedParticleSolverParams | dict[str, float], equilibrium: bluemira.equilibria.equilibrium.Equilibrium, dx_mp: float = 0.001, psi_n_tol: float = 1e-06)
A simplified charged particle transport model along open field lines.
- Parameters:
config (Dict[str, float]) – The parameters for running the transport model. See
ChargedParticleSolverParamsfor available parameters and their defaults.equilibrium (Equilibrium) – The equilibrium defining flux surfaces.
dx_mp (float (optional)) – The midplane spatial resolution between flux surfaces [m] (default: 0.001).
psi_n_tol (float)
- eq
- params
- dx_mp = 0.001
- first_wall = None
- flux_surfaces_ob_down = None
- flux_surfaces_ob_up = None
- flux_surfaces_ib_down = None
- flux_surfaces_ib_up = None
- x_sep_omp = None
- x_sep_imp = None
- result = None
- psi_n_tol = 1e-06
- _o_point
- _yz_plane
- property flux_surfaces: list[bluemira.equilibria.flux_surfaces.PartialOpenFluxSurface]
All flux surfaces in the ChargedParticleSolver.
- Returns:
The list of partially open flux surfaces.
- Return type:
flux_surfaces
- _check_params()
Check input fractions for validity.
- Raises:
AdvectionTransportError – Sum of total power fractions is not ~= 1
- _process_first_wall(first_wall)
Force working first wall geometry to be closed and counter-clockwise.
- Returns:
first_wall – the first wall wire
int_intersection – the internal intersection coordinate
out_intersection – the external intersection coordinate
- static _get_arrays(flux_surfaces) tuple[numpy.typing.NDArray[float], numpy.typing.NDArray[float], numpy.typing.NDArray[float], numpy.typing.NDArray[float], numpy.typing.NDArray[float]]
Get arrays of flux surface values.
- Returns:
x_mp – the array of mid-plane intersection point x-coordinate for each flux surface
z_mp – the array of mid-plane intersection point z-coordinate for each flux surface
x_fw – the array of first-wall intersection point x-coordinate for each flux surface
z_fw – the array of first-wall intersection point z-coordinate for each flux surface
alpha – the array of alpha angle for each flux surface
- Return type:
tuple[numpy.typing.NDArray[float], numpy.typing.NDArray[float], numpy.typing.NDArray[float], numpy.typing.NDArray[float], numpy.typing.NDArray[float]]
- _make_flux_surfaces_ob()
Make the flux surfaces on the outboard.
- _make_flux_surfaces_ib()
Make the flux surfaces on the inboard.
- _clip_flux_surfaces(first_wall)
Clip the flux surfaces to a first wall. Catch the cases where no intersections are found.
- _no_wall_intersection_region(x_up_inter, z_up_inter, x_down_inter, z_down_inter, *, lfs=True)
Get first wall mid-plane region with no flux line intersections.
- Returns:
x_reg_inter – the x region intersection point
z_reg_inter – the z region intersection point
wire_length – the length of the wire
- analyse(first_wall: bluemira.geometry.coordinates.Coordinates)
Perform the calculation to obtain charged particle heat fluxes on the the specified first_wall
- Parameters:
first_wall (Coordinates) – The closed first wall geometry on which to calculate the heat flux
- Returns:
x – The x coordinates of the flux surface intersections
z – The z coordinates of the flux surface intersections
heat_flux – The perpendicular heat fluxes at the intersection points [MW/m^2]
Notes
The heat flux model assumes pure parallel transport and fudges the perpendicular transport via the power decay length, lambda. This approach, while is widely used, leads to no power deposited on the wall at the mid-plane. _analyse_SN and _analyse_DN assume, in the area in proximity of the mid-plane, where the outermost flux tube is open, that the remaining power of from the exponential decay is deposited on the wall perpendicularly.
- _analyse_SN()
Calculation for the case of single nulls.
- Returns:
x – The x coordinates of the flux surface intersections
z – The z coordinates of the flux surface intersections
heat_flux – The perpendicular heat fluxes at the intersection points [MW/m^2]
- _analyse_DN() tuple[numpy.typing.NDArray[float], Ellipsis]
Calculation for the case of double nulls.
- Returns:
x – The x coordinates of the flux surface intersections
z – The z coordinates of the flux surface intersections
heat_flux – The perpendicular heat fluxes at the intersection points [MW/m^2]
- Return type:
tuple[numpy.typing.NDArray[float], Ellipsis]
- _q_par(x, dx, B, Bp, *, outboard=True)
Calculate the parallel power at the midplane.
- Returns:
parallel power at the midplane
- plot(ax: matplotlib.axes.Axes = None, *, show=False) matplotlib.axes.Axes
Plot the ChargedParticleSolver results.
- Returns:
The axes object on which the ChargedParticleSolver is plotted.
- Parameters:
ax (matplotlib.axes.Axes)
- Return type:
matplotlib.axes.Axes
- static _make_params(config)
Convert the given params to
ChargedParticleSolverParams- Returns:
a ChargedParticleSolverParams object
- Raises:
TypeError – Unsupported config type
ValueError – Unknown configuration parameters
- class bluemira.radiation_transport.advective_transport.ChargedParticleSolverParams
Parameters for use with
ChargedParticleSolver.- P_sep_particle: float = 150
Separatrix power [MW].
- f_p_sol_near: float = 0.5
Near scrape-off layer power rate [dimensionless].
- fw_lambda_q_near_omp: float = 0.003
Lambda q near SOL at the outboard [m].
- fw_lambda_q_far_omp: float = 0.05
Lambda q far SOL at the outboard [m].
- fw_lambda_q_near_imp: float = 0.003
Lambda q near SOL at the inboard [m].
- fw_lambda_q_far_imp: float = 0.05
Lambda q far SOL at the inboard [m].
- f_lfs_lower_target: float = 0.9
Fraction of SOL power deposited on the LFS lower target [dimensionless].
- f_hfs_lower_target: float = 0.1
Fraction of SOL power deposited on the HFS lower target [dimensionless].
- f_lfs_upper_target: float = 0
Fraction of SOL power deposited on the LFS upper target (DN only) [dimensionless].
- f_hfs_upper_target: float = 0
Fraction of SOL power deposited on the HFS upper target (DN only) [dimensionless].