theta_grid_eik Module

FIXME : Add documentation



Contents


Variables

Type Visibility Attributes Name Initial
logical, private :: exist
logical, private :: initialized = .false.
type(eikcoefs_output_type), private :: eikcoefs_results
integer, private :: ntheta_geometry
type(theta_grid_eik_config_type), private :: theta_grid_eik_config

Derived Types

type, public, extends(abstract_config_type) ::  theta_grid_eik_config_type

Used to represent the input configuration of theta_grid

Components

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 :: alpha_input = 0.0

Used in calculation of dp_new = -alpha_input/qval**2/rmaj*drhodpsi

Read more…
real, public :: beta_prime_input = 0.0

The gradient of the pressure. Strictly speaking this parameter is not but : in other words, the gradient of the magnetic field is ignored. Used only if bishop = 4 or 9.

Read more…
integer, public :: bishop = 5

Use Bishop relations to generate metric coefficients.

Read more…
logical, public :: chs_eq = .false.

Use equilbrium data from the CHEASE file ogyropsi.dat

real, public :: delrho = 1e-3

Step size for radial derivatives, . Should be "small enough", typically 0.001.

logical, public :: dfit_eq = .false.

Vacuum magnetic dipole geometry

real, public :: dp_mult = 1.0

Used to scale the pressure gradient, only if bishop = 7 or 8.

logical, public :: efit_eq = .false.

Use EFIT equilibrium (EFIT, codes with eqdsk format)

character(len=EQFILE_LENGTH), public :: eqfile = "default_unset_value"

Name of file with numerical equilibrium data (if required)

character(len=EQFILE_LENGTH), public :: eqnormfile = "default_unset_value"

Name of file with numerical equilibrium normalization data (if required) currently, only used for dipole equilibrium (deq)

logical, public :: equal_arc = .true.

Change field-line coordinate. Recommended value: F

Read more…
logical, public :: force_sym = .false.

If true then forces up-down symmetry in some geometrical quantities

logical, public :: gen_eq = .false.

Use Toq-style NetCDF equilibrium (TOQ)

logical, public :: gs2d_eq = .false.

Read Colin Roach's GS2D equilibrium file

logical, public :: idfit_eq = .false.

Unknown equilibrium file. You probably don't want this. FIXME: Add documentation

integer, public :: iflux = -1

Deprecated -- redundant information.

real, public :: invlp_input = 0.

Used with bishop == 3: controls pressure length scale by multiplying

integer, public :: irho = 2

Choose definition of flux surface coordinate

Read more…
integer, public :: isym = -1

Deprecated, see force_sym instead

integer, public :: itor = -1

Deprecated, see use_large_aspect instead

logical, public :: local_eq = .true.

If .true. use Miller-style local equilibrium else use other numerical equilibrium types

integer, public :: ntheta_geometry = -1

The number of theta grid points to use in eikcoefs calls. Currently may not have an effect for all equilibrium types. If not set then defaults to ntheta

logical, public :: ppl_eq = .false.

Use Menard-style NetCDF equilibrium (JSOLVER)

real, public :: s_hat_input = 0.0

Used to overrides s_hat prescribed by the numerical equilibrium, but only if bishop=2,3,4,5,8, or 9.

Read more…
logical, public :: transp_eq = .false.

Use PPL NetCDF equilibrium (psipqgrz equilibrium from TRANSP/TRXPL)

logical, public :: use_large_aspect = .false.

If true use large aspect ratio expansions in eik geometry to get ~s-alpha

logical, public :: writelots = .false.

Write a little extra about geometry to the screen.

Type-Bound Procedures

procedure , public , :: is_initialised => is_initialised_generic Function
procedure , public , :: init => init_generic Subroutine
procedure , public , :: setup => setup_generic Subroutine
procedure , public , :: write_namelist_header Subroutine
procedure , public , :: get_name => get_name_generic Function
procedure , public , :: get_requires_index => get_requires_index_generic Function
procedure , public , nopass :: write_namelist_footer Subroutine
generic, public , :: write_key_val => write_key_val_string, write_key_val_real, write_key_val_complex, write_key_val_integer, write_key_val_logical, write_key_val_real_array, write_key_val_complex_array, write_key_val_integer_array
procedure , public :: read => read_theta_grid_eik_config Subroutine
procedure , public :: write => write_theta_grid_eik_config Subroutine
procedure , public :: reset => reset_theta_grid_eik_config Subroutine
procedure , public :: broadcast => broadcast_theta_grid_eik_config Subroutine
procedure , public , nopass :: get_default_name => get_default_name_theta_grid_eik_config Function
procedure , public , nopass :: get_default_requires_index => get_default_requires_index_theta_grid_eik_config Function

Functions

public function get_theta_grid_eik_config()

Get the module level config instance

Arguments

None

Return Value type(theta_grid_eik_config_type)

Gets the default name for this namelist

Arguments

None

Return Value character(len=CONFIG_MAX_NAME_LEN)

Gets the default requires index for this namelist

Arguments

None

Return Value logical


Subroutines

public subroutine wnml_theta_grid_eik(unit)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: unit

public subroutine check_theta_grid_eik(report_unit, dbetadrho)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: report_unit
real, intent(in) :: dbetadrho

private subroutine checklogic_theta_grid_eik(report_unit)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: report_unit

public subroutine init_theta_grid_eik(theta_grid_eik_config_in)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(theta_grid_eik_config_type), intent(in), optional :: theta_grid_eik_config_in

public subroutine finish_theta_grid_eik()

Arguments

None

public subroutine eik_get_sizes(nthetaout, nperiodout, nbsetout)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
integer, intent(out) :: nthetaout
integer, intent(out) :: nperiodout
integer, intent(out) :: nbsetout

public subroutine eik_get_grids(nperiod, ntheta, ntgrid, nbset, theta, bset, bmag, gradpar, gbdrift, gbdrift0, cvdrift, cvdrift0, cdrift, cdrift0, gds2, gds21, gds22, gds23, gds24, gds24_noq, grho, Rplot, Zplot, Rprime, Zprime, aplot, aprime, shat, drhodpsi, kxfac, qval, gb_to_cv, Bpol, surfarea, dvdrhon, rhoc)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nperiod
integer, intent(inout) :: ntheta
integer, intent(inout) :: ntgrid
integer, intent(inout) :: nbset
real, intent(out), dimension (-ntgrid:ntgrid) :: theta
real, intent(out), dimension (nbset) :: bset
real, intent(out), dimension (-ntgrid:ntgrid) :: bmag
real, intent(out), dimension (-ntgrid:ntgrid) :: gradpar
real, intent(out), dimension (-ntgrid:ntgrid) :: gbdrift
real, intent(out), dimension (-ntgrid:ntgrid) :: gbdrift0
real, intent(out), dimension (-ntgrid:ntgrid) :: cvdrift
real, intent(out), dimension (-ntgrid:ntgrid) :: cvdrift0
real, intent(out), dimension (-ntgrid:ntgrid) :: cdrift
real, intent(out), dimension (-ntgrid:ntgrid) :: cdrift0
real, intent(out), dimension (-ntgrid:ntgrid) :: gds2
real, intent(out), dimension (-ntgrid:ntgrid) :: gds21
real, intent(out), dimension (-ntgrid:ntgrid) :: gds22
real, intent(out), dimension (-ntgrid:ntgrid) :: gds23
real, intent(out), dimension (-ntgrid:ntgrid) :: gds24
real, intent(out), dimension (-ntgrid:ntgrid) :: gds24_noq
real, intent(out), dimension (-ntgrid:ntgrid) :: grho
real, intent(out), dimension (-ntgrid:ntgrid) :: Rplot
real, intent(out), dimension (-ntgrid:ntgrid) :: Zplot
real, intent(out), dimension (-ntgrid:ntgrid) :: Rprime
real, intent(out), dimension (-ntgrid:ntgrid) :: Zprime
real, intent(out), dimension (-ntgrid:ntgrid) :: aplot
real, intent(out), dimension (-ntgrid:ntgrid) :: aprime
real, intent(out) :: shat
real, intent(out) :: drhodpsi
real, intent(out) :: kxfac
real, intent(out) :: qval
logical, intent(in) :: gb_to_cv
real, intent(out), dimension (-ntgrid:ntgrid) :: Bpol
real, intent(out) :: surfarea
real, intent(out) :: dvdrhon
real, intent(out) :: rhoc

private subroutine read_parameters(theta_grid_eik_config_in)

FIXME : Add documentation

Arguments

Type IntentOptional Attributes Name
type(theta_grid_eik_config_type), intent(in), optional :: theta_grid_eik_config_in

public subroutine set_theta_grid_eik_config(theta_grid_eik_config_in)

Set the module level config type Will abort if the module has already been initialised to avoid inconsistencies.

Arguments

Type IntentOptional Attributes Name
type(theta_grid_eik_config_type), intent(in), optional :: theta_grid_eik_config_in

private subroutine read_theta_grid_eik_config(self)

Reads in the theta_grid_eik_knobs namelist and populates the member variables

Arguments

Type IntentOptional Attributes Name
class(theta_grid_eik_config_type), intent(inout) :: self

private subroutine write_theta_grid_eik_config(self, unit)

Writes out a namelist representing the current state of the config object

Arguments

Type IntentOptional Attributes Name
class(theta_grid_eik_config_type), intent(in) :: self
integer, intent(in), optional :: unit

private subroutine reset_theta_grid_eik_config(self)

Resets the config object to the initial empty state

Arguments

Type IntentOptional Attributes Name
class(theta_grid_eik_config_type), intent(inout) :: self

private subroutine broadcast_theta_grid_eik_config(self)

Broadcasts all config parameters so object is populated identically on all processors

Arguments

Type IntentOptional Attributes Name
class(theta_grid_eik_config_type), intent(inout) :: self