Defines the numerical equilibrium subclass
N.b. this is axisymmetric; phi, when required, is not used.
The object structure is quite large -- it is designed to be fully self-descriptive, such
that multiple equilibria may be developed independently, without resulting in conflicts between
the equilibria objects. As a result, most variables are stored within the object (i.e. as
object%variable) rather than shared across the module.
The numerical equilibrium object develops an equilibrium object from a NetCDF, specified
in the params.in file, as "/.nc". This file should define
Global attributes "description", "history", "author"
A group "Magnetic_geometry" with
dimensions "R", "Z"
variables "R", "Z" (corresponding dimension values) and "psi" (R,Z grid). The
"btor" (R,Z grid) variable is optional (unused) if use_spline_for_btor == .false.
(in params.in), required if use_spline_for_btor == .true.
subgroups (name not used) corresponding to regions (polygons) where a different psi limit
should be applied. Each subgroup should have
attributes "local_min" and "local_max", which may be NaN (IEEE conformant) if undefined
a nc_polygon (see below)
A group "Box_limits" with a corresponding nc_polygon
A group "FW_and_divertor_polygon" with a corresponding nc_polygon
A group "Shadow_polygon" with a corresponding nc_polygon
Groups which contain a nc_polygon should have the following information
* dimension "N_points" which gives the number of polygon points
* variables "R_points" and "Z_points" which gives the (R, Z) points
Note that the R_points and Z_points will be automatically normalised to the magnetic_axis_R
N.b. this module relies on bspline_fortran module from
https://github.com/jacobwilliams/bspline-fortran
Nodes of different colours represent the following:
Solid arrows point from a submodule to the (sub)module which it is
descended from. Dashed arrows point from a module or program unit to
modules which it uses.
Nodes of different colours represent the following:
Solid arrows point from a submodule to the (sub)module which it is
descended from. Dashed arrows point from a module or program unit to
modules which it uses.
Global limits for rho (rho = normalised psi, n.b. there may also be region-specific limits defined in equi)
real(kind=FP),
public
::
rhomin
Global limits for rho (rho = normalised psi, n.b. there may also be region-specific limits defined in equi)
logical,
public
::
flip_Z
=
.false.
Inverts the Z direction, which is equivalent to reversing the field direction
Default false, use true to flip the equilibrium vertically (magnetic axis position unchanged).
real(kind=FP),
public
::
poloidal_field_factor
=
1.0_FP
Poloidal field factor, which can be used to reverse the helicity