diagnostics_packet_m Module

Module for diagnostics packet



Contents


Derived Types

type, public ::  diagnostics_packet_t

Collection of diagnostics objects Gets passed into timestep_brag/neut routines to pick up relevant data on entire mesh and is projected into different diagnostics dimensions

Components

Type Visibility Attributes Name Initial
real(kind=GP), public, dimension(:), allocatable :: ne_stag
real(kind=GP), public, dimension(:), allocatable :: te_stag
real(kind=GP), public, dimension(:), allocatable :: ti_stag
real(kind=GP), public, dimension(:), allocatable :: pot_stag
real(kind=GP), public, dimension(:), allocatable :: upar_cano
real(kind=GP), public, dimension(:), allocatable :: neutrals_dens_stag
real(kind=GP), public, dimension(:), allocatable :: neutrals_parmom_cano
real(kind=GP), public, dimension(:), allocatable :: nupar_cano
real(kind=GP), public, dimension(:), allocatable :: nvpar_cano
real(kind=GP), public, dimension(:), allocatable :: jpar_cano
real(kind=GP), public, dimension(:), allocatable :: apar_fluct_over_btor
real(kind=GP), public, dimension(:), allocatable :: radgrad_ne
real(kind=GP), public, dimension(:), allocatable :: radgrad_te
real(kind=GP), public, dimension(:), allocatable :: radgrad_ti
real(kind=GP), public, dimension(:), allocatable :: v_exb_rad
real(kind=GP), public, dimension(:), allocatable :: v_dia_e_rad
real(kind=GP), public, dimension(:), allocatable :: v_dia_i_rad
real(kind=GP), public, dimension(:), allocatable :: b_1_rad
real(kind=GP), public, dimension(:), allocatable :: src_ext_ne

External density source

real(kind=GP), public, dimension(:), allocatable :: src_ext_te

External electron temperature source

real(kind=GP), public, dimension(:), allocatable :: src_ext_ti

External ion temperature source

real(kind=GP), public, dimension(:), allocatable :: src_iz_ne

Electron density source from ionization

real(kind=GP), public, dimension(:), allocatable :: src_rec_ne

Electron density source from recombination

real(kind=GP), public, dimension(:), allocatable :: src_neut_te

Electron temperature source due to neutrals interactions

real(kind=GP), public, dimension(:), allocatable :: src_neut_ti

Ion temperature source due to neutrals interactions

real(kind=GP), public, dimension(:), allocatable :: src_neut_upar

Parallel ion velocity source due to neutrals interactions

real(kind=GP), public, dimension(:), allocatable :: src_neut_vort

Vorticity source due to neutrals interactions

real(kind=GP), public, dimension(:), allocatable :: src_neut_pressure

Neutrals pressure source

real(kind=GP), public, dimension(:), allocatable :: src_neut_rcy

Neutrals density source due to recycling

real(kind=GP), public, dimension(:), allocatable :: src_floor_ne

Density source due to floor application

real(kind=GP), public, dimension(:), allocatable :: src_floor_neutrals_dens

Neutrals density source due to floor application

real(kind=GP), public, dimension(:), allocatable :: ddt_eth

Changerate of thermal energy density

real(kind=GP), public, dimension(:), allocatable :: ddt_ne

Changerate of electron density

real(kind=GP), public, dimension(:), allocatable :: ddt_te

Changerate of electron temperature

real(kind=GP), public, dimension(:), allocatable :: ddt_ti

Changerate of ion temperature

real(kind=GP), public, dimension(:), allocatable :: ddt_neutrals_dens

Changerate of neutrals density

real(kind=GP), public, dimension(:), allocatable :: eth

Stored thermal energy density

real(kind=GP), public, dimension(:), allocatable :: p_heat_e

Electron heating power

real(kind=GP), public, dimension(:), allocatable :: p_heat_i

Ion heating power

real(kind=GP), public, dimension(:), allocatable :: p_rad_imp

Electron energy lost by impurity radiation

real(kind=GP), public, dimension(:), allocatable :: p_rad_iz

Direct electron energy loss from ionization

real(kind=GP), public, dimension(:), allocatable :: p_rad_rec

Direct electron energy loss by main plasma recombination

real(kind=GP), public, dimension(:), allocatable :: p_neut_e

Electron energy source due to neutrals interactions

real(kind=GP), public, dimension(:), allocatable :: p_neut_i

Ion energy source due to neutrals interactions

real(kind=GP), public, dimension(:), allocatable :: p_ext_par

Parallel kinetic energy source due to external sources

real(kind=GP), public, dimension(:), allocatable :: p_neut_par_cano

Parallel kinetic energy source due to neutrals interactions (part on cano)

real(kind=GP), public, dimension(:), allocatable :: p_neut_par_stag

Parallel kinetic energy source due to neutrals interactions (part on stag)

real(kind=GP), public, dimension(:), allocatable :: p_ext_perp

Perpendicular kinetic energy source due to external sources

real(kind=GP), public, dimension(:), allocatable :: p_neut_perp

Perpendicular kinetic energy source due to neutrals interactions

real(kind=GP), public, dimension(:), allocatable :: qpar_cond_e

Conductive parallel electron heat flux

real(kind=GP), public, dimension(:), allocatable :: qpar_cond_i

Conductive parallel ion heat flux

real(kind=GP), public, dimension(:), allocatable :: qpar_conv_e

Convective parallel electron heat flux

real(kind=GP), public, dimension(:), allocatable :: qpar_conv_i

Convective parallel electron heat flux

real(kind=GP), public, dimension(:), allocatable :: parflux_ne_fwd

Electron outflow through fwd target due to parallel advection

real(kind=GP), public, dimension(:), allocatable :: parflux_ne_bwd

Electron outflow through bwd target due to parallel advection

real(kind=GP), public, dimension(:), allocatable :: parflux_ne_fwd_weighted

Weighted electron outflow through fwd target due to parallel advection

real(kind=GP), public, dimension(:), allocatable :: parflux_ne_bwd_weighted

Weighted electron outflow through bwd target due to parallel advection

real(kind=GP), public, dimension(:), allocatable :: parflux_neutrals_fwd

Neutrals outflow through fwd target due to parallel advection

real(kind=GP), public, dimension(:), allocatable :: parflux_neutrals_bwd

Neutrals outflow through bwd target due to parallel advection

real(kind=GP), public, dimension(:), allocatable :: parflux_neutralsdiss_fwd

Neutrals outflow through fwd target due to parallel dissipation

real(kind=GP), public, dimension(:), allocatable :: parflux_neutralsdiss_bwd

Neutrals outflow through bwd target due to parallel dissipation

real(kind=GP), public, dimension(:), allocatable :: perpflux_ne_exb

Electron outflow through perp boundary due to exb advection

real(kind=GP), public, dimension(:), allocatable :: perpflux_ne_dia

Electron outflow through perp boundary due to diamag. advection

real(kind=GP), public, dimension(:), allocatable :: perpflux_neutrals_outer

Neutrals outflow through outer perp boundary due to poloidal pressure diffusion

real(kind=GP), public, dimension(:), allocatable :: perpflux_neutrals_volint

Volume integral of poloidal pressure diffusion

real(kind=GP), public, dimension(:), allocatable :: neut_k_iz

Ionization rate coefficient

real(kind=GP), public, dimension(:), allocatable :: neut_k_rec

Recombination rate coefficient

real(kind=GP), public, dimension(:), allocatable :: neut_k_cx

Charge exchange rate coefficient

real(kind=GP), public, dimension(:), allocatable :: neut_w_iz

Ionization cooling rate coefficient

real(kind=GP), public, dimension(:), allocatable :: neut_w_rec

Recombination cooling rate coefficient

real(kind=GP), public, dimension(:), allocatable :: cont_radflux_exb

Radial ExB flux of ne

real(kind=GP), public, dimension(:), allocatable :: cont_radflux_dia

Radial diamagnetic flux of ne

real(kind=GP), public, dimension(:), allocatable :: cont_radflux_visc

Radial viscous fluxes of ne (hyperdiffusion + buffer)

real(kind=GP), public, dimension(:), allocatable :: cont_radflux_mag

Radial electromagnetic flutter flux of ne

real(kind=GP), public, dimension(:), allocatable :: cont_exb_advection

ExB advection (with Arakawa)

real(kind=GP), public, dimension(:), allocatable :: cont_flutter

Magnetic flutter advection (with Arakawa)

real(kind=GP), public, dimension(:), allocatable :: cont_div_nupar

Divergence of the parallel ion flux

real(kind=GP), public, dimension(:), allocatable :: cont_curv_pot

ExB compression

real(kind=GP), public, dimension(:), allocatable :: cont_curv_pe

Diamagnetic compression (electron velocity)

real(kind=GP), public, dimension(:), allocatable :: cont_hypvisc

Hyperviscosity (dissipation)

real(kind=GP), public, dimension(:), allocatable :: vort_curv_pi

Diamagnetic compression (ion velocity)

real(kind=GP), public, dimension(:), allocatable :: vort_div_jpar

Divergence of the parallel current (b0 background)

real(kind=GP), public, dimension(:), allocatable :: vort_flutter

Magnetic flutter advection of jpar (with Arakawa), Maxwell stress

real(kind=GP), public, dimension(:), allocatable :: vort_hypvisc

Hyperviscosity (dissipation)

real(kind=GP), public, dimension(:), allocatable :: ethe_ddt

Changerate of E_the

real(kind=GP), public, dimension(:), allocatable :: ethe_radflux_exb

Radial ExB flux of E_the

real(kind=GP), public, dimension(:), allocatable :: ethe_radflux_dia

Diamagnetic flux of E_the

real(kind=GP), public, dimension(:), allocatable :: ethe_radflux_dia_real

Diamagnetic flux of E_the - divergent part

real(kind=GP), public, dimension(:), allocatable :: ethe_pe_div_exb

pe div v_E term in E_the equation RHS

real(kind=GP), public, dimension(:), allocatable :: ethe_vpar_gradpar_pe

vpar gradpar pe term in E_the equation RHS

real(kind=GP), public, dimension(:), allocatable :: ethe_eta_jpar2

Resistivity term in E_the equation RHS

real(kind=GP), public, dimension(:), allocatable :: ethe_jpar_gradpar_te

jpar gradpar te term in E_the equation RHS

real(kind=GP), public, dimension(:), allocatable :: ethe_equipartition

Equipartition term in E_the equation RHS

real(kind=GP), public, dimension(:), allocatable :: ethe_hypvisc

Hyperviscous dissipation of E_the

real(kind=GP), public, dimension(:), allocatable :: ethe_buffer

Buffer diffusion of E_the

real(kind=GP), public, dimension(:), allocatable :: ethe_src

E_the source term in E_the equation RHS

real(kind=GP), public, dimension(:), allocatable :: ethe_radflux_mag_qtotal

Radial flutter thermal conduction of electrons (total)

real(kind=GP), public, dimension(:), allocatable :: ethe_radflux_mag_qnormal

Radial flutter thermal conduction of electrons (no flutter grad te)

real(kind=GP), public, dimension(:), allocatable :: ethe_radflux_visc

Radial viscous fluxes of thermal electron energy (hyperdiffusion + buffer)

real(kind=GP), public, dimension(:), allocatable :: ethi_radflux_exb

Radial ExB flux of E_thi

real(kind=GP), public, dimension(:), allocatable :: ethi_radflux_dia

Radial diamagnetic flux of E_thi

real(kind=GP), public, dimension(:), allocatable :: ethi_pi_div_exb

pi div v_E term in E_thi equation RHS

real(kind=GP), public, dimension(:), allocatable :: ethi_upar_gradpar_pi

upar gradpar pi term in E_thi equation RHS

real(kind=GP), public, dimension(:), allocatable :: ethi_radflux_dia_real

Radial diamagnetic flux of E_thi - divergent part

real(kind=GP), public, dimension(:), allocatable :: ethi_radflux_mag_adv

Radial flutter advective flux of E_thi

real(kind=GP), public, dimension(:), allocatable :: ethi_radflux_mag_qtotal

Radial flutter thermal conduction of ions (total)

real(kind=GP), public, dimension(:), allocatable :: ethi_radflux_mag_qnormal

Radial flutter thermal conduction of ions (no flutter grad te)

real(kind=GP), public, dimension(:), allocatable :: ethi_radflux_visc

Radial viscous fluxes of thermal ion energy (hyperdiffusion + buffer)

real(kind=GP), public, dimension(:), allocatable :: ekin_perp

Perpendicular kinetic energy

real(kind=GP), public, dimension(:), allocatable :: ekin_perp_ddt

Changerate of perpendicular kinetic energy

real(kind=GP), public, dimension(:), allocatable :: ekin_par

Parallel kinetic energy

real(kind=GP), public, dimension(:), allocatable :: ekin_par_ddt

Changerate of E_kinpar

real(kind=GP), public, dimension(:), allocatable :: eem

Electromagnetic energy

real(kind=GP), public, dimension(:), allocatable :: eem_ddt

Electromagnetic energy

real(kind=GP), public, dimension(:), allocatable :: etrans_upar_gradpar_pe

upar gradpar pi term in E_thi equation RHS

real(kind=GP), public, dimension(:), allocatable :: etrans_jpar_gradpar_pot

jpar gradpar pot transfer term

real(kind=GP), public, dimension(:), allocatable :: etrans_upol_grad_pi
real(kind=GP), public, dimension(:), allocatable :: ethi_upol_flux

div(5/2 pi * upol) in Ethi equation

real(kind=GP), public, dimension(:), allocatable :: ekinperp_upol_flux

div(pot * ne * upol) in Ekinperp equation

real(kind=GP), public, dimension(:), allocatable :: ekinperp_jpol_poynt_flux

div(pot * ne * upol) in Ekinperp equation

real(kind=GP), public, dimension(:), allocatable :: eem_flux

Electromagnetic flux of electromagnetic energy

real(kind=GP), public, dimension(:), allocatable :: aparv_fluct_cano

Values of fluctuating part of electromagnetic potential on canonical mesh

real(kind=GP), public, dimension(:), allocatable :: diss_ne

Dissipation (total) on density

real(kind=GP), public, dimension(:), allocatable :: diss_te

Dissipation (total) on electron temperature

real(kind=GP), public, dimension(:), allocatable :: diss_pe

Dissipation (total) on electron pressure

real(kind=GP), public, dimension(:), allocatable :: diss_ti

Dissipation (total) on ion temperature

real(kind=GP), public, dimension(:), allocatable :: diss_pi

Dissipation (total) on ion pressure

real(kind=GP), public, dimension(:), allocatable :: diss_upar

Dissipation (total) on parallel velocity

real(kind=GP), public, dimension(:), allocatable :: diss_apar

Dissipation (total) on parallel electromagnetic potential

real(kind=GP), public, dimension(:), allocatable :: diss_vort

Dissipation (total) on vorticity

real(kind=GP), public, dimension(:), allocatable :: gstressv

Ion stress function

real(kind=GP), public, dimension(:), allocatable :: gstressv_par

Parallel part of ion stress function

Finalizations Procedures

final :: destructor

Type-Bound Procedures

procedure , public :: compute => compute_diagnostics_packet Subroutine

Subroutines

public subroutine compute_diagnostics_packet(self, comm_handler, equi, equi_on_cano, equi_on_stag, mesh_cano, mesh_stag, map, penalisation_cano, penalisation_stag, polars_cano, polars_stag, parflux_utils_cano, parflux_utils_stag, perp_bnd_flux_cano, perp_bnd_flux_stag, opsinplane_cano, opsinplane_stag, boundaries, boundaries_neutrals, cf_buffer_cano, cf_buffer_stag, cf_diss_cano, cf_diss_stag, tau, ne, te, ti, pot, vort, upar, jpar, apar, apar_fluct, gstress, neutrals_dens, neutrals_parmom, neutrals_pressure, sources_external, src_upar, src_vort, multistep_storage_cano, multistep_storage_stag)

Compute diagnostics Only work for tratio=1

Arguments

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

Instance of class

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

MPI communicators

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

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

Polars (canonical)

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

Polars (staggered)

type(parallel_target_flux_t), intent(in) :: parflux_utils_cano

Parallel boundary flux utility (canonical)

type(parallel_target_flux_t), intent(in) :: parflux_utils_stag

Parallel boundary flux utility (staggered)

type(perp_bnd_flux_t), intent(in) :: perp_bnd_flux_cano

Perpendicular boundary flux utility (canonical)

type(perp_bnd_flux_t), intent(in) :: perp_bnd_flux_stag

Perpendicular boundary flux utility (staggered)

type(inplane_operators_t), intent(inout) :: opsinplane_cano

Inplane operators (canonical)

type(inplane_operators_t), intent(inout) :: opsinplane_stag

Inplane operators (staggered)

type(boundaries_braginskii_t), intent(in) :: boundaries

Boundary information for the Braginskii model

type(boundaries_neutrals_t), intent(in) :: boundaries_neutrals

Boundaries related with neutrals module

real(kind=GP), intent(in), dimension(mesh_cano%get_n_points()) :: cf_buffer_cano

Buffer function (canonical)

real(kind=GP), intent(in), dimension(mesh_stag%get_n_points()) :: cf_buffer_stag

Buffer function (staggered)

real(kind=GP), intent(in), dimension(mesh_cano%get_n_points()) :: cf_diss_cano

Envelope function for dissipation (canonical)

real(kind=GP), intent(in), dimension(mesh_stag%get_n_points()) :: cf_diss_stag

Envelope function for dissipation (staggered)

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

Time

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

Electron density

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

Electron temperature

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

Ion temperature

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

Electrostatic potential

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

Generalised vorticity

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

Parallel ion velocity

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

Parallel current

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

Parallel electromagnetic potential

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

Fluctation of apar used for flutter operators

type(gyroviscosity_t), intent(inout) :: gstress

Gyroviscosity

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

Neutrals density

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

Neutrals parallel momentum

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

Neutrals pressure

type(sources_external_t), intent(inout) :: sources_external

External sources

real(kind=GP), intent(in), dimension(mesh_stag%get_n_points_inner()) :: src_upar

Parallel momentum source values on inner mesh points

real(kind=GP), intent(in), dimension(mesh_cano%get_n_points_inner()) :: src_vort

Vorticity source values on inner mesh points

type(multistep_storage_t), intent(in) :: multistep_storage_cano

Multistep storage for quantities on the canonical mesh

type(multistep_storage_t), intent(in) :: multistep_storage_stag

Multistep storage for quantities on the staggered mesh

public subroutine destructor(self)

Arguments

Type IntentOptional Attributes Name
type(diagnostics_packet_t), intent(inout) :: self

Instance of type