XGC1
Data Types | Modules | Macros | Functions/Subroutines | Variables
module.F90 File Reference
#include "petsc_version_defs.h"
#include <petscversion.h>
#include "assert_mod.F90"
#include "comm_mod.F90"
Include dependency graph for module.F90:

Data Types

type  eq_module::lin_interp
 
type  eq_module::eq_ftn_type
 
type  ptl_module::ptl_type_aosoa
 
type  ptl_module::ptl_type
 
type  ptl_module::species_type
 
interface  ptl_module::sind
 
interface  ptl_module::aind
 
type  fld_module::fld_type
 
type  mat_class::mat_ptr_type
 
type  mat_class::mat_type
 
type  random_xgc::seeds_type
 

Modules

module  multispecies
 
module  sml_module
 
module  eq_module
 Plasma EQuilibrium module (prefix EQ) (1) Magnetic equilibrium information (from eqd file usually) (2) Density and temperature (+flow) profiles (from .prf file)
 
module  ptl_module
 
module  fld_module
 
module  diag_module
 
module  perf_monitor
 
module  omp_module
 
module  mat_class
 
module  smooth_module
 
module  src_module
 
module  ecuyer_random
 
module  random_xgc
 
module  lim_module
 
module  neu_module
 Module containing the global data and variables for the neutral particle recycling model.
 
module  input_module
 
module  cpp_input_module
 This module contains input parameters that are only used in C++ code (this is temporarily not true, some are used in the resampling)
 

Macros

#define DIR_INQ   FILE
 

Functions/Subroutines

subroutine eq_module::force_eq_den_quasi_neutral (spi, spn, charge)
 
logical function eq_module::is_rgn12 (r, z, psi)
 
logical function eq_module::is_rgn1 (r, z, psi)
 
subroutine eq_module::eq_ftn_type_allocation (isp, nsp)
 
subroutine eq_module::eq_ftn_setup (ftn)
 setup eq_ftn functions ftnshape determines analytic function shape. (-1 is for file input). shape 0: constant. return v1 shape 1: hyperbolic tanh. x1 - center of hyperbolic tanh, x2 - width of tanh v1 - pedestal top (left), v2 - pedestal bottom (right) shape 2: linear function line which passes (x1,v1), (x1+x2,v2). x2 is delta shape 3: exponential tanh. A * exp(B * w tanh( (r0-r)/w)) x1 = r0, x2 = w, x3=w/B, v1 = A, v2 = B shape 4: modified hyperbolic tanh : sqrt linear + tanh More...
 
recursive real(8) function eq_module::eq_ftn (p, r, z, ftn)
 
real(8) function eq_module::eq_dftn (p, r, z, ftn)
 
subroutine eq_module::init_ftn_spline (ftn)
 
subroutine eq_module::init_ftn_spline_with_data (ftn, num, psi_in, var)
 
subroutine eq_module::ftn_evaluation (spl, psi, val)
 
subroutine eq_module::ftn_derivative (spl, psi, der, val)
 
subroutine eq_module::init_ftn_lin (ftn)
 
subroutine eq_module::ftn_evaluation_lin (lin, psi, val)
 
subroutine eq_module::ftn_derivative_lin (lin, psi, val)
 
integer function simd_sind4 (i)
 
integer function simd_sind8 (i)
 
integer function simd_aind4 (i)
 
integer function simd_aind8 (i)
 
subroutine ptl_module::transpose_to_aos (ptl_aosoa, n, ptl_aos)
 
subroutine ptl_module::transpose_from_aos (ptl_aos, n, ptl_aosoa)
 
subroutine ptl_module::all_species_allocate_tr_p_save ()
 
subroutine ptl_module::all_species_deallocate_tr_p_save ()
 
subroutine fld_module::fld_convert_cyl_to_mag (fld, fld_mag)
 Converts grad(phi) and grad(A) from cylindrical coordinates to a basis of field-aligned vectors. More...
 
subroutine fld_module::fld_convert_mag_to_cyl (fld, fld_mag)
 Converts grad(phi) and grad(A) from field-aligned basis representation to cylindrical coordinates. More...
 
subroutine perf_monitor::init_perf_monitor ()
 
subroutine perf_monitor::flush_perf_monitor (istep)
 
subroutine perf_monitor::finish_perf_monitor ()
 
subroutine perf_monitor::t_startf (eventname)
 
subroutine perf_monitor::t_stopf (eventname)
 
subroutine perf_monitor::t_adj_detailf (adjustment)
 
subroutine perf_monitor::t_set_prefixf (prefix_string)
 
subroutine perf_monitor::t_unset_prefixf ()
 
subroutine omp_module::split_indices (total, num_pieces, ibeg, iend)
 
subroutine mat_class::new_mat (mat, m, n, w)
 create a empty matrix More...
 
subroutine mat_class::set_non_square_mat (mat, n)
 set non squre matrix This can change matrix size m easily. needed?? More...
 
subroutine mat_class::convert_org_to_csr (mat)
 converting original format to csr format More...
 
subroutine mat_class::del_mat (mat)
 delete a matrix More...
 
subroutine mat_class::set_value (mat, i, j, value, flag)
 set value of matrix component on in-house matrix structure More...
 
subroutine mat_class::get_max_width (mat, mwidth)
 get matrix width – maximum non-zero component of each row More...
 
subroutine mat_class::output_matrix (mat, filename)
 txt file output of matrix More...
 
subroutine mat_class::mat_mult (mat, x, y)
 Matrix multiplication wrapper. y = M * x. More...
 
subroutine mat_class::mat_mult_org (mat, x, y)
 Matrix multiplication of original data structure. More...
 
subroutine mat_class::mat_mult_csr (mat, x, y)
 Matrix multiplication of petsc data structure. More...
 
subroutine mat_class::mat_transpose_mult (mat, x, y)
 matrix multiplication of transpose of M : y= Mat^T x More...
 
subroutine mat_class::mat_transpose_mult_org (mat, x, y)
 matrix multiplication of transpose of M : y= Mat^T x More...
 
subroutine mat_class::mat_transpose_mult_csr (mat, x, y)
 matrix multiplication of transpose of M : y= Mat^T x More...
 
subroutine mat_class::mat_mult_tensor (mat, x, nv, y)
 matrix multiplication of tensor (array of vector) More...
 
subroutine mat_class::mat_mult_tensor_org (mat, x, nv, y)
 matrix multiplication of tensor (array of vector) More...
 
subroutine mat_class::mat_mult_tensor_csr (mat, x, nv, y)
 matrix multiplication of tensor (array of vector) More...
 
subroutine mat_class::mat_copy_mat_org (mat1, mat2)
 copy org matrix - required for verification routine More...
 
subroutine mat_class::mat_verification (mat)
 code for matrix routine verifications - can use for csr, openmp, etc More...
 
subroutine src_module::src_setup
 
subroutine ecuyer_random::init_seeds (i1, i2, i3)
 
real(dp) function ecuyer_random::taus88 ()
 
subroutine ecuyer_random::init_seeds_ext (sv)
 
real(dp) function ecuyer_random::taus88_ext (sv)
 
subroutine random_xgc::init_ranx ()
 
real(8) function random_xgc::ranx ()
 
subroutine neu_module::set_neutral_pointers (nnode, nwall, nebin, neu_weight_wall_lost_in, neu_weight_sum_lost_in, neu_weight_lost_ebins_in, neu_node_dens_in, neu_node_temp_in)
 
subroutine, public input_module::read_input_file
 
integer function, public input_module::read_namelist_index (input_string, namelist_string)
 

Variables

integer, parameter multispecies::ptl_nsp_max =7
 
integer, parameter multispecies::electron_type =0
 
integer, parameter multispecies::main_ion_type =1
 
integer sml_module::sml_comm =MPI_COMM_NULL
 Global MPI communicator within an XGC instance. More...
 
integer sml_module::sml_comm_world =MPI_COMM_NULL
 Global communicator between separate XGC instances (or XGC-GENE, XGC-GEM --> code-coupling) after MPI_COMM_WORLD split. More...
 
integer sml_module::sml_comm_null =MPI_COMM_NULL
 MPI_COMM_NULL communicator for adios posix method. More...
 
integer sml_module::sml_comm_self =MPI_COMM_NULL
 MPI_COMM_SELF communicator for single-process adios2 outputs. More...
 
integer sml_module::sml_comm_color =-1
 Communicator color (used for mpi split/code-coupling). Set by my_mpi_init call. More...
 
integer sml_module::sml_mype =-1
 Processor index, 0 - (# of MPI ranks -1) More...
 
integer sml_module::sml_totalpe =-1
 Total number of processors (must be > (2*sml_grid_nrho)*sml_nphi_total) More...
 
integer sml_module::sml_nthreads =-1
 Total number of OpenMP threads per process. More...
 
integer sml_module::sml_mstep = 3000
 Total number of time steps for simulation. (simulation time) = dt*mstep. More...
 
integer sml_module::sml_gstep = 0
 Global time step (counting the current + all previous runs in case of restarts) More...
 
logical sml_module::sml_plane_major =.false.
 MPI task ordering to use when mapping to 2D virtual processor grid. .true. for consecutive within plane; .false. for consecutive between planes. More...
 
logical sml_module::sml_drift_on =.true.
 Whether drifts are active in the equations of motion. Set .false. for tracing field lines or Poincare plots. More...
 
logical sml_module::sml_dwdt_exb_only = .false.
 Switch for classical delta-f weight evolution equation (i.e. not for total-f mode, must compile with DELTAF_CONV=ON): .false. to include all drifts (grad(B), curl(b),and ExB), .true. for ExB only. More...
 
logical sml_module::sml_dwdt_fix_bg = .false.
 Switch for classical delta-f weight evolution equation (i.e. not for total-f mode, must compile with DELTAF_CONV=ON): .false. for (1-w) pre-factor, .true. for (1) pre-factor. default is .false. More...
 
real(8) sml_module::sml_marker_temp_factor = 1D0
 Initial loading with Maxwellian marker distribution with virtual temperature \(T_{marker} = \alpha*T_{plasma}\) (only if sml_flat_marker=.false.). More...
 
real(8) sml_module::sml_marker_min_temp = 1D1
 minimum temperature of markers (only if sml_flat_marker=.false.) More...
 
real(8) sml_module::sml_marker_temp_factor2 =1D0
 perp temperature factor (only if sml_flat_marker=.false.) More...
 
real(8) sml_module::sml_low_mu_fill_population = 0D0
 Used for filling the low-mu range of velocity space if sml_marker_temp_factor3>1 0.0 --> all markers in low-mu range, 1.0 --> no low-mu filling (only if sml_flat_marker=.false.) More...
 
logical sml_module::sml_flat_marker = .true.
 Use flat marker distribution function when set to .true. Marker distribution g is constant up to v<= sml_flat_marker_decay_start[1/2] and decays exponentially from there up to v<= sml_flat_marker_cutoff. The decay length is sml_flat_marker_width. More...
 
real(8) sml_module::sml_flat_marker_decay_start1 =3.5D0
 Normalized (to \(v_{th}\)) velocity at which the marker distribution decays exponentially. More...
 
real(8) sml_module::sml_flat_marker_cutoff1 =4D0
 Normalized (to \(v_{th}\)) parallel velocity cutoff of flat marker distribution. More...
 
real(8) sml_module::sml_flat_marker_width1 =0.5D0
 Decay length of flat marker distribution in the normalized (to \(v_{th}\)) parallel velocity. More...
 
real(8) sml_module::sml_flat_marker_decay_start2 =3.5D0
 Like sml_flat_marker_decay_start1 but for the perpendicular velocity. More...
 
real(8) sml_module::sml_flat_marker_cutoff2 =4D0
 Like sml_flat_marker_cutoff1 but for the perpendicular velocity. More...
 
real(8) sml_module::sml_flat_marker_width2 =0.5D0
 Like sml_flat_marker_width1 but for the perpendicular velocity. More...
 
logical sml_module::sml_use_loading_factor =.false.
 Marker particle distribution taking into account the local (configuration space) node volume, i.e. aim for uniform number of ptl/mesh vertex. Set .true. when using a mesh with very non-uniform resolution. More...
 
real(kind=8) sml_module::sml_min_loading_factor =1D-1
 Lower limit for loading factor (default is conservative, might need lower value; lower values increase time for loading) More...
 
real(kind=8) sml_module::sml_max_loading_factor =1D1
 Upper limit for loading factor (default is conservative, might need higher value) More...
 
real(kind=8) sml_module::sml_load_nptl =-1D0
 Avg. number of ptl/vertex. More...
 
real(kind=8) sml_module::sml_load_den_uni =-1D0
 Marker density for uniform loading. More...
 
logical sml_module::sml_limit_marker_den =.false.
 Switch for limiting the marker density in the private region to sml_limit_marker_den_fac of the target number of markers/vertex (mainly for RMP!) More...
 
real(kind=8) sml_module::sml_limit_marker_den_fac =5D0
 Threshold for removing excess particles in multiples of the target # of ptl/vertex when sml_limit_marker_den=.true. More...
 
logical sml_module::sml_concentric =.false.
 (Partially obsolete) Simulation for concentric circular geometry --> would only control behavior of bounce boundary condition in XGC_core/bounce.F90, but that part is commented out at this time More...
 
logical sml_module::sml_read_eq =.true.
 Read B-field profile from an eqd-file. More...
 
logical sml_module::sml_read_eq_m3dc1 =.false.
 Read B-field profile from M3D-C1 output file --> overrides sml_read_eq. More...
 
logical sml_module::sml_field_aligned_initial =.false.
 Use field aligned initial condition. More...
 
real(8), parameter sml_module::sml_2pi = 6.2831853071795862D0
 2 Pi More...
 
real(8), parameter sml_module::sml_pi = 3.1415926535897931D0
 Pi. More...
 
real(8), parameter sml_module::sml_sqrtpi = 1.7724538509055158D0
 Sqrt(Pi) More...
 
real(8), parameter sml_module::sml_sqrt2pi = 2.5066282746310002D0
 Sqrt(2Pi) More...
 
real(8) sml_module::sml_2pi_wedge_n =sml_2pi
 Toroidal angle spanned by the wedge simulated by the code --> \(\text{sml_2pi_wedge_n}=2\pi/\text{sml_wedge_n}\). More...
 
real(8), parameter sml_module::sml_e_charge =1.6022D-19
 elementary charge in C (MKS) More...
 
real(8), parameter sml_module::sml_epsilon0 =8.8542D-12
 permittivity of free space in F/m (MKS) More...
 
real(8), parameter sml_module::sml_prot_mass =1.6720D-27
 proton mass in kg (MKS) More...
 
real(8), parameter sml_module::sml_elec_mass =9.1094D-31
 electron mass in kg (MKS) More...
 
real(8), parameter sml_module::sml_mu0 =1.2566370614D-6
 Magnetic vacuum permeability in H/m (MKS) More...
 
real(8), parameter sml_module::sml_ev2j =sml_e_charge
 Conversion factor from eV to J. More...
 
real(8), parameter sml_module::sml_j2ev =1D0/sml_e_charge
 Conversion factor from J to eV. More...
 
integer, parameter sml_module::sml_nrk = 2
 Order of Runge-Kutta time integration of particles + fields. More...
 
logical sml_module::sml_restart =.false.
 
logical sml_module::restarting
 
logical sml_module::simulation
 
logical sml_module::switch
 
logical sml_module::false
 
logical sml_module::for
 
logical sml_module::new
 
logical sml_module::run
 
logical sml_module::true
 
logical sml_module::restart
 
real(8) sml_module::sml_bp_sign =1D0
 sml_bp_sign is opposite of sign of poloidal current Ip. sml_bp_sign=-1 for Ip // phi, sml_bp_sign=+1 for Ip // (-phi) The direction of Bp and Ip are following right hand rule. phi is from the (R,phi,Z) cylindrical coordinate system. The direction of phi is counter-clockwise looking on the torus from above. More...
 
real(8) sml_module::sml_bt_sign =-1D0
 1 for Bt // phi, -1 for Bt // (-phi) The direction of phi is described in the comments of sml_bp_sign. The default is bp_sign = 1 and bt_sign = -1 -> both Ip and Bt are -phi direction. (co-current Bt) More...
 
real(8) sml_module::sml_bd_min_r =1D-4
 Simulation boundary in R-Z space (in m) More...
 
real(8) sml_module::sml_bd_max_r =1D3
 Simulation boundary in R-Z space (in m) More...
 
real(8) sml_module::sml_bd_min_z =-1D3
 Simulation boundary in R-Z space (in m) More...
 
real(8) sml_module::sml_bd_max_z =1D3
 Simulation boundary in R-Z space (in m) More...
 
real(8) sml_module::sml_marker_den =-1D0
 Marker density. Used for (uniform) loading and initial weight calculation. More...
 
real(8), dimension(:,:), allocatable sml_module::sml_marker_den2
 Triangle based marker density. More...
 
real(8) sml_module::sml_inpsi =0D0
 Inner boundary for initial loading and other routines (e.g. solvers, bounce, ...); normalized poloidal flux (0 on axis, 1 on separatrix) More...
 
real(8) sml_module::sml_outpsi =1.05D0
 Outer boundary for initial loading and other routines (e.g. solvers, bounce, ...); normalized poloidal flux (0 on axis, 1 on separatrix) More...
 
real(8) sml_module::sml_outpsi_priv1 =0.97D0
 Outer boundary (for Poisson solver), normalized poloidal flux. More...
 
real(8) sml_module::sml_en_order_kev =0.2D0
 Characteristic ion energy (keV) --> controls reference time (toroidal ion transit time) More...
 
real(8) sml_module::sml_en_order =3.2044D-17
 (not an input) Characteristic ion energy in normalized unit More...
 
integer sml_module::sml_machine = -99
 Not used anymore. Left only for input file compatibility. Will be removed near future. More...
 
integer sml_module::sml_special =0
 Switch for special simulation: (0) normal, (1) single particle simulation, (2) undefined, (3) undefined, (4) Poincare plot. More...
 
real(8) sml_module::sml_bp_mult =1D0
 Artificial multiplication of poloidal B-field. More...
 
real(8) sml_module::sml_bt_mult =1D0
 Artificial multiplication of toroidal B-field. More...
 
integer, parameter sml_module::sml_nlarmor =4
 Number of points used in gyroaverage. This is used only for calculating the electron background density in simulations with adiabatic electrons and in the direct evaluation of the (obsolete) flux-surface averaged ion gyrocenter and electron charge density. More...
 
integer sml_module::sml_nphi_total =16
 Number of poloidal planes (= toroidal grid size) More...
 
integer sml_module::sml_wedge_n =1
 Simulate a wedge of 2pi/sml_wedge_n of the full torus. More...
 
integer sml_module::sml_nphi_2pi =1
 In wedge simulations (sml_wegde_n>1): Number of poloidal planes in full torus - set to sml_nphi_total*sml_wedge_n in setup.F90 subroutine read_input after reading input file. More...
 
integer sml_module::sml_ff_step =2
 Number of steps for field-following search/mapping (default=2) (default: 2, set to 0 to let XGC decide) More...
 
integer sml_module::sml_ff_order =4
 Order of RK method used for field-following search/mapping (default=4) (2 or 4, default: 4, set 0 to let XGC decide)) More...
 
logical sml_module::sml_no_turb =.false.
 Set all non-axisymmetric field perturbations to zero (electromagnetic version only) More...
 
logical sml_module::sml_turb_efield =.true.
 E-field calculated only with \(<\phi>\) if .false. psndpot will still contain all (n=0,|m|>0) and (|n|>0,m) modes. More...
 
logical sml_module::sml_00_efield =.true.
 Flux-surface averaged potential not used for calculating the electric field if .false. More...
 
logical sml_module::sml_0m_efield =.true.
 The axisymmetric potential variation \(\langle \phi-\langle\phi\rangle\rangle_T\) is set to zero if .false. More...
 
logical sml_module::sml_loop_voltage_on =.false.
 Switches the loop voltage current drive on/off. More...
 
real(8) sml_module::sml_gradpsi_limit =1D-3
 If \(|\nabla\psi|\) is smaller than this threshold, \(\nabla\psi\) is computed \((R,Z)\) coordinates instead of \((\hat{\boldsymbol{\psi}}\cdot\nabla,\hat{\boldsymbol{\theta}}^\ast)\cdot\nabla\) even if sml_grad_psitheta is .true. More...
 
integer, dimension(0:ptl_nsp_max) sml_module::sml_grid_nrho =-1
 Size of the gyroradius grid (should be such that the resolution is >= 0.5 rho_i) Set this to check whether the rho inputs use the new multispecies format. More...
 
real(8), dimension(0:ptl_nsp_max) sml_module::sml_rhomax =1D-2
 Upper cutoff of the gyroradius grid (should be the gyroradius of the fastest ions of interest) More...
 
logical sml_module::sml_grad_psitheta =.true.
 If .true., gradiant operator is calculated as \((\hat{\boldsymbol{\psi}}\cdot\nabla,\hat{\boldsymbol{\theta}}^\ast)\cdot\nabla\) instead of \((R,Z)\) coordinates. More...
 
logical sml_module::sml_tri_psi_weighting =.false.
 Use modified triangle shape functions (Useful for coarse meshes in XGCa when straight element edges do not represent the curved flux-surfaces well. More...
 
integer, parameter sml_module::sml_nhybrid =2
 Number of iterations in electrostatic electron weight evolution scheme This used to be an input variable but is now a parameter (sml_nhybrid=2) because a value of 2 was the only workable value. It implies a two-step Poisson solve (adiabatic electron solve -> electron weight update -> kinetic electron solve) More...
 
integer sml_module::sml_f0_grid_lbal_period =0
 Force periodic update of the domain decomposition every sml_f0_grid_lbal_period time steps. When set to zero, the domain decomposition is adjusted only when the load imbalance exceeds its thresholds. More...
 
real(8) sml_module::sml_f0_grid_max_ptl_imbal =2D0
 Upper threshold for the particle load imbalance (typically ~1.3). More...
 
real(8) sml_module::sml_f0_grid_min_ptl_imbal =1D0
 Lower threshold for the particle load imbalance. More...
 
real(8) sml_module::sml_f0_grid_init_ptl_imbal =-1D0
 Initial particle load imbalance. More...
 
integer sml_module::sml_f0_nmu_decomp =1
 (Not operational!) Parameter to control the decomposition of the velocity space grid in the \(v_\perp\) direction. 1 means no decomposition. More...
 
logical sml_module::sml_symmetric_f0g =.false.
 Enforce axisymmetry only in f0g (used only in XGC1 fluid-kinetic hybrid method; -DHYB_EM=ON) More...
 
integer sml_module::sml_f_source_period =1
 Run source routines (collisions, neutral recycling, etc.) every sml_f_source_period time steps. More...
 
real(8) sml_module::sml_inv_f_source_period =1
 (Not an input) Inverse of sml_f_source_period More...
 
logical sml_module::sml_no_fp_in_f =.false.
 If .true. the distribution function used for the source routines will not include particle information (only for testing) More...
 
character(len=65) sml_module::sml_node_file ="neo10.1.node"
 Unstructured mesh data: node-file. More...
 
character(len=65) sml_module::sml_ele_file ="neo10.1.ele"
 Unstructured mesh data: ele-file. More...
 
character(len=65) sml_module::sml_surf_file ="dummy.flx.aif"
 Unstructured mesh data: flx-file. More...
 
integer sml_module::sml_sep_surf_index =99999
 Index of the inner separatrix surface in the flux-surface data (from sml_surf_file if compiled with -DNEW_FLX_AIF=ON) More...
 
integer sml_module::sml_sep2_surf_index =99999
 Index of the outer separatrix surface in the flux-surface data (from sml_surf_file if compiled with -DNEW_FLX_AIF=ON) More...
 
integer sml_module::sml_nsurf3 =0
 Number of flux-surfaces in the private flux region (from sml_surf_file if compiled with -DNEW_FLX_AIF=ON) More...
 
integer sml_module::sml_nsurf3_2 =0
 Number of flux-surfaces in the second private flux region (from sml_surf_file if compiled with -DNEW_FLX_AIF=ON) More...
 
integer sml_module::sml_plane_per_pe =0
 Number of poloidal planes per MPI rank (typically 1) More...
 
integer sml_module::sml_pe_per_plane =0
 Number of MPI ranks per poloidal plane (>=2*sml_grid_nrho) More...
 
integer sml_module::sml_adios_group =MPI_GROUP_EMPTY
 Adios MPI group. More...
 
integer sml_module::sml_adios_comm =MPI_COMM_NULL
 Adios communicator. More...
 
logical sml_module::adios_stage_restart = .FALSE.
 Enable/disable Adios stage mode for xgc.restart. More...
 
logical sml_module::adios_stage_restartf0 = .FALSE.
 Enable/disable Adios stage mode for xgc.restartf0. More...
 
logical sml_module::adios_stage_f0 = .TRUE.
 Enable/disable Adios stage mode for xgc.f0. More...
 
integer sml_module::adios_stage_f0_max = 10
 Maximum numbrer of steps for Adios xgc.f0 stage write. More...
 
logical sml_module::adios_stage_f3d = .FALSE.
 Enable/disable Adios stage mode for xgc.f3d. More...
 
integer sml_module::adios_stage_f3d_max = 10
 Maximum numbrer of steps for Adios xgc.f3d stage write. More...
 
logical sml_module::adios_stage_escaped_ptls = .FALSE.
 Enable/disable Adios stage mode for xgc.escaped_ptls. More...
 
integer sml_module::sml_plane_group =MPI_GROUP_EMPTY
 MPI group for all MPI ranks assigned to the same poloidal plane. More...
 
integer sml_module::sml_plane_comm =MPI_COMM_NULL
 Communicator for all MPI ranks assigned to the same poloidal plane. More...
 
integer sml_module::sml_plane_totalpe =0
 Total number of MPI ranks assigned to a poloidal plane. More...
 
integer sml_module::sml_plane_mype =0
 MPI rank index within sml_plane_comm. More...
 
integer sml_module::sml_plane_index =-1
 Index of the poloidal plane to which an MPI rank is assigned (0...sml_nphi_total-1) More...
 
integer sml_module::sml_intpl_group =MPI_GROUP_EMPTY
 MPI group for all MPI ranks assigned to the same (R,Z) patch. More...
 
integer sml_module::sml_intpl_comm =MPI_COMM_NULL
 Communicator for all MPI ranks assigned to the same (R,Z) patch (toroidal communication) More...
 
integer sml_module::sml_intpl_totalpe =0
 Total number of MPI ranks within sml_intpl_comm. More...
 
integer sml_module::sml_intpl_mype =0
 MPI rank index within sml_intpl_comm. More...
 
integer, dimension(:), allocatable sml_module::sml_ksp_group
 MPI group for a subset of ranks on a plane used for PETSc KSP solves. More...
 
integer, dimension(:), allocatable sml_module::sml_ksp_comm
 MPI communicator for a subset of ranks on a plane used for PETSc KSP solves. More...
 
integer, dimension(:), allocatable sml_module::sml_ksp_root
 MPI root rank of plane, will broadcast solutions of KSP solves. More...
 
integer sml_module::sml_num_ksp = 1
 Number of communicators per plane for PETSc KSP solves. More...
 
integer sml_module::sml_ksp_mype = -1
 MPI rank index within sml_ksp_comm. More...
 
integer sml_module::sml_pe_per_ksp = 0
 Number of MPI ranks used for PETSc KSP solves. More...
 
logical sml_module::sml_electron_on =.false.
 Whether to run with adiabatic (.false.) or kinetic (.true.) electrons. More...
 
real(8) sml_module::sml_initial_deltaf_noise =1D-3
 Delta-f particle weights are initialized with this level of noise. More...
 
logical sml_module::sml_zero_inner_bd =.false.
 If .true., use Dirichlet boundary condition \(\phi=0\) for axisymmetric Poisson solver. More...
 
integer sml_module::sml_mode_select_mode = 0
 Fourier filter mode: 0) No filter, 1) single-n, 4) m_range (mmin..mmax) 2 or 5) n range + resonant m 3 or 6) n range + m range. More...
 
integer sml_module::sml_mode_select_mmin = 0
 Lowest pol. mode number for Fourier filter. More...
 
integer sml_module::sml_mode_select_mmax = 25
 Highest pol. mode number for Fourier filter. More...
 
integer sml_module::sml_mode_select_mres_q = 3
 number of pol. mode numbers around the resonant mode divided by q; --> |m/q - n| <= mres_q or |m -n*q| <= mres_q*q More...
 
integer sml_module::sml_mode_select_cutoff = 2
 Factor for cutoff in Fourier space, determines gridm_max_surf(i) The default is the Nyquist limit sml_mode_select_cutoff=2. More...
 
integer sml_module::sml_mode_select_cutoff_mode = 1
 (1) Default: calculate max. pol. mode number using \(\max(\Delta\theta^\ast)\); (2) use \(\Delta\theta^\ast\) at \(B=B_{max}\) on the flux-surface. More...
 
real(kind=8) sml_module::sml_mode_select_inpsi = -0.1D0
 inner boundary for mode selection More...
 
real(kind=8) sml_module::sml_mode_select_outpsi = 10.0D0
 outer boundary for mode selection More...
 
real(kind=8) sml_module::sml_mode_select_bd_width = 0.01D0
 width of boundary envelope More...
 
real(kind=8) sml_module::sml_mode_select_psitol = 5D-5
 psi tolerance (in SI-units --> Wb) for the identification of flux-surfaces More...
 
real(kind=8) sml_module::sml_mode_select_max_kth_rho = 1.0D0
 Max. k_theta*rhoi retained in poloidal Fourier filter. More...
 
logical sml_module::sml_mode_select_bands_on = .false.
 Determine the number of side bands to include by using gridm_max_surf(i) More...
 
logical sml_module::sml_mode_select_no_m0 = .true.
 filter out m=0 mode while field-following FFT filtering. (fourier_filter_n_m_range_parallel) More...
 
logical sml_module::sml_mode_select_use_minm = .false.
 Restrict poloidal mode number m to m>1 in field aligned filter (sml_mode_select_mode=5) More...
 
integer sml_module::sml_mode_select_sol_mode = 0
 0: Retain sine and cosine modes in SOL but use a window function 1: Retain only sine modes in SOL and don't use a window function 2: Retain sine and cosine modes and DO NOT use a window function (Applies only to filter modes sml_mode_select_mode={5,6}!) More...
 
integer sml_module::sml_mode_select_num_m_damp = 0
 Pad the rectangular mode filter with |m/q-n|<=N with sml_mode_select_num_m_damp modes left and right and damp those modes exponentially. The damping factor is given by exp(-(x/w)^2) where x=max(0,|m-n*q|-sml_mode_select_mres_q) and w=sml_mode_select_damp_width. The default is sml_mode_select_num_m_damp=0, i.e., a sharp cutoff in the filter. More...
 
real(kind=8) sml_module::sml_mode_select_damp_width = 2D0
 Width (in terms of poloidal mode numbers of the smooth exponential cutoff in the poloidal part of the field-aligned Fourier filter (see sml_mode_select_num_m_damp). More...
 
logical sml_module::sml_mode_select_keep_axisym = .false.
 Whether to retain -sml_mode_select_mres_q*1 < m < sml_mode_select_mres_q*q (i.e. the axisymmetric mode) (used if FFT_NTOR_NUM_ZERO=On) More...
 
real(8) sml_module::sml_bd_ext_delta_ai = 0D0
 Shift of inner boundary of n!=0 Ampere solver (LHS) outwards relative to sml_inpsi. More...
 
real(8) sml_module::sml_bd_ext_delta_ao = 0D0
 Shift of outer boundary of n!=0 Ampere solver (LHS) inwards relative to sml_outpsi. More...
 
real(8) sml_module::sml_bd_ext_delta_ji = 0D0
 Shift of inner boundary of n!=0 Ampere solver (RHS=current density) outwards relative to sml_inpsi. More...
 
real(8) sml_module::sml_bd_ext_delta_jo = 0D0
 Shift of outer boundary of n!=0 Ampere solver (RHS) inwards relative to sml_outpsi. More...
 
real(8) sml_module::sml_dpot_bd_width = 0.02D0
 Decay length (normalized flux) for (n=0,m>0) potential towards the magnetic axis. More...
 
logical sml_module::sml_dpot_bd_apply = .false.
 Damp (n=0,m>0) potential towards the magnetic axis. More...
 
character(len=65) sml_module::sml_input_file_dir ='./'
 Path to the magnetic equilibrium, mesh and profile files (max. 65 characters) More...
 
logical sml_module::sml_update_poisson_solver =.false.
 If .true. density and temperature in the Poisson solver operators will be updated every sml_update_poisson_solver_nstep time steps. More...
 
logical sml_module::sml_update_poisson_turb =.false.
 Update the n != 0 Poisson solver, too (energy conservation?) More...
 
integer sml_module::sml_update_poisson_solver_nstep =1
 Number of time steps between subsequent updates of the Poisson solver operators. More...
 
logical sml_module::sml_update_ampere_solver =.false.
 If .true. density and temperature in the Ampere's law solver operators will be updated every sml_update_ampere_solver_nstep time steps. More...
 
integer sml_module::sml_update_ampere_solver_nstep =1
 Number of time steps between subsequent updates of the Ampere's law solver operators. More...
 
logical sml_module::sml_poisson_use_bc =.false.
 (XGCa only) False: 00-bc is phi=0 everywhere; true: 00-boundary is the wall with bc phi_bd=phi_sheath More...
 
logical sml_module::sml_poisson_0m_full_geo =.false.
 Whether to use full toroidal geometry in the axisymmetric Poisson solver (w/o approximation B_R<<B, and B_Z<<B) More...
 
logical sml_module::sml_use_pade =.false.
 Use Pade approximation for short wavelengths. More...
 
logical sml_module::sml_em_use_dpot_te_limit =.false.
 In EM simulation: whether to force usage of the min-max limiter on the turbulent potential fluctuation. More...
 
real(8) sml_module::sml_dpot_te_limit = 64D0
 Limits the magnitude of the normalized turbulent potential e*dphi/T_e in order to, e.g., prevent an overflow in the Boltzmann term, exp(e*dphi/T_e) for concentric circular, 00-mode poission equation is solved analytically when we use poisson_two_solvers. More...
 
logical sml_module::sml_use_simple00 =.false.
 Use simple 1D solver for the flux-surface averaged potential instead of PETSc. More...
 
logical sml_module::sml_iter_solver =.true.
 Split Poisson equation into axisymmetric and non-axisymmetric parts. The axisymmetric part has the flux-surface averaged potential on the RHS. Solve iteratively by lagging the RHS potential by one iteration. Stop after sml_iter_solver_niter iterations. If .false., split Poisson equation into flux-surface averaged part and rest (assuming that the polarization term commutes with the flux-surface average) and the rest; solve in two steps. More...
 
integer sml_module::sml_iter_solver_niter =10
 Number of iterations for the iterative axisymmetric Poisson solver when sml_iter_solver_converge=.false. More...
 
logical sml_module::sml_iter_solver_converge =.false.
 If .true., keep taking iterations in PETSc until termination criteria is met, i.e. until a residual tolerance is reached or it is determined that the iterations have diverged or exceeded sml_iter_solver_max_it. If .false., take a fixed number of iterations set from sml_iter_solver_niter. More...
 
integer sml_module::sml_iter_solver_precond_type =0
 Set the preconditioner type for the iterative axisymmetric poisson solver (0) poisson operator without the flux surface average term (i.e. Amat). This is used to reproduce the old iterative method. (1) Amat in addition to an approximate 1D solve for the flux surface averaged part. This option should be used when sml_iter_solver_converge is set to .true. as it is a much more effective preconditioner. More...
 
real(8) sml_module::sml_iter_solver_rtol =1.0D-5
 Relative tolerance for residual. Used to determine convergence when sml_iter_solver_converge=.true. See PETSc manual for details. More...
 
real(8) sml_module::sml_iter_solver_atol =1.0D-50
 Absolute tolerance for residual. Used to determine convergence when sml_iter_solver_converge=.true. See PETSc manual for details. More...
 
integer sml_module::sml_iter_solver_max_it =10
 Maximum number of iterations allowed when sml_iter_solver_converge=.true. More...
 
logical sml_module::sml_mod_adiabatic =.false.
 If .true., a psi-dependent weight is assigned to the FSA term in the adiabatic response. The weights are assigned according to a piecewise blending function in region 1: w = 1 if psi < psi_in w = (psi_out - psi)/(psi_out - psi_in) if psi_in < psi < psi_out w = 0 if psi > psi_out Outside of region 1, w = 0. The parameter sml_mod_adiabatic_psi_in sets psi_in and sml_mod_adiabatic_psi_out sets psi_out. More...
 
real(8) sml_module::sml_mod_adiabatic_psi_in = 0.99
 Inner boundary for psi-dependent weighting function when sml_mod_adiabatic=.true. More...
 
real(8) sml_module::sml_mod_adiabatic_psi_out = 1.00
 Outer boundary for psi-dependent weighting function when sml_mod_adiabatic=.true. More...
 
logical sml_module::sml_adiabatic_from_poisson =.false.
 If .true., the adiabatic density used in the weight update comes directly from the corresponding term in the gyrokinetic Poisson equation. More...
 
logical sml_module::sml_helmholtz_spectral =.false.
 Whether to solve Helmholtz-type equations with toroidally spectral solver. More...
 
integer sml_module::sml_add_pot0 =0
 Additional electrostatic potential: (0) for off, (1) for reading data from file (2) for simple neoclassical axisymmetric field (not operational) More...
 
logical sml_module::sml_replace_pot0 =.false.
 If .true., replace Poisson solution with external data, if .false., add external potential to Poisson solution. More...
 
integer sml_module::sml_add_pot0_mixing_time = 1
 With sml_replace_pot0=.true. this option allows mixing the consistent solution with the imposed potential. At t=0 only the imposed field is used, over sml_add_pot0_mixing_time times steps the mixing factor is ramped down linearly to zero (only consistent field is used) More...
 
character(len=256) sml_module::sml_add_pot0_file ='pot0.dat'
 Name of the file containing the potential data to replace the consistent solution of the Poisson equation. More...
 
logical sml_module::sml_heuristic_priv_pot = .false.
 Override the Poisson solver in the private region and replace the solution by the separatrix potential scaled with the initial electron temperature. More...
 
logical sml_module::sml_poisson_adia_wall = .false.
 EXPERIMENTAL! DON'T USE UNLESS ADVISED BY AN EXPERT If true, an adiabatic wall condition is used (no polarization, n_i=0, n_e!=0) in the axisymmetric solver; this is an experimental option and should be used together with sml_sheath_mode=1 and sml_sheath_init_pot_factor=0. More...
 
logical sml_module::sml_poisson_natural_boundary = .false.
 Set the potential on the solver boundary equal to the flux-surface averaged potential (implies \(\delta\phi_wall=0\)). This is supposed to prevent a sheath-like potential drop at the mesh boundary and make sure that the logical sheath model takes care of the sheath physics. Also, it should prevent \(\delta\phi/\phi\sim1\). More...
 
logical sml_module::sml_ampere_natural_boundary = .false.
 Ampere counterpart of sml_poisson_natural_boundary. When using this option .true., should we force sml_poisson_natural_boundary to .true.? More...
 
logical sml_module::sml_exclude_private =.false.
 If .true. the private-flux region is excluded from several aspects of the simulation (e.g., Poisson solver, collisions,...) More...
 
logical sml_module::sml_exclude_private_turb = .true.
 If .true. the private-flux region has no turbulence. More...
 
integer sml_module::sml_sheath_mode =0
 Mode of operation of the logical sheath boundary condition (0) off (1) The value of the logical sheath potential is adjusted locally reactively based on the number of ions and electrons that hit the wall in the previous time step. Can use sml_sheath_adjust_factor<1 to reduce noise. (2) Actual logical sheath mode: the number of ions and electrons hitting the wall is recorded, then the sheath potential required to balance ion and electron losses is determined, and only then is decided which electrons actually hit the wall and which were reflected by the sheath potential. The algorithm also tries to achieve a global balance if local balance cannot be achieved. (might need some debugging) More...
 
real(8) sml_module::sml_sheath_init_pot_factor =2D0
 Initial value of the sheath potential relative to the electron temperature. (for sml_sheath_mode=1) More...
 
logical sml_module::sml_sheath_init_pot_auto =.false.
 Set initial sheath potential to eq. based on Ti,Te, Maxwellian assumption. More...
 
logical sml_module::sml_sheath_adjust =.false.
 Constant (.false.) or dynamic (.true.) sheath potential (for sml_sheath_mode=1) More...
 
real(8) sml_module::sml_sheath_adjust_factor =0.25D0
 Damping factor for slower adjustment of the sheath potential if sml_sheath_mode=1. More...
 
logical sml_module::sml_source =.false.
 Switch for heat and torque sources (sources must be configured separately with the parameters in the src_param namelist. More...
 
logical sml_module::sml_radiation =.false.
 Switch for a simple radiation module using part of the ADAS data base (must be configured with the rad_param namelist) More...
 
logical sml_module::sml_neutral =.false.
 Switch for neutral recycling module (must be configured with the neu_param namelist) More...
 
real(8) sml_module::sml_max_imbalance =1.1D0
 Threshold of the combined particle-mesh load imbalance that triggers an update of the domain decomposition. More...
 
real(8) sml_module::sml_ptl_imbal_ion =3D0
 Maximal load ion particle imbalance. More...
 
logical sml_module::sml_00_xz_up =.false.
 Use only \(Z>Z_{xp}\) for flux-surface average calculation (only for -DCONVERT_GRID2=OFF) More...
 
logical, parameter sml_module::sml_cylindrical =.true.
 Use straight cylinder geometry with periodic boundary conditions along the cylinder axis. More...
 
logical sml_module::sml_resamp_on = .false.
 Switch for particle resampling (must be configured with resamp_param namelist. More...
 
logical sml_module::sml_3db_on = .false.
 Switch RMP field on/off. More...
 
logical sml_module::sml_verbose = .false.
 ??? More...
 
logical sml_module::sml_em_mixed_variable = .true.
 Switch for use of mixed-variable formulation. More...
 
logical sml_module::sml_em_control_variate = .false.
 Switch for use of control variate method. More...
 
integer sml_module::sml_em_control_variate_niter = 1
 Number of iterations for Ampere solve with control-variate method. More...
 
logical sml_module::sml_em_control_variate_final_cv = .false.
 Internal setting for control variate method. More...
 
logical sml_module::sml_em_control_variate_flag = .false.
 Internal setting for control variate method. More...
 
logical sml_module::sml_em_exclude_private = .true.
 Makes the private flux region electrostatic if .true. More...
 
logical sml_module::sml_em_b_para_eff = .false.
 Effective dB_|| via a modified grad-B drift (Joiner et al., PoP, 2010) More...
 
logical sml_module::sml_em_n0 = .false.
 Include n=0 electromagnetic mode. More...
 
logical sml_module::sml_diff_on = .false.
 Anomalous diffusion. More...
 
logical sml_module::sml_reduce_core_ptl = .false.
 Whether to reduce number of particles initialized in the core. More...
 
real(8) sml_module::sml_core_ptl_fac = 1D0
 Factor particles in core per vertex vs in edge. More...
 
real(8) sml_module::sml_core_ptl_psi = 1D0
 psi value where n_ptl per vertex drops off More...
 
logical sml_module::sml_mms = .false.
 Sets particle weights for P. Tranquilli's manufactured solution. More...
 
real(8) sml_module::sml_mms_alpha = 7d0
 Parameter for factor dependent on spatial coordinate in P. Tranquilli's manufactured solution. More...
 
real(8) sml_module::sml_mms_beta = 1d0
 Parameter for factor dependent on mu coordinate in P. Tranquilli's manufactured solution. More...
 
real(8) sml_module::sml_mms_gamma = 0.5d0
 Parameter for factor dependent on parallel velocity coordinate in P. Tranquilli's manufactured solution. More...
 
character(len=80) eq_module::eq_filename ='eq.h5'
 eq_filename is the name of the eqd input (output for M3D-C1 input) file More...
 
character(len=80) eq_module::eq_m3dc1_filename ='C1.h5'
 Name of the M3D-C1 data file. More...
 
character(len=100) eq_module::eq_g_filename = 'null.eqd'
 gqdsk file generated from M3D-C1 data (needed for wall shape and consistency) More...
 
real(8) eq_module::eq_min_r = 0D0
 
real(8) eq_module::eq_max_r = 0D0
 
real(8) eq_module::eq_min_z = 0D0
 
real(8) eq_module::eq_max_z = 0D0
 Not needed anymore – can be removed. More...
 
real(8) eq_module::eq_axis_r = 0D0
 
real(8) eq_module::eq_axis_z = 0D0
 R, Z, B of magnetic axis. More...
 
real(8) eq_module::eq_x_psi = 0D0
 
real(8) eq_module::eq_x_z = 1D1
 
real(8) eq_module::eq_x_r = 1.7D0
 
real(8) eq_module::eq_x_slope = 0D0
 psi, R, Z of (first) X-point. eq_x_slope = dZ/dR – slope from axis More...
 
real(8) eq_module::eq_psi_norm = 0D0
 
logical eq_module::eq_set_x2 = .false.
 determine if there is second (upper) X-point to consider. This will be overriden by flx.aif. More...
 
real(8) eq_module::eq_x2_z = 1D1
 Z value of second (upper) X-point. More...
 
real(8) eq_module::eq_x2_r = 1.7D0
 R value of second (upper) X-point. More...
 
real(8) eq_module::eq_x2_slope = 0D0
 slope of second X-point. More...
 
real(8) eq_module::eq_x2_psi = 0D0
 psi of second X_point More...
 
real(8) eq_module::eq_out_decay_factor = 1D-1
 profiles decay exponentially to f(sml_outpsi)*decay_factor for psi>sml_outpsi More...
 
real(8) eq_module::eq_priv_flux_decay_factor = 5D-2
 profiles decay exponentially to f(sml_outpsi)*decay_factor in priv. flux region More...
 
real(8) eq_module::eq_out_decay_width = 3D-2
 width for exponential decay for psi>sml_outpsi More...
 
real(8) eq_module::eq_priv_flux_decay_width = 1.5D-2
 width for exponential decay in private flux region More...
 
integer eq_module::eq_den_rsp_index = 0
 Due to quasineutrality, the density of one species should be obtained from that of the others: specify its index here. More...
 
integer eq_module::eq_den_rsp_sample_num = 1024
 Density for the reduced spcies (rsp) is constructed from this number of samples. More...
 
real(8) eq_module::eq_den_rsp_xmax = 1.3D0
 normalized value of psi for domain setting psi_norm = [0, xmax], psi = psi_norm * eq_x_psi More...
 
real(8), dimension(:), allocatable eq_module::eq_dens_v1
 
real(8), dimension(:), allocatable eq_module::eq_dens_v2
 
real(8), dimension(:), allocatable eq_module::eq_dens_v3
 
real(8), dimension(:), allocatable eq_module::eq_dens_x1
 
real(8), dimension(:), allocatable eq_module::eq_dens_x2
 
real(8), dimension(:), allocatable eq_module::eq_dens_x3
 Parameters defining the analytic profile functions of the species densities. More...
 
real(8), dimension(:), allocatable eq_module::eq_temp_v1
 
real(8), dimension(:), allocatable eq_module::eq_temp_v2
 
real(8), dimension(:), allocatable eq_module::eq_temp_v3
 
real(8), dimension(:), allocatable eq_module::eq_temp_x1
 
real(8), dimension(:), allocatable eq_module::eq_temp_x2
 
real(8), dimension(:), allocatable eq_module::eq_temp_x3
 Parameters defining the analytic profile functions of the species temperatures. More...
 
real(8), dimension(:), allocatable eq_module::eq_flow_v1
 
real(8), dimension(:), allocatable eq_module::eq_flow_v2
 
real(8), dimension(:), allocatable eq_module::eq_flow_v3
 
real(8), dimension(:), allocatable eq_module::eq_flow_x1
 
real(8), dimension(:), allocatable eq_module::eq_flow_x2
 
real(8), dimension(:), allocatable eq_module::eq_flow_x3
 Parameters defining the analytic profile functions of the species toroidal flow. More...
 
integer, dimension(:), allocatable eq_module::eq_dens_shape
 
integer, dimension(:), allocatable eq_module::eq_temp_shape
 
integer, dimension(:), allocatable eq_module::eq_flow_shape
 Variable defining the type of analytic function used for density, tempeature and toroidal rotation profiles (-1 for file input) More...
 
integer, dimension(:), allocatable eq_module::eq_flow_type
 Type ID of parallel flow/toroidal rotation (u_||, u_||/R, omega_tor) 0: parallel flow (m/s) is flux function. 1: u_parallel/R is flux function 2: Omega_tor is flux function (rigid body rotation),. More...
 
integer, dimension(:), allocatable eq_module::eq_dens_diff_shape
 
integer, dimension(:), allocatable eq_module::eq_flow_diff_shape
 
integer, dimension(:), allocatable eq_module::eq_t_diff_shape
 
integer, dimension(:), allocatable eq_module::eq_pinch_v_shape
 Variable defining the type of analytic function used for profiles of particle diffusivity, momentum diffusivity, heat conductivity and particle pinch velocity (-1 for file input) More...
 
real(8), dimension(:), allocatable eq_module::eq_dens_diff_v1
 
real(8), dimension(:), allocatable eq_module::eq_dens_diff_v2
 
real(8), dimension(:), allocatable eq_module::eq_dens_diff_v3
 
real(8), dimension(:), allocatable eq_module::eq_dens_diff_v4
 
real(8), dimension(:), allocatable eq_module::eq_dens_diff_x1
 
real(8), dimension(:), allocatable eq_module::eq_dens_diff_x2
 
real(8), dimension(:), allocatable eq_module::eq_dens_diff_x3
 
real(8), dimension(:), allocatable eq_module::eq_dens_diff_x4
 
real(8), dimension(:), allocatable eq_module::eq_dens_diff_x5
 
real(8), dimension(:), allocatable eq_module::eq_flow_diff_v1
 
real(8), dimension(:), allocatable eq_module::eq_flow_diff_v2
 
real(8), dimension(:), allocatable eq_module::eq_flow_diff_v3
 
real(8), dimension(:), allocatable eq_module::eq_flow_diff_v4
 
real(8), dimension(:), allocatable eq_module::eq_flow_diff_x1
 
real(8), dimension(:), allocatable eq_module::eq_flow_diff_x2
 
real(8), dimension(:), allocatable eq_module::eq_flow_diff_x3
 
real(8), dimension(:), allocatable eq_module::eq_flow_diff_x4
 
real(8), dimension(:), allocatable eq_module::eq_flow_diff_x5
 
real(8), dimension(:), allocatable eq_module::eq_t_diff_v1
 
real(8), dimension(:), allocatable eq_module::eq_t_diff_v2
 
real(8), dimension(:), allocatable eq_module::eq_t_diff_v3
 
real(8), dimension(:), allocatable eq_module::eq_t_diff_v4
 
real(8), dimension(:), allocatable eq_module::eq_t_diff_x1
 
real(8), dimension(:), allocatable eq_module::eq_t_diff_x2
 
real(8), dimension(:), allocatable eq_module::eq_t_diff_x3
 
real(8), dimension(:), allocatable eq_module::eq_t_diff_x4
 
real(8), dimension(:), allocatable eq_module::eq_t_diff_x5
 
real(8), dimension(:), allocatable eq_module::eq_pinch_v_v1
 
real(8), dimension(:), allocatable eq_module::eq_pinch_v_v2
 
real(8), dimension(:), allocatable eq_module::eq_pinch_v_v3
 
real(8), dimension(:), allocatable eq_module::eq_pinch_v_v4
 
real(8), dimension(:), allocatable eq_module::eq_pinch_v_x1
 
real(8), dimension(:), allocatable eq_module::eq_pinch_v_x2
 
real(8), dimension(:), allocatable eq_module::eq_pinch_v_x3
 
real(8), dimension(:), allocatable eq_module::eq_pinch_v_x4
 
real(8), dimension(:), allocatable eq_module::eq_pinch_v_x5
 
character(len=100), dimension(:), allocatable eq_module::eq_dens_file
 
character(len=100), dimension(:), allocatable eq_module::eq_temp_file
 
character(len=100), dimension(:), allocatable eq_module::eq_flow_file
 File names for density, temperature and flow input files. More...
 
character(len=100), dimension(:), allocatable eq_module::eq_dens_diff_file
 
character(len=100), dimension(:), allocatable eq_module::eq_flow_diff_file
 
character(len=100), dimension(:), allocatable eq_module::eq_t_diff_file
 
character(len=100), dimension(:), allocatable eq_module::eq_pinch_v_file
 File names for particle, momentum, heat diffusivity, and particle pinch. More...
 
integer, dimension(:), allocatable eq_module::eq_fg_temp_shape
 
integer, dimension(:), allocatable eq_module::eq_fg_flow_shape
 
integer, dimension(:), allocatable eq_module::eq_fg_flow_type
 
character(len=100), dimension(:), allocatable eq_module::eq_fg_temp_file
 
character(len=100), dimension(:), allocatable eq_module::eq_fg_flow_file
 
real(8), dimension(:), allocatable eq_module::eq_fg_temp_v1
 
real(8), dimension(:), allocatable eq_module::eq_fg_temp_v2
 
real(8), dimension(:), allocatable eq_module::eq_fg_temp_v3
 
real(8), dimension(:), allocatable eq_module::eq_fg_temp_x1
 
real(8), dimension(:), allocatable eq_module::eq_fg_temp_x2
 
real(8), dimension(:), allocatable eq_module::eq_fg_temp_x3
 
real(8), dimension(:), allocatable eq_module::eq_fg_flow_v1
 
real(8), dimension(:), allocatable eq_module::eq_fg_flow_v2
 
real(8), dimension(:), allocatable eq_module::eq_fg_flow_v3
 
real(8), dimension(:), allocatable eq_module::eq_fg_flow_x1
 
real(8), dimension(:), allocatable eq_module::eq_fg_flow_x2
 
real(8), dimension(:), allocatable eq_module::eq_fg_flow_x3
 
integer, dimension(:), allocatable eq_module::eq_mk_temp_shape
 
integer, dimension(:), allocatable eq_module::eq_mk_flow_shape
 
integer, dimension(:), allocatable eq_module::eq_mk_flow_type
 
character(len=100), dimension(:), allocatable eq_module::eq_mk_temp_file
 
character(len=100), dimension(:), allocatable eq_module::eq_mk_flow_file
 
real(8), dimension(:), allocatable eq_module::eq_mk_temp_v1
 
real(8), dimension(:), allocatable eq_module::eq_mk_temp_v2
 
real(8), dimension(:), allocatable eq_module::eq_mk_temp_v3
 
real(8), dimension(:), allocatable eq_module::eq_mk_temp_x1
 
real(8), dimension(:), allocatable eq_module::eq_mk_temp_x2
 
real(8), dimension(:), allocatable eq_module::eq_mk_temp_x3
 
real(8), dimension(:), allocatable eq_module::eq_mk_flow_v1
 
real(8), dimension(:), allocatable eq_module::eq_mk_flow_v2
 
real(8), dimension(:), allocatable eq_module::eq_mk_flow_v3
 
real(8), dimension(:), allocatable eq_module::eq_mk_flow_x1
 
real(8), dimension(:), allocatable eq_module::eq_mk_flow_x2
 
real(8), dimension(:), allocatable eq_module::eq_mk_flow_x3
 
integer, parameter eq_module::eq_mid_r_npsi =50
 For poloidal flux -> midplane R function. Number of evaluation points. More...
 
real(8), dimension(eq_mid_r_npsi) eq_module::eq_mid_r_psi = 0D0
 For poloidal flux -> midplane R function. Function data. More...
 
real(8) eq_module::eq_mid_r_dp = 0D0
 
real(8), parameter eq_module::epsil_psi = 1D-5
 
integer, parameter eq_module::ftn_lin_n =1000
 
logical, parameter eq_module::use_ftn_lin =.true.
 
type(eq_ftn_type), dimension(0:ptl_nsp_max), target eq_module::eq_den
 
type(eq_ftn_type), dimension(0:ptl_nsp_max), target eq_module::eq_temp
 
type(eq_ftn_type), dimension(0:ptl_nsp_max), target eq_module::eq_flow
 
type(eq_ftn_type), dimension(0:ptl_nsp_max), target eq_module::eq_fg_temp
 
type(eq_ftn_type), dimension(0:ptl_nsp_max) eq_module::eq_dens_diff
 
type(eq_ftn_type), dimension(0:ptl_nsp_max) eq_module::eq_t_diff
 
type(eq_ftn_type), dimension(0:ptl_nsp_max) eq_module::eq_flow_diff
 
type(eq_ftn_type), dimension(0:ptl_nsp_max) eq_module::eq_pinch_v
 
integer, parameter ptl_module::ptl_nphase =6
 
integer, parameter ptl_module::ptl_nphase2 =12
 
integer, parameter ptl_module::ptl_nconst =3
 
integer ptl_module::ptl_isp
 
integer ptl_module::ptl_nsp =1
 
integer, parameter ptl_module::num_shift_ie_opts = 10
 
integer, parameter ptl_module::index_shift_ie_max_nthreads = 1
 
integer, parameter ptl_module::index_shift_ie_use_alltoall = 2
 
integer, parameter ptl_module::index_shift_ie_use_hs_barrier0 = 3
 
integer, parameter ptl_module::index_shift_ie_large_limit = 4
 
integer, parameter ptl_module::index_shift_ie_handshake = 5
 
integer, parameter ptl_module::index_shift_ie_use_hs_barrier1 = 6
 
integer, parameter ptl_module::index_shift_ie_use_sendrecv = 7
 
integer, parameter ptl_module::index_shift_ie_all_sendrecv = 8
 
integer, parameter ptl_module::index_shift_ie_use_isend = 9
 
integer, parameter ptl_module::index_shift_ie_use_rsend = 10
 
integer, parameter ptl_module::use_def_shift_ie_opt = -2
 
integer, parameter ptl_module::true_shift_ie_opt = 1
 
integer, parameter ptl_module::false_shift_ie_opt = 0
 
real(8), dimension(0:ptl_nsp_max) ptl_module::ptl_mass = 0D0
 
real(8), dimension(0:ptl_nsp_max) ptl_module::ptl_charge = 0D0
 
real(8), dimension(0:ptl_nsp_max) ptl_module::ptl_c_m = 0D0
 
real(8), dimension(0:ptl_nsp_max) ptl_module::ptl_c2_2m = 0D0
 
type(species_type), dimension(0:ptl_nsp_max), target ptl_module::spall_global
 
integer ptl_module::ptl_enum_save
 
integer ptl_module::ptl_tracer_n_save = 0
 
type(ptl_type_aosoa), dimension(:), allocatable ptl_module::ptl_iphase_save
 
integer ptl_module::ptl_inum_save = 0
 
real(8) ptl_module::ptl_special_r = 1.95D0
 Start R for particle in single particle sim. (sml_special==1) More...
 
real(8) ptl_module::ptl_special_z = 0D0
 Start Z for particle in single particle sim. (sml_special==1) More...
 
real(8) ptl_module::ptl_special_phi = 0D0
 Start phi for particles in single particle sim. (sml_special==1 and 4) More...
 
real(8) ptl_module::ptl_special_en_ev = 7205
 Energy of particles with sml_special==(1,4) More...
 
real(8) ptl_module::ptl_special_pitch = 1D0
 Pitch v_parallel/v of particles with sml_special==(1,4) (at B=B_min with sml_special=4) More...
 
real(8) ptl_module::ptl_special_poin_phi = 0D0
 Toroidal angle for Poincare plot (sml_special==4) More...
 
integer ptl_module::ptl_special_npsi = 6
 Number of flux-surfaces on which to load particles (ptl_special==4) More...
 
real(8) ptl_module::ptl_special_psi_min = 0.94D0
 Min. psi of flux-surface on which to load particles (ptl_special==4) More...
 
real(8) ptl_module::ptl_special_psi_max = 0.99D0
 Max. psi of flux-surface on which to load particles (ptl_special==4) More...
 
integer ptl_module::ptl_special_n = 100
 sml_special==3 More...
 
real(8), dimension(0:ptl_nsp_max) ptl_module::ptl_mass_au =2D0
 
real(8), dimension(0:ptl_nsp_max) ptl_module::ptl_charge_eu =1D0
 
integer, parameter ptl_module::pir =1
 
integer, parameter ptl_module::piz =2
 
integer, parameter ptl_module::pip =3
 
integer, parameter ptl_module::pirho =4
 
integer, parameter ptl_module::pim =1
 
integer, parameter ptl_module::piw1 =5
 
integer, parameter ptl_module::piw2 =6
 
integer, parameter ptl_module::piw0 =2
 
integer, parameter ptl_module::pif0 =3
 
integer, parameter ptl_module::pig2 =4
 
character(len=20), dimension(0:ptl_nsp_max) ptl_module::ptl_marker_type
 
character(len=20), dimension(0:ptl_nsp_max) ptl_module::ptl_f_analytic_shape
 
character(len=20), dimension(0:ptl_nsp_max) ptl_module::ptl_weight_evo_eq
 
logical, dimension(0:ptl_nsp_max) ptl_module::ptl_dynamic_f0
 
integer diag_module::diag_tracer_period = 100
 
integer diag_module::diag_tracer_n = 1
 
integer diag_module::diag_tracer_sp = 1
 
logical diag_module::diag_1d_on = .true.
 
integer diag_module::diag_1d_period = 10
 
integer diag_module::diag_neutral_period = 100
 The number of discrete timesteps between writing the neutral output files. Should generally be equal to neu_background_period. More...
 
integer diag_module::diag_ps_reset_period =10
 
real(8) diag_module::diag_ps_pin =0.8
 
real(8) diag_module::diag_ps_pout =0.81
 
logical smooth_module::smooth_pol_efield = .false.
 
integer smooth_module::smooth_pol_width = 3
 
real(kind=8) smooth_module::smooth_pol_d0 = 0.1
 
logical smooth_module::smooth_fourier_filt_on = .false.
 Switch for additional SOL Fourier filter. More...
 
real(kind=8) smooth_module::smooth_sol_filt_lp0 = 0.20D0
 Poloidal Fourier filter for SOL: Window function --> distance from divertor plate in m. More...
 
real(kind=8) smooth_module::smooth_sol_filt_width = 0.05D0
 Poloidal Fourier filter for SOL: Window function --> decay length in m. More...
 
integer smooth_module::smooth_fourier_filt_maxm = 30
 Maximal poloidal mode number for SOL Fourier filter. More...
 
integer smooth_module::smooth_fourier_filt_minm = 0
 Maximal poloidal mode number for SOL Fourier filter. More...
 
logical smooth_module::smooth_hyp_vis_rad_on = .false.
 Switch for 2nd order accurate 4th derivative radial (grad(psi)) hyperviscosity. More...
 
real(kind=8) smooth_module::smooth_hyp_vis_rad = 0.1D0
 Strength of the radial hyperviscosity; sml_dt/smooth_hyp_vis_rad corresponds to the decay time of a mode with k_x=pi/dx, where dx is the local mesh size. More...
 
real(kind=8) smooth_module::smooth_hyp_vis_rad_priv = 1.0D0
 Strength of the radial hyperviscosity in the private region; sml_dt/smooth_hyp_vis_rad corresponds to the decay time of a mode with k_x=pi/dx, where dx is the local mesh size. More...
 
logical smooth_module::smooth_hyp_vis_parallel_on = .false.
 Switch for 2nd order accurate 4th derivative field-aligned hyperviscosity. More...
 
real(kind=8) smooth_module::smooth_hyp_vis_parallel = 1.0D0
 Strength of the parallel hyperviscosity; sml_dt/smooth_hyp_vis_parallel corresponds to the decay time of a mode with k_x=pi/dx, where dx is the local mesh size. More...
 
integer, parameter src_module::src_nmax =4
 
integer, dimension(0:ptl_nsp_max) src_module::src_narea = 1
 
integer src_module::src_niter = 10
 
real(8), dimension(src_nmax, 0:ptl_nsp_max) src_module::src_pin = 0D0
 
real(8), dimension(src_nmax, 0:ptl_nsp_max) src_module::src_pout = -1D0
 
real(8), dimension(src_nmax, 0:ptl_nsp_max) src_module::src_decay_width = 0.01
 
real(8), dimension(src_nmax, 0:ptl_nsp_max) src_module::src_heat_power = 0D0
 
real(8), dimension(src_nmax, 0:ptl_nsp_max) src_module::src_torque = 0D0
 
real(8), dimension(src_nmax, 0:ptl_nsp_max) src_module::src_z_begin = 0D0
 
real(8), dimension(src_nmax, 0:ptl_nsp_max) src_module::src_r_begin = 0D0
 
real(8), dimension(src_nmax, 0:ptl_nsp_max) src_module::src_radius =0.1
 
integer, dimension(src_nmax, 0:ptl_nsp_max) src_module::src_special_mode = -1
 
integer, dimension(src_nmax, 0:ptl_nsp_max) src_module::src_ishape = -1
 
integer src_module::src_period = 10
 
integer src_module::src_nsubsection = 10
 
real(8), dimension(0:ptl_nsp_max) src_module::src_pin1 = 0D0
 
real(8), dimension(0:ptl_nsp_max) src_module::src_pout1 = 0.01
 
real(8), dimension(0:ptl_nsp_max) src_module::src_decay_width1 = 0.01
 
real(8), dimension(0:ptl_nsp_max) src_module::src_heat_power1 = 0D0
 
real(8), dimension(0:ptl_nsp_max) src_module::src_torque1 = 0D0
 
real(8), dimension(0:ptl_nsp_max) src_module::src_z_begin1 = 0D0
 
real(8), dimension(0:ptl_nsp_max) src_module::src_r_begin1 = 0D0
 
real(8), dimension(0:ptl_nsp_max) src_module::src_radius1 =0.1
 
real(8), dimension(0:ptl_nsp_max) src_module::src_pin2 = 1.04
 
real(8), dimension(0:ptl_nsp_max) src_module::src_pout2 = 1.05
 
real(8), dimension(0:ptl_nsp_max) src_module::src_decay_width2 = 0.01
 
real(8), dimension(0:ptl_nsp_max) src_module::src_heat_power2 = 0D0
 
real(8), dimension(0:ptl_nsp_max) src_module::src_torque2 = 0D0
 
real(8), dimension(0:ptl_nsp_max) src_module::src_z_begin2 = 0D0
 
real(8), dimension(0:ptl_nsp_max) src_module::src_r_begin2 = 0D0
 
real(8), dimension(0:ptl_nsp_max) src_module::src_radius2 =0.1
 
real(8), dimension(0:ptl_nsp_max) src_module::src_pin3 = 0D0
 
real(8), dimension(0:ptl_nsp_max) src_module::src_pout3 = -1D0
 
real(8), dimension(0:ptl_nsp_max) src_module::src_decay_width3 = 0.01
 
real(8), dimension(0:ptl_nsp_max) src_module::src_heat_power3 = 0D0
 
real(8), dimension(0:ptl_nsp_max) src_module::src_torque3 = 0D0
 
real(8), dimension(0:ptl_nsp_max) src_module::src_z_begin3 = 0D0
 
real(8), dimension(0:ptl_nsp_max) src_module::src_r_begin3 = 0D0
 
real(8), dimension(0:ptl_nsp_max) src_module::src_radius3 =0.1
 
real(8), dimension(0:ptl_nsp_max) src_module::src_pin4 = 0D0
 
real(8), dimension(0:ptl_nsp_max) src_module::src_pout4 = -1D0
 
real(8), dimension(0:ptl_nsp_max) src_module::src_decay_width4 = 0.01
 
real(8), dimension(0:ptl_nsp_max) src_module::src_heat_power4 = 0D0
 
real(8), dimension(0:ptl_nsp_max) src_module::src_torque4 = 0D0
 
real(8), dimension(0:ptl_nsp_max) src_module::src_z_begin4 = 0D0
 
real(8), dimension(0:ptl_nsp_max) src_module::src_r_begin4 = 0D0
 
real(8), dimension(0:ptl_nsp_max) src_module::src_radius4 =0.1
 
integer, dimension(0:ptl_nsp_max) src_module::src_special_mode1 =0
 
integer, dimension(0:ptl_nsp_max) src_module::src_ishape1 =1
 
integer, dimension(0:ptl_nsp_max) src_module::src_special_mode2 =0
 
integer, dimension(0:ptl_nsp_max) src_module::src_ishape2 =1
 
integer, dimension(0:ptl_nsp_max) src_module::src_special_mode3 =0
 
integer, dimension(0:ptl_nsp_max) src_module::src_ishape3 =1
 
integer, dimension(0:ptl_nsp_max) src_module::src_special_mode4 =0
 
integer, dimension(0:ptl_nsp_max) src_module::src_ishape4 =1
 
integer src_module::src_narea_e = 0
 
real(8) src_module::src_pin1_e = 0D0
 
real(8) src_module::src_pout1_e = 0.01
 
real(8) src_module::src_decay_width1_e = 0.01
 
real(8) src_module::src_heat_power1_e = 0D0
 
real(8) src_module::src_torque1_e = 0D0
 
real(8) src_module::src_z_begin1_e = 0D0
 
real(8) src_module::src_r_begin1_e = 0D0
 
real(8) src_module::src_pin2_e = 1.04
 
real(8) src_module::src_pout2_e = 1.05
 
real(8) src_module::src_decay_width2_e = 0.01
 
real(8) src_module::src_heat_power2_e = 0D0
 
real(8) src_module::src_torque2_e = 0D0
 
real(8) src_module::src_z_begin2_e = 0D0
 
real(8) src_module::src_r_begin2_e = 0D0
 
real(8) src_module::src_pin3_e = 0D0
 
real(8) src_module::src_pout3_e = -1D0
 
real(8) src_module::src_decay_width3_e = 0.01
 
real(8) src_module::src_heat_power3_e = 0D0
 
real(8) src_module::src_torque3_e = 0D0
 
real(8) src_module::src_z_begin3_e = 0D0
 
real(8) src_module::src_r_begin3_e = 0D0
 
real(8) src_module::src_pin4_e = 0D0
 
real(8) src_module::src_pout4_e = -1D0
 
real(8) src_module::src_decay_width4_e = 0.01
 
real(8) src_module::src_heat_power4_e = 0D0
 
real(8) src_module::src_torque4_e = 0D0
 
real(8) src_module::src_z_begin4_e = 0D0
 
real(8) src_module::src_r_begin4_e = 0D0
 
integer src_module::src_special_mode1_e =0
 
integer src_module::src_ishape1_e =1
 
integer src_module::src_special_mode2_e =0
 
integer src_module::src_ishape2_e =1
 
integer src_module::src_special_mode3_e =0
 
integer src_module::src_ishape3_e =1
 
integer src_module::src_special_mode4_e =0
 
integer src_module::src_ishape4_e =1
 
logical src_module::src_pellet_on = .false.
 On/off switch for pellet ablation. More...
 
integer, parameter ecuyer_random::dp = SELECTED_REAL_KIND(14, 60)
 
integer, save ecuyer_random::s1 = 1234
 
integer, save ecuyer_random::s2 = -4567
 
integer, save ecuyer_random::s3 = 7890
 
type(seeds_type), dimension(:), allocatable random_xgc::sv
 
real(kind=8), dimension(:,:), allocatable lim_module::lim_r
 
real(kind=8), dimension(:,:), allocatable lim_module::lim_z
 
real(kind=8), dimension(:,:), allocatable lim_module::lim_weight
 
real(kind=8), dimension(:,:), allocatable lim_module::lim_en
 
real(kind=8), dimension(:), allocatable lim_module::lim_org_r
 
real(kind=8), dimension(:), allocatable lim_module::lim_org_z
 
real(kind=8), dimension(:,:), allocatable lim_module::lim_ds
 
real(kind=8), dimension(:,:), allocatable lim_module::lim_psi
 
real(kind=8) lim_module::lim_dz
 
real(kind=8) lim_module::lim_zmin
 
real(kind=8) lim_module::lim_zmax
 
real(kind=8) lim_module::lim_r0_down
 
real(kind=8) lim_module::lim_r0_up
 
real(kind=8) lim_module::lim_psi_min
 
integer, dimension(2) lim_module::lim_zindex
 
integer lim_module::lim_store_mz
 
integer lim_module::lim_mdata
 
integer, dimension(2) lim_module::lim_store_mz_rl
 
integer neu_module::neu_num =10000
 Number of neutral particles per thread per wall segment. If neu_degas2=.true., this is the number of neutral particles per thread. More...
 
integer neu_module::neu_istep_max =20000
 Maximum number of neutral push time steps. More...
 
integer neu_module::neu_accum_time =0
 Integer number of timesteps over which the total number of recycling ions have been building up on the wall as neu_weight_sum_lost. More...
 
integer neu_module::neu_tot_accum_time =0
 Integer number of timesteps over which the recycling profile has been building over neu_background_period timesteps. More...
 
logical neu_module::neu_enforce_no_neutral =.false.
 Forced off-switch for the neutral recycling routine (needed for radiation cooling!) More...
 
logical neu_module::neu_adjust_n0 =.true.
 whether to update the base neutral density. If true, a provisional ionization rate (everywhere proportional to the local neutral density) is rescaled to match the global particle sink from the sheath module times neu_recycle_rate. .false. fixed n0, .true. varying n0 - neu_recycle_rate should be specified. More...
 
real(kind=8) neu_module::neu_n0 =5.0D17
 m^-3 -> nomalized unit, Realistic initial value for neu_base_den (=base neutral density). For cases where neu_adjust_n0=false, this provides a baseline density to use. When neu_adjust_n0=true, neu_base_den is still calculated and reported in the stdout log, but has no effect on the physics. More...
 
real(kind=8) neu_module::neu_temp0 =3D0
 Neutral temperature boundary condition. More...
 
real(kind=8) neu_module::neu_dt
 Timestep size for the neutral Monte Carlo steps. If not provided, a default value of 2e-3*sml_dt/sqrt(neu_temp0*1e-3) is used. More...
 
real(kind=8) neu_module::neu_base_den
 Base multiplier for the neutral density. Uses neu_n0. More...
 
logical neu_module::neu_degas2 =.false.
 Use DEGAS2 for the neutral Monte Carlo calculation. More...
 
integer neu_module::neu_ebin_num =10
 Number of energy bins to use for neutral source. More...
 
real(kind=8) neu_module::neu_ebin_min =3.0
 Lower bound of the smallest energy bin (in eV) More...
 
real(kind=8) neu_module::neu_ebin_max =13.0
 Lower bound of the smallest energy bin (in eV) More...
 
logical neu_module::neu_ebin_log = .false.
 Whether recycling energy bins are logarithmcially spaced. More...
 
real(kind=8) neu_module::neu_ebin_delta
 Number of energy bins to use for neutral source. More...
 
integer neu_module::neu_d2_ran_k =100
 The ran_k parameter from DEGAS2's random.hweb. Unlikely to change. More...
 
integer neu_module::neu_d2_nsp_plas = 2
 Number of plasma species in the DEGAS2 problem file. Unlikely to change without more data. More...
 
integer neu_module::neu_d2_nsp_neut = 1
 Number of neutral species in the DEGAS2 problem file, including the geometric dummy species '0'. The first nontrivial species is the one whose density and temperature will be calculated. More...
 
integer, dimension(:), allocatable neu_module::neu_d2_sp_map
 Mapping of species indexing between XGC and DEGAS2. More...
 
integer neu_module::neu_d2_first_wall_idx
 Index of wall_nodes_ordered that the DEGAS2 setup uses as the first one. More...
 
real(kind=8) neu_module::neu_gas_puff_source = -1.0
 Source of additional neutrals in particles/s. Disables neu_adjust_n0. Also, puffed neutrals enter at the lowest energy bin. More...
 
integer neu_module::neu_gas_puff_segment = -1
 Index of wall_nodes_ordered from which neu_gas_puff_source is produced. More...
 
real(kind=8), dimension(:), pointer neu_module::neu_weight_sum_lost
 Global number of ions lost to the wall. More...
 
real(kind=8) neu_module::neu_weight_lost_max = 5D23
 upper cutoff on the number of lost particles More...
 
real(kind=8) neu_module::neu_lost_rate_max =5D23
 upper cutoff on the particle loss rate (particles/sec) More...
 
real(kind=8) neu_module::neu_recycle_rate =0.9D0
 Fraction of lost ions that are recycled as neutrals. The ions lost to the wall as calculated in the sheath module are used to determine the global particle sink. Neutrals are produced at a rate of neu_recycle_rate*neu_sum_weight_lost (in particles per second). Has no effect if neu_adjust_n0=false. More...
 
real(kind=8) neu_module::neu_theta_x = -99D0
 
real(kind=8) neu_module::neu_peak_theta =-99D0
 Poloidal angle at which the neutral source is peak for neu_source_match_flux=.false. More...
 
real(kind=8) neu_module::neu_delta_n =10D0
 Multiple of base neutral density at the peak position. When neu_source_match_flux=.false., determines the shape of the poloidal neutral source distribution. At large neu_delta_n, it approaches a Gaussian. neu_delta_n=1.0 corresponds to a uniform neutral source. More...
 
real(kind=8) neu_module::neu_delta_theta =0.5235987756
 Width of the peak of the neutral source for neu_source_match_flux=.false. - 30/180 * pi. More...
 
real(kind=8) neu_module::neu_inpsi =0.7D0
 Inner boundary for neutral fueling calculation (normalized pol. flux) More...
 
integer neu_module::neu_background_period =500
 Period between subsequent updates of the background neutral distribution function in ion time steps. In any case, the density renormalization and source rates are recalculated every timestep for a fixed normalized neutral profile. More...
 
logical neu_module::neu_exclude_private =.false.
 Exclude the privat region from neutral recycling. More...
 
real(kind=8), dimension(:), allocatable neu_module::neu_ebins
 
real(kind=8), dimension(:), allocatable neu_module::neu_wall_source
 Source of neutrals around limiter. More...
 
real(kind=8), dimension(:,:), allocatable neu_module::neu_wall_source_ebins
 Source of neutrals around limiter. More...
 
real(kind=8), dimension(:), pointer neu_module::neu_weight_wall_lost
 Local number of ions lost to the wall. More...
 
real(kind=8), dimension(:,:), pointer neu_module::neu_weight_lost_ebins
 Local number of ions lost to the wall. More...
 
real(kind=8), dimension(:,:), allocatable neu_module::neu_norm_baseden_ebins
 Holds normalized neutral density from ion flux to wall, energy binned. More...
 
real(kind=8), dimension(:,:), allocatable neu_module::neu_d2_n0
 DEGAS2-predicted neutral density. More...
 
real(kind=8), dimension(:,:,:), allocatable neu_module::neu_d2_v0
 DEGAS2-predicted neutral velocity. More...
 
real(kind=8), dimension(:,:), allocatable neu_module::neu_d2_t0
 DEGAS2-predicted neutral temperature. More...
 
real(kind=8), dimension(:,:,:), allocatable neu_module::neu_d2_sources
 DEGAS2-predicted sources for each species from neutral interactions. More...
 
real(kind=8), dimension(:,:), allocatable neu_module::neu_d2_sourcetot
 DEGAS2-predicted sources integrated over whole volume. More...
 
integer neu_module::neu_d2_ran_idx
 
real(kind=8), dimension(:), allocatable neu_module::neu_d2_rand_array
 An array for random numbers in DEGAS2. More...
 
integer neu_module::neu_nnode
 Number of nodes in neutral solution volume. Currently gridnnode. More...
 
integer neu_module::neu_nbirth
 Number of birth locations. Currently gridnwall. More...
 
logical neu_module::neu_source_match_flux =.true.
 If true, the neutral source around the limiter is determined from the local ion sink. If false, the neutral source is given an analytic poloidal dependence. More...
 
real(kind=8), dimension(:), allocatable neu_module::neu_rbirth
 
real(kind=8), dimension(:), allocatable neu_module::neu_zbirth
 (R,Z) coordinates of the neutral birth surface More...
 
real(kind=8), dimension(:), pointer neu_module::neu_node_dens
 Normalized neutral density. More...
 
real(kind=8), dimension(:), pointer neu_module::neu_node_temp
 Neutral temperature. More...
 
real(kind=8), dimension(:), allocatable neu_module::neu_node_wsum
 Weight sum for neutral density calculation. More...
 
real(kind=8), dimension(:), allocatable neu_module::neu_node_esum
 Weight sum for avg. neutral energy calculation. More...
 
real(kind=8), dimension(:), allocatable neu_module::neu_node_varsum
 Weight sum for weight variance calculation. More...
 
real(kind=8), dimension(:), allocatable neu_module::neu_node_numsum
 Weight sum for neutral number calculation. More...
 
real(kind=8), dimension(:), allocatable neu_module::neu_node_vol
 Neutral cell volume. More...
 
real(kind=8), dimension(:), allocatable neu_module::neu_node_flow
 Neutral bulk flow. More...
 
real(kind=8), dimension(:), allocatable neu_module::neu_node_vsum
 Weight sum for neutral bulk flow calculation. More...
 
real(kind=8), dimension(:), allocatable neu_module::neu_node_relstd
 Neutral weight standard deviation. More...
 
character(len=:), allocatable, public input_module::input_string
 
logical cpp_input_module::f0_upsample = .false.
 Whether to upsample empty velocity cells before grid operations. More...
 
logical cpp_input_module::f0_upsample_skip_full_bins = .false.
 Whether to skip upsampling bins that are already filled enough to do the pseudo-inverse interpolation, only used if f0_upsample = .true. More...
 
integer cpp_input_module::f0_upsample_rate = 1
 Timesteps between subsequent upsamples, only used if f0_upsample = .true. More...
 
integer cpp_input_module::f0_upsample_tile_size = 2
 Bin size on the velocity space grid in cells for f0 upsampling, only used if f0_upsample = .true. More...
 
integer cpp_input_module::f0_upsample_cell_target = 1
 Target minimum # of ptl of all velocity cells for f0 upsampling, only used if f0_upsample = .true. More...
 
integer cpp_input_module::f0_upsample_corner_cell_target = 3
 Target minimum # of ptl of all corner velocity cells for f0 upsampling, only used if f0_upsample = .true. More...
 
logical cpp_input_module::f0_velocity_interp_use_pseudo_inv = .false.
 Whether to use pseudo-inverse interpolation between particles and velocity grid. More...
 
logical cpp_input_module::f0_velocity_interp_force_pseudo_inv = .false.
 Whether to use pseudo-inverse velocity interpolation even for nodes where the velocity grid is not filled, only used if f0_velocity_interp_use_pseudo_inv = .true. More...
 
integer cpp_input_module::f0_velocity_interp_pseudo_inv_order = 2
 1 (linear) or 2 (quadratic) pseudo-inverse interpolation, only used if f0_velocity_interp_use_pseudo_inv = .true. More...
 
logical cpp_input_module::f0_velocity_interp_pseudo_inv_particles_to_grid_petsc = .false.
 Whether the particles -> velocity grid interpolation should be done without or with (probably slower) PETSc, only used if f0_velocity_interp_use_pseudo_inv = .true. More...
 
logical cpp_input_module::f0_velocity_interp_pseudo_inv_delta_grid = .true.
 Whether to only map delta-grid weights delta_w1(f_new-f_old) [if .true.] or full weights w1_new(f_new) [if .false.] with pseudo-inverse velocity interpolation, only used if f0_velocity_interp_use_pseudo_inv = .true.. If using the pseudo-inverse for coarse-graining it should be set to .false., otherwise the mapping has no effect. More...
 

Macro Definition Documentation

◆ DIR_INQ

#define DIR_INQ   FILE

Function/Subroutine Documentation

◆ simd_aind4()

integer function simd_aind4 ( integer, intent(in)  i)

◆ simd_aind8()

integer function simd_aind8 ( integer(8), intent(in)  i)

◆ simd_sind4()

integer function simd_sind4 ( integer, intent(in)  i)

◆ simd_sind8()

integer function simd_sind8 ( integer(8), intent(in)  i)