diagnostics_lineout_m Module

Module for computing lineout diagnostics for the BRAGINSKII model


Used by


Contents


Interfaces

interface

  • public module subroutine read_params_lineout(self, filepath)

    Reads parameters related to lineouts

    Arguments

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

    Instance of the type

    character(len=*), intent(in) :: filepath

    Filepath to read from

interface

  • public module subroutine write_params_lineout(self, filepath)

    Writes parameters related to lineouts

    Arguments

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

    Instance of the type

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

    If present writes to file, otherwise to stdout


Derived Types

type, public, extends(diagnostics_group_t) ::  diagnostics_lineout_t

Class containing lineout diagnostics for the BRAGINSKII model

Components

Type Visibility Attributes Name Initial
character(len=:), public, allocatable :: groupname

Name of diagnostics group

character(len=:), public, allocatable :: dirpath

Path to diagnostics directory

type(diagnostic_variable_t), public :: tau

Time

type(diagnostic_variable_t), public, dimension(:), allocatable :: diags

Container of non-generic diagnostic variables

integer, public :: n_diags

Number of non-generic diagnostic variables

logical, public :: file_exists

Internal flag to track snapshot file status

Type-Bound Procedures

procedure , public :: init_diagnostics_group Subroutine
procedure , public :: allocate_diags Subroutine
procedure , public :: write_diagnostics Subroutine
procedure , public :: init_next_diagnostic Subroutine
procedure , public :: init_lineout Subroutine
procedure , public :: process_to_file Subroutine
procedure , public :: project_lineout Subroutine

Subroutines

public subroutine init_lineout(self, comm_handler, groupname, filepath)

Initialize lineout diagnostic

Arguments

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

Instance of class

type(comm_handler_t), intent(in) :: comm_handler

MPI communication handler

character(len=*), intent(in) :: groupname

Directory to write snapsfiles into

character(len=*), intent(in) :: filepath

Filepath to read lineouts parameters from

public subroutine process_to_file(self, diag_packet, comm_handler, equi, equi_on_cano, equi_on_stag, mesh_cano, mesh_stag, map, penalisation_cano, penalisation_stag, polars_cano, polars_stag, tau, ne, te, ti, pot, vort, upar, jpar, apar, apar_fluct, neutrals_dens, neutrals_parmom, neutrals_pressure, isnaps, idiag, start_new_file)

Main diagnostics computation routine

Arguments

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

Instance of class

type(diagnostics_packet_t), intent(inout) :: diag_packet

Diagnostic packet

type(comm_handler_t), intent(in) :: comm_handler

MPI communication handler

class(equilibrium_t), intent(in) :: equi

Magnetic equilibrium

class(equilibrium_storage_t), intent(in) :: equi_on_cano

Equilibrium storage on canonical plane enabling faster performance at certain locations

class(equilibrium_storage_t), intent(in) :: equi_on_stag

Equilibrium storage on staggered plane enabling faster performance at certain locations

type(mesh_cart_t), intent(in) :: mesh_cano

Mesh (canonical) within poloidal plane

type(mesh_cart_t), intent(in) :: mesh_stag

Mesh (staggered) within poloidal plane

type(parallel_map_t), intent(in) :: map

Parallel map

type(penalisation_t), intent(in) :: penalisation_cano

Penalisation (canonical)

type(penalisation_t), intent(in) :: penalisation_stag

Penalisation (staggered)

type(polars_t), intent(in) :: polars_cano

Polar grid and operators (canonical)

type(polars_t), intent(in) :: polars_stag

Polar grid and operators (staggered)

real(kind=GP), intent(in) :: tau

Time

type(variable_t), intent(in) :: ne

Electron density

type(variable_t), intent(in) :: te

Electron temperature

type(variable_t), intent(in) :: ti

Ion temperature

type(variable_t), intent(in) :: pot

Electrostatic potential

type(variable_t), intent(in) :: vort

Generalised vorticity

type(variable_t), intent(in) :: upar

Parallel ion velocity

type(variable_t), intent(in) :: jpar

Parallel current

type(variable_t), intent(in) :: apar

Parallel electromagnetic potential

type(variable_t), intent(in) :: apar_fluct

Parallel electromagnetic potential fluctation

type(variable_t), intent(in) :: neutrals_dens

Neutrals density

type(variable_t), intent(in) :: neutrals_parmom

Neutrals parallel momentum

type(variable_t), intent(in) :: neutrals_pressure

Neutrals pressure

integer, intent(in) :: isnaps

Braginskii model snapshot number

integer, intent(in) :: idiag

Diagnostic snapshot number

logical, intent(in) :: start_new_file

Flag whether to write to new file

public subroutine project_lineout(self, comm_handler, mesh, i_lineout, ind, u, mode)

Project input onto lineout diagnostic dimension nrho

Arguments

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

Instance of class

type(comm_handler_t), intent(in) :: comm_handler

MPI communication handler

type(mesh_cart_t), intent(in) :: mesh

Mesh within poloidal plane

integer, intent(in) :: i_lineout

Work index of lineout list

integer, intent(in) :: ind

Work index in diagnostics array

real(kind=GP), intent(in), dimension(:) :: u

Input array

character(len=*), intent(in) :: mode

Projection mode, select from : 'TORAVG' - toroidal average at each lineout point