ORB5X 1.0.0
Performance-portable global electromagnetic gyrokinetic PIC code
orb5x::Diagnostics Class Reference

Owns diagnostic accumulation, MPI reduction, normalization, and HDF5 output. More...

#include "diagnostics.hpp"

+ Collaboration diagram for orb5x::Diagnostics:

Classes

struct  PlaceholderEntry
 

Public Member Functions

 Diagnostics ()
 Constructor - initializes all static member defaults.
 

Static Public Member Functions

static void accumulate_diagnostics (int isp, Real wt, Real w3t, Real pt, Real pvolgc, Real ze, Real zf0, Real sigmat, Real q_vgc_dot_genelec, Real q_dvpadt0_dot_gyroapar)
 Accumulate weights, entropy, and energy-transfer scalars for one marker.
 
static void accumulate_displacements (int isp, bool in_ksieta, Real chit_cos, Real chit_sin, Real sigmat, const std::array< Real, 3 > &tempd, const std::array< Real, 3 > &vgc, const std::array< Real, 3 > &vexb, Real dvpadt1, Real dvpadt0, Real rhs, bool nl_directdf)
 Accumulate total and E x B marker-displacement statistics.
 
static void accumulate_flux1d_f0 (int isp, int irloc, Real zf0, Real dPsidt1, Real dPsidt0, Real ze, Real ut, Real rt2, const std::vector< Real > &vpar)
 Accumulate equilibrium-distribution radial flux channels.
 
static void accumulate_flux1d_w (int isp, int irloc, Real wt, Real dPsidt1, Real dPsidt0, Real ze, Real ut, Real rt2, const std::vector< Real > &vpar)
 Accumulate marker-weighted radial particle, heat, and momentum flux.
 
static void accumulate_moment1d_f (int isp, int irloc, Real zf0, Real wt, Real ut, Real ut2, Real vpt2)
 Accumulate total-distribution one-dimensional velocity moments.
 
static void accumulate_moment1d_f0 (int isp, int irloc, Real zf0, Real ut, Real ut2, Real vpt2, Real rt2, const std::vector< Real > &vpar, const std::vector< Real > &vexb, Real b)
 Accumulate equilibrium-distribution one-dimensional moments.
 
static void accumulate_moment1d_w (int isp, int irloc, Real zf0, Real wt, Real ut, Real ut2, Real vpt2, Real rt2, const std::vector< Real > &vpar, const std::vector< Real > &vexb, Real b, Real jdote_tot)
 Accumulate perturbation-weighted one-dimensional moments.
 
static void add_efield (int isp, int component, Real value)
 
static void add_efield_av (int isp, int component, Real value)
 
static void add_to_0d_vexbnavg (int isp, Real to_add)
 Accumulate mean thermal-normalized E x B speed.
 
static void add_to_entropy_fluct (int isp, int idiag, Real value)
 
static void add_to_jdote_bg (int isp, int idiag, Real value)
 
static void add_to_jdote_fluct (int isp, int idiag, Real value)
 
static void add_trap_frac (int isp, int type, Real value)
 
static void append_placeholder_slices (int step, Real time)
 Append zero-filled compatibility slices for one output sample.
 
static void append_scalar (const std::string &path, const Real *values, size_t count)
 Append scalar values to an extensible HDF5 dataset.
 
static void append_stat_int (const std::string &path, const int *array, size_t count)
 Matching Fortran append_stat (util.F90:473-511): Appends integer array data to an extensible HDF5 dataset.
 
static void clear_diagnostics (int isp)
 Clear per-step accumulators for one species.
 
static void clear_entropy_diag (int isp)
 
static void clear_jdote (int isp)
 
static void clear_jdote_fluct (int isp)
 
static void createg_1D (const std::string &name, const std::string &description, const std::vector< Real > &coord1, const std::string &coord1_name)
 Create generic 1D dataset group (matching Fortran createg_1D, diagnostics.F90:2663-2674) Creates /data/var1d/generic/{name} with coord1, time, data datasets and attaches PlotOrder attribute.
 
static void createg_1Dms (const std::string &species_name, const std::string &name, const std::string &description, const std::vector< Real > &coord1, const std::string &coord1_name)
 Create species 1D dataset group (matching Fortran createg_1Dms, diagnostics.F90:2746-2759) Creates /data/var1d/{species_name}/{name} with coord1, time, data datasets and attaches PlotOrder attribute.
 
static void createg_2D (const std::string &name, const std::string &description, const std::vector< Real > &coord1, const std::string &coord1_name, const std::vector< Real > &coord2, const std::string &coord2_name)
 Create generic 2D dataset group (matching Fortran createg_2D, diagnostics.F90:2647-2659) Creates /data/var2d/generic/{name} with coord1, coord2, time, data datasets and attaches PlotOrder attribute.
 
static void createg_2Dms (const std::string &species_name, const std::string &name, const std::string &description, const std::vector< Real > &coord1, const std::string &coord1_name, const std::vector< Real > &coord2, const std::string &coord2_name)
 Create species 2D dataset group (matching Fortran createg_2Dms, diagnostics.F90:2678-2701) Creates /data/var2d/{species_name}/{name} with coord1, coord2, time, data datasets and attaches PlotOrder attribute.
 
static void createg_3D (const std::string &name, const std::string &description, const std::vector< Real > &coord1, const std::string &coord1_name, const std::vector< Real > &coord2, const std::string &coord2_name, const std::vector< Real > &coord3, const std::string &coord3_name)
 Create generic 3D dataset group (matching Fortran createg_3D, diagnostics.F90:2608-2622) Creates /data/var3d/generic/{name} with coord1, coord2, coord3, time, data datasets and attaches PlotOrder attribute.
 
static void createg_3Dms (const std::string &species_name, const std::string &name, const std::string &description, const std::vector< Real > &coord1, const std::string &coord1_name, const std::vector< Real > &coord2, const std::string &coord2_name, const std::vector< Real > &coord3, const std::string &coord3_name, const std::vector< std::vector< int > > *mmin_f=nullptr)
 Create species 3D dataset group (matching Fortran createg_3Dms, diagnostics.F90:2705-2720) Creates /data/var3d/{species_name}/{name} with coord1, coord2, coord3, time, data datasets and attaches PlotOrder attribute.
 
static void createg_3Dz (const std::string &name, const std::string &description, const std::vector< Real > &coord1, const std::string &coord1_name, const std::vector< Real > &coord2, const std::string &coord2_name, const std::vector< Real > &coord3, const std::string &coord3_name, const std::vector< std::vector< int > > *mmin_f=nullptr)
 Create generic 3D complex dataset group (matching Fortran createg_3Dz, diagnostics.F90:2626-2643) Creates /data/var3d/generic/{name} with coord1, coord2, coord3, time, data (complex) datasets Optionally creates mmin dataset if mmin_f is provided.
 
static void createg_3Dzms (const std::string &species_name, const std::string &name, const std::string &description, const std::vector< Real > &coord1, const std::string &coord1_name, const std::vector< Real > &coord2, const std::string &coord2_name, const std::vector< Real > &coord3, const std::string &coord3_name, const std::vector< std::vector< int > > *mmin_f=nullptr)
 Create species 3D complex dataset group (matching Fortran createg_3Dzms, diagnostics.F90:2724-2742) Creates /data/var3d/{species_name}/{name} with coord1, coord2, coord3, time, data (complex) datasets Optionally creates mmin dataset if mmin_f is provided.
 
static void destroyStaticViews ()
 Release static Kokkos Views before Kokkos::finalize()
 
static void diag3d_on_fluid_moments (int isp)
 Derive vorticity, potential, temperature, and spectra from fluid moments.
 
static void diag3d_spectrum (const std::vector< std::vector< std::vector< Real > > > &field, std::vector< std::vector< Real > > &spectrum_out, int nmax)
 Compute a toroidal-mode spectrum from a real three-dimensional field.
 
static void diag_fields_torpol (int fieldnum, Real time)
 Write toroidal and poloidal Fourier spectra.
 
static void diag_fields_torpol_init ()
 =============================================================================
 
static void diag_fulltorus (int fieldnum, Real time)
 Write selected full-torus plane cuts.
 
static void diag_fulltorus_init ()
 =============================================================================
 
static void diagnose (int step, int step_tot, Real time)
 Run diagnostics scheduled for the current integration step.
 
static void diagnose_phasespace (int isp, Real s, Real vpar, Real mu, Real B, Real pvol, Real w, Real zf0)
 Accumulate the (psi,v_parallel,v_perp) phase-space histogram.
 
static void diagnose_sampling (int isp, Real s, Real en, Real pvol, Real w, Real zf0)
 Accumulate the (s,v^2) marker-sampling histogram.
 
static void diagnostics_after_loop (int isp)
 Reduce and normalize diagnostics after one species push loop.
 
static std::vector< std::vector< Real > > & displacement_avg_ref ()
 
static std::vector< std::vector< Real > > & displacement_exb_avg_ref ()
 
static std::vector< std::vector< Real > > & displacement_exb_max_ref ()
 
static std::vector< std::vector< Real > > & displacement_max_ref ()
 
static void electron_fluxes_moments (int isp, int irloc, Real zf0, Real dPsidt1, Real dPsidt0, Real ze, Real wt, Real ffinit_tmp1, Real ffinit_tmp2, Real ffinit_tmp3, Real ffinit_tmp4, bool is_trapped)
 Accumulate passing/trapped electron fluxes and moments.
 
static std::vector< std::vector< Real > > & entropy_fluct_avg_ref ()
 
static std::vector< std::vector< std::vector< std::vector< std::vector< Real > > > > > & fluid_moments_ref ()
 
static void flush0d ()
 Flush 0D diagnostics buffer to file Writes accumulated 0D diagnostic data to HDF5.
 
static std::vector< std::vector< std::vector< Real > > > & flux1d_f0_ref ()
 
static std::vector< std::vector< std::vector< Real > > > & flux1d_w_ref ()
 
static Real get_adiab (int isp)
 
static Kokkos::View< Real ** > & get_buf ()
 
static Kokkos::View< Real *** > & get_buf_pic ()
 
static int get_cum_non_cg_bins (int isp)
 
static int get_cum_non_cg_markers (int isp)
 
static Real get_dSdt_heat (int isp)
 
static Real get_dSdt_nc (int isp)
 
static Real get_dSdt_nc_corr (int isp)
 
static Real get_efield (int isp, int component)
 
static Real get_efield_av (int isp, int component)
 
static Real get_efield_fft (int isp, int component)
 
static Real get_entropy_fluct_avg (int isp, int idiag)
 
static Real get_flux0d_f0 (int isp, int idiag)
 
static Real get_flux0d_w (int isp, int idiag)
 
static Kokkos::View< Real * > get_generic_signoise_avg ()
 
static int get_generic_signoise_size ()
 
static Real get_generic_spectrum2d_avg (int idiag, int i, int j)
 
static int get_ibuf ()
 
static Real get_inner_edge_losses (int isp, int component)
 
static int get_irloc_in ()
 
static Real get_jdote_bg (int isp, int idiag)
 
static Real get_jdote_fluct (int isp, int idiag)
 
static Real get_misc_avg (int isp, int idiag)
 
static Kokkos::View< Real ** > & get_noise_2d_all ()
 
static int get_nsbound_in (int isp)
 
static int get_nsbound_out (int isp)
 
static Real get_outer_edge_losses (int isp, int component)
 
static Kokkos::View< Real ** > & get_signal_2d_all ()
 
static Real get_spectrum2d_avg (int isp, int idiag, int i, int j)
 
static int get_tot_cg_bins (int isp)
 
static int get_tot_cg_markers (int isp)
 
static Real get_trap_frac (int isp, int type)
 
static Real get_variance (int isp, int index)
 
static Real get_vexbnavg (int isp, int idiag)
 
static Real get_vthmax2_cached (int isp)
 
static Real get_vthmax_cached (int isp)
 
static Real get_wsqreduced (int isp)
 
static Real getpot_fieldnum (Real s, Real theta, Real phi, int fieldnum)
 Interpolate a selected field in magnetic coordinates.
 
static void init_generic_signoise ()
 Allocate and clear generic signal-to-noise accumulators.
 
static void init_phase1_diagnostics ()
 Initialize Phase 1 diagnostic arrays and flags Called from initialize_diagnostics()
 
static void init_test_diagnostic_arrays (int nspecies)
 Allocate deterministic in-memory diagnostic storage for tests.
 
static void init_variance (int nspecies)
 Size and zero variance storage.
 
static void initialize_diagnostics ()
 Initialize diagnostics system Sets up all diagnostic structures, grids, and output files.
 
static void initialize_phasespace_diags ()
 Initialize phase space diagnostics.
 
static void initialize_source_3d_diags ()
 Initialize source 3D diagnostics.
 
static Real jdote (int isp, Real ut2, Real vpt2, const std::vector< Real > &vpar, const std::vector< Real > &genelec, const std::vector< Real > &elec_par, Real wt, Real bstar_inv, const std::vector< Real > &bgrb, const std::vector< Real > &vgb, const std::vector< Real > &vpressure, const std::vector< Real > &veb_f, const std::vector< Real > &vexb, Real expt_back, Real eypt_back, Real dvpadt0, Real gyroapar)
 Compute and accumulate one marker's j dot E power transfer.
 
static std::vector< std::vector< Real > > & jdote_bg_ref ()
 
static std::vector< std::vector< Real > > & jdote_fluct_ref ()
 
static void max_of_0d (int isp, int i, Real to_add)
 Update a maximum-valued zero-dimensional channel.
 
static void max_of_0d_vexbnmax (int isp, Real to_add)
 Update maximum thermal-normalized E x B speed.
 
static void max_of_0d_vmax (int isp, Real to_add)
 Update maximum normalized marker speed.
 
static void max_of_0d_wmax (int isp, Real to_add)
 Update maximum absolute marker weight.
 
static std::vector< std::vector< Real > > & misc_avg_ref ()
 
static void mmin_f_serialize ()
 Serializes mmin_f array across MPI ranks for 3D output.
 
static std::vector< std::vector< std::vector< Real > > > & moment1d_f0_ref ()
 
static std::vector< std::vector< std::vector< Real > > > & moment1d_f_ref ()
 
static std::vector< std::vector< std::vector< Real > > > & moment1d_w_ref ()
 
static std::vector< std::vector< std::vector< std::vector< Real > > > > & moment2d_avg_ref ()
 
static std::vector< std::vector< std::vector< std::vector< Real > > > > & mpr_2d_ref ()
 
static void mpr_es_calc (int isp, int iuloc, int imuloc, Real sigmat, Real thetat, Real wt, Real ut2, Real vpt2, Real bstar_inv, const std::vector< Real > &vpar, const std::vector< Real > &genelec, const std::vector< Real > &bgrb, const std::vector< Real > &vgb, const std::vector< Real > &vpressure, const std::vector< Real > &veb_f)
 Accumulate electrostatic mode-particle-resonance power transfer.
 
static bool nl_do_diag (int step_tot, int nfreq)
 Test a diagnostic cadence.
 
static void normalize_flux1d (int isp)
 Normalize radial fluxes and form zero-dimensional integrals.
 
static void normalize_moment1d_f (int isp)
 Normalize total-distribution radial moments.
 
static void normalize_moment1d_f0 (int isp)
 Normalize equilibrium-distribution radial moments.
 
static void normalize_moment1d_w (int isp)
 Normalize perturbation-weighted radial moments.
 
static void normalize_moment2d (int isp)
 Normalize two-dimensional averaged moments.
 
static void normalize_poloidal1d (int isp)
 Normalize one-dimensional poloidal moments.
 
template<typename T >
static void omp_reduce_diag (T &data, bool use_max=false)
 Generic diagnostic reduction interface (matches Fortran omp_reduce_diag)
 
static void omp_reduce_diag0d (Real &data, bool use_max=false)
 =============================================================================
 
static void omp_reduce_diag1d (std::vector< Real > &data, bool use_max=false)
 Reduce 1D diagnostic array.
 
static void omp_reduce_diag2d (std::vector< std::vector< Real > > &data, bool use_max=false)
 Reduce 2D diagnostic array.
 
static void omp_reduce_diag3d (std::vector< std::vector< std::vector< Real > > > &data, bool use_max=false)
 Reduce 3D diagnostic array.
 
static std::vector< std::vector< std::vector< std::vector< std::vector< Real > > > > > & phasespace_3d_ref ()
 
static void polarisation_fieldcalc (int isp)
 Compute polarization-field diagnostic channels after reduction.
 
static std::vector< std::vector< std::vector< Real > > > & poloidal1d_f_ref ()
 
static std::vector< std::vector< std::vector< Real > > > & poloidal1d_w_ref ()
 
static void profsphi (Real theta, int fieldnum, std::vector< std::vector< Real > > &pot_sp)
 Sample a selected field on an (s,phi) plane.
 
static void profsth (Real phi, int fieldnum, int ns0, std::vector< std::vector< Real > > &pot_st, std::vector< std::vector< Real > > *xc=nullptr, std::vector< std::vector< Real > > *zc=nullptr)
 Sample a selected field on an (s,theta) plane.
 
static void put3d_dens (Real time, bool do_moments=false)
 Write three-dimensional density and optional moment diagnostics.
 
static void put3d_h5s (Real time, int diag_select, int field_select, int isp=-1)
 Write one three-dimensional field/density diagnostic.
 
static void putarr (const std::string &path, const Real *array, size_t length, const std::string &title="")
 Write a one-dimensional real array and optional title.
 
static void putarr_attime_1d (const std::string &path, const Real *array, size_t length, Real time)
 Append a one-dimensional real slice at a simulation time.
 
static void putarr_attime_2d (const std::string &path, const Real *array, size_t dim1, size_t dim2, Real time)
 Append a two-dimensional real slice at a simulation time.
 
static void read_restart_state (int datn)
 
static void rhs_f_serialize (const std::vector< std::vector< std::complex< Real > > > &rhs_f_ptr)
 Gather distributed Fourier RHS coefficients for three-dimensional output.
 
static std::vector< std::vector< std::vector< std::vector< Real > > > > & sampling_2d_ref ()
 
static void set_buf (Kokkos::View< Real ** > v)
 
static void set_buf_pic (Kokkos::View< Real *** > v)
 
static void set_dSdt_heat (int isp, Real value)
 
static void set_dSdt_nc (int isp, Real value)
 
static void set_dSdt_nc_corr (int isp, Real value)
 
static void set_efield (int isp, int component, Real value)
 
static void set_efield_av (int isp, int component, Real value)
 
static void set_efield_fft (int isp, int component, Real value)
 
static void set_generic_spectrum2d_avg (int idiag, int i, int j, Real value)
 
static void set_ibuf (int val)
 
static void set_inner_edge_losses (int isp, int component, Real value)
 
static void set_misc_avg (int isp, int idx, Real val)
 
static void set_nsbound_in (int isp, int value)
 
static void set_nsbound_out (int isp, int value)
 
static void set_outer_edge_losses (int isp, int component, Real value)
 
static void set_signal2noise (Real sn, Real sn_nozf)
 
static void set_signal2noise_em (Real sn, Real sn_nozf)
 
static void set_spectrum2d_avg (int isp, int idiag, int i, int j, Real value)
 
static void set_variance (int isp, int index, Real value)
 
static void snapshot_variance (int isp)
 
static std::vector< std::vector< std::vector< Real > > > & source_diag1d_avg_ref ()
 
static void strong_diagnostic_output (int isp, int ip, Real psi0t, Real temp2, Real ze, Real vecrossb_f2, Real pot_equil, Real zf0, Real zvth2_inv, Real dpotdpsi, Real vdr, Real rhs)
 Record one marker's strong-flow parity diagnostics.
 
static void sum_entropy_fluctuation (int isp, Real wt, Real zf0, Real q_vgc_dot_genelec, Real zvth2_inv, Real df0_dpsi_prof, Real df0_dchi_prof, Real dpsi_prof_dt)
 Accumulate one marker's fluctuation-entropy balance.
 
static void sum_fluid_moments (int isp, Real sigmat, Real chit, Real phit, Real wt, Real ut, Real ut2, Real vpt2)
 Deposit one marker into three-dimensional fluid moments.
 
static void sum_in_radial_bins_island (int isp, int irloc, int ipol, Real ut, const std::vector< Real > &gradpsi0, Real htildex, Real htildey, Real ze, Real zf0, Real wt, Real dPsidt1, Real ffinit_tmp1, Real ffinit_tmp2, Real ffinit_tmp3, Real ffinit_tmp4)
 Accumulate magnetic-island radial/poloidal diagnostics.
 
static void sum_moment2d (int isp, int irloc, int ithetaloc, Real wt, Real ffinit_tmp1, Real ffinit_tmp2, Real ffinit_tmp3, Real ffinit_tmp4)
 Accumulate (s,theta) initial-distribution moments.
 
static void sum_particles_in_poloidal_bins (int isp, int ithetaloc, Real wt, Real ffinit_tmp1, Real ffinit_tmp2, Real ffinit_tmp3, Real ffinit_tmp4, Real wt_tmp1, Real wt_tmp2, Real wt_tmp3)
 Accumulate poloidal moments at the configured radial surface.
 
static void sum_particles_in_radial_bins (int isp, int ip, int irloc, Real zf0, Real dPsidt1, Real dPsidt0, Real ze, Real wt, Real ut, Real ut2, Real vpt2, Real rt2, const std::vector< Real > &vpar, Real zf0_tmp1, Real zf0_tmp2, Real zf0_tmp3, Real sigmat, Real zf0_local, Real grsigma2, Real grsigmagrchi, Real b, const std::vector< Real > &exh, Real wt_tmp1, Real wt_tmp2, Real wt_tmp3, const std::vector< Real > &vexb, Real ffinit_tmp1, Real ffinit_tmp2, Real ffinit_tmp3, Real ffinit_tmp4, Real ffinit_tmp5, Real jdote_tot, const std::vector< Real > &eloc)
 Accumulate all configured radial-bin diagnostics for one marker.
 
static Real sum_spectrum2d_avg (int isp, int idiag, int ndim, int mdim)
 
static void sum_velocities (int isp, int iuloc, int imuloc, Real wt, Real zf0, Real pvol)
 Accumulate one- and two-dimensional velocity-space diagnostics.
 
static void test_particle_output (int isp, int ip, Real psi0t, Real ze, Real pot_equil, Real wt, Real zvth2, Real nval, Real pvol_updated, Real zf0)
 Store one selected test-particle record.
 
static std::vector< std::vector< std::vector< Real > > > & vel1d_avg_ref ()
 
static std::vector< std::vector< std::vector< std::vector< Real > > > > & vel2d_avg_ref ()
 
static void velocity_space_diag_init ()
 Initialize velocity space diagnostics Sets up velocity space grids and output structures.
 
static std::vector< Real > & vmax_ref ()
 
static std::vector< Real > & wmax_ref ()
 
static void write_output (int step, Real time)
 Write the standard scalar, profile, and spectrum output set.
 
static void write_restart_state (int datn)
 
static void zero_generic_spectrum2d_avg (int idiag, int ndim, int mdim)
 Zero one generic (m,n) spectrum slice.
 
static void zero_spectrum2d_avg (int isp, int idiag, int ndim, int mdim)
 Zero one per-species (m,n) spectrum slice.
 

Static Public Attributes

static std::vector< Real > apaloc
 Local \(A_\parallel(s,0,0)\) radial cut.
 
static constexpr int FIELD_APAR = 2
 Select total parallel vector potential.
 
static constexpr int FIELD_APAR_HAM = 3
 Select Hamiltonian \(A_\parallel\).
 
static constexpr int FIELD_APAR_SYMPL = 4
 Select symplectic \(A_\parallel\).
 
static constexpr int FIELD_DENS = 5
 Select density field.
 
static constexpr int FIELD_PHI = 1
 =============================================================================
 
static constexpr int FIELD_USER = 6
 Select user-defined external field.
 
static std::vector< std::vector< std::vector< Real > > > moment1d_w
 moment1d_w: 1D moment diagnostics weighted by w (matching Fortran moment1d_w) [nspecies][nbin_flux+2][14 diagnostic types] - matching moment1d_w structure
 
static std::vector< bool > out
 Species output flags (matching Fortran out(0:NSPECIES_MAX)) out[0] = true for pure fluid model, out[isp] = true if species isp has diagnostic output.
 
static std::array< int, 3 > pe_phi_cuts = {0, 0, 0}
 MPI ranks responsible for phi cuts (matching Fortran pe_phi_cuts(0:2)) Stores the PE rank that owns each of the 3 phi cut positions for output.
 
static std::vector< Real > phi00
 Public diagnostic arrays (accessed by FieldsModule in solve_fem, matching Fortran pde_solver) Potential diagnostic arrays (matching Fortran diagnostics.F90)
 
static std::vector< Real > phi0_chi
 Poloidal potential cut at the configured diagnostic radius.
 
static std::vector< Real > phibar
 Flux-surface-averaged electrostatic potential.
 
static std::vector< Real > philoc
 \(\phi(s,\theta=0,\varphi=0)\) radial cut.
 
static std::vector< Real > philoc_hfs
 High-field-side cut \(\phi(s,\theta=\pi,\varphi=0)\).
 
static std::vector< std::vector< Real > > rho00
 Flux-surface-averaged charge density by radius and species.
 

Detailed Description

Owns diagnostic accumulation, MPI reduction, normalization, and HDF5 output.

Particle pushers accumulate weighted fluxes, moments, entropy transfer, and phase-space statistics through this static service. After each species loop, Diagnostics reduces rank-local data, applies physical bin-volume and distribution normalizations, stages field and three-dimensional products, and appends them to the configured output datasets. Species arguments use zero-based C++ indexing unless a function explicitly states otherwise; physical values are in ORB5X normalization and angles are in radians.

Constructor & Destructor Documentation

◆ Diagnostics()

orb5x::Diagnostics::Diagnostics ( )
inline

Constructor - initializes all static member defaults.

Scalar members

References pe_phi_cuts.

Member Function Documentation

◆ accumulate_diagnostics()

static void orb5x::Diagnostics::accumulate_diagnostics ( int  isp,
Real  wt,
Real  w3t,
Real  pt,
Real  pvolgc,
Real  ze,
Real  zf0,
Real  sigmat,
Real  q_vgc_dot_genelec,
Real  q_dvpadt0_dot_gyroapar 
)
static

Accumulate weights, entropy, and energy-transfer scalars for one marker.

Parameters
[in]ispZero-based species index.
[in]wtPerturbation weight.
[in]w3tThird weight/control-variate channel.
[in]ptTotal marker weight used by the selected formulation.
[in]pvolgcGuiding-centre phase-space volume.
[in]zeNormalized kinetic energy.
[in]zf0Equilibrium distribution value.
[in]sigmatRadial coordinate s=sqrt(psi).
[in]q_vgc_dot_genelecCharge-weighted electric energy transfer.
[in]q_dvpadt0_dot_gyroaparEquilibrium-acceleration/vector-potential transfer.
Note
Matches sum_of_weights_and_energy_transfer in part.F90.

◆ accumulate_displacements()

static void orb5x::Diagnostics::accumulate_displacements ( int  isp,
bool  in_ksieta,
Real  chit_cos,
Real  chit_sin,
Real  sigmat,
const std::array< Real, 3 > &  tempd,
const std::array< Real, 3 > &  vgc,
const std::array< Real, 3 > &  vexb,
Real  dvpadt1,
Real  dvpadt0,
Real  rhs,
bool  nl_directdf 
)
static

Accumulate total and E x B marker-displacement statistics.

Parameters
[in]ispZero-based species index.
[in]in_ksietaWhether coordinates use the (ksi,eta) representation.
[in]chit_cosCosine of marker poloidal angle.
[in]chit_sinSine of marker poloidal angle.
[in]sigmatRadial marker coordinate.
[in]tempdThree-component displacement increment.
[in]vgcThree-component guiding-centre velocity.
[in]vexbThree-component E x B velocity.
[in]dvpadt1Perturbed parallel acceleration.
[in]dvpadt0Equilibrium parallel acceleration.
[in]rhsWeight-equation right-hand side.
[in]nl_directdfDirect-delta-f formulation flag.

◆ accumulate_flux1d_f0()

static void orb5x::Diagnostics::accumulate_flux1d_f0 ( int  isp,
int  irloc,
Real  zf0,
Real  dPsidt1,
Real  dPsidt0,
Real  ze,
Real  ut,
Real  rt2,
const std::vector< Real > &  vpar 
)
static

Accumulate equilibrium-distribution radial flux channels.

Parameters
[in]ispZero-based species index.
[in]irlocZero-based radial diagnostic bin.
[in]zf0Equilibrium distribution value.
[in]dPsidt1Perturbed radial/canonical-flux characteristic.
[in]dPsidt0Equilibrium radial/canonical-flux characteristic.
[in]zeNormalized kinetic energy.
[in]utNormalized parallel marker coordinate.
[in]rt2Squared cylindrical major radius.
[in]vparThree-component parallel velocity.

◆ accumulate_flux1d_w()

static void orb5x::Diagnostics::accumulate_flux1d_w ( int  isp,
int  irloc,
Real  wt,
Real  dPsidt1,
Real  dPsidt0,
Real  ze,
Real  ut,
Real  rt2,
const std::vector< Real > &  vpar 
)
static

Accumulate marker-weighted radial particle, heat, and momentum flux.

Parameters
[in]ispZero-based species index.
[in]irlocZero-based radial diagnostic bin.
[in]wtPerturbation weight.
[in]dPsidt1Perturbed flux characteristic.
[in]dPsidt0Equilibrium flux characteristic.
[in]zeNormalized kinetic energy.
[in]utNormalized parallel marker coordinate.
[in]rt2Squared cylindrical major radius.
[in]vparThree-component parallel velocity.

◆ accumulate_moment1d_f()

static void orb5x::Diagnostics::accumulate_moment1d_f ( int  isp,
int  irloc,
Real  zf0,
Real  wt,
Real  ut,
Real  ut2,
Real  vpt2 
)
static

Accumulate total-distribution one-dimensional velocity moments.

Parameters
[in]ispZero-based species index.
[in]irlocZero-based radial bin.
[in]zf0Equilibrium distribution value.
[in]wtPerturbation weight.
[in]utParallel velocity.
[in]ut2Squared parallel velocity.
[in]vpt2Squared perpendicular velocity.

◆ accumulate_moment1d_f0()

static void orb5x::Diagnostics::accumulate_moment1d_f0 ( int  isp,
int  irloc,
Real  zf0,
Real  ut,
Real  ut2,
Real  vpt2,
Real  rt2,
const std::vector< Real > &  vpar,
const std::vector< Real > &  vexb,
Real  b 
)
static

Accumulate equilibrium-distribution one-dimensional moments.

Parameters
[in]ispZero-based species index.
[in]irlocZero-based radial bin.
[in]zf0Equilibrium distribution value.
[in]utParallel velocity.
[in]ut2Squared parallel velocity.
[in]vpt2Squared perpendicular velocity.
[in]rt2Squared cylindrical major radius.
[in]vparThree-component parallel velocity.
[in]vexbThree-component E x B velocity.
[in]bNormalized magnetic-field magnitude.

◆ accumulate_moment1d_w()

static void orb5x::Diagnostics::accumulate_moment1d_w ( int  isp,
int  irloc,
Real  zf0,
Real  wt,
Real  ut,
Real  ut2,
Real  vpt2,
Real  rt2,
const std::vector< Real > &  vpar,
const std::vector< Real > &  vexb,
Real  b,
Real  jdote_tot 
)
static

Accumulate perturbation-weighted one-dimensional moments.

Parameters
[in]ispZero-based species index.
[in]irlocZero-based radial bin.
[in]zf0Equilibrium distribution value.
[in]wtPerturbation weight.
[in]utParallel velocity.
[in]ut2Squared parallel velocity.
[in]vpt2Squared perpendicular velocity.
[in]rt2Squared cylindrical major radius.
[in]vparThree-component parallel velocity.
[in]vexbThree-component E x B velocity.
[in]bNormalized magnetic-field magnitude.
[in]jdote_totMarker contribution to j dot E.

◆ add_efield()

static void orb5x::Diagnostics::add_efield ( int  isp,
int  component,
Real  value 
)
static
Parameters
[in]ispZero-based species index.
[in]componentZero-based total-energy component.
[in]valueNormalized contribution to add.

◆ add_efield_av()

static void orb5x::Diagnostics::add_efield_av ( int  isp,
int  component,
Real  value 
)
static
Parameters
[in]ispZero-based species index.
[in]componentZero-based averaged component.
[in]valueNormalized contribution to add.

◆ add_to_0d_vexbnavg()

static void orb5x::Diagnostics::add_to_0d_vexbnavg ( int  isp,
Real  to_add 
)
static

Accumulate mean thermal-normalized E x B speed.

Parameters
[in]ispZero-based species index.
[in]to_addMarker contribution.

◆ add_to_entropy_fluct()

static void orb5x::Diagnostics::add_to_entropy_fluct ( int  isp,
int  idiag,
Real  value 
)
static
Parameters
[in]ispZero-based species index.
[in]idiagEntropy channel index.
[in]valueNormalized contribution.

◆ add_to_jdote_bg()

static void orb5x::Diagnostics::add_to_jdote_bg ( int  isp,
int  idiag,
Real  value 
)
static
Parameters
[in]ispZero-based species index.
[in]idiagChannel index.
[in]valueNormalized contribution to add.

◆ add_to_jdote_fluct()

static void orb5x::Diagnostics::add_to_jdote_fluct ( int  isp,
int  idiag,
Real  value 
)
static
Parameters
[in]ispZero-based species index.
[in]idiagChannel index.
[in]valueNormalized contribution to add.

◆ add_trap_frac()

static void orb5x::Diagnostics::add_trap_frac ( int  isp,
int  type,
Real  value 
)
static
Parameters
[in]ispZero-based species index.
[in]typeOrbit-transition selector.
[in]valueFraction contribution to add.

◆ append_placeholder_slices()

static void orb5x::Diagnostics::append_placeholder_slices ( int  step,
Real  time 
)
static

Append zero-filled compatibility slices for one output sample.

Parameters
[in]stepCurrent global timestep index.
[in]timeCurrent normalized simulation time.

◆ append_scalar()

static void orb5x::Diagnostics::append_scalar ( const std::string &  path,
const Real *  values,
size_t  count 
)
static

Append scalar values to an extensible HDF5 dataset.

Parameters
[in]pathAbsolute dataset path.
[in]valuesContiguous scalar values.
[in]countNumber of appended values.

◆ append_stat_int()

static void orb5x::Diagnostics::append_stat_int ( const std::string &  path,
const int *  array,
size_t  count 
)
static

Matching Fortran append_stat (util.F90:473-511): Appends integer array data to an extensible HDF5 dataset.

Called from rank 0 after data has been gathered.

Parameters
[in]pathAbsolute dataset path.
[in]arrayContiguous integer values.
[in]countNumber of appended values.

◆ clear_diagnostics()

static void orb5x::Diagnostics::clear_diagnostics ( int  isp)
static

Clear per-step accumulators for one species.

Parameters
[in]ispZero-based species index.

◆ clear_entropy_diag()

static void orb5x::Diagnostics::clear_entropy_diag ( int  isp)
static
Parameters
[in]ispZero-based species index.

◆ clear_jdote()

static void orb5x::Diagnostics::clear_jdote ( int  isp)
static
Parameters
[in]ispZero-based species index.

◆ clear_jdote_fluct()

static void orb5x::Diagnostics::clear_jdote_fluct ( int  isp)
static
Parameters
[in]ispZero-based species index.

◆ createg_1D()

static void orb5x::Diagnostics::createg_1D ( const std::string &  name,
const std::string &  description,
const std::vector< Real > &  coord1,
const std::string &  coord1_name 
)
static

Create generic 1D dataset group (matching Fortran createg_1D, diagnostics.F90:2663-2674) Creates /data/var1d/generic/{name} with coord1, time, data datasets and attaches PlotOrder attribute.

Parameters
[in]nameDataset-group name.
[in]descriptionHuman-readable physical quantity and units.
[in]coord1Coordinate values.
[in]coord1_nameCoordinate label.

◆ createg_1Dms()

static void orb5x::Diagnostics::createg_1Dms ( const std::string &  species_name,
const std::string &  name,
const std::string &  description,
const std::vector< Real > &  coord1,
const std::string &  coord1_name 
)
static

Create species 1D dataset group (matching Fortran createg_1Dms, diagnostics.F90:2746-2759) Creates /data/var1d/{species_name}/{name} with coord1, time, data datasets and attaches PlotOrder attribute.

Parameters
[in]species_nameSpecies output-group label.
[in]nameDataset-group name.
[in]descriptionHuman-readable physical quantity and units.
[in]coord1Coordinate values.
[in]coord1_nameCoordinate label.

◆ createg_2D()

static void orb5x::Diagnostics::createg_2D ( const std::string &  name,
const std::string &  description,
const std::vector< Real > &  coord1,
const std::string &  coord1_name,
const std::vector< Real > &  coord2,
const std::string &  coord2_name 
)
static

Create generic 2D dataset group (matching Fortran createg_2D, diagnostics.F90:2647-2659) Creates /data/var2d/generic/{name} with coord1, coord2, time, data datasets and attaches PlotOrder attribute.

Parameters
[in]nameDataset-group name.
[in]descriptionHuman-readable physical quantity and units.
[in]coord1First coordinate values.
[in]coord1_nameFirst-coordinate label.
[in]coord2Second coordinate values.
[in]coord2_nameSecond-coordinate label.

◆ createg_2Dms()

static void orb5x::Diagnostics::createg_2Dms ( const std::string &  species_name,
const std::string &  name,
const std::string &  description,
const std::vector< Real > &  coord1,
const std::string &  coord1_name,
const std::vector< Real > &  coord2,
const std::string &  coord2_name 
)
static

Create species 2D dataset group (matching Fortran createg_2Dms, diagnostics.F90:2678-2701) Creates /data/var2d/{species_name}/{name} with coord1, coord2, time, data datasets and attaches PlotOrder attribute.

Parameters
[in]species_nameSpecies output-group label.
[in]nameDataset-group name.
[in]descriptionHuman-readable physical quantity and units.
[in]coord1First coordinate values.
[in]coord1_nameFirst-coordinate label.
[in]coord2Second coordinate values.
[in]coord2_nameSecond-coordinate label.

◆ createg_3D()

static void orb5x::Diagnostics::createg_3D ( const std::string &  name,
const std::string &  description,
const std::vector< Real > &  coord1,
const std::string &  coord1_name,
const std::vector< Real > &  coord2,
const std::string &  coord2_name,
const std::vector< Real > &  coord3,
const std::string &  coord3_name 
)
static

Create generic 3D dataset group (matching Fortran createg_3D, diagnostics.F90:2608-2622) Creates /data/var3d/generic/{name} with coord1, coord2, coord3, time, data datasets and attaches PlotOrder attribute.

Parameters
[in]nameDataset-group name.
[in]descriptionHuman-readable physical quantity and units.
[in]coord1First coordinate values.
[in]coord1_nameFirst-coordinate label.
[in]coord2Second coordinate values.
[in]coord2_nameSecond-coordinate label.
[in]coord3Third coordinate values.
[in]coord3_nameThird-coordinate label.

◆ createg_3Dms()

static void orb5x::Diagnostics::createg_3Dms ( const std::string &  species_name,
const std::string &  name,
const std::string &  description,
const std::vector< Real > &  coord1,
const std::string &  coord1_name,
const std::vector< Real > &  coord2,
const std::string &  coord2_name,
const std::vector< Real > &  coord3,
const std::string &  coord3_name,
const std::vector< std::vector< int > > *  mmin_f = nullptr 
)
static

Create species 3D dataset group (matching Fortran createg_3Dms, diagnostics.F90:2705-2720) Creates /data/var3d/{species_name}/{name} with coord1, coord2, coord3, time, data datasets and attaches PlotOrder attribute.

Parameters
[in]species_nameSpecies output-group label.
[in]nameDataset-group name.
[in]descriptionHuman-readable physical quantity and units.
[in]coord1First coordinate values.
[in]coord1_nameFirst-coordinate label.
[in]coord2Second coordinate values.
[in]coord2_nameSecond-coordinate label.
[in]coord3Third coordinate values.
[in]coord3_nameThird-coordinate label.
[in]mmin_fOptional minimum-poloidal-mode metadata.

◆ createg_3Dz()

static void orb5x::Diagnostics::createg_3Dz ( const std::string &  name,
const std::string &  description,
const std::vector< Real > &  coord1,
const std::string &  coord1_name,
const std::vector< Real > &  coord2,
const std::string &  coord2_name,
const std::vector< Real > &  coord3,
const std::string &  coord3_name,
const std::vector< std::vector< int > > *  mmin_f = nullptr 
)
static

Create generic 3D complex dataset group (matching Fortran createg_3Dz, diagnostics.F90:2626-2643) Creates /data/var3d/generic/{name} with coord1, coord2, coord3, time, data (complex) datasets Optionally creates mmin dataset if mmin_f is provided.

Parameters
[in]nameDataset-group name.
[in]descriptionHuman-readable physical quantity and units.
[in]coord1First coordinate values.
[in]coord1_nameFirst-coordinate label.
[in]coord2Second coordinate values.
[in]coord2_nameSecond-coordinate label.
[in]coord3Third coordinate values.
[in]coord3_nameThird-coordinate label.
[in]mmin_fOptional minimum-poloidal-mode metadata.

◆ createg_3Dzms()

static void orb5x::Diagnostics::createg_3Dzms ( const std::string &  species_name,
const std::string &  name,
const std::string &  description,
const std::vector< Real > &  coord1,
const std::string &  coord1_name,
const std::vector< Real > &  coord2,
const std::string &  coord2_name,
const std::vector< Real > &  coord3,
const std::string &  coord3_name,
const std::vector< std::vector< int > > *  mmin_f = nullptr 
)
static

Create species 3D complex dataset group (matching Fortran createg_3Dzms, diagnostics.F90:2724-2742) Creates /data/var3d/{species_name}/{name} with coord1, coord2, coord3, time, data (complex) datasets Optionally creates mmin dataset if mmin_f is provided.

Parameters
[in]species_nameSpecies output-group label.
[in]nameDataset-group name.
[in]descriptionHuman-readable physical quantity and units.
[in]coord1First coordinate values.
[in]coord1_nameFirst-coordinate label.
[in]coord2Second coordinate values.
[in]coord2_nameSecond-coordinate label.
[in]coord3Third coordinate values.
[in]coord3_nameThird-coordinate label.
[in]mmin_fOptional minimum-poloidal-mode metadata.

◆ destroyStaticViews()

static void orb5x::Diagnostics::destroyStaticViews ( )
static

Release static Kokkos Views before Kokkos::finalize()

◆ diag3d_on_fluid_moments()

static void orb5x::Diagnostics::diag3d_on_fluid_moments ( int  isp)
static

Derive vorticity, potential, temperature, and spectra from fluid moments.

Parameters
[in]ispZero-based species index.

◆ diag3d_spectrum()

static void orb5x::Diagnostics::diag3d_spectrum ( const std::vector< std::vector< std::vector< Real > > > &  field,
std::vector< std::vector< Real > > &  spectrum_out,
int  nmax 
)
static

Compute a toroidal-mode spectrum from a real three-dimensional field.

Parameters
[in]fieldReal samples indexed by radial, poloidal, and toroidal bins.
[out]spectrum_outMode power by radial/poloidal index.
[in]nmaxMaximum retained toroidal mode.

◆ diag_fields_torpol()

static void orb5x::Diagnostics::diag_fields_torpol ( int  fieldnum,
Real  time 
)
static

Write toroidal and poloidal Fourier spectra.

Parameters
[in]fieldnumField selector.
[in]timeNormalized simulation time.

◆ diag_fields_torpol_init()

static void orb5x::Diagnostics::diag_fields_torpol_init ( )
static

=============================================================================

PHASE 2 IMPLEMENTATIONS (Toroidal/Poloidal Spectrum Diagnostics)

Initialize torpol diagnostics - creates fields_torpol.hdf5 with proper structure Matches Fortran diag_fields_torpol_init() subroutine (diagnostics.F90:1987-2103) Creates HDF5 file and datasets for poloidal (m) and toroidal (n) mode spectra Called once during initialization if nfreq_torpol > 0

◆ diag_fulltorus()

static void orb5x::Diagnostics::diag_fulltorus ( int  fieldnum,
Real  time 
)
static

Write selected full-torus plane cuts.

Parameters
[in]fieldnumField selector.
[in]timeNormalized simulation time.

◆ diag_fulltorus_init()

static void orb5x::Diagnostics::diag_fulltorus_init ( )
static

=============================================================================

PHASE 3 IMPLEMENTATIONS (Full Torus Diagnostics)

Initialize fulltorus diagnostics - creates fulltorus.hdf5 with proper structure Matches Fortran diag_fulltorus_init() subroutine (diagnostics.F90:1631-1762) Creates HDF5 file and datasets for (R,Z) plane cuts and (s,theta) plane cuts Called once during initialization if nfreq_fulltorus > 0

◆ diagnose()

static void orb5x::Diagnostics::diagnose ( int  step,
int  step_tot,
Real  time 
)
static

Run diagnostics scheduled for the current integration step.

Parameters
[in]stepStep index within the current run/restart segment.
[in]step_totGlobal step index including previous segments.
[in]timeCurrent normalized simulation time.

◆ diagnose_phasespace()

static void orb5x::Diagnostics::diagnose_phasespace ( int  isp,
Real  s,
Real  vpar,
Real  mu,
Real  B,
Real  pvol,
Real  w,
Real  zf0 
)
static

Accumulate the (psi,v_parallel,v_perp) phase-space histogram.

Parameters
[in]ispZero-based species index.
[in]sRadial coordinate s=sqrt(psi).
[in]vparNormalized parallel velocity.
[in]muNormalized magnetic moment.
[in]BNormalized magnetic-field magnitude.
[in]pvolMarker phase-space volume.
[in]wPerturbation weight.
[in]zf0Equilibrium distribution value.

◆ diagnose_sampling()

static void orb5x::Diagnostics::diagnose_sampling ( int  isp,
Real  s,
Real  en,
Real  pvol,
Real  w,
Real  zf0 
)
static

Accumulate the (s,v^2) marker-sampling histogram.

Parameters
[in]ispZero-based species index.
[in]sRadial coordinate s=sqrt(psi).
[in]enNormalized kinetic energy.
[in]pvolMarker phase-space volume.
[in]wPerturbation weight.
[in]zf0Equilibrium distribution value.
Note
Matches diagnose_sampling in part.F90.

◆ diagnostics_after_loop()

static void orb5x::Diagnostics::diagnostics_after_loop ( int  isp)
static

Reduce and normalize diagnostics after one species push loop.

Parameters
[in]ispZero-based species index.
Note
Matches diagnostics_after_loop in part.F90.

◆ displacement_avg_ref()

static std::vector< std::vector< Real > > & orb5x::Diagnostics::displacement_avg_ref ( )
static
Returns
Mutable displacement-average accumulator by species/channel.

◆ displacement_exb_avg_ref()

static std::vector< std::vector< Real > > & orb5x::Diagnostics::displacement_exb_avg_ref ( )
static
Returns
Mutable E x B displacement-average accumulator.

◆ displacement_exb_max_ref()

static std::vector< std::vector< Real > > & orb5x::Diagnostics::displacement_exb_max_ref ( )
static
Returns
Mutable maximum E x B displacement accumulator.

◆ displacement_max_ref()

static std::vector< std::vector< Real > > & orb5x::Diagnostics::displacement_max_ref ( )
static
Returns
Mutable maximum-displacement accumulator.

◆ electron_fluxes_moments()

static void orb5x::Diagnostics::electron_fluxes_moments ( int  isp,
int  irloc,
Real  zf0,
Real  dPsidt1,
Real  dPsidt0,
Real  ze,
Real  wt,
Real  ffinit_tmp1,
Real  ffinit_tmp2,
Real  ffinit_tmp3,
Real  ffinit_tmp4,
bool  is_trapped 
)
static

Accumulate passing/trapped electron fluxes and moments.

Parameters
[in]ispZero-based electron-species index.
[in]irlocZero-based radial bin.
[in]zf0Equilibrium distribution value.
[in]dPsidt1Perturbed flux characteristic.
[in]dPsidt0Equilibrium flux characteristic.
[in]zeNormalized kinetic energy.
[in]wtPerturbation weight.
[in]ffinit_tmp1First initial-distribution moment.
[in]ffinit_tmp2Second initial-distribution moment.
[in]ffinit_tmp3Third initial-distribution moment.
[in]ffinit_tmp4Fourth initial-distribution moment.
[in]is_trappedTrapped-orbit classification.

◆ entropy_fluct_avg_ref()

static std::vector< std::vector< Real > > & orb5x::Diagnostics::entropy_fluct_avg_ref ( )
static
Returns
Mutable fluctuation-entropy accumulator.

◆ fluid_moments_ref()

static std::vector< std::vector< std::vector< std::vector< std::vector< Real > > > > > & orb5x::Diagnostics::fluid_moments_ref ( )
static
Returns
Mutable three-dimensional fluid-moment accumulator.

◆ flush0d()

static void orb5x::Diagnostics::flush0d ( )
static

Flush 0D diagnostics buffer to file Writes accumulated 0D diagnostic data to HDF5.

◆ flux1d_f0_ref()

static std::vector< std::vector< std::vector< Real > > > & orb5x::Diagnostics::flux1d_f0_ref ( )
static
Returns
Mutable equilibrium-distribution radial-flux accumulator.

◆ flux1d_w_ref()

static std::vector< std::vector< std::vector< Real > > > & orb5x::Diagnostics::flux1d_w_ref ( )
static
Returns
Mutable perturbation-weighted radial-flux accumulator.

◆ get_adiab()

static Real orb5x::Diagnostics::get_adiab ( int  isp)
static
Parameters
[in]ispZero-based species index.
Returns
Normalized adiabatic-response diagnostic.

◆ get_buf()

static Kokkos::View< Real ** > & orb5x::Diagnostics::get_buf ( )
inlinestatic
Returns
Mutable generic zero-dimensional output buffer.

◆ get_buf_pic()

static Kokkos::View< Real *** > & orb5x::Diagnostics::get_buf_pic ( )
inlinestatic
Returns
Mutable per-species zero-dimensional output buffer.

◆ get_cum_non_cg_bins()

static int orb5x::Diagnostics::get_cum_non_cg_bins ( int  isp)
static
Parameters
[in]ispZero-based species index.
Returns
Cumulative non-coarse-grained bin count.

◆ get_cum_non_cg_markers()

static int orb5x::Diagnostics::get_cum_non_cg_markers ( int  isp)
static
Parameters
[in]ispZero-based species index.
Returns
Cumulative non-coarse-grained marker count.

◆ get_dSdt_heat()

static Real orb5x::Diagnostics::get_dSdt_heat ( int  isp)
static
Parameters
[in]ispZero-based species index.
Returns
Entropy rate from the heating operator.

◆ get_dSdt_nc()

static Real orb5x::Diagnostics::get_dSdt_nc ( int  isp)
static
Parameters
[in]ispZero-based species index.
Returns
Entropy rate from the naive Krook operator.

◆ get_dSdt_nc_corr()

static Real orb5x::Diagnostics::get_dSdt_nc_corr ( int  isp)
static
Parameters
[in]ispZero-based species index.
Returns
Entropy rate from the conserving Krook correction.

◆ get_efield()

static Real orb5x::Diagnostics::get_efield ( int  isp,
int  component 
)
static
Parameters
[in]ispZero-based species index.
[in]componentField-energy component selector.
Returns
Normalized total field-energy component.

◆ get_efield_av()

static Real orb5x::Diagnostics::get_efield_av ( int  isp,
int  component 
)
static
Parameters
[in]ispZero-based species index.
[in]componentFlux-averaged component selector.
Returns
Normalized flux-averaged field energy.

◆ get_efield_fft()

static Real orb5x::Diagnostics::get_efield_fft ( int  isp,
int  component 
)
static
Parameters
[in]ispZero-based species index.
[in]componentSpectral component selector.
Returns
Normalized spectrally evaluated field energy.

◆ get_entropy_fluct_avg()

static Real orb5x::Diagnostics::get_entropy_fluct_avg ( int  isp,
int  idiag 
)
static
Parameters
[in]ispZero-based species index.
[in]idiagEntropy channel index.
Returns
Normalized fluctuation-entropy channel.

◆ get_flux0d_f0()

static Real orb5x::Diagnostics::get_flux0d_f0 ( int  isp,
int  idiag 
)
static
Parameters
[in]ispZero-based species index.
[in]idiagFlux-channel index.
Returns
Equilibrium-distribution flux integrated over radius.

◆ get_flux0d_w()

static Real orb5x::Diagnostics::get_flux0d_w ( int  isp,
int  idiag 
)
static
Parameters
[in]ispZero-based species index.
[in]idiagFlux-channel index.
Returns
Marker-weighted flux integrated over radius.

◆ get_generic_signoise_avg()

static Kokkos::View< Real * > orb5x::Diagnostics::get_generic_signoise_avg ( )
static
Returns
View of generic signal-to-noise averaged channels.

◆ get_generic_signoise_size()

static int orb5x::Diagnostics::get_generic_signoise_size ( )
static
Returns
Number of generic signal-to-noise channels.

◆ get_generic_spectrum2d_avg()

static Real orb5x::Diagnostics::get_generic_spectrum2d_avg ( int  idiag,
int  i,
int  j 
)
static
Parameters
[in]idiagGeneric spectrum selector.
[in]iToroidal-mode storage index.
[in]jPoloidal-mode storage index.
Returns
Stored spectral power/value.

◆ get_ibuf()

static int orb5x::Diagnostics::get_ibuf ( )
inlinestatic
Returns
Next sample slot in the zero-dimensional output buffer.

◆ get_inner_edge_losses()

static Real orb5x::Diagnostics::get_inner_edge_losses ( int  isp,
int  component 
)
static
Parameters
[in]ispZero-based species index.
[in]componentDensity, energy, or parallel-momentum selector.
Returns
Normalized inner-edge loss.

◆ get_irloc_in()

static int orb5x::Diagnostics::get_irloc_in ( )
static
Returns
Radial bin used by one-dimensional poloidal diagnostics.

◆ get_jdote_bg()

static Real orb5x::Diagnostics::get_jdote_bg ( int  isp,
int  idiag 
)
static
Parameters
[in]ispZero-based species index.
[in]idiagj dot E channel index.
Returns
Background-field power-transfer channel.

◆ get_jdote_fluct()

static Real orb5x::Diagnostics::get_jdote_fluct ( int  isp,
int  idiag 
)
static
Parameters
[in]ispZero-based species index.
[in]idiagj dot E channel index.
Returns
Fluctuating-field power-transfer channel.

◆ get_misc_avg()

static Real orb5x::Diagnostics::get_misc_avg ( int  isp,
int  idiag 
)
static
Parameters
[in]ispZero-based species index.
[in]idiagZero-based miscellaneous channel.
Returns
Accumulated normalized channel value.

◆ get_noise_2d_all()

static Kokkos::View< Real ** > & orb5x::Diagnostics::get_noise_2d_all ( )
static
Returns
Mutable two-dimensional noise spectrum.

◆ get_nsbound_in()

static int orb5x::Diagnostics::get_nsbound_in ( int  isp)
static
Parameters
[in]ispZero-based species index.
Returns
Number of markers lost through the inner boundary.

◆ get_nsbound_out()

static int orb5x::Diagnostics::get_nsbound_out ( int  isp)
static
Parameters
[in]ispZero-based species index.
Returns
Number of markers lost through the outer boundary.

◆ get_outer_edge_losses()

static Real orb5x::Diagnostics::get_outer_edge_losses ( int  isp,
int  component 
)
static
Parameters
[in]ispZero-based species index.
[in]componentDensity, energy, or parallel-momentum selector.
Returns
Normalized outer-edge loss.

◆ get_signal_2d_all()

static Kokkos::View< Real ** > & orb5x::Diagnostics::get_signal_2d_all ( )
static
Returns
Mutable two-dimensional signal spectrum.

◆ get_spectrum2d_avg()

static Real orb5x::Diagnostics::get_spectrum2d_avg ( int  isp,
int  idiag,
int  i,
int  j 
)
static
Parameters
[in]ispZero-based species index.
[in]idiagSpectrum selector.
[in]iToroidal-mode storage index.
[in]jPoloidal-mode storage index.
Returns
Stored spectral power/value.

◆ get_tot_cg_bins()

static int orb5x::Diagnostics::get_tot_cg_bins ( int  isp)
static
Parameters
[in]ispZero-based species index.
Returns
Total coarse-grained bin count.

◆ get_tot_cg_markers()

static int orb5x::Diagnostics::get_tot_cg_markers ( int  isp)
static
Parameters
[in]ispZero-based species index.
Returns
Total coarse-grained marker count.

◆ get_trap_frac()

static Real orb5x::Diagnostics::get_trap_frac ( int  isp,
int  type 
)
static
Parameters
[in]ispZero-based species index.
[in]typeOrbit-transition selector (FR_PASS through FR_RETRAP).
Returns
Accumulated orbit-class fraction.

◆ get_variance()

static Real orb5x::Diagnostics::get_variance ( int  isp,
int  index 
)
static
Parameters
[in]ispZero-based species index.
[in]indexWeight-moment/variance channel.
Returns
Stored weight moment or variance.

◆ get_vexbnavg()

static Real orb5x::Diagnostics::get_vexbnavg ( int  isp,
int  idiag 
)
static
Parameters
[in]ispZero-based species index.
[in]idiagVelocity-channel index.
Returns
Thermal-normalized E x B statistic.

◆ get_vthmax2_cached()

static Real orb5x::Diagnostics::get_vthmax2_cached ( int  isp)
static
Parameters
[in]ispZero-based species index.
Returns
Cached squared maximum thermal speed.

◆ get_vthmax_cached()

static Real orb5x::Diagnostics::get_vthmax_cached ( int  isp)
static
Parameters
[in]ispZero-based species index.
Returns
Cached maximum thermal speed.

◆ get_wsqreduced()

static Real orb5x::Diagnostics::get_wsqreduced ( int  isp)
static
Parameters
[in]ispZero-based species index.
Returns
Reduced squared-weight/noise measure.

◆ getpot_fieldnum()

static Real orb5x::Diagnostics::getpot_fieldnum ( Real  s,
Real  theta,
Real  phi,
int  fieldnum 
)
static

Interpolate a selected field in magnetic coordinates.

Parameters
[in]sRadial coordinate s=sqrt(psi).
[in]thetaPoloidal angle [rad].
[in]phiToroidal angle [rad].
[in]fieldnumOne of FIELD_PHI through FIELD_USER.
Returns
Interpolated normalized field value.

◆ init_generic_signoise()

static void orb5x::Diagnostics::init_generic_signoise ( )
static

Allocate and clear generic signal-to-noise accumulators.

Referenced by init_test_diagnostic_arrays().

◆ init_phase1_diagnostics()

static void orb5x::Diagnostics::init_phase1_diagnostics ( )
static

Initialize Phase 1 diagnostic arrays and flags Called from initialize_diagnostics()

◆ init_test_diagnostic_arrays()

static void orb5x::Diagnostics::init_test_diagnostic_arrays ( int  nspecies)
inlinestatic

Allocate deterministic in-memory diagnostic storage for tests.

Parameters
[in]nspeciesNumber of species to allocate.

References init_generic_signoise(), and moment1d_w.

◆ init_variance()

static void orb5x::Diagnostics::init_variance ( int  nspecies)
inlinestatic

Size and zero variance storage.

Parameters
[in]nspeciesNumber of species.

◆ initialize_diagnostics()

static void orb5x::Diagnostics::initialize_diagnostics ( )
static

Initialize diagnostics system Sets up all diagnostic structures, grids, and output files.

◆ initialize_phasespace_diags()

static void orb5x::Diagnostics::initialize_phasespace_diags ( )
static

Initialize phase space diagnostics.

◆ initialize_source_3d_diags()

static void orb5x::Diagnostics::initialize_source_3d_diags ( )
static

Initialize source 3D diagnostics.

◆ jdote()

static Real orb5x::Diagnostics::jdote ( int  isp,
Real  ut2,
Real  vpt2,
const std::vector< Real > &  vpar,
const std::vector< Real > &  genelec,
const std::vector< Real > &  elec_par,
Real  wt,
Real  bstar_inv,
const std::vector< Real > &  bgrb,
const std::vector< Real > &  vgb,
const std::vector< Real > &  vpressure,
const std::vector< Real > &  veb_f,
const std::vector< Real > &  vexb,
Real  expt_back,
Real  eypt_back,
Real  dvpadt0,
Real  gyroapar 
)
static

Compute and accumulate one marker's j dot E power transfer.

Parameters
[in]ispZero-based species index.
[in]ut2Squared parallel velocity.
[in]vpt2Squared perpendicular velocity.
[in]vparParallel-velocity vector.
[in]genelecElectric-gradient vector.
[in]elec_parParallel electric-field vector.
[in]wtPerturbation weight.
[in]bstar_invInverse guiding-centre B* denominator.
[in]bgrbMagnetic-gradient vector.
[in]vgbMagnetic-drift vector.
[in]vpressurePressure-gradient drift vector.
[in]veb_fFluctuating E x B vector.
[in]vexbTotal E x B vector.
[in]expt_backRadial equilibrium electric field.
[in]eypt_backPoloidal equilibrium electric field.
[in]dvpadt0Equilibrium parallel acceleration.
[in]gyroaparGyroaveraged parallel vector potential.
Returns
Total normalized marker power-transfer contribution.

◆ jdote_bg_ref()

static std::vector< std::vector< Real > > & orb5x::Diagnostics::jdote_bg_ref ( )
static
Returns
Mutable background j dot E accumulator.

◆ jdote_fluct_ref()

static std::vector< std::vector< Real > > & orb5x::Diagnostics::jdote_fluct_ref ( )
static
Returns
Mutable fluctuating j dot E accumulator.

◆ max_of_0d()

static void orb5x::Diagnostics::max_of_0d ( int  isp,
int  i,
Real  to_add 
)
static

Update a maximum-valued zero-dimensional channel.

Parameters
[in]ispZero-based species index.
[in]iZero-based channel index.
[in]to_addCandidate normalized value.

◆ max_of_0d_vexbnmax()

static void orb5x::Diagnostics::max_of_0d_vexbnmax ( int  isp,
Real  to_add 
)
static

Update maximum thermal-normalized E x B speed.

Parameters
[in]ispZero-based species index.
[in]to_addCandidate normalized speed.

◆ max_of_0d_vmax()

static void orb5x::Diagnostics::max_of_0d_vmax ( int  isp,
Real  to_add 
)
static

Update maximum normalized marker speed.

Parameters
[in]ispZero-based species index.
[in]to_addCandidate speed.

◆ max_of_0d_wmax()

static void orb5x::Diagnostics::max_of_0d_wmax ( int  isp,
Real  to_add 
)
static

Update maximum absolute marker weight.

Parameters
[in]ispZero-based species index.
[in]to_addCandidate absolute weight.

◆ misc_avg_ref()

static std::vector< std::vector< Real > > & orb5x::Diagnostics::misc_avg_ref ( )
static
Returns
Mutable miscellaneous scalar accumulator.

◆ mmin_f_serialize()

static void orb5x::Diagnostics::mmin_f_serialize ( )
static

Serializes mmin_f array across MPI ranks for 3D output.

◆ moment1d_f0_ref()

static std::vector< std::vector< std::vector< Real > > > & orb5x::Diagnostics::moment1d_f0_ref ( )
static
Returns
Mutable equilibrium-distribution radial-moment accumulator.

◆ moment1d_f_ref()

static std::vector< std::vector< std::vector< Real > > > & orb5x::Diagnostics::moment1d_f_ref ( )
static
Returns
Mutable total-distribution radial-moment accumulator.

◆ moment1d_w_ref()

static std::vector< std::vector< std::vector< Real > > > & orb5x::Diagnostics::moment1d_w_ref ( )
static
Returns
Mutable perturbation-weighted radial-moment accumulator.

◆ moment2d_avg_ref()

static std::vector< std::vector< std::vector< std::vector< Real > > > > & orb5x::Diagnostics::moment2d_avg_ref ( )
static
Returns
Mutable two-dimensional averaged-moment accumulator.

◆ mpr_2d_ref()

static std::vector< std::vector< std::vector< std::vector< Real > > > > & orb5x::Diagnostics::mpr_2d_ref ( )
static
Returns
Mutable mode-particle-resonance accumulator.

◆ mpr_es_calc()

static void orb5x::Diagnostics::mpr_es_calc ( int  isp,
int  iuloc,
int  imuloc,
Real  sigmat,
Real  thetat,
Real  wt,
Real  ut2,
Real  vpt2,
Real  bstar_inv,
const std::vector< Real > &  vpar,
const std::vector< Real > &  genelec,
const std::vector< Real > &  bgrb,
const std::vector< Real > &  vgb,
const std::vector< Real > &  vpressure,
const std::vector< Real > &  veb_f 
)
static

Accumulate electrostatic mode-particle-resonance power transfer.

Parameters
[in]ispZero-based species index.
[in]iulocParallel-velocity bin.
[in]imulocMagnetic-moment bin.
[in]sigmatRadial coordinate.
[in]thetatDiagnostic poloidal angle [rad].
[in]wtPerturbation weight.
[in]ut2Squared parallel velocity.
[in]vpt2Squared perpendicular velocity.
[in]bstar_invInverse guiding-centre B* denominator.
[in]vparParallel-velocity vector.
[in]genelecElectric-gradient vector.
[in]bgrbMagnetic-gradient vector.
[in]vgbMagnetic-drift vector.
[in]vpressurePressure-gradient drift vector.
[in]veb_fFluctuating E x B vector.

◆ nl_do_diag()

static bool orb5x::Diagnostics::nl_do_diag ( int  step_tot,
int  nfreq 
)
static

Test a diagnostic cadence.

Parameters
[in]step_totGlobal timestep index.
[in]nfreqRequested frequency in timesteps; nonpositive disables output.
Returns
true when this step is on the requested cadence.

◆ normalize_flux1d()

static void orb5x::Diagnostics::normalize_flux1d ( int  isp)
static

Normalize radial fluxes and form zero-dimensional integrals.

Parameters
[in]ispZero-based species index.

◆ normalize_moment1d_f()

static void orb5x::Diagnostics::normalize_moment1d_f ( int  isp)
static

Normalize total-distribution radial moments.

Parameters
[in]ispZero-based species index.

◆ normalize_moment1d_f0()

static void orb5x::Diagnostics::normalize_moment1d_f0 ( int  isp)
static

Normalize equilibrium-distribution radial moments.

Parameters
[in]ispZero-based species index.

◆ normalize_moment1d_w()

static void orb5x::Diagnostics::normalize_moment1d_w ( int  isp)
static

Normalize perturbation-weighted radial moments.

Parameters
[in]ispZero-based species index.

◆ normalize_moment2d()

static void orb5x::Diagnostics::normalize_moment2d ( int  isp)
static

Normalize two-dimensional averaged moments.

Parameters
[in]ispZero-based species index.

◆ normalize_poloidal1d()

static void orb5x::Diagnostics::normalize_poloidal1d ( int  isp)
static

Normalize one-dimensional poloidal moments.

Parameters
[in]ispZero-based species index.

◆ omp_reduce_diag()

template<typename T >
static void orb5x::Diagnostics::omp_reduce_diag ( T &  data,
bool  use_max = false 
)
static

Generic diagnostic reduction interface (matches Fortran omp_reduce_diag)

In C++ with Kokkos, this is primarily a documentation marker since reductions are handled differently than in Fortran OpenMP.

Template Parameters
TDiagnostic array type (Real, vector<Real>, etc.)
Parameters
dataReference to diagnostic data
use_maxIf true, compute max; otherwise sum

◆ omp_reduce_diag0d()

static void orb5x::Diagnostics::omp_reduce_diag0d ( Real &  data,
bool  use_max = false 
)
static

=============================================================================

OMP_REDUCE_DIAG FUNCTIONS (Kokkos adaptation of Fortran OpenMP reduction)

In Fortran, omp_reduce_diag() reduces per-thread diagnostic arrays to thread 0. The Fortran code uses OpenMP with thread-local storage (diag0d, diag1d, etc.).

In C++ with Kokkos:

  • Diagnostic arrays are std::vector<> (not thread-local)
  • Kokkos uses atomic updates or parallel_reduce during accumulation
  • MPI reductions are done directly in diagnostics_after_loop()

These functions are provided for API compatibility and documentation. They perform in-place reduction (sum or max) on the diagnostic array. For single-rank scenarios, these are essentially no-ops.

Matching Fortran part.F90 lines 5198-5282 (omp_reduce_diag interface)

Reduce 0D diagnostic array (single value per species)

Parameters
dataReference to diagnostic value
use_maxIf true, compute max; otherwise sum

◆ omp_reduce_diag1d()

static void orb5x::Diagnostics::omp_reduce_diag1d ( std::vector< Real > &  data,
bool  use_max = false 
)
static

Reduce 1D diagnostic array.

Parameters
dataReference to 1D vector
use_maxIf true, compute max; otherwise sum

◆ omp_reduce_diag2d()

static void orb5x::Diagnostics::omp_reduce_diag2d ( std::vector< std::vector< Real > > &  data,
bool  use_max = false 
)
static

Reduce 2D diagnostic array.

Parameters
dataReference to 2D vector
use_maxIf true, compute max; otherwise sum

◆ omp_reduce_diag3d()

static void orb5x::Diagnostics::omp_reduce_diag3d ( std::vector< std::vector< std::vector< Real > > > &  data,
bool  use_max = false 
)
static

Reduce 3D diagnostic array.

Parameters
dataReference to 3D vector
use_maxIf true, compute max; otherwise sum

◆ phasespace_3d_ref()

static std::vector< std::vector< std::vector< std::vector< std::vector< Real > > > > > & orb5x::Diagnostics::phasespace_3d_ref ( )
static
Returns
Mutable (psi,v_parallel,v_perp) phase-space histogram.

◆ polarisation_fieldcalc()

static void orb5x::Diagnostics::polarisation_fieldcalc ( int  isp)
static

Compute polarization-field diagnostic channels after reduction.

Parameters
[in]ispZero-based species index.

◆ poloidal1d_f_ref()

static std::vector< std::vector< std::vector< Real > > > & orb5x::Diagnostics::poloidal1d_f_ref ( )
static
Returns
Mutable total-distribution poloidal-moment accumulator.

◆ poloidal1d_w_ref()

static std::vector< std::vector< std::vector< Real > > > & orb5x::Diagnostics::poloidal1d_w_ref ( )
static
Returns
Mutable perturbation-weighted poloidal-moment accumulator.

◆ profsphi()

static void orb5x::Diagnostics::profsphi ( Real  theta,
int  fieldnum,
std::vector< std::vector< Real > > &  pot_sp 
)
static

Sample a selected field on an (s,phi) plane.

Parameters
[in]thetaFixed poloidal angle [rad].
[in]fieldnumField selector.
[out]pot_spGlobally reduced samples shaped [ns][nphi].

◆ profsth()

static void orb5x::Diagnostics::profsth ( Real  phi,
int  fieldnum,
int  ns0,
std::vector< std::vector< Real > > &  pot_st,
std::vector< std::vector< Real > > *  xc = nullptr,
std::vector< std::vector< Real > > *  zc = nullptr 
)
static

Sample a selected field on an (s,theta) plane.

Parameters
[in]phiFixed toroidal angle [rad].
[in]fieldnumField selector.
[in]ns0Number of radial samples.
[out]pot_stSamples shaped [ns0][ntheta].
[out]xcOptional cylindrical R coordinates.
[out]zcOptional cylindrical Z coordinates.

◆ put3d_dens()

static void orb5x::Diagnostics::put3d_dens ( Real  time,
bool  do_moments = false 
)
static

Write three-dimensional density and optional moment diagnostics.

Parameters
[in]timeNormalized simulation time.
[in]do_momentsAlso write fluid moments when true.

◆ put3d_h5s()

static void orb5x::Diagnostics::put3d_h5s ( Real  time,
int  diag_select,
int  field_select,
int  isp = -1 
)
static

Write one three-dimensional field/density diagnostic.

Parameters
[in]timeNormalized simulation time.
[in]diag_selectDiagnostic dataset selector.
[in]field_selectField selector.
[in]ispOptional zero-based species index.

◆ putarr()

static void orb5x::Diagnostics::putarr ( const std::string &  path,
const Real *  array,
size_t  length,
const std::string &  title = "" 
)
static

Write a one-dimensional real array and optional title.

Parameters
[in]pathAbsolute HDF5 dataset path.
[in]arrayContiguous values.
[in]lengthNumber of values.
[in]titleOptional human-readable quantity/units title.

◆ putarr_attime_1d()

static void orb5x::Diagnostics::putarr_attime_1d ( const std::string &  path,
const Real *  array,
size_t  length,
Real  time 
)
static

Append a one-dimensional real slice at a simulation time.

Parameters
[in]pathAbsolute HDF5 dataset path.
[in]arrayContiguous values.
[in]lengthNumber of values.
[in]timeNormalized simulation time.

◆ putarr_attime_2d()

static void orb5x::Diagnostics::putarr_attime_2d ( const std::string &  path,
const Real *  array,
size_t  dim1,
size_t  dim2,
Real  time 
)
static

Append a two-dimensional real slice at a simulation time.

Parameters
[in]pathAbsolute HDF5 dataset path.
[in]arrayContiguous row-major values.
[in]dim1First dimension.
[in]dim2Second dimension.
[in]timeNormalized simulation time.

◆ read_restart_state()

static void orb5x::Diagnostics::read_restart_state ( int  datn)
static
Parameters
[in]datnAlternating restart generation, normally 0 or 1.

◆ rhs_f_serialize()

static void orb5x::Diagnostics::rhs_f_serialize ( const std::vector< std::vector< std::complex< Real > > > &  rhs_f_ptr)
static

Gather distributed Fourier RHS coefficients for three-dimensional output.

Parameters
[in]rhs_f_ptrRank-local coefficients converted from the Kokkos field view.

◆ sampling_2d_ref()

static std::vector< std::vector< std::vector< std::vector< Real > > > > & orb5x::Diagnostics::sampling_2d_ref ( )
static
Returns
Mutable (s,v^2) sampling histogram.

◆ set_buf()

static void orb5x::Diagnostics::set_buf ( Kokkos::View< Real ** >  v)
inlinestatic
Parameters
[in]vGeneric buffer view to bind and mirror.

◆ set_buf_pic()

static void orb5x::Diagnostics::set_buf_pic ( Kokkos::View< Real *** >  v)
inlinestatic
Parameters
[in]vPer-species buffer view to bind and mirror.

◆ set_dSdt_heat()

static void orb5x::Diagnostics::set_dSdt_heat ( int  isp,
Real  value 
)
static
Parameters
[in]ispZero-based species index.
[in]valueNormalized heating entropy rate.

◆ set_dSdt_nc()

static void orb5x::Diagnostics::set_dSdt_nc ( int  isp,
Real  value 
)
static
Parameters
[in]ispZero-based species index.
[in]valueNormalized entropy rate.

◆ set_dSdt_nc_corr()

static void orb5x::Diagnostics::set_dSdt_nc_corr ( int  isp,
Real  value 
)
static
Parameters
[in]ispZero-based species index.
[in]valueNormalized corrected entropy rate.

◆ set_efield()

static void orb5x::Diagnostics::set_efield ( int  isp,
int  component,
Real  value 
)
static
Parameters
[in]ispZero-based species index.
[in]componentZero-based total-energy component.
[in]valueNormalized field energy.

◆ set_efield_av()

static void orb5x::Diagnostics::set_efield_av ( int  isp,
int  component,
Real  value 
)
static
Parameters
[in]ispZero-based species index.
[in]componentZero-based averaged component.
[in]valueNormalized averaged field energy.

◆ set_efield_fft()

static void orb5x::Diagnostics::set_efield_fft ( int  isp,
int  component,
Real  value 
)
static
Parameters
[in]ispZero-based species index.
[in]componentZero-based spectral component.
[in]valueNormalized spectral field energy.

◆ set_generic_spectrum2d_avg()

static void orb5x::Diagnostics::set_generic_spectrum2d_avg ( int  idiag,
int  i,
int  j,
Real  value 
)
static
Parameters
[in]idiagGeneric spectrum selector.
[in]iToroidal-mode storage index.
[in]jPoloidal-mode storage index.
[in]valueSpectral power/value to store.

◆ set_ibuf()

static void orb5x::Diagnostics::set_ibuf ( int  val)
inlinestatic
Parameters
[in]valNext sample slot in the output buffer.

◆ set_inner_edge_losses()

static void orb5x::Diagnostics::set_inner_edge_losses ( int  isp,
int  component,
Real  value 
)
static
Parameters
[in]ispZero-based species index.
[in]componentDensity, energy, or parallel-momentum selector.
[in]valueNormalized inner-edge loss.

◆ set_misc_avg()

static void orb5x::Diagnostics::set_misc_avg ( int  isp,
int  idx,
Real  val 
)
inlinestatic
Parameters
[in]ispZero-based species index.
[in]idxZero-based miscellaneous channel.
[in]valNormalized value; invalid indices are ignored.

◆ set_nsbound_in()

static void orb5x::Diagnostics::set_nsbound_in ( int  isp,
int  value 
)
static
Parameters
[in]ispZero-based species index.
[in]valueInner-boundary marker-loss count.

◆ set_nsbound_out()

static void orb5x::Diagnostics::set_nsbound_out ( int  isp,
int  value 
)
static
Parameters
[in]ispZero-based species index.
[in]valueOuter-boundary marker-loss count.

◆ set_outer_edge_losses()

static void orb5x::Diagnostics::set_outer_edge_losses ( int  isp,
int  component,
Real  value 
)
static
Parameters
[in]ispZero-based species index.
[in]componentDensity, energy, or parallel-momentum selector.
[in]valueNormalized outer-edge loss.

◆ set_signal2noise()

static void orb5x::Diagnostics::set_signal2noise ( Real  sn,
Real  sn_nozf 
)
static
Parameters
[in]snTotal electrostatic signal-to-noise ratio.
[in]sn_nozfNon-zonal electrostatic signal-to-noise ratio.

◆ set_signal2noise_em()

static void orb5x::Diagnostics::set_signal2noise_em ( Real  sn,
Real  sn_nozf 
)
static
Parameters
[in]snTotal electromagnetic signal-to-noise ratio.
[in]sn_nozfNon-zonal electromagnetic signal-to-noise ratio.

◆ set_spectrum2d_avg()

static void orb5x::Diagnostics::set_spectrum2d_avg ( int  isp,
int  idiag,
int  i,
int  j,
Real  value 
)
static
Parameters
[in]ispZero-based species index.
[in]idiagSpectrum selector.
[in]iToroidal-mode storage index.
[in]jPoloidal-mode storage index.
[in]valueSpectral power/value to store.

◆ set_variance()

static void orb5x::Diagnostics::set_variance ( int  isp,
int  index,
Real  value 
)
static
Parameters
[in]ispZero-based species index.
[in]indexWeight-moment channel.
[in]valueNormalized moment value.

◆ snapshot_variance()

static void orb5x::Diagnostics::snapshot_variance ( int  isp)
static
Parameters
[in]ispZero-based species index.

◆ source_diag1d_avg_ref()

static std::vector< std::vector< std::vector< Real > > > & orb5x::Diagnostics::source_diag1d_avg_ref ( )
static
Returns
Mutable one-dimensional source-diagnostic accumulator.

◆ strong_diagnostic_output()

static void orb5x::Diagnostics::strong_diagnostic_output ( int  isp,
int  ip,
Real  psi0t,
Real  temp2,
Real  ze,
Real  vecrossb_f2,
Real  pot_equil,
Real  zf0,
Real  zvth2_inv,
Real  dpotdpsi,
Real  vdr,
Real  rhs 
)
static

Record one marker's strong-flow parity diagnostics.

Parameters
[in]ispZero-based species index.
[in]ipZero-based local marker index.
[in]psi0tCanonical/profile flux coordinate.
[in]temp2Squared thermal-speed scale.
[in]zeNormalized kinetic energy.
[in]vecrossb_f2Squared equilibrium E x B contribution.
[in]pot_equilEquilibrium potential.
[in]zf0Equilibrium distribution value.
[in]zvth2_invInverse squared thermal-speed scale.
[in]dpotdpsiRadial potential derivative.
[in]vdrRadial characteristic.
[in]rhsWeight-equation right-hand side.

◆ sum_entropy_fluctuation()

static void orb5x::Diagnostics::sum_entropy_fluctuation ( int  isp,
Real  wt,
Real  zf0,
Real  q_vgc_dot_genelec,
Real  zvth2_inv,
Real  df0_dpsi_prof,
Real  df0_dchi_prof,
Real  dpsi_prof_dt 
)
static

Accumulate one marker's fluctuation-entropy balance.

Parameters
[in]ispZero-based species index.
[in]wtPerturbation weight.
[in]zf0Equilibrium distribution value.
[in]q_vgc_dot_genelecElectric energy-transfer term.
[in]zvth2_invInverse squared thermal speed.
[in]df0_dpsi_profRadial profile derivative of f0.
[in]df0_dchi_profPoloidal profile derivative of f0.
[in]dpsi_prof_dtProfile-flux characteristic.

◆ sum_fluid_moments()

static void orb5x::Diagnostics::sum_fluid_moments ( int  isp,
Real  sigmat,
Real  chit,
Real  phit,
Real  wt,
Real  ut,
Real  ut2,
Real  vpt2 
)
static

Deposit one marker into three-dimensional fluid moments.

Parameters
[in]ispZero-based species index.
[in]sigmatRadial coordinate s=sqrt(psi).
[in]chitPoloidal angle [rad].
[in]phitToroidal angle [rad].
[in]wtPerturbation weight.
[in]utParallel velocity.
[in]ut2Squared parallel velocity.
[in]vpt2Squared perpendicular velocity.

◆ sum_in_radial_bins_island()

static void orb5x::Diagnostics::sum_in_radial_bins_island ( int  isp,
int  irloc,
int  ipol,
Real  ut,
const std::vector< Real > &  gradpsi0,
Real  htildex,
Real  htildey,
Real  ze,
Real  zf0,
Real  wt,
Real  dPsidt1,
Real  ffinit_tmp1,
Real  ffinit_tmp2,
Real  ffinit_tmp3,
Real  ffinit_tmp4 
)
static

Accumulate magnetic-island radial/poloidal diagnostics.

Parameters
[in]ispZero-based species index.
[in]irlocIsland radial bin.
[in]ipolIsland poloidal bin.
[in]utParallel velocity.
[in]gradpsi0Equilibrium-flux gradient vector.
[in]htildexRadial island perturbation component.
[in]htildeyPoloidal island perturbation component.
[in]zeNormalized kinetic energy.
[in]zf0Equilibrium distribution value.
[in]wtPerturbation weight.
[in]dPsidt1Perturbed flux characteristic.
[in]ffinit_tmp1First initial-distribution moment.
[in]ffinit_tmp2Second initial-distribution moment.
[in]ffinit_tmp3Third initial-distribution moment.
[in]ffinit_tmp4Fourth initial-distribution moment.

◆ sum_moment2d()

static void orb5x::Diagnostics::sum_moment2d ( int  isp,
int  irloc,
int  ithetaloc,
Real  wt,
Real  ffinit_tmp1,
Real  ffinit_tmp2,
Real  ffinit_tmp3,
Real  ffinit_tmp4 
)
static

Accumulate (s,theta) initial-distribution moments.

Parameters
[in]ispZero-based species index.
[in]irlocRadial bin.
[in]ithetalocPoloidal-angle bin.
[in]wtPerturbation weight.
[in]ffinit_tmp1First initial-distribution moment.
[in]ffinit_tmp2Second initial-distribution moment.
[in]ffinit_tmp3Third initial-distribution moment.
[in]ffinit_tmp4Fourth initial-distribution moment.

◆ sum_particles_in_poloidal_bins()

static void orb5x::Diagnostics::sum_particles_in_poloidal_bins ( int  isp,
int  ithetaloc,
Real  wt,
Real  ffinit_tmp1,
Real  ffinit_tmp2,
Real  ffinit_tmp3,
Real  ffinit_tmp4,
Real  wt_tmp1,
Real  wt_tmp2,
Real  wt_tmp3 
)
static

Accumulate poloidal moments at the configured radial surface.

Parameters
[in]ispZero-based species index.
[in]ithetalocPoloidal-angle bin.
[in]wtPerturbation weight.
[in]ffinit_tmp1First initial-distribution moment.
[in]ffinit_tmp2Second initial-distribution moment.
[in]ffinit_tmp3Third initial-distribution moment.
[in]ffinit_tmp4Fourth initial-distribution moment.
[in]wt_tmp1First perturbation-weight moment.
[in]wt_tmp2Second perturbation-weight moment.
[in]wt_tmp3Third perturbation-weight moment.

◆ sum_particles_in_radial_bins()

static void orb5x::Diagnostics::sum_particles_in_radial_bins ( int  isp,
int  ip,
int  irloc,
Real  zf0,
Real  dPsidt1,
Real  dPsidt0,
Real  ze,
Real  wt,
Real  ut,
Real  ut2,
Real  vpt2,
Real  rt2,
const std::vector< Real > &  vpar,
Real  zf0_tmp1,
Real  zf0_tmp2,
Real  zf0_tmp3,
Real  sigmat,
Real  zf0_local,
Real  grsigma2,
Real  grsigmagrchi,
Real  b,
const std::vector< Real > &  exh,
Real  wt_tmp1,
Real  wt_tmp2,
Real  wt_tmp3,
const std::vector< Real > &  vexb,
Real  ffinit_tmp1,
Real  ffinit_tmp2,
Real  ffinit_tmp3,
Real  ffinit_tmp4,
Real  ffinit_tmp5,
Real  jdote_tot,
const std::vector< Real > &  eloc 
)
static

Accumulate all configured radial-bin diagnostics for one marker.

Parameters
[in]ispZero-based species index.
[in]ipZero-based local marker index.
[in]irlocZero-based radial bin.
[in]zf0Equilibrium distribution value.
[in]dPsidt1Perturbed flux characteristic.
[in]dPsidt0Equilibrium flux characteristic.
[in]zeNormalized kinetic energy.
[in]wtPerturbation weight.
[in]utParallel velocity.
[in]ut2Squared parallel velocity.
[in]vpt2Squared perpendicular velocity.
[in]rt2Squared cylindrical major radius.
[in]vparThree-component parallel velocity.
[in]zf0_tmp1First equilibrium-distribution moment weight.
[in]zf0_tmp2Second equilibrium-distribution moment weight.
[in]zf0_tmp3Third equilibrium-distribution moment weight.
[in]sigmatRadial coordinate s=sqrt(psi).
[in]zf0_localLocal Maxwellian/equilibrium reference value.
[in]grsigma2Squared radial metric coefficient.
[in]grsigmagrchiRadial-poloidal metric cross coefficient.
[in]bNormalized magnetic-field magnitude.
[in]exhThree-component electric-field cross product.
[in]wt_tmp1First perturbation-weight moment.
[in]wt_tmp2Second perturbation-weight moment.
[in]wt_tmp3Third perturbation-weight moment.
[in]vexbThree-component E x B velocity.
[in]ffinit_tmp1First initial-distribution moment weight.
[in]ffinit_tmp2Second initial-distribution moment weight.
[in]ffinit_tmp3Third initial-distribution moment weight.
[in]ffinit_tmp4Fourth initial-distribution moment weight.
[in]ffinit_tmp5Fifth initial-distribution moment weight.
[in]jdote_totMarker contribution to j dot E.
[in]elocThree-component local electric-field gradient.
Note
Matches sum_particles_in_radial_bins in part.F90.

◆ sum_spectrum2d_avg()

static Real orb5x::Diagnostics::sum_spectrum2d_avg ( int  isp,
int  idiag,
int  ndim,
int  mdim 
)
static
Parameters
[in]ispZero-based species index.
[in]idiagSpectrum selector.
[in]ndimToroidal spectrum dimension.
[in]mdimPoloidal spectrum dimension.
Returns
Sum over the requested spectral slice.

◆ sum_velocities()

static void orb5x::Diagnostics::sum_velocities ( int  isp,
int  iuloc,
int  imuloc,
Real  wt,
Real  zf0,
Real  pvol 
)
static

Accumulate one- and two-dimensional velocity-space diagnostics.

Parameters
[in]ispZero-based species index.
[in]iulocParallel-velocity bin.
[in]imulocMagnetic-moment/perpendicular-velocity bin.
[in]wtPerturbation weight.
[in]zf0Equilibrium distribution value.
[in]pvolMarker phase-space volume.

◆ test_particle_output()

static void orb5x::Diagnostics::test_particle_output ( int  isp,
int  ip,
Real  psi0t,
Real  ze,
Real  pot_equil,
Real  wt,
Real  zvth2,
Real  nval,
Real  pvol_updated,
Real  zf0 
)
static

Store one selected test-particle record.

Parameters
[in]ispZero-based species index.
[in]ipZero-based local marker index.
[in]psi0tCanonical/profile flux coordinate.
[in]zeNormalized kinetic energy.
[in]pot_equilEquilibrium potential.
[in]wtPerturbation weight.
[in]zvth2Squared thermal-speed scale.
[in]nvalNormalized density.
[in]pvol_updatedUpdated phase-space volume.
[in]zf0Equilibrium distribution value.

◆ vel1d_avg_ref()

static std::vector< std::vector< std::vector< Real > > > & orb5x::Diagnostics::vel1d_avg_ref ( )
static
Returns
Mutable one-dimensional velocity-space accumulator.

◆ vel2d_avg_ref()

static std::vector< std::vector< std::vector< std::vector< Real > > > > & orb5x::Diagnostics::vel2d_avg_ref ( )
static
Returns
Mutable two-dimensional velocity-space accumulator.

◆ velocity_space_diag_init()

static void orb5x::Diagnostics::velocity_space_diag_init ( )
static

Initialize velocity space diagnostics Sets up velocity space grids and output structures.

◆ vmax_ref()

static std::vector< Real > & orb5x::Diagnostics::vmax_ref ( )
static
Returns
Mutable per-species maximum-speed accumulator.

◆ wmax_ref()

static std::vector< Real > & orb5x::Diagnostics::wmax_ref ( )
static
Returns
Mutable per-species maximum-weight accumulator.

◆ write_output()

static void orb5x::Diagnostics::write_output ( int  step,
Real  time 
)
static

Write the standard scalar, profile, and spectrum output set.

Parameters
[in]stepCurrent global timestep index.
[in]timeCurrent normalized simulation time.
Note
Matches write_output(step,time) in diagnostics.F90.

◆ write_restart_state()

static void orb5x::Diagnostics::write_restart_state ( int  datn)
static
Parameters
[in]datnAlternating restart generation, normally 0 or 1.

◆ zero_generic_spectrum2d_avg()

static void orb5x::Diagnostics::zero_generic_spectrum2d_avg ( int  idiag,
int  ndim,
int  mdim 
)
static

Zero one generic (m,n) spectrum slice.

Parameters
[in]idiagPotential/vector-potential spectrum selector.
[in]ndimToroidal spectrum dimension.
[in]mdimPoloidal spectrum dimension.

◆ zero_spectrum2d_avg()

static void orb5x::Diagnostics::zero_spectrum2d_avg ( int  isp,
int  idiag,
int  ndim,
int  mdim 
)
static

Zero one per-species (m,n) spectrum slice.

Parameters
[in]ispZero-based species index.
[in]idiagField/density/current spectrum selector.
[in]ndimToroidal spectrum dimension.
[in]mdimPoloidal spectrum dimension.

Member Data Documentation

◆ apaloc

std::vector<Real> orb5x::Diagnostics::apaloc
inlinestatic

Local \(A_\parallel(s,0,0)\) radial cut.

◆ FIELD_APAR

constexpr int orb5x::Diagnostics::FIELD_APAR = 2
staticconstexpr

Select total parallel vector potential.

◆ FIELD_APAR_HAM

constexpr int orb5x::Diagnostics::FIELD_APAR_HAM = 3
staticconstexpr

Select Hamiltonian \(A_\parallel\).

◆ FIELD_APAR_SYMPL

constexpr int orb5x::Diagnostics::FIELD_APAR_SYMPL = 4
staticconstexpr

Select symplectic \(A_\parallel\).

◆ FIELD_DENS

constexpr int orb5x::Diagnostics::FIELD_DENS = 5
staticconstexpr

Select density field.

◆ FIELD_PHI

constexpr int orb5x::Diagnostics::FIELD_PHI = 1
staticconstexpr

=============================================================================

PHASE 1 IMPLEMENTATIONS (Core Dependencies for field diagnostics)

Field type constants (matching Fortran names.F90 lines 162-167) Used to select which field to retrieve in getpot_fieldnum() Select electrostatic potential \(\phi\).

◆ FIELD_USER

constexpr int orb5x::Diagnostics::FIELD_USER = 6
staticconstexpr

Select user-defined external field.

◆ moment1d_w

std::vector<std::vector<std::vector<Real> > > orb5x::Diagnostics::moment1d_w
inlinestatic

moment1d_w: 1D moment diagnostics weighted by w (matching Fortran moment1d_w) [nspecies][nbin_flux+2][14 diagnostic types] - matching moment1d_w structure

Referenced by init_test_diagnostic_arrays().

◆ out

std::vector<bool> orb5x::Diagnostics::out
inlinestatic

Species output flags (matching Fortran out(0:NSPECIES_MAX)) out[0] = true for pure fluid model, out[isp] = true if species isp has diagnostic output.

◆ pe_phi_cuts

std::array<int, 3> orb5x::Diagnostics::pe_phi_cuts = {0, 0, 0}
inlinestatic

MPI ranks responsible for phi cuts (matching Fortran pe_phi_cuts(0:2)) Stores the PE rank that owns each of the 3 phi cut positions for output.

Referenced by Diagnostics().

◆ phi00

std::vector<Real> orb5x::Diagnostics::phi00
inlinestatic

Public diagnostic arrays (accessed by FieldsModule in solve_fem, matching Fortran pde_solver) Potential diagnostic arrays (matching Fortran diagnostics.F90)

Flux-surface average of \(\phi\) on the radial spline grid.

◆ phi0_chi

std::vector<Real> orb5x::Diagnostics::phi0_chi
inlinestatic

Poloidal potential cut at the configured diagnostic radius.

◆ phibar

std::vector<Real> orb5x::Diagnostics::phibar
inlinestatic

Flux-surface-averaged electrostatic potential.

◆ philoc

std::vector<Real> orb5x::Diagnostics::philoc
inlinestatic

\(\phi(s,\theta=0,\varphi=0)\) radial cut.

◆ philoc_hfs

std::vector<Real> orb5x::Diagnostics::philoc_hfs
inlinestatic

High-field-side cut \(\phi(s,\theta=\pi,\varphi=0)\).

◆ rho00

std::vector<std::vector<Real> > orb5x::Diagnostics::rho00
inlinestatic

Flux-surface-averaged charge density by radius and species.


The documentation for this class was generated from the following file: