Stellarator-Tools
|
Defines the base class of the type siesta_class. This module contains all the code necessary to interface V3FIT with SIESTA. More...
Data Types | |
interface | siesta_class |
Base class representing a siesta_equilibrium. More... | |
Functions/Subroutines | |
type(siesta_class) function, pointer | siesta_construct (file_name, restart_file_name, ne, te, ti, sxrem, phi_offset, z_offset, pol_rad_ratio, iou, eq_comm, recon_comm, state_flags, vmec_namelist, wout_file_name, force_solve) |
Construct a siesta_class object. More... | |
subroutine | siesta_destruct (this) |
Deconstruct a siesta_class object. More... | |
subroutine | siesta_set_param (this, id, i_index, j_index, value, eq_comm, state_flags) |
Sets the value of a reconstruction equilibrium parameter. More... | |
subroutine | siesta_set_magnetic_cache_response (this, response_object, state_flags) |
Set magnetic cache for plasma response. More... | |
subroutine | siesta_set_magnetic_cache_point (this, use_axi, state_flags) |
Set magnetic cache initialy. More... | |
subroutine | siesta_set_magnetic_cache_calc (this) |
Set magnetic cache. More... | |
character(len=data_name_length) function | siesta_get_type (this) |
Gets a discription of the equilibrium type. More... | |
integer function | siesta_get_param_id (this, param_name) |
Get the id for a reconstruction parameter. More... | |
real(rprec) function | siesta_get_param_value (this, id, i_index, j_index) |
Get the value of a reconstruction siesta parameter. More... | |
character(len=data_name_length) function | siesta_get_param_name (this, id) |
Get the name of a reconstruction siesta parameter. More... | |
real(rprec) function | siesta_get_gp_ne_pi (this, x_cart, i) |
Get the electron density gp kernel value for the position and index. More... | |
real(rprec) function | siesta_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 | siesta_get_ne_cart (this, x_cart) |
Gets the electron density at a cartesian position. More... | |
real(rprec) function | siesta_get_ne_radial (this, s) |
Gets the electron density at a s, u=0, v=0 position. More... | |
real(rprec) function | siesta_get_gp_te_pi (this, x_cart, i) |
Get the electron temperature gp kernel value for the position and index. More... | |
real(rprec) function | siesta_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 | siesta_get_te_cart (this, x_cart) |
Gets the electron temperature at a cartesian position. More... | |
real(rprec) function | siesta_get_te_radial (this, s) |
Gets the electron temperature at a s, u=0, v=0 position. More... | |
real(rprec) function | siesta_get_gp_ti_pi (this, x_cart, i) |
Get the ion temperature gp kernel value for the position and index. More... | |
real(rprec) function | siesta_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 | siesta_get_ti_cart (this, x_cart) |
Gets the ion temperature at a cartesian position. More... | |
real(rprec) function | siesta_get_ti_radial (this, s) |
Gets the ion temperature at a s, u=0, v=0 position. More... | |
real(rprec) function | siesta_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 | siesta_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 | siesta_get_sxrem_cart (this, x_cart, index) |
Gets the soft x-ray emissivity at a cartesian position. More... | |
real(rprec) function | siesta_get_sxrem_radial (this, s, index) |
Gets the soft x-ray emissivity at a s, u=0, v=0 position. More... | |
real(rprec) function | siesta_get_p_cart (this, x_cart, normalize) |
Gets the plasma pressure at a cartesian position. More... | |
real(rprec) function | siesta_get_p_radial (this, s, normalize) |
Gets the plasma pressure at a s, u=0, v=0 position. More... | |
real(rprec) function | siesta_get_p_flux (this, flux, normalize) |
Gets the plasma pressure at a flux position. More... | |
real(rprec) function, dimension(3) | siesta_get_b_vec (this, x_cart, cyl) |
Gets the magnetic field vector at a position. More... | |
real(rprec) function | siesta_get_int_b_dphi (this, s, theta) |
Gets the loop integrated magnetic field at a position. More... | |
real(rprec) function, dimension(3) | siesta_get_suv (this, x_cart) |
Gets siesta s value at position. More... | |
integer function | siesta_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(3) | siesta_get_ext_b_plasma (this, position, axi_only) |
Get external plasma magnetic field. More... | |
real(rprec) function, dimension(3) | siesta_get_int_b_plasma (this, flux) |
Get internal plasma magnetic field. More... | |
integer function | siesta_get_grid_size (this) |
Get radial grid size. More... | |
logical function | siesta_is_1d_array (this, id) |
Checks if a parameter id is a 1d array. More... | |
logical function | siesta_is_recon_param (this, id) |
Checks if a parameter id is a reconstruction parameter. More... | |
logical function | siesta_converge (this, num_iter, iou, eq_comm, state_flags) |
Solves the siesta equilibrium. More... | |
subroutine | siesta_save_state (this) |
Save the internal state of the equilibrium. More... | |
subroutine | siesta_reset_state (this) |
Reset the internal state of the equilibrium. More... | |
subroutine | siesta_write (this, iou) |
Write out the equilibrium to an output file. More... | |
subroutine | siesta_write_input (this, current_step) |
Write the current valid input. More... | |
subroutine | siesta_sync_state (this, recon_comm) |
Syncronize the siesta state to children. More... | |
subroutine | siesta_sync_child (this, index, recon_comm) |
Syncronize a child siesta state to the parent. More... | |
pure real(rprec) function | siesta_to_vmec_s (s) |
Map the siesta s to the vmec s. More... | |
pure real(rprec) function | siesta_to_siesta_s (s) |
Map the vmec s to the siesta s. More... | |
pure real(rprec) function | siesta_to_i_vmec (s) |
Find the vmec s index. More... | |
pure integer function | siesta_to_i_vmec_low (s) |
Find the lower vmec s index. More... | |
pure real(rprec) function | siesta_to_w_vmec_low (s, ilow) |
Find the lower interplation weighting. More... | |
Variables | |
integer, parameter | siesta_helpert_id = 82 |
Helical perturbation parameter. | |
Defines the base class of the type siesta_class. This module contains all the code necessary to interface V3FIT with SIESTA.
type (siesta_class) function, pointer siesta_equilibrium::siesta_construct | ( | character (len=*), intent(in) | file_name, |
character (len=*), intent(in) | restart_file_name, | ||
type (pprofile_class), pointer | ne, | ||
type (pprofile_class), pointer | te, | ||
type (pprofile_class), pointer | ti, | ||
type (pprofile_pointer), dimension(:), pointer | sxrem, | ||
real (rprec), intent(in) | phi_offset, | ||
real (rprec), intent(in) | z_offset, | ||
real (rprec), intent(in) | pol_rad_ratio, | ||
integer, intent(in) | iou, | ||
integer, intent(in) | eq_comm, | ||
integer, intent(in) | recon_comm, | ||
integer, intent(inout) | state_flags, | ||
character (len=*), intent(in) | vmec_namelist, | ||
character (len=*), intent(in) | wout_file_name, | ||
logical, intent(in) | force_solve | ||
) |
Construct a siesta_class object.
Allocates memory and initializes a siesta_class object. Currently this is limited to just loading an already created restart file but in the future it will load initalize and load siesta as well.
[in] | file_name | Filename of the siesta namelist input file. |
[in] | restart_file_name | Filename of the siesta restart file. |
[in] | ne | pprofile_T for the electron density. |
[in] | te | pprofile_T for the electron temperature. |
[in] | ti | pprofile_T for the ion temperature. |
[in] | sxrem | pprofile_T for the soft x-ray emissivity. |
[in] | phi_offset | Initial phi offset of the plasma relative to the diagnostics in radians. |
[in] | z_offset | Initial Z offset of the plasma relative to the machine center. |
[in] | iou | Input/output unit to log messages to. |
[in] | eq_comm | MPI communicator pool for SIESTA. |
[in] | recon_comm | MPI communicator pool for reconstruction. |
[in] | vmec | An instance of a vmec_equilibrium object. |
[in,out] | state_flags | Bitwise flags to indicate which parts of the model changed. |
[in] | vmec_namelist | Filename of the vmec namelist input file. |
[in] | wout_file_name | Filename of the vmec wout input file. |
[in] | force_solve | If true, forces the equilbirum to resolve every time. |
logical function siesta_equilibrium::siesta_converge | ( | class (siesta_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 siesta equilibrium.
This method overrides equilibrium::equilibrium_converge. Solves the SIESTA equilibrium and loads the resulting wout file in preparation of computing modeled signals. If the vmec equilibrium needs updating, it solves that in addition.
[in,out] | this | A siesta_class instance. |
[in,out] | num_iter | Counter to track the number of iterations. |
[in] | iou | Input/Output unit of the runlog file. |
[in] | eq_comm | MPI communicator pool for siesta/vmec. |
[in] | state_flags | Bitwise flags to indicate which parts of the model changed. |
subroutine siesta_equilibrium::siesta_destruct | ( | type (siesta_class), intent(inout) | this | ) |
Deconstruct a siesta_class object.
Deallocates memory and uninitializes a siesta_class object.
[in,out] | this | A siesta_class instance. |
real (rprec) function, dimension(3) siesta_equilibrium::siesta_get_b_vec | ( | class (siesta_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 overrides equilibrium::equilibrium_get_B_vec.
[in] | this | A siesta_class instance. |
[in] | x_cart | Cartesian position to get the magnetic field vector at. |
[in] | cyl | Flag that specifies if the bfield should be returned in cartesian or cylindical coordinates. |
real (rprec) function, dimension(3) siesta_equilibrium::siesta_get_ext_b_plasma | ( | class (siesta_class), intent(in) | this, |
real (rprec), dimension(3), intent(in) | position, | ||
logical, intent(in) | axi_only | ||
) |
Get external plasma magnetic field.
This method overrides equilibrium::equilibrium_get_ext_b_plasma. The b field is returned in cyclindical coordinates. This function does not require shifting the plasma relative to the diagnostics. The plasma has already been shifted when computing the surface currents and prime position.
[in] | this | A siesta_class instance. |
[in] | position | Position to compute the fields at in cylindrical coordinates. |
[in] | axi_only | Gives only the axisymmtric component of the magnetic field. |
real (rprec) function siesta_equilibrium::siesta_get_gp_ne_pi | ( | class (siesta_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 overrides equilibrium::equilibrium_get_gp_ne_pi. If no density profile was created zero is returned.
[in] | this | A siesta_class instance. |
[in] | x_cart | Cartesian position to get the electron density at. |
[in] | i | Profile position index. |
real (rprec) function siesta_equilibrium::siesta_get_gp_ne_pp | ( | class (siesta_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 overrides equilibrium::equilibrium_get_gp_ne_pp. If no density profile was created zero is returned.
[in] | this | A siesta_class instance. |
[in] | x_cart | First cartesian position to get the electron density at. |
[in] | y_cart | Second cartesian position to get the electron density at. |
real (rprec) function siesta_equilibrium::siesta_get_gp_sxrem_pi | ( | class (siesta_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 overrides equilibrium::equilibrium_get_gp_sxrem_pi. If no density profile was created zero is returned.
[in] | this | A siesta_class instance. |
[in] | x_cart | Cartesian position to get the soft x-ray emissivity at. |
[in] | i | Profile position index. |
[in] | index | Index of the soft x-ray emissivity profile. |
real (rprec) function siesta_equilibrium::siesta_get_gp_sxrem_pp | ( | class (siesta_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 overrides equilibrium::equilibrium_get_gp_sxrem_pp. If no soft x-ray emissivity profile was created zero is returned.
[in] | this | A siesta_class instance. |
[in] | x_cart | First cartesian position to get the soft x-ray emissivity at. |
[in] | y_cart | Second cartesian position to get the soft x-ray emissivity at. |
[in] | index | Index of the soft x-ray emissivity profile. |
real (rprec) function siesta_equilibrium::siesta_get_gp_te_pi | ( | class (siesta_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 overrides equilibrium::equilibrium_get_gp_te_pi. If no electron temperature profile was created zero is returned.
[in] | this | A siesta_class instance. |
[in] | x_cart | Cartesian position to get the electron temperature at. |
[in] | i | Profile position index. |
real (rprec) function siesta_equilibrium::siesta_get_gp_te_pp | ( | class (siesta_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 overrides equilibrium::equilibrium_get_gp_te_pp. If no electron temperature profile was created zero is returned.
[in] | this | A siesta_class instance. |
[in] | x_cart | First cartesian position to get the electron temperature at. |
[in] | y_cart | Second cartesian position to get the electron temperature at. |
real (rprec) function siesta_equilibrium::siesta_get_gp_ti_pi | ( | class (siesta_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 overrides equilibrium::equilibrium_get_gp_ti_pi. If no ion temperature profile was created zero is returned.
[in] | this | A siesta_class instance. |
[in] | x_cart | Cartesian position to get the ion temperature at. |
[in] | i | Profile position index. |
real (rprec) function siesta_equilibrium::siesta_get_gp_ti_pp | ( | class (siesta_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 overrides equilibrium::equilibrium_get_gp_ti_pp. If no ion temperature profile was created zero is returned.
[in] | this | A siesta_class instance. |
[in] | x_cart | First cartesian position to get the ion temperature at. |
[in] | y_cart | Second cartesian position to get the ion temperature at. |
integer function siesta_equilibrium::siesta_get_grid_size | ( | class (siesta_class), intent(in) | this | ) |
Get radial grid size.
This method overrides equilibrium::equilibrium_get_grid_size.
[in] | this | A siesta_class instance. |
real (rprec) function siesta_equilibrium::siesta_get_int_b_dphi | ( | class (siesta_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 overrides equilibrium::equilibrium_get_Int_B_dphi. This computes Int[B*dl]
[in] | this | A siesta_class instance. |
[in] | s | S position to integrate about. |
[in] | theta | U angle to integrate about. |
real (rprec) function, dimension(3) siesta_equilibrium::siesta_get_int_b_plasma | ( | class (siesta_class), intent(in) | this, |
real (rprec), dimension(3), intent(in) | flux | ||
) |
Get internal plasma magnetic field.
The internal b field is returned in cyclindical coordinates. This function does not require shifting the plasma relative to the diagnostics. The plasma has already been shifted when converting to the flux surface position.
[in] | this | A siesta_class instance. |
[in] | flux | Position to compute the fields at in cylindrical coordinates. |
real (rprec) function siesta_equilibrium::siesta_get_ne_cart | ( | class (siesta_class), intent(in) | this, |
real (rprec), dimension(3), intent(in) | x_cart | ||
) |
Gets the electron density at a cartesian position.
This method overrides equilibrium::equilibrium_get_ne. If no density profile was created, return zero. Density is defined by a mapping function of the pressure.
[in] | this | A siesta_class instance. |
[in] | x_cart | Cartesian position to get the electron density at. |
real (rprec) function siesta_equilibrium::siesta_get_ne_radial | ( | class (siesta_class), intent(in) | this, |
real (rprec), intent(in) | s | ||
) |
Gets the electron density at a s, u=0, v=0 position.
This method overrides equilibrium::equilibrium_get_ne. If no density profile was created, return zero. Density is defined by a mapping function of the pressure.
[in] | this | A siesta_class instance. |
[in] | s | Radial position to get the electron density at. |
real (rprec) function siesta_equilibrium::siesta_get_p_cart | ( | class (siesta_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 overrides equilibrium::equilibrium_get_p.
[in] | this | A siesta_class instance. |
[in] | x_cart | Cartesian position to get the plasma pressure at. |
[in] | normalize | Normalize the pressure value. |
real (rprec) function siesta_equilibrium::siesta_get_p_flux | ( | class (siesta_class), intent(in) | this, |
real (rprec), dimension(3), intent(in) | flux, | ||
logical, intent(in) | normalize | ||
) |
Gets the plasma pressure at a flux position.
This method overrides equilibrium::equilibrium_get_p.
[in] | this | A siesta_class instance. |
[in] | s | Radial position to get the electron density at. |
[in] | normalize | Normalize the pressure value. |
real (rprec) function siesta_equilibrium::siesta_get_p_radial | ( | class (siesta_class), intent(in) | this, |
real (rprec), intent(in) | s, | ||
logical, intent(in) | normalize | ||
) |
Gets the plasma pressure at a s, u=0, v=0 position.
This method overrides equilibrium::equilibrium_get_p.
[in] | this | A siesta_class instance. |
[in] | s | Cartesian position to get the plasma pressure at. |
[in] | normalize | Normalize the pressure value. |
integer function siesta_equilibrium::siesta_get_param_id | ( | class (siesta_class), intent(in) | this, |
character (len=*), intent(in) | param_name | ||
) |
Get the id for a reconstruction parameter.
This method overrides equilibrium::equilibrium_get_param_id.
[in] | this | A siesta_class instance. |
[in] | param_name | Name of a reconstruction parameter. |
character(len=data_name_length) function siesta_equilibrium::siesta_get_param_name | ( | class (siesta_class), intent(in) | this, |
integer, intent(in) | id | ||
) |
Get the name of a reconstruction siesta parameter.
This method overrides equilibrium::equilibrium_get_param_name.
[in] | this | A siesta_class instance. |
[in] | id | ID of the parameter. |
real (rprec) function siesta_equilibrium::siesta_get_param_value | ( | class (siesta_class), intent(in) | this, |
integer, intent(in) | id, | ||
integer, intent(in) | i_index, | ||
integer, intent(in) | j_index | ||
) |
Get the value of a reconstruction siesta parameter.
This method overrides equilibrium::equilibrium_get_param_value.
[in] | this | A siesta_class instance. |
[in] | id | ID of the parameter. |
[in] | i_index | The ith index of the parameter. |
[in] | j_index | The jth index of the parameter. |
integer function siesta_equilibrium::siesta_get_plasma_edge | ( | class (siesta_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 overrides equilibrium::equilibrium_get_plasma_edge.
[in] | this | A siesta_class instance. |
[in] | phi | Toroidal angle to determine the outer surface at. |
[in,out] | r | The radial postions of the other surface in a single toroidal angle. |
[in,out] | z | The Z postions of the other surface in a single toroidal angle. |
real (rprec) function, dimension(3) siesta_equilibrium::siesta_get_suv | ( | class (siesta_class), intent(in) | this, |
real (rprec), dimension(3), intent(in) | x_cart | ||
) |
Gets siesta s value at position.
Converts from cartesian coordinates to siesta's flux coordinates. Unlike vmec where only the s position in flux surface space is needed, the full flux surface space potition is needed here.
[in] | this | A siesta_class instance. |
[in] | x_cart | Cartesian position to get the s position at. |
real (rprec) function siesta_equilibrium::siesta_get_sxrem_cart | ( | class (siesta_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 overrides equilibrium::equilibrium_get_sxrem. If no soft x-ray emissivity profile was created, return zero. Soft x-ray emissivity is defined by a mapping function of the pressure.
[in] | this | A siesta_class instance. |
[in] | x_cart | Cartesian position to get the soft x-ray emissivity at. |
[in] | index | Index of the soft x-ray emissivity profile. |
real (rprec) function siesta_equilibrium::siesta_get_sxrem_radial | ( | class (siesta_class), intent(in) | this, |
real (rprec), intent(in) | s, | ||
integer, intent(in) | index | ||
) |
Gets the soft x-ray emissivity at a s, u=0, v=0 position.
This method overrides equilibrium::equilibrium_get_sxrem. If no soft x-ray emissivity profile was created, return zero. Soft x-ray emissivity is defined by a mapping function of the pressure.
[in] | this | A siesta_class instance. |
[in] | s | Radial position to get the electron density at. |
[in] | index | Index of the soft x-ray emissivity profile. |
real (rprec) function siesta_equilibrium::siesta_get_te_cart | ( | class (siesta_class), intent(in) | this, |
real (rprec), dimension(3), intent(in) | x_cart | ||
) |
Gets the electron temperature at a cartesian position.
This method overrides equilibrium::equilibrium_get_te. If no electron temperature profile was created, return zero. Electron temperature is defined by a mapping function of the pressure.
[in] | this | A siesta_class instance. |
[in] | x_cart | Cartesian position to get the electron temperature at. |
real (rprec) function siesta_equilibrium::siesta_get_te_radial | ( | class (siesta_class), intent(in) | this, |
real (rprec), intent(in) | s | ||
) |
Gets the electron temperature at a s, u=0, v=0 position.
This method overrides equilibrium::equilibrium_get_te. If no electron temperature profile was created, return zero. Electron temperature is defined by a mapping function of the pressure.
[in] | this | A siesta_class instance. |
[in] | s | Radial position to get the electron density at. |
real (rprec) function siesta_equilibrium::siesta_get_ti_cart | ( | class (siesta_class), intent(in) | this, |
real (rprec), dimension(3), intent(in) | x_cart | ||
) |
Gets the ion temperature at a cartesian position.
This method overrides equilibrium::equilibrium_get_ti. If no ion temperature profile was created, return zero. Ion temperature is defined by a mapping function of the pressure.
[in] | this | A siesta_class instance. |
[in] | x_cart | Cartesian position to get the ion temperature at. |
real (rprec) function siesta_equilibrium::siesta_get_ti_radial | ( | class (siesta_class), intent(in) | this, |
real (rprec), intent(in) | s | ||
) |
Gets the ion temperature at a s, u=0, v=0 position.
This method overrides equilibrium::equilibrium_get_ti. If no ion ion temperature profile was created, return zero. Ion temperature is defined by a mapping function of the pressure.
[in] | this | A siesta_class instance. |
[in] | s | Radial position to get the ion density at. |
character (len=data_name_length) function siesta_equilibrium::siesta_get_type | ( | class (siesta_class), intent(in) | this | ) |
Gets a discription of the equilibrium type.
[in] | this | A siesta_class instance. |
logical function siesta_equilibrium::siesta_is_1d_array | ( | class (siesta_class), intent(in) | this, |
integer, intent(in) | id | ||
) |
Checks if a parameter id is a 1d array.
This method overrides equilibrium::equilibrium_is_1d_array.
[in] | this | A siesta_class instance. |
[in] | id | ID of the parameter. |
logical function siesta_equilibrium::siesta_is_recon_param | ( | class (siesta_class), intent(in) | this, |
integer, intent(in) | id | ||
) |
Checks if a parameter id is a reconstruction parameter.
This method overrides equilibrium::equilibrium_is_recon_param.
[in] | this | A siesta_class instance. |
[in] | id | ID of the parameter. |
subroutine siesta_equilibrium::siesta_reset_state | ( | class (siesta_class), intent(inout) | this | ) |
Reset the internal state of the equilibrium.
Copies the saved siesta state back to siesta. Also resets the vmec state.
[in,out] | this | A siesta_class instance. |
subroutine siesta_equilibrium::siesta_save_state | ( | class (siesta_class), intent(inout) | this | ) |
Save the internal state of the equilibrium.
Saves the siesta state. Also saves the vmec state.
[in,out] | this | A siesta_class instance. |
subroutine siesta_equilibrium::siesta_set_magnetic_cache_calc | ( | class (siesta_class), intent(inout) | this | ) |
Set magnetic cache.
After the equilibrium has been converged calculate the r, z, jr, jphi and jz on grid of s, u, v points.
[in,out] | this | A siesta_class instance. |
subroutine siesta_equilibrium::siesta_set_magnetic_cache_point | ( | class (siesta_class), intent(inout) | this, |
logical, intent(in) | use_axi, | ||
integer, intent(in) | state_flags | ||
) |
Set magnetic cache initialy.
This method overrides equilibrium::equilibrium_set_magnetic_cache. This allocates a sieste_magnetic_cache structure. Point measurements require no array allocations.
[in,out] | this | A siesta_class instance. |
[in] | use_axi | Magnetics can subtract off axisymmetric components. |
[in] | state_flags | Bitwise flags to indicate which parts of the model changed. |
subroutine siesta_equilibrium::siesta_set_magnetic_cache_response | ( | class (siesta_class), intent(inout) | this, |
type (magnetic_response_class), intent(in) | response_object, | ||
integer, intent(in) | state_flags | ||
) |
Set magnetic cache for plasma response.
This method overrides equilibrium::equilibrium_set_magnetic_cache. This allocates a vmec_magnetic_cache structure. Point measurements require no array allocations.
[in,out] | this | A siesta_class instance. |
[in] | response_object | A magnetic_response::magnetic_response_class instance. |
[in] | state_flags | Bitwise flags to indicate which parts of the model changed. |
subroutine siesta_equilibrium::siesta_set_param | ( | class (siesta_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 overrides equilibrium::equilibrium_set_param. When a SIESTA parameter is changed, propagate the changes to the SIESTA internal state and inform the caller that the equilibrium needs reconvergence.
[in,out] | this | A siesta_class instance. |
[in] | id | ID of the parameter. |
[in] | i_index | The ith index of the parameter. |
[in] | j_index | The jth index of the parameter. |
[in] | value | The value of the parameter. |
[in] | eq_comm | MPI communicator for the child equilibrium processes. |
[in,out] | state_flags | Bitwise flags to indicate which parts of the model changed. |
subroutine siesta_equilibrium::siesta_sync_child | ( | class (siesta_class), intent(inout) | this, |
integer, intent(in) | index, | ||
integer, intent(in) | recon_comm | ||
) |
Syncronize a child siesta 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.
[in,out] | this | A siesta_class instance. |
[in] | index | Reconstruction rank to sync. |
[in] | recon_comm | MPI communicator for the reconstruction processes. |
subroutine siesta_equilibrium::siesta_sync_state | ( | class (siesta_class), intent(inout) | this, |
integer, intent(in) | recon_comm | ||
) |
Syncronize the siesta 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.
[in,out] | this | A siesta_class instance. |
[in] | recon_comm | MPI communicator for the reconstruction processes. |
pure real (rprec) function siesta_equilibrium::siesta_to_i_vmec | ( | real (rprec), intent(in) | s | ) |
Find the vmec s index.
Given a siesta s_s, find the index corresponding to the vmec grid. This is the non integer position coresponding to the absolute i position. The normalized vmec toroidal flux s_v corresponding to a vmec index i is.
s_v = (i - 1)*ds_v (1)
where radial grid spacing ds_v is
ds_v = 1/(ns - 1) (2)
Inverting equation (1), provides the index for a given s.
i = s_v/ds_v + 1 (3)
[in] | s | A position on the siesta radial grid. |
pure integer function siesta_equilibrium::siesta_to_i_vmec_low | ( | real (rprec), intent(in) | s | ) |
Find the lower vmec s index.
Given a siesta s_s, round down to the nearist integer after mapping the siesta radial position to the absolute vmec index.
[in] | s | A position on the siesta radial grid. |
pure real (rprec) function siesta_equilibrium::siesta_to_siesta_s | ( | real (rprec), intent(in) | s | ) |
Map the vmec s to the siesta s.
The siesta s_v is function of the vmec s_s using the forumla,
s_s(s_v) = Sqrt(s_v) (1)
[in] | s | A position on the siesta radial grid. |
pure real (rprec) function siesta_equilibrium::siesta_to_vmec_s | ( | real (rprec), intent(in) | s | ) |
Map the siesta s to the vmec s.
The vmec s_v is function of the siesta s_s using the forumla,
s_v(s_s) = s_s^2 (1)
[in] | s | A position on the siesta radial grid. |
pure real (rprec) function siesta_equilibrium::siesta_to_w_vmec_low | ( | real (rprec), intent(in) | s, |
integer, intent(in) | ilow | ||
) |
Find the lower interplation weighting.
Given a siesta s_s and a the lower vmec index i, find how much the lower index is biased. When s_s corresponds to the lower index, it should be fully weighed.
1 = m*i_low + b (1)
When s_s corresponds to the lower index + 1, it should be weighted to zero.
0 = m*(i_low + 1) + b (2)
Solving this system of equations, maps the the s_s to the weight.
w_low = m*i + b (3)
The slope m and y intercept b are
m = -1 (4)
b = 1 + i_low (5)
[in] | s | A position on the siesta radial grid. |
[in] | ilow | Nearest lower index. |
subroutine siesta_equilibrium::siesta_write | ( | class (siesta_class), intent(in) | this, |
integer, intent(in) | iou | ||
) |
Write out the equilibrium to an output file.
This method overrides equilibrium::equilibrium_write.
[in] | this | A siesta_class instance. |
[in] | iou | Input/output unit of the output file. |
subroutine siesta_equilibrium::siesta_write_input | ( | class (siesta_class), intent(in) | this, |
integer, intent(in) | current_step | ||
) |
Write the current valid input.
This method overrides equilibrium::equilibrium_write_input. The boundary and other fixed parameters do not get updated as the reconstruction progresses. Need to update them manually if in free boundary mode.
[in] | this | A siesta_class instance. |
[in] | current_step | Step number to append to input filename. |