Used to represent the input configuration of theta_grid. Sets a number of parameters used by the different theta grid implementations. Not all parameters are active for a given theta grid type.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
logical, | public | :: | exist | = | .false. |
Does the related namelist exist in the target input file? |
|
integer, | public | :: | index | = | 0 |
Used to hold the specific index of numbered namelists |
|
logical, | public | :: | skip_read | = | .false. |
Do we want to skip the read step in init? |
|
logical, | public | :: | skip_broadcast | = | .false. |
Do we want to skip the broadcast step in init? |
|
real, | public | :: | akappa | = | 1.0 |
The flux surface elongation (only used when |
|
real, | public | :: | akappri | = | 0.0 |
The radial gradient flux surface elongation (only used when
|
|
real, | public | :: | alpmhd | = | 0.0 |
Used in conjunction with alpmhdfac
to override |
|
real, | public | :: | asurf | = | 1.0 |
Minor radius of the flux surface that receives the specified
shaping (only used when |
|
real, | public | :: | btor_slab | = | 0.0 |
In the slab limit, determines the angle between the field and
the background flow (which flows in an imaginary toroidal
direction). It is effectively equal to
. |
|
real, | public | :: | c0_mxh | = | 0.0 |
Zeroth cosine moment for the MXH local equilibrum. See geoType and local_eq |
|
real, | public, | dimension(mxh_max_moments) | :: | c_mxh | = | 0.0 |
Cosine moments for the MXH local equilibrum. See geoType and local_eq |
real, | public, | dimension(mxh_max_moments) | :: | dc_mxh_dr | = | 0.0 |
Radial derivatives of cosine moments for the MXH local equilibrum. See geoType and local_eq |
real, | public | :: | delta2 | = | 1.0 |
The elongation of the flux surface labeled by aSurf (only used
when |
|
real, | public | :: | delta3 | = | 1.0 |
The triangularity of the flux surface labeled by aSurf (only used when geoType=1, which selects the Global MHD analytic geometry specifications). See Section 2.1.2 of the Analytic Geometry Specification documentation for more details. |
|
real, | public | :: | deltam | = | 1.0 |
The magnitude of the mMode shaping effect (only used when
|
|
real, | public | :: | deltampri | = | 0.0 |
Radial derivative of the magnitude of the mMode shaping effect
(only used when |
|
real, | public | :: | deltan | = | 1.0 |
The magnitude of the nMode shaping effect (only used when
|
|
real, | public | :: | deltanpri | = | 0.0 |
Radial derivative of the magnitude of the nMode shaping effect
(only used when |
|
real, | public | :: | eps | = | 0.3 |
Controls particle trapping (among other things) in simple geometric models. |
|
real, | public | :: | epsl | = | 0.3 |
Sets curvature drift in s-alpha model, where is the GS2 equilibrium reference normalisation length and is the major radius at the centre of the flux surface. |
|
integer, | public | :: | geotype | = | 0 |
Selects between different analytic geometry specifications
(only used when
See Section 2.1 of the Analytic Geometry Specification documentation for more details on options 0-3, and PPCF 63 (2021) 012001 (5pp) for details of 4 (MXH). NoteThe default for this MUST be zero otherwise the Trinity interface will break. |
|
real, | public | :: | kp | = | -1.0 |
|
|
integer, | public | :: | mmode | = | 2 |
First flux surface shaping mode number (only used when
|
|
integer, | public | :: | nmode | = | 3 |
Second flux surface shaping mode number (only used when
|
|
integer, | public | :: | n_mxh | = | 0 |
Number of moments for the MXH local equilibrum. Maximum value is mxh_max_moments. See geoType and local_eq for more details. |
|
integer, | public | :: | nperiod | = | 2 |
Sets the number of segments along equilibrium magnetic field to include in simulation domain. . Ignored in some cases TodoDocument when this is ignored |
|
integer, | public | :: | ntheta | = | 24 |
Rough number of grid points along equilibrium magnetic field between . Actual number of grid points determined as follows:
|
|
real, | public | :: | pk | = | 0.3 |
Sets , the magnetic safety factor, and therefore also sets the connection length, i.e. the length of the box in the parallel direction, in terms of . Used only in high aspect ratio equilibrium model. |
|
real, | public | :: | qinp | = | 1.5 |
Sets value of the safety factor when using local toroidal equilibrium model. |
|
real, | public | :: | r_geo | = | 3.0 |
When not local_eq: Centerpoint of LCFS (normalized to
) - When local_eq: Major radius of
magnetic field reference point (normalized to
). Specifically, the reference magnetic
field is defined to be the value of the toroidal magnetic
field at |
|
real, | public | :: | raxis | = | 3.0 |
Major radial location of the magnetic axis (only used when
|
|
real, | public | :: | rhoc | = | 0.5 |
|
|
real, | public | :: | rmaj | = | 3.0 |
When not local_eq: Position of magnetic axis (normalized to ). When local_eq: Major radius of the centre of the flux surface of interest (normalized to ) |
|
real, | public, | dimension(mxh_max_moments) | :: | s_mxh | = | 0.0 |
Sine moments for the MXH local equilibrum. See geoType and local_eq |
real, | public, | dimension(mxh_max_moments) | :: | ds_mxh_dr | = | 0.0 |
Radial derivatives of sine moments for the MXH local equilibrum. See geoType and local_eq |
real, | public | :: | shat | = | 0.75 |
Sets value of magnetic shear in simple geometric models.
Over-ridden by |
|
real, | public | :: | shift | = | 0.0 |
shift is related to minor radial derivatives of the major radial location of the flux surface centers (i.e. the Shafranov shift), but this input variable has different physical definitions in s-alpha and other analytic equilbrium models:
NB in Miller shift contains the 1st radial derivative of the Shafranov shift, BUT in s-alpha shift is related to a 2nd radial derivative of the Shafranov shift.
|
|
real, | public | :: | shiftvert | = | 0.0 |
Minor radial derivative of the axial location of the flux
surface centers (i.e. the vertical Shafranov shift). It is
only used when equilibrium_option='eik' and |
|
real, | public | :: | theta2 | = | 0.0 |
The tilt angle of the elongation of the flux surface labeled
by |
|
real, | public | :: | theta3 | = | 0.0 |
The tilt angle of the triangularity of the flux surface
labeled by |
|
real, | public | :: | thetad | = | 0.0 |
The tilt angle of the triangularity (only used when
|
|
real, | public | :: | thetak | = | 0.0 |
The tilt angle of the elongation (only used when |
|
real, | public | :: | thetam | = | 0.0 |
The tilt angle of the mMode shaping effect (only used when
|
|
real, | public | :: | thetan | = | 0.0 |
The tilt angle of the nMode shaping effect (only used when
|
|
real, | public | :: | tri | = | 0.0 |
The flux surface triangularity (only used when |
|
real, | public | :: | tripri | = | 0.0 |
The radial gradient of the flux surface triangularity (only
used when |
|
real, | public | :: | zaxis | = | 0.0 |
Axial location of the magnetic axis (only used when geoType=1, which selects the Global MHD analytic geometry specification). See Section 2.1.2 of the Analytic Geometry Specification documentation for more details. |
Is this instance initialised?
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_config_type), | intent(in) | :: | self |
Fully initialise the config object
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_config_type), | intent(inout) | :: | self | |||
character(len=*), | intent(in), | optional | :: | name | ||
logical, | intent(in), | optional | :: | requires_index | ||
integer, | intent(in), | optional | :: | index |
Do some standard setup/checking
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_config_type), | intent(inout) | :: | self | |||
character(len=*), | intent(in), | optional | :: | name | ||
logical, | intent(in), | optional | :: | requires_index | ||
integer, | intent(in), | optional | :: | index |
Write the namelist header for this instance
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_config_type), | intent(in) | :: | self | |||
integer, | intent(in) | :: | unit |
Returns the namelist name. Not very useful at the moment but may want to do more interesting things in the future
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_config_type), | intent(in) | :: | self |
Returns the requires_index value. Allows access whilst keeping the variable private
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_config_type), | intent(in) | :: | self |
Write the namelist footer
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | unit |
Writes a {key,val} pair where the value is of type character
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=*), | intent(in) | :: | key | |||
character(len=*), | intent(in) | :: | val | |||
integer, | intent(in) | :: | unit |
Writes a {key,val} pair where the value is of type real
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=*), | intent(in) | :: | key | |||
real, | intent(in) | :: | val | |||
integer, | intent(in) | :: | unit |
Writes a {key,val} pair where the value is of type complex
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=*), | intent(in) | :: | key | |||
complex, | intent(in) | :: | val | |||
integer, | intent(in) | :: | unit |
Writes a {key,val} pair where the value is of type integer
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=*), | intent(in) | :: | key | |||
integer, | intent(in) | :: | val | |||
integer, | intent(in) | :: | unit |
Writes a {key,val} pair where the value is of type logical
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=*), | intent(in) | :: | key | |||
logical, | intent(in) | :: | val | |||
integer, | intent(in) | :: | unit |
Writes a {key,val} pair where the value is of type real array
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_config_type), | intent(in) | :: | self | |||
character(len=*), | intent(in) | :: | key | |||
real, | intent(in), | dimension(:) | :: | val | ||
integer, | intent(in) | :: | unit |
Writes a {key,val} pair where the value is of type complex array
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_config_type), | intent(in) | :: | self | |||
character(len=*), | intent(in) | :: | key | |||
complex, | intent(in), | dimension(:) | :: | val | ||
integer, | intent(in) | :: | unit |
Writes a {key,val} pair where the value is of type integer array
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(abstract_config_type), | intent(in) | :: | self | |||
character(len=*), | intent(in) | :: | key | |||
integer, | intent(in), | dimension(:) | :: | val | ||
integer, | intent(in) | :: | unit |
Reads in the theta_grid_parameters namelist and populates the member variables
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(theta_grid_parameters_config_type), | intent(inout) | :: | self |
Writes out a namelist representing the current state of the config object
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(theta_grid_parameters_config_type), | intent(in) | :: | self | |||
integer, | intent(in), | optional | :: | unit |
Resets the config object to the initial empty state
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(theta_grid_parameters_config_type), | intent(inout) | :: | self |
Broadcasts all config parameters so object is populated identically on all processors
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(theta_grid_parameters_config_type), | intent(inout) | :: | self |
Gets the default name for this namelist
Gets the default requires index for this namelist
type, extends(abstract_config_type) :: theta_grid_parameters_config_type
! namelist : theta_grid_parameters
! indexed : false
!> The flux surface elongation (only used when `geoType=0`, which
!> selects the Generalised Miller analytic geometry
!> specification).
real :: akappa = 1.0
!> The radial gradient flux surface elongation (only used when
!> `geoType=0`, which selects the Generalised Miller analytic
!> geometry specification). `akappri` = \(d\kappa/d\rho\)
real :: akappri = 0.0
!> Used in conjunction with [[theta_grid_salpha_knobs:alpmhdfac]]
!> to override `shift`, set as `shift=-alpmhd*alpmhdfac`. Do not
!> use unless you know what you are doing.
real :: alpmhd = 0.0
!> Minor radius of the flux surface that receives the specified
!> shaping (only used when `geoType=1`, which selects the Global
!> MHD analytic geometry specification). See Section 2.1.2 of the
!> [Analytic Geometry
!> Specification](https://bitbucket.org/gyrokinetics/wikifiles/raw/master/JRB/GS2GeoDoc.pdf)
!> documentation for more details.
real :: asurf = 1.0
!> In the slab limit, determines the angle between the field and
!> the background flow (which flows in an imaginary toroidal
!> direction). It is effectively equal to
!> \(\frac{B_t}{B}=\frac{u_{\parallel}}{u}\). `btor_slab =
!> btor/bpol` defines direction of a flow relative to B in slab
!> geometry, where flow is by definition in the toroidal
!> direction.
real :: btor_slab = 0.0
!> Zeroth cosine moment for the MXH local equilibrum. See [[geoType]] and [[local_eq]]
real :: c0_mxh = 0.0
!> Cosine moments for the MXH local equilibrum. See [[geoType]] and [[local_eq]]
real, dimension(mxh_max_moments) :: c_mxh = 0.0
!> Radial derivatives of cosine moments for the MXH local equilibrum. See [[geoType]] and [[local_eq]]
real, dimension(mxh_max_moments) :: dc_mxh_dr = 0.0
!> The elongation of the flux surface labeled by aSurf (only used
!> when `geoType`=1, which selects the Global MHD analytic
!> geometry specifications). See Section 2.1.2 of the [Analytic
!> Geometry
!> Specification](https://bitbucket.org/gyrokinetics/wikifiles/raw/master/JRB/GS2GeoDoc.pdf)
!> documentation for more details.
real :: delta2 = 1.0
!> The triangularity of the flux surface labeled by aSurf (only
!> used when geoType=1, which selects the Global MHD analytic
!> geometry specifications). See Section 2.1.2 of the [Analytic
!> Geometry
!> Specification](https://bitbucket.org/gyrokinetics/wikifiles/raw/master/JRB/GS2GeoDoc.pdf)
!> documentation for more details.
real :: delta3 = 1.0
!> The magnitude of the mMode shaping effect (only used when
!> `geoType`=2 or 3, which selects the Generalised Elongation or
!> Fourier analytic geometry specifications). See Sections 2.1.3
!> and 2.1.4 of the [Analytic Geometry
!> Specification](https://bitbucket.org/gyrokinetics/wikifiles/raw/master/JRB/GS2GeoDoc.pdf)
!> documentation for more details.
real :: deltam = 1.0
!> Radial derivative of the magnitude of the mMode shaping effect
!> (only used when `geoType`=2 or 3, which selects the
!> Generalised Elongation or Fourier analytic geometry
!> specifications). See Sections 2.1.3 and 2.1.4 of the [Analytic
!> Geometry
!> Specification](https://bitbucket.org/gyrokinetics/wikifiles/raw/master/JRB/GS2GeoDoc.pdf)
!> documentation for more details.
real :: deltampri = 0.0
!> The magnitude of the nMode shaping effect (only used when
!> `geoType`=2 or 3, which selects the Generalised Elongation or
!> Fourier analytic geometry specifications). See Sections 2.1.3
!> and 2.1.4 of the [Analytic Geometry
!> Specification](https://bitbucket.org/gyrokinetics/wikifiles/raw/master/JRB/GS2GeoDoc.pdf)
!> documentation for more details.
real :: deltan = 1.0
!> Radial derivative of the magnitude of the nMode shaping effect
!> (only used when `geoType`=2 or 3, which selects the
!> Generalised Elongation or Fourier analytic geometry
!> specifications). See Sections 2.1.3 and 2.1.4 of the [Analytic
!> Geometry
!> Specification](https://bitbucket.org/gyrokinetics/wikifiles/raw/master/JRB/GS2GeoDoc.pdf)
!> documentation for more details.
real :: deltanpri = 0.0
!> Controls particle trapping (among other things) in simple
!> geometric models. \(\epsilon = r/R\)
real :: eps = 0.3
!> \(\epsilon_\ell = \frac{2 L_\textrm{ref}}{ R}\) Sets
!> curvature drift in s-alpha model, where \(L_\textrm{ref}\) is
!> the GS2 equilibrium reference normalisation length and \(R\)
!> is the major radius at the centre of the flux surface.
real :: epsl = 0.3
!> Selects between different analytic geometry specifications
!> (only used when `local_eq = T`):
!>
!> - `geoType = 0`: Generalised Miller
!> - `geoType = 1`: Global MHD
!> - `geoType = 2`: Generalised Elongation
!> - `geoType = 3`: Fourier specification.
!> - `geoType = 4`: Miller Extended Harmonic (MXH)
!>
!> See Section 2.1 of the [Analytic Geometry
!> Specification](https://bitbucket.org/gyrokinetics/wikifiles/raw/master/JRB/GS2GeoDoc.pdf)
!> documentation for more details on options 0-3, and [PPCF 63
!> (2021) 012001 (5pp)](https://doi.org/10.1088/1361-6587/abc63b)
!> for details of 4 (MXH).
!>
!> @note The default for this *MUST* be zero otherwise the
!> Trinity interface will break.
integer :: geotype = 0
!> `kp` sets parallel wavenumber and box length in slab
!> geometry. \(k_p = \frac{2 \pi L_\textrm{ref}}{L_z}\).
!>
!> - always use `kp` instead of `pk` in slab geometry (if `kp > 0`
!> then gs2 sets `pk = 2*kp`)
!> - in slab limit \(\textrm{shat} = \frac{L_z}{2 \pi L_s} =
!> \frac{L_\textrm{ref}}{k_p L_s}\) : nb if `kp = 1`, \(\textrm{shat} =
!> \frac{L_\textrm{ref}}{L_s}\), where \(L_s\) is the magnetic shear
!> scale length.
!>
real :: kp = -1.0
!> First flux surface shaping mode number (only used when
!> `geoType`=2 or 3, which selects the Generalised Elongation or
!> Fourier analytic geometry specifications). See Sections 2.1.3
!> and 2.1.4 of the [Analytic Geometry
!> Specification](https://bitbucket.org/gyrokinetics/wikifiles/raw/master/JRB/GS2GeoDoc.pdf)
!> documentation for more details.
integer :: mmode = 2
!> Second flux surface shaping mode number (only used when
!> `geoType`=2 or 3, which selects the Generalised Elongation or
!> Fourier analytic geometry specifications). See Sections 2.1.3
!> and 2.1.4 of the [Analytic Geometry
!> Specification](https://bitbucket.org/gyrokinetics/wikifiles/raw/master/JRB/GS2GeoDoc.pdf)
!> documentation for more details.
integer :: nmode = 3
!> Number of moments for the MXH local equilibrum. Maximum value
!> is [[mxh_max_moments]]. See [[geoType]] and [[local_eq]] for
!> more details.
integer :: n_mxh = 0
!> Sets the number of \(2\pi\) segments along equilibrium
!> magnetic field to include in simulation
!> domain. \(N_\textrm{segments} = (2n_\textrm{period} - 1)\).
!> Ignored in some cases
!>
!> @todo Document when this is ignored
integer :: nperiod = 2
!> Rough number of grid points along equilibrium magnetic field between \(\theta=[-\pi,\pi]\).
!> Actual number of grid points determined as follows:
!>
!> - number of points in GS2 theta grid always odd because grid
!> must contain both bounce points of trapped particles and one
!> grid point at \(\theta=0\). For even values, an extra point
!> is added
!> - theta grid in code runs from `-ntgrid:ntgrid`, with
!> `ntgrid=int(ntheta/2)` for `nperiod=1`.
!> - `ntheta` is used for local equilibria, s-alpha, and EFIT,
!> and ignored for all other numerical equilibria
integer :: ntheta = 24
!> \(p_k = \frac{\textrm{epsl}}{q} = \frac{2 L_\textrm{ref}}{ q R}\)
!> Sets \(q\), the magnetic safety factor, and therefore also
!> sets the connection length, i.e. the length of the box in the
!> parallel direction, in terms of \(L_\textrm{ref}\). Used only in high
!> aspect ratio \(\hat{s}-\alpha\) equilibrium model.
real :: pk = 0.3
!> Sets value of the safety factor when using local toroidal
!> equilibrium model.
real :: qinp = 1.5
!> When not local_eq: Centerpoint of LCFS (normalized to
!> \(L_\textrm{ref}\)) - When local_eq: Major radius of
!> magnetic field reference point (normalized to
!> \(L_\textrm{ref}\)). Specifically, the reference magnetic
!> field is defined to be the value of the toroidal magnetic
!> field at `R=r_geo` on the flux surface labeled by `rhoc`.
real :: r_geo = 3.0
!> Major radial location of the magnetic axis (only used when
!> `geoType`=1, which selects the Global MHD analytic geometry
!> specification). See Section 2.1.2 of the [Analytic Geometry
!> Specification](https://bitbucket.org/gyrokinetics/wikifiles/raw/master/JRB/GS2GeoDoc.pdf)
!> documentation for more details.
real :: raxis = 3.0
!> `rhoc` is the flux surface label (0< `rhoc`< 1). Its exact
!> meaning depends on `irho`. Usually rho = midplane
!> diameter/midplane diameter of LCFS (here, "LCFS" refers to the
!> flux surface at a radius of \(L_\textrm{ref}\). If using
!> Miller geometry with \(L_\textrm{ref} \neq a\), this is
!> **not** the physical last closed flux surface.
!>
!> - When `irho` = 1, `rhoc` = sqrt(toroidal flux)/sqrt(toroidal flux of LCFS)
!> - When `irho` = 2, `rhoc` = midplane diameter/(midplane diameter of LCFS). recommended
!> - When `irho` = 3, `rhoc` = poloidal flux/(poloidal flux of LCFS)
!>
real :: rhoc = 0.5
!> When not local_eq: Position of magnetic axis (normalized to \(L_\textrm{ref}\)).
!> When local_eq: Major radius of the centre of the
!> flux surface of interest (normalized to \(L_\textrm{ref}\))
real :: rmaj = 3.0
!> Sine moments for the MXH local equilibrum. See [[geoType]] and [[local_eq]]
real, dimension(mxh_max_moments) :: s_mxh = 0.0
!> Radial derivatives of sine moments for the MXH local equilibrum. See [[geoType]] and [[local_eq]]
real, dimension(mxh_max_moments) :: ds_mxh_dr = 0.0
!> Sets value of magnetic shear in simple geometric models.
!> Over-ridden by `s_hat_input` in [[theta_grid_eik_knobs]] for most values of `bishop`.
real :: shat = 0.75
!> shift is related to minor radial derivatives of the major
!>radial location of the flux surface centers (i.e. the Shafranov
!>shift), but this input variable has **different physical
!>definitions** in s-alpha and other analytic equilbrium models:
!>
!> - In s-alpha (i.e. equilibrium_option='s-alpha'), shift
!> \(\propto p^\prime\) is a parameter for local \(J_{\phi}\)
!> (and not \(B_{\theta}\) which is constant): \(\textrm{shift} =
!> \frac{2\textrm{epsl}}{\textrm{pk}^2}\frac{d\beta}{d\rho} =
!> -\frac{q^2R}{L_\textrm{ref}}\frac{d\beta}{d\rho} > 0\)
!>- In other analytic specifications
!> (i.e. equilibrium_option='eik' and `geoType`=0, 2, or 3),
!> shift is a parameter for local \(B_{\theta}\) (and NOT for
!> \(J_{\phi}\)): \(\textrm{shift} = \frac{1}{L_\textrm{ref}} \frac{dR}{d\rho} <
!> 0\)
!>
!> NB in Miller shift contains the *1st* radial derivative of the
!> Shafranov shift, BUT in s-alpha shift is related to a *2nd*
!> radial derivative of the Shafranov shift.
!>
!> - in s-alpha(i.e. equilibrium_option='s-alpha'), no additional parameter
!> is required as the piece of \(J_{\phi} \propto\) p' is
!> specified by shift.
!> - in other analytic specifications (i.e. equilibrium_option='eik'),
!> an additional parameter(beta_prime) is required to specify the piece of
!> \(J_{\phi} \propto\) p'
!>
real :: shift = 0.0
!> Minor radial derivative of the axial location of the flux
!> surface centers (i.e. the vertical Shafranov shift). It is
!> only used when equilibrium_option='eik' and `geoType`=0, 2, or
!> 3 (which selects the Generalised Miller, Generalised
!> Elongation, or Fourier analytic geometry specifications). See
!> Sections 2.1.1, 2.1.3, and 2.1.4 of the [Analytic Geometry
!> Specification](https://bitbucket.org/gyrokinetics/wikifiles/raw/master/JRB/GS2GeoDoc.pdf)
!> documentation for more details.
real :: shiftvert = 0.0
!> The tilt angle of the elongation of the flux surface labeled
!> by `aSurf` (only used when `geoType`=1, which selects the
!> Global MHD analytic geometry specification). See Section 2.1.2
!> of the [Analytic Geometry
!> Specification](https://bitbucket.org/gyrokinetics/wikifiles/raw/master/JRB/GS2GeoDoc.pdf)
!> documentation for more details.
real :: theta2 = 0.0
!> The tilt angle of the triangularity of the flux surface
!> labeled by `aSurf` (only used when `geoType`=1, which selects
!> the Global MHD analytic geometry specification). See Section
!> 2.1.2 of the [Analytic Geometry
!> Specification](https://bitbucket.org/gyrokinetics/wikifiles/raw/master/JRB/GS2GeoDoc.pdf)
!> documentation for more details.
real :: theta3 = 0.0
!> The tilt angle of the triangularity (only used when
!> `geoType`=0, which selects the Generalised Miller
!> specification). See Section 2.1.1 of the [Analytic Geometry
!> Specification](https://bitbucket.org/gyrokinetics/wikifiles/raw/master/JRB/GS2GeoDoc.pdf)
!> documentation for more details.
real :: thetad = 0.0
!> The tilt angle of the elongation (only used when `geoType`=0,
!> which selects the Generalised Miller specification). See
!> Section 2.1.1 of the [Analytic Geometry
!> Specification](https://bitbucket.org/gyrokinetics/wikifiles/raw/master/JRB/GS2GeoDoc.pdf)
!> documentation for more details.
real :: thetak = 0.0
!> The tilt angle of the mMode shaping effect (only used when
!> `geoType`=2 or 3, which selects the Generalised Elongation or
!> Fourier analytic geometry specifications). See Sections 2.1.3
!> and 2.1.4 of the [Analytic Geometry
!> Specification](https://bitbucket.org/gyrokinetics/wikifiles/raw/master/JRB/GS2GeoDoc.pdf)
!> documentation for more details.
real :: thetam = 0.0
!> The tilt angle of the nMode shaping effect (only used when
!> `geoType`=2 or 3, which selects the Generalised Elongation or
!> Fourier analytic geometry specifications). See Sections 2.1.3
!> and 2.1.4 of the [Analytic Geometry
!> Specification](https://bitbucket.org/gyrokinetics/wikifiles/raw/master/JRB/GS2GeoDoc.pdf)
!> documentation for more details.
real :: thetan = 0.0
!>The flux surface triangularity (only used when `geoType`=0,
!>which selects the Generalised Miller analytic geometry
!>specification). triangularity is `tri =
!>arcsin[(R(max(Z))-R_major)/r_mid]`
real :: tri = 0.0
!> The radial gradient of the flux surface triangularity (only
!> used when `geoType`=0, which selects the Generalised Miller
!> analytic geometry specification). `tripri = dtri/drho`
real :: tripri = 0.0
!> Axial location of the magnetic axis (only used when geoType=1,
!> which selects the Global MHD analytic geometry
!> specification). See Section 2.1.2 of the [Analytic Geometry
!> Specification](https://bitbucket.org/gyrokinetics/wikifiles/raw/master/JRB/GS2GeoDoc.pdf)
!> documentation for more details.
real :: zaxis = 0.0
contains
procedure, public :: read => read_theta_grid_parameters_config
procedure, public :: write => write_theta_grid_parameters_config
procedure, public :: reset => reset_theta_grid_parameters_config
procedure, public :: broadcast => broadcast_theta_grid_parameters_config
procedure, public, nopass :: get_default_name => get_default_name_theta_grid_parameters_config
procedure, public, nopass :: get_default_requires_index => get_default_requires_index_theta_grid_parameters_config
end type theta_grid_parameters_config_type