Stellarator-Tools
equilibrium Module Reference

Defines the base class of the type equilibrium_class. Equilibrium is an abstract interface to the equilibrium solver. Every method is meant to be overwritten by a subclass method with a few exceptions. For instance a vacuum equilibrium could use the default return values for equilibrium_get_ne, equilibrium_get_te and equilibrium_get_sxrem methods. More...

Data Types

type  equilibrium_class
 Base class representing a equilibrium. More...
 
interface  equilibrium_construct
 Interface for the construction of equilibrium_class types using equilibrium_construct_vmec, equilibrium_construct_vacuum or equilibrium_construct_siesta. More...
 

Functions/Subroutines

type(equilibrium_class) function, pointer equilibrium_construct (force_solve)
 Construct a equilibrium_class. More...
 
subroutine equilibrium_construct_sub (this, force_solve)
 Construct a equilibrium_class. More...
 
subroutine equilibrium_destruct (this)
 Deconstruct a equilibrium_class object. More...
 
subroutine equilibrium_set_param (this, id, i_index, j_index, value, eq_comm, state_flags)
 Sets the value of a reconstruction equilibrium parameter. More...
 
subroutine equilibrium_set_magnetic_cache_response (this, response_object, state_flags)
 Sets the magnetic cache of the equilibrium for the magnetic response. More...
 
subroutine equilibrium_set_magnetic_cache_point (this, use_axi, state_flags)
 Sets the magnetic cache of the equilibrium for points. More...
 
recursive character(len=data_name_length) function equilibrium_get_type (this)
 Checks if a parameter id is a reconstruction parameter. More...
 
integer function equilibrium_get_param_id (this, param_name)
 Get the id for a reconstruction parameter. More...
 
character(len=data_name_length) function equilibrium_get_param_name (this, id)
 Gets the name of a reconstruction equilibrium parameter. More...
 
real(rprec) function equilibrium_get_param_value (this, id, i_index, j_index)
 Gets the value of a reconstruction equilibrium parameter. More...
 
integer function equilibrium_get_gp_ne_num_hyper_param (this)
 Get the number of electron density gp kernel hyper parameters. More...
 
real(rprec) function, dimension(:), pointer equilibrium_get_ne_af (this)
 Get the electron density profile af array. More...
 
real(rprec) function equilibrium_get_gp_ne_ij (this, i, j)
 Get the electron density gp kernel value for the two indicies. More...
 
real(rprec) function equilibrium_get_gp_ne_pi (this, x_cart, i)
 Get the electron density gp kernel value for the position and index. More...
 
real(rprec) function equilibrium_get_gp_ne_pp (this, x_cart, y_cart)
 Get the electron density gp kernel value for the position and position. More...
 
real(rprec) function equilibrium_get_ne_cart (this, x_cart)
 Gets the electron density at a cartesian position. More...
 
real(rprec) function equilibrium_get_ne_radial (this, s)
 Gets the electron density at a radial position. More...
 
integer function equilibrium_get_gp_te_num_hyper_param (this)
 Get the number of electron temperature gp kernel hyper parameters. More...
 
real(rprec) function, dimension(:), pointer equilibrium_get_te_af (this)
 Get the electron temperature profile af array. More...
 
real(rprec) function equilibrium_get_gp_te_ij (this, i, j)
 Get the electron temperature gp kernel value for the two indicies. More...
 
real(rprec) function equilibrium_get_gp_te_pi (this, x_cart, i)
 Get the electron temperature gp kernel value for the position and index. More...
 
real(rprec) function equilibrium_get_gp_te_pp (this, x_cart, y_cart)
 Get the electron temperature gp kernel value for the position and position. More...
 
real(rprec) function equilibrium_get_te_cart (this, x_cart)
 Gets the electron temperature at a cartesian position. More...
 
real(rprec) function equilibrium_get_te_radial (this, s)
 Gets the electron temperature at a radial position. More...
 
integer function equilibrium_get_gp_ti_num_hyper_param (this)
 Get the number of ion temperature gp kernel hyper parameters. More...
 
real(rprec) function, dimension(:), pointer equilibrium_get_ti_af (this)
 Get the ion temperature profile af array. More...
 
real(rprec) function equilibrium_get_gp_ti_ij (this, i, j)
 Get the ion temperature gp kernel value for the two indicies. More...
 
real(rprec) function equilibrium_get_gp_ti_pi (this, x_cart, i)
 Get the ion temperature gp kernel value for the position and index. More...
 
real(rprec) function equilibrium_get_gp_ti_pp (this, x_cart, y_cart)
 Get the ion temperature gp kernel value for the position and position. More...
 
real(rprec) function equilibrium_get_ti_cart (this, x_cart)
 Gets the ion temperature at a cartesian position. More...
 
real(rprec) function equilibrium_get_ti_radial (this, s)
 Gets the ion temperature at a radial position. More...
 
integer function equilibrium_get_gp_sxrem_num_hyper_param (this, index)
 Get the number of soft x-ray emissivity gp kernel hyper parameters. More...
 
real(rprec) function, dimension(:), pointer equilibrium_get_sxrem_af (this, index)
 Get the soft x-ray emissivity profile af array. More...
 
real(rprec) function equilibrium_get_gp_sxrem_ij (this, i, j, index)
 Get the electron density gp kernel value for the two indicies. More...
 
real(rprec) function equilibrium_get_gp_sxrem_pi (this, x_cart, i, index)
 Get the soft x-ray emissivity gp kernel value for the position and index. More...
 
real(rprec) function equilibrium_get_gp_sxrem_pp (this, x_cart, y_cart, index)
 Get the soft x-ray emissivity gp kernel value for the position and position. More...
 
real(rprec) function equilibrium_get_sxrem_cart (this, x_cart, index)
 Gets the soft x-ray emissivity at a cartesian position. More...
 
real(rprec) function equilibrium_get_sxrem_radial (this, s, index)
 Gets the soft x-ray emissivity at a radial position. More...
 
real(rprec) function equilibrium_get_p_cart (this, x_cart, normalize)
 Gets the plasma pressure at a cartesian position. More...
 
real(rprec) function equilibrium_get_p_radial (this, s, normalize)
 Gets the plasma pressure at a radial position. More...
 
real(rprec) function, dimension(3) equilibrium_get_b_vec (this, x_cart, cyl)
 Gets the magnetic field vector at a position. More...
 
real(rprec) function equilibrium_get_int_b_dphi (this, s, theta)
 Gets the loop integrated magnetic field at a position. More...
 
integer function equilibrium_get_plasma_edge (this, phi, r, z)
 Gets the r and z positions of the outer surface at a toroidal angle. More...
 
real(rprec) function, dimension(:,:,:), pointer equilibrium_get_magnetic_volume_rgrid (this)
 Get volume magnetic volume integration radial grid points. More...
 
real(rprec) function, dimension(:,:,:), pointer equilibrium_get_magnetic_volume_zgrid (this)
 Get volume magnetic volume integration z grid points. More...
 
real(rprec) function, dimension(:,:,:), pointer equilibrium_get_magnetic_volume_jrgrid (this)
 Get volume magnetic volume integration jr grid points. More...
 
real(rprec) function, dimension(:,:,:), pointer equilibrium_get_magnetic_volume_jphigrid (this)
 Get volume magnetic volume integration jphi grid points. More...
 
real(rprec) function, dimension(:,:,:), pointer equilibrium_get_magnetic_volume_jzgrid (this)
 Get volume magnetic volume integration jz grid points. More...
 
real(rprec) function equilibrium_get_volume_int_element (this)
 Get volume integration element. More...
 
real(rprec) function, dimension(:,:), pointer equilibrium_get_con_surface_krgrid (this)
 Get the conducting surface integration kr grid points. More...
 
real(rprec) function, dimension(:,:), pointer equilibrium_get_con_surface_kphigrid (this)
 Get the conducting surface integration kphi grid points. More...
 
real(rprec) function, dimension(:,:), pointer equilibrium_get_con_surface_kzgrid (this)
 Get the conducting surface integration kz grid points. More...
 
real(rprec) function equilibrium_get_area_int_element (this)
 Get area integration element. More...
 
real(rprec) function, dimension(:), pointer equilibrium_get_ext_currents (this, num_currents, scale_currents)
 Get external current. More...
 
real(rprec) function, dimension(3) equilibrium_get_ext_b_plasma (this, position, axi_only)
 Get external plasma magnetic field. More...
 
integer function equilibrium_get_grid_size (this)
 Get radial grid size. More...
 
real(rprec) function equilibrium_get_grid_start (this)
 Get start of the radial grid. More...
 
real(rprec) function equilibrium_get_grid_stop (this)
 Get stop of the radial grid. More...
 
logical function equilibrium_is_scaler_value (this, id)
 Checks if a parameter id is a scaler value. More...
 
logical function equilibrium_is_2d_array (this, id)
 Checks if a parameter id is a 2d array. More...
 
logical function equilibrium_is_recon_param (this, id)
 Checks if a parameter id is a reconstruction parameter. More...
 
logical function equilibrium_is_using_point (this)
 Checks if the point magnetics are being used. More...
 
logical function equilibrium_has_vacuum_field (this)
 Determines if vacuum field information is available. More...
 
logical function equilibrium_is_in_plasma (this, x_cart)
 Determines if a point is inside the plasma or outside. More...
 
type(vertex) function, pointer equilibrium_limit_path_to_boundary (this, path)
 Limit an integration path to the boundary. More...
 
logical function equilibrium_converge (this, num_iter, iou, eq_comm, state_flags)
 Solves the equilibrium. More...
 
subroutine equilibrium_read_vac_file (this, index, eq_comm)
 Loads the vacuum magnetic field file. More...
 
subroutine equilibrium_save_state (this)
 Save the internal state of the equilibrium. More...
 
subroutine equilibrium_reset_state (this)
 Reset the internal state of the equilibrium. More...
 
subroutine equilibrium_write (this, iou)
 Write out the equilibrium to an output file. More...
 
subroutine equilibrium_write_input (this, current_step)
 Write out the equilibrium to an output file. More...
 
subroutine equilibrium_def_result (this, result_ncid, maxnsetps_dim_id)
 Define NetCDF variables for the result file. More...
 
subroutine equilibrium_write_init_data (this, result_ncid)
 Write inital data to NetCDF result file. More...
 
subroutine equilibrium_write_step_data (this, result_ncid, current_step)
 Write step data to NetCDF result file. More...
 
subroutine equilibrium_restart (this, result_ncid, current_step)
 Restart equilibrium. More...
 
subroutine equilibrium_sync_state (this, recon_comm)
 Syncronize the equilibrium state to children. More...
 
subroutine equilibrium_sync_child (this, index, recon_comm)
 Syncronize a child equilibrium state to the parent. More...
 

Detailed Description

Defines the base class of the type equilibrium_class. Equilibrium is an abstract interface to the equilibrium solver. Every method is meant to be overwritten by a subclass method with a few exceptions. For instance a vacuum equilibrium could use the default return values for equilibrium_get_ne, equilibrium_get_te and equilibrium_get_sxrem methods.

Sub Classes:
vmec_equilibrium vacuum_equilibrium

Function/Subroutine Documentation

◆ equilibrium_construct()

type (equilibrium_class) function, pointer equilibrium::equilibrium_construct ( logical, intent(in)  force_solve)

Construct a equilibrium_class.

Allocates memory for a equilibrium_class object.

Parameters
[in]vmec_objectAn instance of a vmec_equilibrium subclass.
[in]force_solveIf true, forces the equilbirum to resolve every time.
Returns
A pointer to a constructed equilibrium_class object.

◆ equilibrium_construct_sub()

subroutine equilibrium::equilibrium_construct_sub ( class (equilibrium_class), intent(inout)  this,
logical, intent(in)  force_solve 
)

Construct a equilibrium_class.

Initializes a equilibrium_class object.

Parameters
[in]vmec_objectAn instance of a vmec_equilibrium subclass.
[in]force_solveIf true, forces the equilbirum to resolve every time.
Returns
A pointer to a constructed equilibrium_class object.

◆ equilibrium_converge()

logical function equilibrium::equilibrium_converge ( class (equilibrium_class), intent(inout)  this,
integer, intent(inout)  num_iter,
integer, intent(in)  iou,
integer, intent(in)  eq_comm,
integer, intent(in)  state_flags 
)

Solves the equilibrium.

This method is virtual. The actual solving of the equilibrium should be handled by a subclass method.

See also
vmec_equilibrium::vmec_converge
siesta_equilibrium::siesta_converge
Parameters
[in,out]thisA equilibrium_class instance.
[in,out]num_iterCounter to track the number of iterations.
[in]iouInput/output unit of the file to write logs to.
[in]eq_commMPI communicator pool for the equilibrium.
[in]state_flagsBitwise flags to indicate which parts of the model changed.
Returns
True if the convergece was sucessful and false otherwise.

◆ equilibrium_def_result()

subroutine equilibrium::equilibrium_def_result ( class (equilibrium_class), intent(in)  this,
integer, intent(in)  result_ncid,
integer, intent(in)  maxnsetps_dim_id 
)

Define NetCDF variables for the result file.

This method is virtual. The actual defining of the equilibrium variables should be handled by a subclass method.

See also
vmec_equilibrium::vmec_def_result
siesta_equilibrium::siesta_def_result
Parameters
[in]thisA equilibrium_class instance.
[in]result_ncidNetCDF file id of the result file.
[in]maxnsetps_dim_idNetCDF dimension id of the number of steps dimension.

◆ equilibrium_destruct()

subroutine equilibrium::equilibrium_destruct ( type (equilibrium_class), intent(inout)  this)

Deconstruct a equilibrium_class object.

Deallocates memory and uninitializes a equilibrium_class object.

Parameters
[in,out]thisA equilibrium_class instance.

◆ equilibrium_get_area_int_element()

real (rprec) function equilibrium::equilibrium_get_area_int_element ( class (equilibrium_class), intent(in)  this)

Get area integration element.

This method is virtual. The actual getting of the area integration element should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_area_int_element
siesta_equilibrium::siesta_get_area_int_element
Parameters
[in]thisA equilibrium_class instance.
Returns
The volume integration element.

◆ equilibrium_get_b_vec()

real (rprec) function, dimension(3) equilibrium::equilibrium_get_b_vec ( class (equilibrium_class), intent(in)  this,
real (rprec), dimension(3), intent(in)  x_cart,
logical, intent(in)  cyl 
)

Gets the magnetic field vector at a position.

This method is virtual. The actual getting of the magnetic field vector should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_B_vec
vacuum_equilibrium::vacuum_get_B_vec
siesta_equilibrium::siesta_get_B_vec
Parameters
[in]thisA equilibrium_class instance.
[in]x_cartCartesian position to get the magnetic field vector at.
[in]cylFlag that specifies if the bfield should be returned in cartesian or cylindical coordinates.
Returns
The magnetic field vector at x_cart.

◆ equilibrium_get_con_surface_kphigrid()

real (rprec) function, dimension(:,:), pointer equilibrium::equilibrium_get_con_surface_kphigrid ( class (equilibrium_class), intent(in)  this)

Get the conducting surface integration kphi grid points.

This method is virtual. The actual getting of the kphi grid points should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_con_surface_kphigrid
siesta_equilibrium::siesta_get_con_surface_kphigrid
Parameters
[in]thisA equilibrium_class instance.
Returns
The kphi grid points.

◆ equilibrium_get_con_surface_krgrid()

real (rprec) function, dimension(:,:), pointer equilibrium::equilibrium_get_con_surface_krgrid ( class (equilibrium_class), intent(in)  this)

Get the conducting surface integration kr grid points.

This method is virtual. The actual getting of the kr grid points should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_con_surface_krgrid
siesta_equilibrium::siesta_get_con_surface_krgrid
Parameters
[in]thisA equilibrium_class instance.
Returns
The kr grid points.

◆ equilibrium_get_con_surface_kzgrid()

real (rprec) function, dimension(:,:), pointer equilibrium::equilibrium_get_con_surface_kzgrid ( class (equilibrium_class), intent(in)  this)

Get the conducting surface integration kz grid points.

This method is virtual. The actual getting of the kz grid points should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_con_surface_kzgrid
siesta_equilibrium::siesta_get_con_surface_kzgrid
Parameters
[in]thisA equilibrium_class instance.
Returns
The kz grid points.

◆ equilibrium_get_ext_b_plasma()

real (rprec) function, dimension(3) equilibrium::equilibrium_get_ext_b_plasma ( class (equilibrium_class), intent(in)  this,
real (rprec), dimension(3), intent(in)  position,
logical, intent(in)  axi_only 
)

Get external plasma magnetic field.

This method is virtual. The actual getting of the external current should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_ext_b_plasma
siesta_equilibrium::siesta_get_ext_b_plasma
Parameters
[in]thisA equilibrium_class instance.
[in]positionPosition to compute the fields at.
[in]axi_onlyGives only the axisymmtric component of the magnetic field.
Returns
The external currents.

◆ equilibrium_get_ext_currents()

real (rprec) function, dimension(:), pointer equilibrium::equilibrium_get_ext_currents ( class (equilibrium_class), intent(in)  this,
integer, intent(in)  num_currents,
logical, intent(out)  scale_currents 
)

Get external current.

This method is virtual. The actual getting of the external current should be handled by a subclass method. To void extra memory operations, arrays are returned as pointers. The memory management is handled by the equilibrium subclass instance. If the equilibrium has no external currents return a null() pointer or don't override this method. MAKEGRID has a mode where currents maybe scaled. Inform the signal using this to scale the currents if need be.

See also
vmec_equilibrium::vmec_get_ext_currents
vacuum_equilibrium::vacuum_get_ext_currents
siesta_equilibrium::siesta_get_ext_currents
Parameters
[in]thisA equilibrium_class instance.
[in]num_currentsForces the number of currents to return if greater than zero.
[out]scale_currentsInforms the caller that currents need to be scaled.
Returns
The external currents.

◆ equilibrium_get_gp_ne_ij()

real (rprec) function equilibrium::equilibrium_get_gp_ne_ij ( class (equilibrium_class), intent(in)  this,
integer, intent(in)  i,
integer, intent(in)  j 
)

Get the electron density gp kernel value for the two indicies.

This method is virtual. The actual getting of the kernel function should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_gp_ne_ij
siesta_equilibrium::siesta_get_gp_ne_ij
Parameters
[in]thisA equilibrium_class instance.
[in]iith profile position.
[in]jjth profile position.
Returns
The value of the gp kernel function for i, j.
Note
Note the gp kernel is not implmented for all equilibrium types. For instance, vacuum equilibrium should not override this method.

◆ equilibrium_get_gp_ne_num_hyper_param()

integer function equilibrium::equilibrium_get_gp_ne_num_hyper_param ( class (equilibrium_class), intent(in)  this)

Get the number of electron density gp kernel hyper parameters.

This method is virtual. The actual getting of the number of hyper parameters should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_gp_ne_num_hyper_param
siesta_equilibrium::siesta_get_gp_ne_num_hyper_param
Parameters
[in]thisA equilibrium_class instance.
Returns
Number of kernel hyper parameters.

◆ equilibrium_get_gp_ne_pi()

real (rprec) function equilibrium::equilibrium_get_gp_ne_pi ( class (equilibrium_class), intent(in)  this,
real (rprec), dimension(3), intent(in)  x_cart,
integer, intent(in)  i 
)

Get the electron density gp kernel value for the position and index.

This method is virtual. The actual getting of the kernel function should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_gp_ne_pi
siesta_equilibrium::siesta_get_gp_ne_pi
Parameters
[in]thisA equilibrium_class instance.
[in]x_cartCartesian position to get the electron density at.
[in]iProfile position index.
Returns
The value of the gp kernel function for x_cart and i.
Note
Note the gp kernel is not implmented for all equilibrium types. For instance, vacuum equilibrium should not override this method.

◆ equilibrium_get_gp_ne_pp()

real (rprec) function equilibrium::equilibrium_get_gp_ne_pp ( class (equilibrium_class), intent(in)  this,
real (rprec), dimension(3), intent(in)  x_cart,
real (rprec), dimension(3), intent(in)  y_cart 
)

Get the electron density gp kernel value for the position and position.

This method is virtual. The actual getting of the kernel function should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_gp_ne_pp
siesta_equilibrium::siesta_get_gp_ne_pp
Parameters
[in]thisA equilibrium_class instance.
[in]x_cartCartesian position to get the kernel at.
[in]y_cartCartesian position to get the kernel at.
Returns
The value of the gp kernel function for x_cart and y_cart.
Note
Note the gp kernel is not implmented for all equilibrium types. For instance, vacuum equilibrium should not override this method.

◆ equilibrium_get_gp_sxrem_ij()

real (rprec) function equilibrium::equilibrium_get_gp_sxrem_ij ( class (equilibrium_class), intent(in)  this,
integer, intent(in)  i,
integer, intent(in)  j,
integer, intent(in)  index 
)

Get the electron density gp kernel value for the two indicies.

This method is virtual. The actual getting of the kernel function should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_gp_ne_ij
siesta_equilibrium::siesta_get_gp_ne_ij
Parameters
[in]thisA equilibrium_class instance.
[in]iith profile position.
[in]jith profile position.
[in]indexIndex of the soft x-ray emissivity profile to use.
Returns
The value of the gp kernel function for i, j.
Note
Note the gp kernel is not implmented for all equilibrium types. For instance, vacuum equilibrium should not override this method.

◆ equilibrium_get_gp_sxrem_num_hyper_param()

integer function equilibrium::equilibrium_get_gp_sxrem_num_hyper_param ( class (equilibrium_class), intent(in)  this,
integer, intent(in)  index 
)

Get the number of soft x-ray emissivity gp kernel hyper parameters.

This method is virtual. The actual getting of the number of hyper parameters should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_gp_sxrem_num_hyper_param
siesta_equilibrium::siesta_get_gp_sxrem_num_hyper_param
Parameters
[in]thisA equilibrium_class instance.
[in]indexIndex of the soft x-ray emissivity profile to use.
Returns
Number of kernel hyper parameters.

◆ equilibrium_get_gp_sxrem_pi()

real (rprec) function equilibrium::equilibrium_get_gp_sxrem_pi ( class (equilibrium_class), intent(in)  this,
real (rprec), dimension(3), intent(in)  x_cart,
integer, intent(in)  i,
integer, intent(in)  index 
)

Get the soft x-ray emissivity gp kernel value for the position and index.

This method is virtual. The actual getting of the kernel function should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_gp_sxrem_pi
siesta_equilibrium::siesta_get_gp_sxrem_pi
Parameters
[in]thisA equilibrium_class instance.
[in]x_cartCartesian position to get the soft x-ray emissivity at.
[in]iProfile position index.
[in]indexIndex of the soft x-ray emissivity profile to use.
Returns
The value of the gp kernel function for x_cart and i.
Note
Note the gp kernel is not implmented for all equilibrium types. For instance, vacuum equilibrium should not override this method.

◆ equilibrium_get_gp_sxrem_pp()

real (rprec) function equilibrium::equilibrium_get_gp_sxrem_pp ( class (equilibrium_class), intent(in)  this,
real (rprec), dimension(3), intent(in)  x_cart,
real (rprec), dimension(3), intent(in)  y_cart,
integer, intent(in)  index 
)

Get the soft x-ray emissivity gp kernel value for the position and position.

This method is virtual. The actual getting of the kernel function should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_gp_sxrem_pp
siesta_equilibrium::siesta_get_gp_sxrem_pp
Parameters
[in]thisA equilibrium_class instance.
[in]x_cartCartesian position to get the electron density at.
[in]y_cartProfile position index.
[in]indexIndex of the soft x-ray emissivity profile to use.
Returns
The value of the gp kernel function for x_cart and y_cart.
Note
Note the gp kernel is not implmented for all equilibrium types. For instance, vacuum equilibrium should not override this method.

◆ equilibrium_get_gp_te_ij()

real (rprec) function equilibrium::equilibrium_get_gp_te_ij ( class (equilibrium_class), intent(in)  this,
integer, intent(in)  i,
integer, intent(in)  j 
)

Get the electron temperature gp kernel value for the two indicies.

This method is virtual. The actual getting of the kernel function should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_gp_te_ij
siesta_equilibrium::siesta_get_gp_te_ij
Parameters
[in]thisA equilibrium_class instance.
[in]iith profile position.
[in]jith profile position.
Returns
The value of the gp kernel function for i, j.
Note
Note the gp kernel is not implmented for all equilibrium types. For instance, vacuum equilibrium should not override this method.

◆ equilibrium_get_gp_te_num_hyper_param()

integer function equilibrium::equilibrium_get_gp_te_num_hyper_param ( class (equilibrium_class), intent(in)  this)

Get the number of electron temperature gp kernel hyper parameters.

This method is virtual. The actual getting of the number of hyper parameters should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_gp_te_num_hyper_param
siesta_equilibrium::siesta_get_gp_te_num_hyper_param
Parameters
[in]thisA equilibrium_class instance.
Returns
Number of kernel hyper parameters.

◆ equilibrium_get_gp_te_pi()

real (rprec) function equilibrium::equilibrium_get_gp_te_pi ( class (equilibrium_class), intent(in)  this,
real (rprec), dimension(3), intent(in)  x_cart,
integer, intent(in)  i 
)

Get the electron temperature gp kernel value for the position and index.

This method is virtual. The actual getting of the kernel function should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_gp_te_pi
siesta_equilibrium::siesta_get_gp_te_pi
Parameters
[in]thisA equilibrium_class instance.
[in]x_cartCartesian position to get the electron temperature at.
[in]iProfile position index.
Returns
The value of the gp kernel function for x_cart and i.
Note
Note the gp kernel is not implmented for all equilibrium types. For instance, vacuum equilibrium should not override this method.

◆ equilibrium_get_gp_te_pp()

real (rprec) function equilibrium::equilibrium_get_gp_te_pp ( class (equilibrium_class), intent(in)  this,
real (rprec), dimension(3), intent(in)  x_cart,
real (rprec), dimension(3), intent(in)  y_cart 
)

Get the electron temperature gp kernel value for the position and position.

This method is virtual. The actual getting of the kernel function should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_gp_te_pp
siesta_equilibrium::siesta_get_gp_te_pp
Parameters
[in]thisA equilibrium_class instance.
[in]x_cartCartesian position to get the kernel at.
[in]y_cartCartesian position to get the kernel at.
Returns
The value of the gp kernel function for x_cart and y_cart.
Note
Note the gp kernel is not implmented for all equilibrium types. For instance, vacuum equilibrium should not override this method.

◆ equilibrium_get_gp_ti_ij()

real (rprec) function equilibrium::equilibrium_get_gp_ti_ij ( class (equilibrium_class), intent(in)  this,
integer, intent(in)  i,
integer, intent(in)  j 
)

Get the ion temperature gp kernel value for the two indicies.

This method is virtual. The actual getting of the kernel function should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_gp_ti_ij
siesta_equilibrium::siesta_get_gp_ti_ij
Parameters
[in]thisA equilibrium_class instance.
[in]iith profile position.
[in]jith profile position.
Returns
The value of the gp kernel function for i, j.
Note
Note the gp kernel is not implmented for all equilibrium types. For instance, vacuum equilibrium should not override this method.

◆ equilibrium_get_gp_ti_num_hyper_param()

integer function equilibrium::equilibrium_get_gp_ti_num_hyper_param ( class (equilibrium_class), intent(in)  this)

Get the number of ion temperature gp kernel hyper parameters.

This method is virtual. The actual getting of the number of hyper parameters should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_gp_ti_num_hyper_param
siesta_equilibrium::siesta_get_gp_ti_num_hyper_param
Parameters
[in]thisA equilibrium_class instance.
Returns
Number of kernel hyper parameters.

◆ equilibrium_get_gp_ti_pi()

real (rprec) function equilibrium::equilibrium_get_gp_ti_pi ( class (equilibrium_class), intent(in)  this,
real (rprec), dimension(3), intent(in)  x_cart,
integer, intent(in)  i 
)

Get the ion temperature gp kernel value for the position and index.

This method is virtual. The actual getting of the kernel function should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_gp_ti_pi
siesta_equilibrium::siesta_get_gp_ti_pi
Parameters
[in]thisA equilibrium_class instance.
[in]x_cartCartesian position to get the ion temperature at.
[in]iProfile position index.
Returns
The value of the gp kernel function for x_cart and i.
Note
Note the gp kernel is not implmented for all equilibrium types. For instance, vacuum equilibrium should not override this method.

◆ equilibrium_get_gp_ti_pp()

real (rprec) function equilibrium::equilibrium_get_gp_ti_pp ( class (equilibrium_class), intent(in)  this,
real (rprec), dimension(3), intent(in)  x_cart,
real (rprec), dimension(3), intent(in)  y_cart 
)

Get the ion temperature gp kernel value for the position and position.

This method is virtual. The actual getting of the kernel function should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_gp_ti_pp
siesta_equilibrium::siesta_get_gp_ti_pp
Parameters
[in]thisA equilibrium_class instance.
[in]x_cartCartesian position to get the kernel at.
[in]y_cartCartesian position to get the kernel at.
Returns
The value of the gp kernel function for x_cart and y_cart.
Note
Note the gp kernel is not implmented for all equilibrium types. For instance, vacuum equilibrium should not override this method.

◆ equilibrium_get_grid_size()

integer function equilibrium::equilibrium_get_grid_size ( class (equilibrium_class), intent(in)  this)

Get radial grid size.

This method is virtual. The actual getting of the radial grid size should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_grid_size
siesta_equilibrium::siesta_get_grid_size
Parameters
[in]thisA equilibrium_class instance.
Returns
Size of the radial grid.

◆ equilibrium_get_grid_start()

real (rprec) function equilibrium::equilibrium_get_grid_start ( class (equilibrium_class), intent(in)  this)

Get start of the radial grid.

This method is virtual. The actual getting of the radial grid start should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_grid_start
siesta_equilibrium::siesta_get_grid_start
Parameters
[in]thisA equilibrium_class instance.
Returns
Start of the radial grid.

◆ equilibrium_get_grid_stop()

real (rprec) function equilibrium::equilibrium_get_grid_stop ( class (equilibrium_class), intent(in)  this)

Get stop of the radial grid.

This method is virtual. The actual getting of the radial grid stop should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_grid_stop
siesta_equilibrium::siesta_get_grid_stop
Parameters
[in]thisA equilibrium_class instance.
Returns
Stop of the radial grid.

◆ equilibrium_get_int_b_dphi()

real (rprec) function equilibrium::equilibrium_get_int_b_dphi ( class (equilibrium_class), intent(in)  this,
real (rprec), intent(in)  s,
real (rprec), intent(in)  theta 
)

Gets the loop integrated magnetic field at a position.

This method is virtual. The actual getting of the loop integrated magnetic field should be handled by a subclass method. Returns the closed loop integration of the magnetic field to determine the enclosed current.

See also
vmec_equilibrium::vmec_get_Int_B_dphi
vacuum_equilibrium::vacuum_get_Int_B_dphi
siesta_equilibrium::siesta_get_Int_B_dphi
Parameters
[in]thisA equilibrium_class instance.
[in]sRadial position to integrate about.
[in]thetaPoloidal angle to integrate about.
Returns
The loop integrated magnetic field at x_cart.

◆ equilibrium_get_magnetic_volume_jphigrid()

real (rprec) function, dimension(:,:,:), pointer equilibrium::equilibrium_get_magnetic_volume_jphigrid ( class (equilibrium_class), intent(in)  this)

Get volume magnetic volume integration jphi grid points.

This method is virtual. The actual getting of the jphi grid points should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_magnetic_volume_jphigrid
siesta_equilibrium::siesta_get_magnetic_volume_jphigrid
Parameters
[in]thisA equilibrium_class instance.
Returns
The jphi grid points.

◆ equilibrium_get_magnetic_volume_jrgrid()

real (rprec) function, dimension(:,:,:), pointer equilibrium::equilibrium_get_magnetic_volume_jrgrid ( class (equilibrium_class), intent(in)  this)

Get volume magnetic volume integration jr grid points.

This method is virtual. The actual getting of the jr grid points should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_magnetic_volume_jrgrid
siesta_equilibrium::siesta_get_magnetic_volume_jrgrid
Parameters
[in]thisA equilibrium_class instance.
Returns
The jr grid points.

◆ equilibrium_get_magnetic_volume_jzgrid()

real (rprec) function, dimension(:,:,:), pointer equilibrium::equilibrium_get_magnetic_volume_jzgrid ( class (equilibrium_class), intent(in)  this)

Get volume magnetic volume integration jz grid points.

This method is virtual. The actual getting of the jz grid points should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_magnetic_volume_jzgrid
siesta_equilibrium::siesta_get_magnetic_volume_jzgrid
Parameters
[in]thisA equilibrium_class instance.
Returns
The jz grid points.

◆ equilibrium_get_magnetic_volume_rgrid()

real (rprec) function, dimension(:,:,:), pointer equilibrium::equilibrium_get_magnetic_volume_rgrid ( class (equilibrium_class), intent(in)  this)

Get volume magnetic volume integration radial grid points.

This method is virtual. The actual getting of the radial grid points should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_magnetic_volume_rgrid
siesta_equilibrium::siesta_get_magnetic_volume_rgrid
Parameters
[in]thisA equilibrium_class instance.
Returns
The radial grid points.

◆ equilibrium_get_magnetic_volume_zgrid()

real (rprec) function, dimension(:,:,:), pointer equilibrium::equilibrium_get_magnetic_volume_zgrid ( class (equilibrium_class), intent(in)  this)

Get volume magnetic volume integration z grid points.

This method is virtual. The actual getting of the z grid points should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_magnetic_volume_zgrid
siesta_equilibrium::siesta_get_magnetic_volume_zgrid
Parameters
[in]thisA equilibrium_class instance.
Returns
The z grid points.

◆ equilibrium_get_ne_af()

real (rprec) function, dimension(:), pointer equilibrium::equilibrium_get_ne_af ( class (equilibrium_class), intent(in)  this)

Get the electron density profile af array.

This method is virtual. The actual getting of the af array should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_ne_af
siesta_equilibrium::siesta_get_ne_af
Parameters
[in]thisA equilibrium_class instance.
Returns
Pointer to the electron density profile af array.

◆ equilibrium_get_ne_cart()

real (rprec) function equilibrium::equilibrium_get_ne_cart ( class (equilibrium_class), intent(in)  this,
real (rprec), dimension(3), intent(in)  x_cart 
)

Gets the electron density at a cartesian position.

This method is virtual. The actual getting of the electron density should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_ne
siesta_equilibrium::siesta_get_ne
Parameters
[in]thisA equilibrium_class instance.
[in]x_cartCartesian position to get the electron density at.
Returns
The electron density at x_cart.
Note
Note the electron density is not relevant to all equilibrium types. For instance, vacuum equilibrium should not override this method.

◆ equilibrium_get_ne_radial()

real (rprec) function equilibrium::equilibrium_get_ne_radial ( class (equilibrium_class), intent(in)  this,
real (rprec), intent(in)  s 
)

Gets the electron density at a radial position.

This method is virtual. The actual getting of the electron density should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_ne
siesta_equilibrium::siesta_get_ne
Parameters
[in]thisA equilibrium_class instance.
[in]sRadial position to get the electron density at.
Returns
The electron density at r.
Note
Note the electron density is not relevant to all equilibrium types. For instance, vacuum equilibrium should not override this method.

◆ equilibrium_get_p_cart()

real (rprec) function equilibrium::equilibrium_get_p_cart ( class (equilibrium_class), intent(in)  this,
real (rprec), dimension(3), intent(in)  x_cart,
logical, intent(in)  normalize 
)

Gets the plasma pressure at a cartesian position.

This method is virtual. The actual getting of the plasma pressure should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_p
siesta_equilibrium::siesta_get_p
Parameters
[in]thisA equilibrium_class instance.
[in]x_cartCartesian position to get the plasma pressure at.
[in]normalizeNormalize the pressure value.
Returns
The plasma pressure at x_cart.
Note
Note the plasma pressure is not relevant to all equilibrium types. For instance, vacuum equilibrium should not override this method.

◆ equilibrium_get_p_radial()

real (rprec) function equilibrium::equilibrium_get_p_radial ( class (equilibrium_class), intent(in)  this,
real (rprec), intent(in)  s,
logical, intent(in)  normalize 
)

Gets the plasma pressure at a radial position.

This method is virtual. The actual getting of the plasma pressure should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_p
siesta_equilibrium::siesta_get_p
Parameters
[in]thisA equilibrium_class instance.
[in]sCartesian position to get the plasma pressure at.
[in]normalizeNormalize the pressure value.
Returns
The plasma pressure at r.
Note
Note the plasma pressure is not relevant to all equilibrium types. For instance, vacuum equilibrium should not override this method.

◆ equilibrium_get_param_id()

integer function equilibrium::equilibrium_get_param_id ( class (equilibrium_class), intent(in)  this,
character (len=*), intent(in)  param_name 
)

Get the id for a reconstruction parameter.

This method is virtual. The actual getting of the reconstruction parameter id should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_param_id
vacuum_equilibrium::vacuum_get_param_id
siesta_equilibrium::siesta_get_param_id
Parameters
[in]thisA equilibrium_class instance.
[in]param_nameName of a reconstruction parameter.
Returns
The id for a reconstruction parameter.

◆ equilibrium_get_param_name()

character(len=data_name_length) function equilibrium::equilibrium_get_param_name ( class (equilibrium_class), intent(in)  this,
integer, intent(in)  id 
)

Gets the name of a reconstruction equilibrium parameter.

This method is virtual. The actual getting of the reconstruction parameter name should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_param_name
vacuum_equilibrium::vacuum_get_param_name
siesta_equilibrium::siesta_get_param_name
Parameters
[in]thisA equilibrium_class instance.
[in]idID of the parameter.
Returns
The name of the parameter.

◆ equilibrium_get_param_value()

real (rprec) function equilibrium::equilibrium_get_param_value ( class (equilibrium_class), intent(in)  this,
integer, intent(in)  id,
integer, intent(in)  i_index,
integer, intent(in)  j_index 
)

Gets the value of a reconstruction equilibrium parameter.

This method is virtual. The actual getting of the reconstruction parameter value should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_param_value
vacuum_equilibrium::vacuum_get_param_value
siesta_equilibrium::siesta_get_param_value
Parameters
[in]thisA equilibrium_class instance.
[in]idID of the parameter.
[in]i_indexThe ith index of the parameter.
[in]j_indexThe jth index of the parameter.
Returns
The value of the parameter.

◆ equilibrium_get_plasma_edge()

integer function equilibrium::equilibrium_get_plasma_edge ( class (equilibrium_class), intent(in)  this,
real (rprec), intent(in)  phi,
real (rprec), dimension(:), pointer  r,
real (rprec), dimension(:), pointer  z 
)

Gets the r and z positions of the outer surface at a toroidal angle.

This method is virtual. The actual getting of the magnetic field vector should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_plasma_edge
siesta_equilibrium::siesta_get_plasma_edge
Parameters
[in]thisA equilibrium_class instance.
[in]phiToroidal angle to determine the outer surface at.
[out]rThe radial postions of the other surface in a single toroidal angle.
[out]zThe Z postions of the other surface in a single toroidal angle.
Returns
The number of elements in the r and z arrays.
Todo:
An "edge" could be defined as a the last field line that intersects a limiter for the vacuum case. By defineing a r_last parameter, a feild line can be followed around the machine. When that field line intersecs the desired phi plane, record the r and z positions. Field line following will also need to be performed for siesta.

◆ equilibrium_get_sxrem_af()

real (rprec) function, dimension(:), pointer equilibrium::equilibrium_get_sxrem_af ( class (equilibrium_class), intent(in)  this,
integer, intent(in)  index 
)

Get the soft x-ray emissivity profile af array.

This method is virtual. The actual getting of the af array should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_sxrem_af
siesta_equilibrium::siesta_get_sxrem_af
Parameters
[in]thisA equilibrium_class instance.
[in]indexIndex of the soft x-ray emissivity profile to use.
Returns
Pointer to the soft x-ray emissivity profile af array.

◆ equilibrium_get_sxrem_cart()

real (rprec) function equilibrium::equilibrium_get_sxrem_cart ( class (equilibrium_class), intent(in)  this,
real (rprec), dimension(3), intent(in)  x_cart,
integer, intent(in)  index 
)

Gets the soft x-ray emissivity at a cartesian position.

This method is virtual. The actual getting of the soft x-ray emissivity should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_sxrem
siesta_equilibrium::siesta_get_sxrem
Parameters
[in]thisA equilibrium_class instance.
[in]x_cartCartesian position to get the soft x-ray emissivity at.
[in]indexIndex of the soft x-ray emissivity profile to use.
Returns
The soft x-ray emissivity at x_cart.
Note
Note the soft x-ray emissivity is not relevant to all equilibrium types. For instance, vacuum equilibrium should not override this method.

◆ equilibrium_get_sxrem_radial()

real (rprec) function equilibrium::equilibrium_get_sxrem_radial ( class (equilibrium_class), intent(in)  this,
real (rprec), intent(in)  s,
integer, intent(in)  index 
)

Gets the soft x-ray emissivity at a radial position.

This method is virtual. The actual getting of the soft x-ray emissivity should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_sxrem
siesta_equilibrium::siesta_get_sxrem
Parameters
[in]thisA equilibrium_class instance.
[in]sCartesian position to get the soft x-ray emissivity at.
[in]indexIndex of the soft x-ray emissivity profile to use.
Returns
The soft x-ray emissivity at x_cart.
Note
Note the soft x-ray emissivity is not relevant to all equilibrium types. For instance, vacuum equilibrium should not override this method.

◆ equilibrium_get_te_af()

real (rprec) function, dimension(:), pointer equilibrium::equilibrium_get_te_af ( class (equilibrium_class), intent(in)  this)

Get the electron temperature profile af array.

This method is virtual. The actual getting of the af array should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_te_af
siesta_equilibrium::siesta_get_te_af
Parameters
[in]thisA equilibrium_class instance.
Returns
Pointer to the electron temperature profile af array.

◆ equilibrium_get_te_cart()

real (rprec) function equilibrium::equilibrium_get_te_cart ( class (equilibrium_class), intent(in)  this,
real (rprec), dimension(3), intent(in)  x_cart 
)

Gets the electron temperature at a cartesian position.

This method is virtual. The actual getting of the electron temperature should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_te
siesta_equilibrium::siesta_get_te
Parameters
[in]thisA equilibrium_class instance.
[in]x_cartCartesian position to get the electron temperature at.
Returns
The electron temperature at x_cart.
Note
Note the electron temperature is not relevant to all equilibrium types. For instance, vacuum equilibrium should not override this method.

◆ equilibrium_get_te_radial()

real (rprec) function equilibrium::equilibrium_get_te_radial ( class (equilibrium_class), intent(in)  this,
real (rprec), intent(in)  s 
)

Gets the electron temperature at a radial position.

This method is virtual. The actual getting of the electron temperature should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_te
siesta_equilibrium::siesta_get_te
Parameters
[in]thisA equilibrium_class instance.
[in]sCartesian position to get the electron temperature at.
Returns
The electron temperature at r.
Note
Note the electron temperature is not relevant to all equilibrium types. For instance, vacuum equilibrium should not override this method.

◆ equilibrium_get_ti_af()

real (rprec) function, dimension(:), pointer equilibrium::equilibrium_get_ti_af ( class (equilibrium_class), intent(in)  this)

Get the ion temperature profile af array.

This method is virtual. The actual getting of the af array should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_ti_af
siesta_equilibrium::siesta_get_ti_af
Parameters
[in]thisA equilibrium_class instance.
Returns
Pointer to the electron ion profile af array.

◆ equilibrium_get_ti_cart()

real (rprec) function equilibrium::equilibrium_get_ti_cart ( class (equilibrium_class), intent(in)  this,
real (rprec), dimension(3), intent(in)  x_cart 
)

Gets the ion temperature at a cartesian position.

This method is virtual. The actual getting of the electron temperature should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_ti
siesta_equilibrium::siesta_get_ti
Parameters
[in]thisA equilibrium_class instance.
[in]x_cartCartesian position to get the electron temperature at.
Returns
The ion temperature at x_cart.
Note
Note the ion temperature is not relevant to all equilibrium types. For instance, vacuum equilibrium should not override this method.

◆ equilibrium_get_ti_radial()

real (rprec) function equilibrium::equilibrium_get_ti_radial ( class (equilibrium_class), intent(in)  this,
real (rprec), intent(in)  s 
)

Gets the ion temperature at a radial position.

This method is virtual. The actual getting of the ion temperature should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_ti
siesta_equilibrium::siesta_get_ti
Parameters
[in]thisA equilibrium_class instance.
[in]rCartesian position to get the ion temperature at.
Returns
The ion temperature at r.
Note
Note the ion temperature is not relevant to all equilibrium types. For instance, vacuum equilibrium should not override this method.

◆ equilibrium_get_type()

recursive character (len=data_name_length) function equilibrium::equilibrium_get_type ( class (equilibrium_class), intent(in)  this)

Checks if a parameter id is a reconstruction parameter.

This method is virtual. The actual check should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_type
vacuum_equilibrium::vacuum_get_type
siesta_equilibrium::siesta_get_type
Parameters
[in]thisA signal_class instance.
Returns
A string describing the signal type.

◆ equilibrium_get_volume_int_element()

real (rprec) function equilibrium::equilibrium_get_volume_int_element ( class (equilibrium_class), intent(in)  this)

Get volume integration element.

This method is virtual. The actual getting of the volume integration element should be handled by a subclass method.

See also
vmec_equilibrium::vmec_get_volume_int_element
siesta_equilibrium::siesta_get_volume_int_element
Parameters
[in]thisA equilibrium_class instance.
Returns
The volume integration element.

◆ equilibrium_has_vacuum_field()

logical function equilibrium::equilibrium_has_vacuum_field ( class (equilibrium_class), intent(in)  this)

Determines if vacuum field information is available.

This method is virtual. The actual check should be handled by a subclass method.

See also
vmec_equilibrium::vmec_has_vacuum_field
Parameters
[in]thisA equilibrium_class instance.
Returns
True of vacuum fields are available.

◆ equilibrium_is_2d_array()

logical function equilibrium::equilibrium_is_2d_array ( class (equilibrium_class), intent(in)  this,
integer, intent(in)  id 
)

Checks if a parameter id is a 2d array.

This method is virtual. The actual check should be handled by a subclass method.

See also
vmec_equilibrium::vmec_is_2d_array
siesta_equilibrium::siesta_is_2d_array
Parameters
[in]thisA equilibrium_class instance.
[in]idID of the parameter.
Returns
True if the parameter is a 2d array and false if otherwise.

◆ equilibrium_is_in_plasma()

logical function equilibrium::equilibrium_is_in_plasma ( class (equilibrium_class), intent(in)  this,
real (rprec), dimension(3), intent(in)  x_cart 
)

Determines if a point is inside the plasma or outside.

This method is virtual. The actual check should be handled by a subclass method.

See also
vmec_equilibrium::vmec_is_in_plasma
Parameters
[in]thisA model_class instance.
[in]x_cartCartesian position to check.
Returns
True if the point is inside the plasma.

◆ equilibrium_is_recon_param()

logical function equilibrium::equilibrium_is_recon_param ( class (equilibrium_class), intent(in)  this,
integer, intent(in)  id 
)

Checks if a parameter id is a reconstruction parameter.

This method is virtual. The actual check should be handled by a subclass method.

See also
vmec_equilibrium::vmec_is_recon_param
vacuum_equilibrium::vacuum_is_recon_param
siesta_equilibrium::siesta_is_recon_param
Parameters
[in]thisA equilibrium_class instance.
[in]idID of the parameter.
Returns
True if the parameter is a reconstruction parameter and false if otherwise.

◆ equilibrium_is_scaler_value()

logical function equilibrium::equilibrium_is_scaler_value ( class (equilibrium_class), intent(in)  this,
integer, intent(in)  id 
)

Checks if a parameter id is a scaler value.

This method is virtual. The actual check should be handled by a subclass method.

See also
vmec_equilibrium::vmec_is_scaler_value
siesta_equilibrium::siesta_is_scaler_value
Parameters
[in]thisA equilibrium_class instance.
[in]idID of the parameter.
Returns
True if the parameter is a scaler and false if otherwise.

◆ equilibrium_is_using_point()

logical function equilibrium::equilibrium_is_using_point ( class (equilibrium_class), intent(in)  this)

Checks if the point magnetics are being used.

This method is virtual. The actual check should be handled by a subclass method.

See also
vmec_equilibrium::vmec_is_using_point
Parameters
[in]thisA equilibrium_class instance.
Returns
True if the point magnetic are being used.

◆ equilibrium_limit_path_to_boundary()

type (vertex) function, pointer equilibrium::equilibrium_limit_path_to_boundary ( class (equilibrium_class), intent(in)  this,
type (vertex), pointer  path 
)

Limit an integration path to the boundary.

This method is virtual. The actual check should be handled by a subclass method.

See also
vmec_equilibrium::vmec_limit_path_to_boundary
Parameters
[in]thisA model_class instance.
[in]pathA chord path.
Returns
The chord path limited to the boundary.

◆ equilibrium_read_vac_file()

subroutine equilibrium::equilibrium_read_vac_file ( class (equilibrium_class), intent(in)  this,
integer, intent(in)  index,
integer, intent(in)  eq_comm 
)

Loads the vacuum magnetic field file.

Loads the vacuum magnetic field file. This will get on multiple processes to allow parallel loading of vacuum files.

See also
vmec_equilibrium::vmec_read_vac_file
siesta_equilibrium::siesta_read_vac_file
Parameters
[in]thisA equilibrium_class instance.
[in]indexIndex of the changed current.
[in]eq_commMPI communicator pool for VMEC.

◆ equilibrium_reset_state()

subroutine equilibrium::equilibrium_reset_state ( class (equilibrium_class), intent(inout)  this)

Reset the internal state of the equilibrium.

This method is virtual. The actual reseting of the equilibrium state should be handled by a subclass method. Sub classes need to make sure that the equilibrium is reset to a converged state.

See also
vmec_equilibrium::vmec_reset_state
siesta_equilibrium::siesta_reset_state
Parameters
[in,out]thisA equilibrium_class instance.

◆ equilibrium_restart()

subroutine equilibrium::equilibrium_restart ( class (equilibrium_class), intent(in)  this,
integer, intent(in)  result_ncid,
integer, intent(in)  current_step 
)

Restart equilibrium.

This method is virtual. The actual restarting of the equilibrium variables should be handled by a subclass method.

See also
vmec_equilibrium::vmec_restart and
siesta_equilibrium::siesta_restart
Parameters
[in]thisA equilibrium_class instance.
[in]result_ncidNetCDF file id of the result file.
[in]current_stepStep index to write variables to.

◆ equilibrium_save_state()

subroutine equilibrium::equilibrium_save_state ( class (equilibrium_class), intent(inout)  this)

Save the internal state of the equilibrium.

This method is virtual. The actual saving of the equilibrium state should be handled by a subclass method.

See also
vmec_equilibrium::vmec_save_state
siesta_equilibrium::siesta_save_state
Parameters
[in,out]thisA equilibrium_class instance.

◆ equilibrium_set_magnetic_cache_point()

subroutine equilibrium::equilibrium_set_magnetic_cache_point ( class (equilibrium_class), intent(inout)  this,
logical, intent(in)  use_axi,
integer, intent(in)  state_flags 
)

Sets the magnetic cache of the equilibrium for points.

This method is virtual. The actual setting of the magnetic cache should be handled a subclass method. The magnetic cache is any pre compuation that needs to be performed so that magnetic signals may compute a modeled signal. If the equilibrium does not require any information to be cached, this method does not need to be overridden. This method is meant to only be called once to tell the equilibrium it needs to use a magnetic cache.

See also
vmec_equilibrium::vmec_set_magnetic_cache
siesta_equilibrium::siesta_set_magnetic_cache
Parameters
[in,out]thisA equilibrium_class instance.
[in]use_axiMagnetics can subtract off axisymmetric components.
[in]state_flagsBitwise flags to indicate which parts of the model changed.

◆ equilibrium_set_magnetic_cache_response()

subroutine equilibrium::equilibrium_set_magnetic_cache_response ( class (equilibrium_class), intent(inout)  this,
type (magnetic_response_class), intent(in)  response_object,
integer, intent(in)  state_flags 
)

Sets the magnetic cache of the equilibrium for the magnetic response.

This method is virtual. The actual setting of the magnetic cache should be handled a subclass method. The magnetic cache is any pre compuation that needs to be performed so that magnetic signals may compute a modeled signal. If the equilibrium does not require any information to be cached, this method does not need to be overridden. This method is meant to only be called once to tell the equilibrium it needs to use a magnetic cache.

See also
vmec_equilibrium::vmec_set_magnetic_cache
siesta_equilibrium::siesta_set_magnetic_cache
Parameters
[in,out]thisA equilibrium_class instance.
[in]response_objectA magnetic_response::magnetic_response_class instance.
[in]state_flagsBitwise flags to indicate which parts of the model changed.

◆ equilibrium_set_param()

subroutine equilibrium::equilibrium_set_param ( class (equilibrium_class), intent(inout)  this,
integer, intent(in)  id,
integer, intent(in)  i_index,
integer, intent(in)  j_index,
real (rprec), intent(in)  value,
integer, intent(in)  eq_comm,
integer, intent(inout)  state_flags 
)

Sets the value of a reconstruction equilibrium parameter.

This method is virtual. The actual setting of the parameter should be handled by a subclass method. The subclass is responsible updating the state flags.

See also
vmec_equilibrium::vmec_set_param
vacuum_equilibrium::vacuum_set_param
siesta_equilibrium::siesta_set_param
Parameters
[in,out]thisA equilibrium_class instance.
[in]idID of the parameter.
[in]i_indexThe ith index of the parameter.
[in]j_indexThe jth index of the parameter.
[in]valueThe value of the parameter.
[in]eq_commMPI communicator for the child equilibrium processes.
[in,out]state_flagsBitwise flags to indicate which parts of the model changed.

◆ equilibrium_sync_child()

subroutine equilibrium::equilibrium_sync_child ( class (equilibrium_class), intent(inout)  this,
integer, intent(in)  index,
integer, intent(in)  recon_comm 
)

Syncronize a child equilibrium state to the parent.

Syncs data between a child and the parent process. If MPI support is not compiled in this subroutine reduces to a no op.

Parameters
[in,out]thisA equilibrium_class instance.
[in]indexReconstruction rank to sync.
[in]recon_commMPI communicator for the reconstruction processes.

◆ equilibrium_sync_state()

subroutine equilibrium::equilibrium_sync_state ( class (equilibrium_class), intent(inout)  this,
integer, intent(in)  recon_comm 
)

Syncronize the equilibrium state to children.

Syncs data between the parent and child processes. If MPI support is not compiled in this subroutine reduces to a no op.

Parameters
[in,out]thisA equilibrium_class instance.
[in]recon_commMPI communicator for the reconstruction processes.

◆ equilibrium_write()

subroutine equilibrium::equilibrium_write ( class (equilibrium_class), intent(in)  this,
integer, intent(in)  iou 
)

Write out the equilibrium to an output file.

This method is virtual. The actual writing of the equilibrium should be handled by a subclass method.

See also
vmec_equilibrium::vmec_write
vacuum_equilibrium::vacuum_write
siesta_equilibrium::siesta_write
Parameters
[in]thisA equilibrium_class instance.
[in]iouInput/output unit of the output file.

◆ equilibrium_write_init_data()

subroutine equilibrium::equilibrium_write_init_data ( class (equilibrium_class), intent(in)  this,
integer, intent(in)  result_ncid 
)

Write inital data to NetCDF result file.

This method is virtual. The actual writing of the equilibrium variables should be handled by a subclass method.

See also
vmec_equilibrium::vmec_write_init_data
siesta_equilibrium::siesta_write_init_data
Parameters
[in]thisA equilibrium_class instance.
[in]result_ncidNetCDF file id of the result file.

◆ equilibrium_write_input()

subroutine equilibrium::equilibrium_write_input ( class (equilibrium_class), intent(in)  this,
integer, intent(in)  current_step 
)

Write out the equilibrium to an output file.

This method is virtual. The actual writing of the equilibrium should be handled by a subclass method.

See also
vmec_equilibrium::vmec_write_input
vacuum_equilibrium::vacuum_write_input
siesta_equilibrium::siesta_write_input
Parameters
[in]thisA equilibrium_class instance.
[in]current_stepStep number to append to input filename.

◆ equilibrium_write_step_data()

subroutine equilibrium::equilibrium_write_step_data ( class (equilibrium_class), intent(in)  this,
integer, intent(in)  result_ncid,
integer, intent(in)  current_step 
)

Write step data to NetCDF result file.

This method is virtual. The actual writing of the equilibrium variables should be handled by a subclass method.

See also
vmec_equilibrium::vmec_write_step_data and
siesta_equilibrium::siesta_write_step_data
Parameters
[in]thisA equilibrium_class instance.
[in]result_ncidNetCDF file id of the result file.
[in]current_stepStep index to write variables to.