circular_t Derived Type

type, public, extends(equilibrium_t) :: circular_t


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)

real(kind=FP), public :: rho_limiter

Type-Bound Procedures

procedure, public, pass(self) :: absb

  • private function absb(self, x, y, phi)

    Absolute value of magnetic field.

    Arguments

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

    3D position (x and y normalized)

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

    3D position (x and y normalized)

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

    3D position (x and y normalized)

    Return Value real(kind=fp)

procedure, public, pass(self) :: bpol

  • private function bpol(self, x, y, phi)

    Magnetic field component b poloidal normalised to absolute value of B (on axis)

    Arguments

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

    3D position (x and y normalized)

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

    3D position (x and y normalized)

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

    3D position (x and y normalized)

    Return Value real(kind=fp)

procedure, public :: init

  • private subroutine init(self, filename)

    Initialises the circular equilibrium

    Arguments

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

    Instance of the type

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

    Filename, where parameters are read from

procedure, public :: display

  • private subroutine display(self)

    Prints to console information about the equilibrium

    Arguments

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

procedure, public :: debug

  • private subroutine debug(self)

    Prints to console information about the equilibrium

    Arguments

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

procedure, public :: is_axisymmetric

  • private function is_axisymmetric(self)

    Arguments

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

    Return Value logical

procedure, public :: rho

  • private function rho(self, x, y, phi)

    flux surface label

    Arguments

    Type IntentOptional Attributes Name
    class(circular_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)

procedure, public :: bx

  • private function bx(self, x, y, phi)

    magnetic field component bx normalised to B_0 (on axis)

    Arguments

    Type IntentOptional Attributes Name
    class(circular_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)

procedure, public :: by

  • private function by(self, x, y, phi)

    magnetic field component by normalised to B_0 (on axis)

    Arguments

    Type IntentOptional Attributes Name
    class(circular_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)

procedure, public :: btor

  • private function btor(self, x, y, phi)

    magnetic field component btor normalised to B_0 (on axis)

    Arguments

    Type IntentOptional Attributes Name
    class(circular_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)

procedure, public :: jacobian

  • private function jacobian(self, x, y, phi)

    Jacobian of geometry (J=1, i.e. infinite aspect ratio assumption)

    Arguments

    Type IntentOptional Attributes Name
    class(circular_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)

procedure, public :: epol

  • private subroutine epol(self, x, y, phi, epolx, epoly)

    unit vector along poloidal (along flux surface) direction

    Arguments

    Type IntentOptional Attributes Name
    class(circular_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

procedure, public :: erad

  • private subroutine erad(self, x, y, phi, eradx, erady)

    unit vector along radial (across flux surface) direction

    Arguments

    Type IntentOptional Attributes Name
    class(circular_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

procedure, public :: district

  • private 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(circular_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

procedure, public :: in_vessel

  • private function in_vessel(self, x, y, phi)

    Returns a boolean of whether a given point is within limiter region

    Arguments

    Type IntentOptional Attributes Name
    class(circular_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

procedure, public :: mag_axis_loc

  • private subroutine mag_axis_loc(self, phi, axis_x, axis_y)

    Returns the coordinates of magnetic axis

    Arguments

    Type IntentOptional Attributes Name
    class(circular_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

procedure, public :: qval

  • private function qval(self, rho_pt)

    safety factor

    Arguments

    Type IntentOptional Attributes Name
    class(circular_t), intent(in) :: self
    real(kind=FP), intent(in) :: rho_pt

    flux label

    Return Value real(kind=fp)

procedure, public, nopass :: theta

  • private function theta(x, y)

    geometric poloidal angle

    Arguments

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

    Return Value real(kind=fp)