diagnostics_packet_t Derived Type

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


Contents

ne_stag te_stag ti_stag pot_stag upar_cano neutrals_dens_stag neutrals_parmom_cano nupar_cano nvpar_cano jpar_cano apar_fluct_over_btor radgrad_ne radgrad_te radgrad_ti v_exb_rad v_dia_e_rad v_dia_i_rad b_1_rad src_ext_ne src_ext_te src_ext_ti src_iz_ne src_rec_ne src_neut_te src_neut_ti src_neut_upar src_neut_vort src_neut_pressure src_neut_rcy src_floor_ne src_floor_neutrals_dens ddt_eth ddt_ne ddt_te ddt_ti ddt_neutrals_dens eth p_heat_e p_heat_i p_rad_imp p_rad_iz p_rad_rec p_neut_e p_neut_i p_ext_par p_neut_par_cano p_neut_par_stag p_ext_perp p_neut_perp qpar_cond_e qpar_cond_i qpar_conv_e qpar_conv_i parflux_ne_fwd parflux_ne_bwd parflux_ne_fwd_weighted parflux_ne_bwd_weighted parflux_neutrals_fwd parflux_neutrals_bwd parflux_neutralsdiss_fwd parflux_neutralsdiss_bwd perpflux_ne_exb perpflux_ne_dia perpflux_neutrals_outer perpflux_neutrals_volint neut_k_iz neut_k_rec neut_k_cx neut_w_iz neut_w_rec cont_radflux_exb cont_radflux_dia cont_radflux_visc cont_radflux_mag cont_exb_advection cont_flutter cont_div_nupar cont_curv_pot cont_curv_pe cont_hypvisc vort_curv_pi vort_div_jpar vort_flutter vort_hypvisc ethe_ddt ethe_radflux_exb ethe_radflux_dia ethe_radflux_dia_real ethe_pe_div_exb ethe_vpar_gradpar_pe ethe_eta_jpar2 ethe_jpar_gradpar_te ethe_equipartition ethe_hypvisc ethe_buffer ethe_src ethe_radflux_mag_qtotal ethe_radflux_mag_qnormal ethe_radflux_visc ethi_radflux_exb ethi_radflux_dia ethi_pi_div_exb ethi_upar_gradpar_pi ethi_radflux_dia_real ethi_radflux_mag_adv ethi_radflux_mag_qtotal ethi_radflux_mag_qnormal ethi_radflux_visc ekin_perp ekin_perp_ddt ekin_par ekin_par_ddt eem eem_ddt etrans_upar_gradpar_pe etrans_jpar_gradpar_pot etrans_upol_grad_pi ethi_upol_flux ekinperp_upol_flux ekinperp_jpol_poynt_flux eem_flux aparv_fluct_cano diss_ne diss_te diss_pe diss_ti diss_pi diss_upar diss_apar diss_vort gstressv gstressv_par

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


Finalization Procedures

final :: destructor


Type-Bound Procedures

procedure, public :: compute => compute_diagnostics_packet

  • 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