slab_equilibrium_m Module

Definition of slab equilibrium N.b. this equilibrium is axisymmetric - phi, when required, is not used



Derived Types

type, public, extends(equilibrium_t) ::  slab_t

Type that represents the slab equilibrium

Components

Type Visibility Attributes Name Initial
logical, public :: initialized = .false.
real(kind=FP), public :: x0

Magnetic axis x = R/R0 (in normalised units)

real(kind=FP), public :: y0

Magnetic axis y = Z/R0 (in normalised units)

real(kind=FP), public :: phi0 = 0.0_FP

Magnetic axis phi

real(kind=FP), public :: xmin

Box limits

real(kind=FP), public :: xmax

Box limits

real(kind=FP), public :: ymin

Box limits

real(kind=FP), public :: ymax

Box limits

real(kind=FP), public :: rhomax

Global limits for rho (rho = normalised psi, n.b. there may also be region-specific limits defined in equi)

real(kind=FP), public :: rhomin

Global limits for rho (rho = normalised psi, n.b. there may also be region-specific limits defined in equi)

Type-Bound Procedures

procedure, public, pass(self) :: absb
procedure, public, pass(self) :: bpol
procedure, public :: init
procedure, public :: display
procedure, public :: debug
procedure, public :: is_axisymmetric
procedure, public :: rho
procedure, public :: bx
procedure, public :: by
procedure, public :: btor
procedure, public :: jacobian
procedure, public :: epol
procedure, public :: erad
procedure, public :: district
procedure, public :: in_vessel
procedure, public :: mag_axis_loc
procedure, public :: is_yperiodic

Functions

public function is_axisymmetric(self)

Arguments

Type IntentOptional Attributes Name
class(slab_t), intent(in) :: self

Return Value logical

public function rho(self, x, y, phi)

flux surface label = x

Arguments

Type IntentOptional Attributes Name
class(slab_t), intent(in) :: self
real(kind=FP), intent(in) :: x
real(kind=FP), intent(in) :: y
real(kind=FP), intent(in) :: phi

Return Value real(kind=fp)

public function bx(self, x, y, phi)

magnetic field component bx = 0

Arguments

Type IntentOptional Attributes Name
class(slab_t), intent(in) :: self
real(kind=FP), intent(in) :: x
real(kind=FP), intent(in) :: y
real(kind=FP), intent(in) :: phi

Return Value real(kind=fp)

public function by(self, x, y, phi)

magnetic field component by = 0

Arguments

Type IntentOptional Attributes Name
class(slab_t), intent(in) :: self
real(kind=FP), intent(in) :: x
real(kind=FP), intent(in) :: y
real(kind=FP), intent(in) :: phi

Return Value real(kind=fp)

public function btor(self, x, y, phi)

magnetic field strength normalised = 1

Arguments

Type IntentOptional Attributes Name
class(slab_t), intent(in) :: self
real(kind=FP), intent(in) :: x
real(kind=FP), intent(in) :: y
real(kind=FP), intent(in) :: phi

Return Value real(kind=fp)

public function jacobian(self, x, y, phi)

Jacobian of geometry (J=1)

Arguments

Type IntentOptional Attributes Name
class(slab_t), intent(in) :: self
real(kind=FP), intent(in) :: x
real(kind=FP), intent(in) :: y
real(kind=FP), intent(in) :: phi

Return Value real(kind=fp)

public function district(self, x, y, phi)

returns in which district point (x, y, phi) is (see module descriptors_m)

Arguments

Type IntentOptional Attributes Name
class(slab_t), intent(in) :: self
real(kind=FP), intent(in) :: x
real(kind=FP), intent(in) :: y
real(kind=FP), intent(in) :: phi

Return Value integer

public function in_vessel(self, x, y, phi)

For slab always inside vessel

Arguments

Type IntentOptional Attributes Name
class(slab_t), intent(in) :: self
real(kind=FP), intent(in) :: x
real(kind=FP), intent(in) :: y
real(kind=FP), intent(in) :: phi

Return Value logical

public pure function is_yperiodic(self)

Returns .true. if the equilibrium is y periodic and .false. otherwise

Arguments

Type IntentOptional Attributes Name
class(slab_t), intent(in) :: self

Return Value logical


Subroutines

public subroutine init(self, filename)

Initialises the slab equilibrium

Arguments

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

Instance of the type

character(len=*), intent(in), optional :: filename

Filename, where parameters are read from

public subroutine display(self)

Prints to console information about the equilibrium

Arguments

Type IntentOptional Attributes Name
class(slab_t), intent(in) :: self

public subroutine debug(self)

Prints to console information about the equilibrium

Arguments

Type IntentOptional Attributes Name
class(slab_t), intent(in) :: self

public subroutine epol(self, x, y, phi, epolx, epoly)

unit vector along poloidal (along flux surface) direction

Arguments

Type IntentOptional Attributes Name
class(slab_t), intent(in) :: self
real(kind=FP), intent(in) :: x
real(kind=FP), intent(in) :: y
real(kind=FP), intent(in) :: phi
real(kind=FP), intent(out) :: epolx

unit vector component in x-direction

real(kind=FP), intent(out) :: epoly

unit vector component in y-direction

public subroutine erad(self, x, y, phi, eradx, erady)

unit vector along radial (across flux surface) direction

Arguments

Type IntentOptional Attributes Name
class(slab_t), intent(in) :: self
real(kind=FP), intent(in) :: x
real(kind=FP), intent(in) :: y
real(kind=FP), intent(in) :: phi
real(kind=FP), intent(out) :: eradx

unit vector component in x-direction

real(kind=FP), intent(out) :: erady

unit vector component in y-direction

public subroutine mag_axis_loc(self, phi, axis_x, axis_y)

Returns the coordinates of magnetic axis

Arguments

Type IntentOptional Attributes Name
class(slab_t), intent(in) :: self

Instance of class

real(kind=FP), intent(in) :: phi

Toroidal angle

real(kind=FP), intent(out) :: axis_x

x-coordinate of the magnetic axis

real(kind=FP), intent(out) :: axis_y

y-coordinate of the magnetic axis