XGCa
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Attributes | List of all members
sml_module Module Reference

Public Attributes

logical, parameter reduced_deltaf = .false.
 Equivalent to the preprocessor flag for now. More...
 
logical, parameter separate_n0 = .true.
 
integer sml_comm =MPI_COMM_NULL
 Global MPI communicator within an XGC instance. More...
 
integer 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_comm_null =MPI_COMM_NULL
 MPI_COMM_NULL communicator for adios posix method. More...
 
integer sml_comm_self =MPI_COMM_NULL
 MPI_COMM_SELF communicator for single-process adios2 outputs. More...
 
integer sml_comm_color =-1
 Communicator color (used for mpi split/code-coupling). Set by my_mpi_init call. More...
 
integer sml_mype =-1
 Processor index, 0 - (# of MPI ranks -1) More...
 
integer sml_totalpe =-1
 Total number of processors (must be > (2*sml_grid_nrho)*sml_nphi_total) More...
 
integer sml_nthreads =-1
 Total number of OpenMP threads per process. More...
 
integer sml_mstep = 3000
 Total number of time steps for simulation. (simulation time) = dt*mstep. More...
 
integer sml_istep = 0
 Current time step number (counting only the current simulation) More...
 
integer sml_gstep = 0
 Global time step (counting the current + all previous runs in case of restarts) More...
 
real(8) sml_time = 0D0
 Simulation time in seconds. More...
 
real(8) sml_dt = 1D-3
 Time step size in units of the toroidal ion transit time \(\tau_T = 2\pi R_{ax} / \sqrt{2 E_{norm}/m_i}\), where \(E_{norm}\) is a reference energy set with sml_en_order_keV (in keV) \(\Rightarrow\,E_{norm} = \text{sml_en_order_keV}\, 10^{3} e\). The default value of sml_en_order is 0.2 keV. More...
 
logical 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_drift_on =.true.
 Whether drifts are active in the equations of motion. Set .false. for tracing field lines or Poincare plots. More...
 
logical 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_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_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_marker_min_temp = 1D1
 minimum temperature of markers (only if sml_flat_marker=.false.) More...
 
real(8) sml_marker_temp_factor2 =1D0
 perp temperature factor (only if sml_flat_marker=.false.) More...
 
real(8) sml_marker_temp_factor3 =1D0
 low mu fill temperature (only if sml_flat_marker=.false.) More...
 
real(8) 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_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_flat_marker_decay_start1 =3.5D0
 Normalized (to \(v_{th}\)) velocity at which the marker distribution decays exponentially. More...
 
real(8) sml_flat_marker_cutoff1 =4D0
 Normalized (to \(v_{th}\)) parallel velocity cutoff of flat marker distribution. More...
 
real(8) sml_flat_marker_width1 =0.5D0
 Decay length of flat marker distribution in the normalized (to \(v_{th}\)) parallel velocity. More...
 
real(8) sml_flat_marker_decay_start2 =3.5D0
 Like sml_flat_marker_decay_start1 but for the perpendicular velocity. More...
 
real(8) sml_flat_marker_cutoff2 =4D0
 Like sml_flat_marker_cutoff1 but for the perpendicular velocity. More...
 
real(8) sml_flat_marker_width2 =0.5D0
 Like sml_flat_marker_width1 but for the perpendicular velocity. More...
 
logical 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_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_max_loading_factor =1D1
 Upper limit for loading factor (default is conservative, might need higher value) More...
 
real(kind=8) sml_load_nptl =-1D0
 Avg. number of ptl/vertex. More...
 
real(kind=8) sml_load_den_uni =-1D0
 Marker density for uniform loading. More...
 
logical 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_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_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_read_eq =.true.
 Read B-field profile from an eqd-file. More...
 
logical sml_read_eq_m3dc1 =.false.
 Read B-field profile from M3D-C1 output file –> overrides sml_read_eq. More...
 
logical sml_field_aligned_initial =.false.
 Use field aligned initial condition. More...
 
real(8), parameter sml_2pi = 6.2831853071795862D0
 2 Pi More...
 
real(8), parameter sml_pi = 3.1415926535897931D0
 Pi. More...
 
real(8), parameter sml_sqrtpi = 1.7724538509055158D0
 Sqrt(Pi) More...
 
real(8), parameter sml_sqrt2pi = 2.5066282746310002D0
 Sqrt(2Pi) More...
 
real(8) 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_e_charge =1.6022D-19
 elementary charge in C (MKS) More...
 
real(8), parameter sml_epsilon0 =8.8542D-12
 permittivity of free space in F/m (MKS) More...
 
real(8), parameter sml_prot_mass =1.6720D-27
 proton mass in kg (MKS) More...
 
real(8), parameter sml_elec_mass =9.1094D-31
 electron mass in kg (MKS) More...
 
real(8), parameter sml_mu0 =1.2566370614D-6
 Magnetic vacuum permeability in H/m (MKS) More...
 
real(8), parameter sml_ev2j =sml_e_charge
 Conversion factor from eV to J. More...
 
real(8), parameter sml_j2ev =1D0/sml_e_charge
 Conversion factor from J to eV. More...
 
integer, parameter sml_nrk = 2
 Order of Runge-Kutta time integration of particles + fields. More...
 
logical sml_restart =.false.
 
logical restarting
 
logical simulation
 
logical switch
 
logical false
 
logical for
 
logical new
 
logical run
 
logical true
 
logical restart
 
real(8) 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_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...
 
integer sml_monte_num =10000
 Number of samples for Monte-Carlo volume calculation. It should be greater than particle number for correct simulation. More...
 
real(8) sml_bd_min_r =1D-4
 Simulation boundary in R-Z space (in m) More...
 
real(8) sml_bd_max_r =1D3
 Simulation boundary in R-Z space (in m) More...
 
real(8) sml_bd_min_z =-1D3
 Simulation boundary in R-Z space (in m) More...
 
real(8) sml_bd_max_z =1D3
 Simulation boundary in R-Z space (in m) More...
 
real(8) sml_marker_den =-1D0
 Marker density. Used for (uniform) loading and initial weight calculation. More...
 
real(8), dimension(:,:),
allocatable 
sml_marker_den2
 Triangle based marker density. More...
 
real(8) 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_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_outpsi_priv1 =0.97D0
 Outer boundary (for Poisson solver), normalized poloidal flux. More...
 
real(8) sml_outpsi_priv2 =2.0D0
 Outer boundary (for Poisson solver, 2nd private region), normalized poloidal flux. More...
 
real(8) sml_en_order_kev =0.2D0
 Characteristic ion energy (keV) –> controls reference time (toroidal ion transit time) More...
 
real(8) sml_en_order =3.2044D-17
 (not an input) Characteristic ion energy in normalized unit More...
 
real(8) sml_tran =3.2D-5
 Torodial transit time of an ion with the characteristic energy. More...
 
integer sml_machine = -99
 Not used anymore. Left only for input file compatibility. Will be removed near future. More...
 
integer sml_special =0
 Switch for special simulation: (0) normal, (1) single particle simulation, (2) undefined, (3) undefined, (4) Poincare plot. More...
 
real(8) sml_bp_mult =1D0
 Artificial multiplication of poloidal B-field. More...
 
real(8) sml_bt_mult =1D0
 Artificial multiplication of toroidal B-field. More...
 
integer, parameter 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_nphi_total =1
 Number of poloidal planes (= toroidal grid size) More...
 
integer sml_wedge_n =1
 Simulate a wedge of 2pi/sml_wedge_n of the full torus. More...
 
integer 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_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_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_no_turb =.false.
 Set all non-axisymmetric field perturbations to zero (electromagnetic version only) More...
 
logical 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_00_efield =.true.
 Flux-surface averaged potential not used for calculating the electric field if .false. More...
 
logical sml_0m_efield =.true.
 The axisymmetric potential variation \(\langle \phi-\langle\phi\rangle\rangle_T\) is set to zero if .false. More...
 
logical sml_loop_voltage_on =.false.
 Switches the loop voltage current drive on/off. More...
 
real(8) 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_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_rhomax =1D-2
 Upper cutoff of the gyroradius grid (should be the gyroradius of the fastest ions of interest) More...
 
logical 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_tri_psi_weighting =.true.
 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_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_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_f0_grid_max_ptl_imbal =2D0
 Upper threshold for the particle load imbalance (typically ~1.3). More...
 
real(8) sml_f0_grid_min_ptl_imbal =1D0
 Lower threshold for the particle load imbalance. More...
 
real(8) sml_f0_grid_init_ptl_imbal =-1D0
 Initial particle load imbalance. More...
 
integer 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_symmetric_f0g =.false.
 Enforce axisymmetry only in f0g (used only in XGC1 fluid-kinetic hybrid method; -DHYB_EM=ON) More...
 
integer sml_f_source_period =1
 Run source routines (collisions, neutral recycling, etc.) every sml_f_source_period time steps. More...
 
real(8) sml_inv_f_source_period =1
 (Not an input) Inverse of sml_f_source_period More...
 
logical 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_node_file ="neo10.1.node"
 Unstructured mesh data: node-file. More...
 
character(len=65) sml_ele_file ="neo10.1.ele"
 Unstructured mesh data: ele-file. More...
 
character(len=65) sml_surf_file ="dummy.flx.aif"
 Unstructured mesh data: flx-file. More...
 
integer 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_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_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_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_plane_per_pe =0
 Number of poloidal planes per MPI rank (typically 1) More...
 
integer sml_pe_per_plane =0
 Number of MPI ranks per poloidal plane (>=2*sml_grid_nrho) More...
 
integer sml_adios_group =MPI_GROUP_EMPTY
 Adios MPI group. More...
 
integer sml_adios_comm =MPI_COMM_NULL
 Adios communicator. More...
 
logical adios_stage_restart = .FALSE.
 Enable/disable Adios stage mode for xgc.restart. More...
 
logical adios_stage_restartf0 = .FALSE.
 Enable/disable Adios stage mode for xgc.restartf0. More...
 
logical adios_stage_f0 = .TRUE.
 Enable/disable Adios stage mode for xgc.f0. More...
 
logical adios_stage_particle = .FALSE.
 Enable/disable Adios stage mode for xgc.particle. More...
 
integer adios_stage_f0_max = 10
 Maximum numbrer of steps for Adios xgc.f0 stage write. More...
 
logical adios_stage_f3d = .FALSE.
 Enable/disable Adios stage mode for xgc.f3d. More...
 
integer adios_stage_f3d_max = 10
 Maximum numbrer of steps for Adios xgc.f3d stage write. More...
 
logical adios_stage_escaped_ptls = .FALSE.
 Enable/disable Adios stage mode for xgc.escaped_ptls. More...
 
integer sml_plane_group =MPI_GROUP_EMPTY
 MPI group for all MPI ranks assigned to the same poloidal plane. More...
 
integer sml_plane_comm =MPI_COMM_NULL
 Communicator for all MPI ranks assigned to the same poloidal plane. More...
 
integer sml_plane_totalpe =0
 Total number of MPI ranks assigned to a poloidal plane. More...
 
integer sml_plane_mype =0
 MPI rank index within sml_plane_comm. More...
 
integer sml_plane_index =-1
 Index of the poloidal plane to which an MPI rank is assigned (0...sml_nphi_total-1) More...
 
integer sml_intpl_group =MPI_GROUP_EMPTY
 MPI group for all MPI ranks assigned to the same (R,Z) patch. More...
 
integer sml_intpl_comm =MPI_COMM_NULL
 Communicator for all MPI ranks assigned to the same (R,Z) patch (toroidal communication) More...
 
integer sml_intpl_totalpe =0
 Total number of MPI ranks within sml_intpl_comm. More...
 
integer sml_intpl_mype =0
 MPI rank index within sml_intpl_comm. More...
 
integer, dimension(:), allocatable sml_ksp_group
 MPI group for a subset of ranks on a plane used for PETSc KSP solves. More...
 
integer, dimension(:), allocatable sml_ksp_comm
 MPI communicator for a subset of ranks on a plane used for PETSc KSP solves. More...
 
integer sml_num_ksp = 1
 Number of communicators per plane for PETSc KSP solves. More...
 
integer sml_ksp_mype = -1
 MPI rank index within sml_ksp_comm. More...
 
integer sml_pe_per_ksp = 0
 Number of MPI ranks used for PETSc KSP solves. More...
 
logical sml_electron_on =.false.
 Whether to run with adiabatic (.false.) or kinetic (.true.) electrons. More...
 
real(8) sml_initial_deltaf_noise =1D-3
 Delta-f particle weights are initialized with this level of noise. More...
 
logical sml_zero_inner_bd =.false.
 If .true., use Dirichlet boundary condition \(\phi=0\) for axisymmetric Poisson solver. More...
 
integer 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_mode_select_n = 1
 Toroidal mode number for Fourier filter. More...
 
integer sml_mode_select_mmin = 0
 Lowest pol. mode number for Fourier filter. More...
 
integer sml_mode_select_mmax = 25
 Highest pol. mode number for Fourier filter. More...
 
integer sml_mode_select_nmin = 1
 Lowest numerical tor. mode number for Fourier filter (0,1,...,sml_nphi_total-1) More...
 
integer sml_mode_select_nmax = 1
 Highest numerical tor. mode number for Fourier filter (0,1,...,sml_nphi_total-1) More...
 
integer sml_mode_select_nmin_real = 0
 Lowest real toroidal mode number for FFT filter (n_real = (n_num+(i-1)*sml_nphi_total)*sml_wedge_n), max. i depending on mesh resolution. More...
 
integer sml_mode_select_nmax_real = 999
 Highest real toroidal mode number for FFT filter (n_real = (n_num+(i-1)*sml_nphi_total)*sml_wedge_n), max. i depending on mesh resolution. More...
 
integer 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_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_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_mode_select_inpsi = -0.1D0
 inner boundary for mode selection More...
 
real(kind=8) sml_mode_select_outpsi = 10.0D0
 outer boundary for mode selection More...
 
real(kind=8) sml_mode_select_bd_width = 0.01D0
 width of boundary envelope More...
 
real(kind=8) sml_mode_select_psitol = 5D-5
 psi tolerance (in SI-units –> Wb) for the identification of flux-surfaces More...
 
real(kind=8) sml_mode_select_max_kth_rho = 1.0D0
 Max. k_theta*rhoi retained in poloidal Fourier filter. More...
 
logical sml_mode_select_bands_on = .false.
 Determine the number of side bands to include by using gridm_max_surf(i) More...
 
logical sml_mode_select_div_mix = .true.
 Whether to blend filtered and unfiltered data near the divertor plates (set .false. for increasing stability in EM simulations) More...
 
logical 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_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_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_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_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_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_bd_ext_delta1 =0.01
 Outward shift of the inner boundary of the axisymmetric Poisson solver relative to sml_inpsi (in norm. pol. flux) More...
 
real(8) sml_bd_ext_delta2 =0.02
 Outward shift of the inner boundary of the RHS of the axisymmetric Poisson solver relative to sml_inpsi (in norm. pol. flux) More...
 
real(8) sml_bd_ext_delta3 =0.01
 Inward shift of the outer boundary of the axisymmetric Poisson solver relative to sml_outpsi (in norm. pol. flux) More...
 
real(8) sml_bd_ext_delta4 =0.02
 Inward shift of the outer boundary of the RHS of the axisymmetric Poisson solver relative to sml_outpsi (in norm. pol. flux) More...
 
real(8) sml_bd_ext_delta1h =0.01
 Outward shift of the inner boundary of the non-axisymmetric Poisson solver relative to sml_inpsi (in norm. pol. flux) More...
 
real(8) sml_bd_ext_delta2h =0.02
 Outward shift of the inner boundary of the RHS of the non-axisymmetric Poisson solver relative to sml_inpsi (in norm. pol. flux) More...
 
real(8) sml_bd_ext_delta3h =0.01
 Inward shift of the outer boundary of the non-axisymmetric Poisson solver relative to sml_outpsi (in norm. pol. flux) More...
 
real(8) sml_bd_ext_delta4h =0.02
 Inward shift of the outer boundary of the RHS of the non-axisymmetric Poisson solver relative to sml_outpsi (in norm. pol. flux) More...
 
real(8) 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_bd_ext_delta_ao = 0D0
 Shift of outer boundary of n!=0 Ampere solver (LHS) inwards relative to sml_outpsi. More...
 
real(8) 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_bd_ext_delta_jo = 0D0
 Shift of outer boundary of n!=0 Ampere solver (RHS) inwards relative to sml_outpsi. More...
 
real(8) sml_dpot_bd_width = 0.02D0
 Decay length (normalized flux) for (n=0,m>0) potential towards the magnetic axis. More...
 
logical sml_dpot_bd_apply = .false.
 Damp (n=0,m>0) potential towards the magnetic axis. More...
 
real(8) sml_bd_ext_near_wall =0D0
 To move the outer boundary of the Poisson solver away from the inner wall (in m) More...
 
character(len=65) sml_input_file_dir ='./'
 Path to the magnetic equilibrium, mesh and profile files (max. 65 characters) More...
 
logical 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_update_poisson_turb =.false.
 Update the n != 0 Poisson solver, too (energy conservation?) More...
 
integer sml_update_poisson_solver_nstep =1
 Number of time steps between subsequent updates of the Poisson solver operators. More...
 
logical 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_update_ampere_solver_nstep =1
 Number of time steps between subsequent updates of the Ampere's law solver operators. More...
 
logical 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_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_use_pade =.false.
 Use Pade approximation for short wavelengths. More...
 
logical 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_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...
 
real(8) sml_dpot_te_limit_n0 = 64D0
 Limits the magnitude of the normalized axisymmetric potential e*dphi_0/T_e in order to, e.g., prevent an overflow in the Boltzmann term, exp(e*dphi_0/T_e) More...
 
logical sml_use_simple00 =.false.
 Use simple 1D solver for the flux-surface averaged potential instead of PETSc. More...
 
logical sml_iter_solver =.true.
 For sml_poisson_solver_type=0: 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_iter_solver_niter =10
 Number of iterations for the iterative axisymmetric Poisson solver when sml_iter_solver_converge=.false. More...
 
logical 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_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_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_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_iter_solver_max_it =10
 Maximum number of iterations allowed when sml_iter_solver_converge=.true. More...
 
logical 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_mod_adiabatic_psi_in = 0.99
 Inner boundary for psi-dependent weighting function when sml_mod_adiabatic=.true. More...
 
real(8) sml_mod_adiabatic_psi_out = 1.00
 Outer boundary for psi-dependent weighting function when sml_mod_adiabatic=.true. More...
 
logical 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...
 
integer sml_poisson_solver_type =0
 (0) Simple axisymmetric Poisson solver (single equation) (–> see sml_iter_solver) (1) Linear Poisson equation for the axisymmetric potential (as in sml_iter_solver=.true.) but with constraint equation for the flux-surface averaged potential on the RHS. Solved with Schur complement solver. Much faster and accurate than the iterative solver, but causes instability in simulations with open field-lines. (2) Non-linear Poisson equation More...
 
logical sml_helmholtz_spectral =.false.
 Whether to solve Helmholtz-type equations with toroidally spectral solver. More...
 
integer 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_replace_pot0 =.false.
 If .true., replace Poisson solution with external data, if .false., add external potential to Poisson solution. More...
 
integer 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_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_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_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_poisson_natural_boundary = .false.
 
logical set
 
logical the
 
logical potential
 
logical on
 
logical solver
 
logical boundary
 
logical equal
 
logical to
 
logical flux
 
logical surface
 
logical 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_exclude_private_turb = .true.
 If .true. the private-flux region has no turbulence. More...
 
integer 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_sheath_init_pot_factor =2D0
 Initial value of the sheath potential relative to the electron temperature. (for sml_sheath_mode=1) More...
 
logical sml_sheath_init_pot_auto =.false.
 Set initial sheath potential to eq. based on Ti,Te, Maxwellian assumption. More...
 
logical sml_sheath_adjust =.false.
 Constant (.false.) or dynamic (.true.) sheath potential (for sml_sheath_mode=1) More...
 
real(8) sml_sheath_adjust_factor =0.25D0
 Damping factor for slower adjustment of the sheath potential if sml_sheath_mode=1. More...
 
logical sml_rgn1_pot0_only =.false.
 If .true., the axisymmetric Poisson equation is solved only inside the separatrix. More...
 
logical 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_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_neutral =.false.
 Switch for neutral recycling module (must be configured with the neu_param namelist) More...
 
real(8) 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_ptl_imbal_ion =3D0
 Maximal load ion particle imbalance. More...
 
logical sml_00_xz_up =.false.
 Use only \(Z>Z_{xp}\) for flux-surface average calculation (only for -DCONVERT_GRID2=OFF) More...
 
integer, parameter sml_n_vf_diag =9
 Number of diagnostic output quantities from the particle push routine. More...
 
real(8), parameter sml_load_maxe = 12D0
 Maximum particle energy (wrt the thermal speed) in initial particle distribution (if sml_flat_marker=.true.) More...
 
logical, parameter sml_cylindrical =.false.
 Use straight cylinder geometry with periodic boundary conditions along the cylinder axis. More...
 
logical sml_resamp_on = .false.
 Switch for particle resampling (must be configured with resamp_param namelist. More...
 
logical sml_3db_on = .false.
 Switch RMP field on/off. More...
 
logical sml_adjust_eden = .false.
 Switch for adjusting the electron density in the Poisson equation based on the radial particle flux instead of the weight evolution equation. (Experimental, don't use unless you know what you are doing) More...
 
real(8) sml_adj_eden_axis_decay_width = 0.01D0
 width for adjusting factor near axis More...
 
real(8) sml_adj_eden_sep_decay_width = 0.01D0
 width for adjusting factor near separatrix More...
 
real(8) sml_adj_eden_vd_max =1D0
 maximum bulk radial drift of electron (m/s) – you can overestimate x10. More...
 
logical sml_adj_eden_zero_axis =.true.
 Set zero electron density change near axis. More...
 
real(8) sml_adj_eden_obd_psi =1D0
 ??? More...
 
logical sml_adj_eden_include_sol =.true.
 Whether to include the SOL when (sml_adjust_eden=.true.) More...
 
logical sml_verbose = .false.
 ??? More...
 
logical sml_em_mixed_variable = .true.
 Switch for use of mixed-variable formulation. More...
 
integer sml_em_pullback_mode = 3
 (0) ??? (1) ??? (2) ??? (3) mixed-variable pullback with dA_s/dt=0, (4) pullback using Ohm's law dA_s/dt + gamma*b.grad(phi) = 0 (5) pullback using dA_s/dt + b.grad(phi) = -eta*j More...
 
logical sml_em_control_variate = .false.
 Switch for use of control variate method. More...
 
integer sml_em_control_variate_niter = 1
 Number of iterations for Ampere solve with control-variate method. More...
 
logical sml_em_control_variate_final_cv = .false.
 Internal setting for control variate method. More...
 
logical sml_em_control_variate_flag = .false.
 Internal setting for control variate method. More...
 
logical sml_em_exclude_private = .true.
 Makes the private flux region electrostatic if .true. More...
 
logical sml_em_b_para_eff = .false.
 Effective dB_|| via a modified grad-B drift (Joiner et al., PoP, 2010) More...
 
logical sml_em_n0 = .false.
 Include n=0 electromagnetic mode. More...
 
logical sml_em_es_step = .false.
 If this is true, A_s is fixed, A_h=0, the Poisson equation is solved in the ES form (with adiabatic response on the LHS), and the electron weight update uses the ES method, i.e. the ES algorithm is used in a constant perturbed magnetic field. This parameter is not an input but set dynamically through a control function (intended for RMP penetration calculation). More...
 
logical sml_diff_on = .false.
 Anomalous diffusion. More...
 
logical sml_split_weight_scheme = .false.
 Whether to use the split-weight scheme. More...
 
logical sml_reduce_core_ptl = .false.
 Whether to reduce number of particles initialized in the core. More...
 
real(8) sml_core_ptl_fac = 1D0
 Factor particles in core per vertex vs in edge. More...
 
real(8) sml_core_ptl_psi = 1D0
 psi value where n_ptl per vertex drops off More...
 
logical sml_mms = .false.
 Sets particle weights for P. Tranquilli's manufactured solution. More...
 
real(8) sml_mms_alpha = 7d0
 Parameter for factor dependent on spatial coordinate in P. Tranquilli's manufactured solution. More...
 
real(8) sml_mms_beta = 1d0
 Parameter for factor dependent on mu coordinate in P. Tranquilli's manufactured solution. More...
 
real(8) sml_mms_gamma = 0.5d0
 Parameter for factor dependent on parallel velocity coordinate in P. Tranquilli's manufactured solution. More...
 

Member Data Documentation

logical sml_module::adios_stage_escaped_ptls = .FALSE.

Enable/disable Adios stage mode for xgc.escaped_ptls.

logical sml_module::adios_stage_f0 = .TRUE.

Enable/disable Adios stage mode for xgc.f0.

integer sml_module::adios_stage_f0_max = 10

Maximum numbrer of steps for Adios xgc.f0 stage write.

logical sml_module::adios_stage_f3d = .FALSE.

Enable/disable Adios stage mode for xgc.f3d.

integer sml_module::adios_stage_f3d_max = 10

Maximum numbrer of steps for Adios xgc.f3d stage write.

logical sml_module::adios_stage_particle = .FALSE.

Enable/disable Adios stage mode for xgc.particle.

logical sml_module::adios_stage_restart = .FALSE.

Enable/disable Adios stage mode for xgc.restart.

logical sml_module::adios_stage_restartf0 = .FALSE.

Enable/disable Adios stage mode for xgc.restartf0.

logical sml_module::boundary
logical sml_module::equal
logical sml_module::false
logical sml_module::flux
logical sml_module::for
logical sml_module::new
logical sml_module::on
logical sml_module::potential
logical, parameter sml_module::reduced_deltaf = .false.

Equivalent to the preprocessor flag for now.

logical sml_module::restart
logical sml_module::restarting
logical sml_module::run
logical, parameter sml_module::separate_n0 = .true.
logical sml_module::set
logical sml_module::simulation
logical sml_module::sml_00_efield =.true.

Flux-surface averaged potential not used for calculating the electric field if .false.

logical sml_module::sml_00_xz_up =.false.

Use only \(Z>Z_{xp}\) for flux-surface average calculation (only for -DCONVERT_GRID2=OFF)

logical sml_module::sml_0m_efield =.true.

The axisymmetric potential variation \(\langle \phi-\langle\phi\rangle\rangle_T\) is set to zero if .false.

real (8), parameter sml_module::sml_2pi = 6.2831853071795862D0

2 Pi

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}\).

logical sml_module::sml_3db_on = .false.

Switch RMP field on/off.

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)

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.

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)

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.

integer sml_module::sml_adios_comm =MPI_COMM_NULL

Adios communicator.

integer sml_module::sml_adios_group =MPI_GROUP_EMPTY

Adios MPI group.

real (8) sml_module::sml_adj_eden_axis_decay_width = 0.01D0

width for adjusting factor near axis

logical sml_module::sml_adj_eden_include_sol =.true.

Whether to include the SOL when (sml_adjust_eden=.true.)

real (8) sml_module::sml_adj_eden_obd_psi =1D0

???

real (8) sml_module::sml_adj_eden_sep_decay_width = 0.01D0

width for adjusting factor near separatrix

real (8) sml_module::sml_adj_eden_vd_max =1D0

maximum bulk radial drift of electron (m/s) – you can overestimate x10.

logical sml_module::sml_adj_eden_zero_axis =.true.

Set zero electron density change near axis.

logical sml_module::sml_adjust_eden = .false.

Switch for adjusting the electron density in the Poisson equation based on the radial particle flux instead of the weight evolution equation. (Experimental, don't use unless you know what you are doing)

real (8) sml_module::sml_bd_ext_delta1 =0.01

Outward shift of the inner boundary of the axisymmetric Poisson solver relative to sml_inpsi (in norm. pol. flux)

real (8) sml_module::sml_bd_ext_delta1h =0.01

Outward shift of the inner boundary of the non-axisymmetric Poisson solver relative to sml_inpsi (in norm. pol. flux)

real (8) sml_module::sml_bd_ext_delta2 =0.02

Outward shift of the inner boundary of the RHS of the axisymmetric Poisson solver relative to sml_inpsi (in norm. pol. flux)

real (8) sml_module::sml_bd_ext_delta2h =0.02

Outward shift of the inner boundary of the RHS of the non-axisymmetric Poisson solver relative to sml_inpsi (in norm. pol. flux)

real (8) sml_module::sml_bd_ext_delta3 =0.01

Inward shift of the outer boundary of the axisymmetric Poisson solver relative to sml_outpsi (in norm. pol. flux)

real (8) sml_module::sml_bd_ext_delta3h =0.01

Inward shift of the outer boundary of the non-axisymmetric Poisson solver relative to sml_outpsi (in norm. pol. flux)

real (8) sml_module::sml_bd_ext_delta4 =0.02

Inward shift of the outer boundary of the RHS of the axisymmetric Poisson solver relative to sml_outpsi (in norm. pol. flux)

real (8) sml_module::sml_bd_ext_delta4h =0.02

Inward shift of the outer boundary of the RHS of the non-axisymmetric Poisson solver relative to sml_outpsi (in norm. pol. flux)

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.

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.

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.

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.

real (8) sml_module::sml_bd_ext_near_wall =0D0

To move the outer boundary of the Poisson solver away from the inner wall (in m)

real (8) sml_module::sml_bd_max_r =1D3

Simulation boundary in R-Z space (in m)

real (8) sml_module::sml_bd_max_z =1D3

Simulation boundary in R-Z space (in m)

real (8) sml_module::sml_bd_min_r =1D-4

Simulation boundary in R-Z space (in m)

real (8) sml_module::sml_bd_min_z =-1D3

Simulation boundary in R-Z space (in m)

real (8) sml_module::sml_bp_mult =1D0

Artificial multiplication of poloidal B-field.

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.

real (8) sml_module::sml_bt_mult =1D0

Artificial multiplication of toroidal B-field.

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)

integer sml_module::sml_comm =MPI_COMM_NULL

Global MPI communicator within an XGC instance.

integer sml_module::sml_comm_color =-1

Communicator color (used for mpi split/code-coupling). Set by my_mpi_init call.

integer sml_module::sml_comm_null =MPI_COMM_NULL

MPI_COMM_NULL communicator for adios posix method.

integer sml_module::sml_comm_self =MPI_COMM_NULL

MPI_COMM_SELF communicator for single-process adios2 outputs.

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.

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

real(8) sml_module::sml_core_ptl_fac = 1D0

Factor particles in core per vertex vs in edge.

real(8) sml_module::sml_core_ptl_psi = 1D0

psi value where n_ptl per vertex drops off

logical, parameter sml_module::sml_cylindrical =.false.

Use straight cylinder geometry with periodic boundary conditions along the cylinder axis.

logical sml_module::sml_diff_on = .false.

Anomalous diffusion.

logical sml_module::sml_dpot_bd_apply = .false.

Damp (n=0,m>0) potential towards the magnetic axis.

real (8) sml_module::sml_dpot_bd_width = 0.02D0

Decay length (normalized flux) for (n=0,m>0) potential towards the magnetic axis.

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.

real (8) sml_module::sml_dpot_te_limit_n0 = 64D0

Limits the magnitude of the normalized axisymmetric potential e*dphi_0/T_e in order to, e.g., prevent an overflow in the Boltzmann term, exp(e*dphi_0/T_e)

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.

real (8) sml_module::sml_dt = 1D-3

Time step size in units of the toroidal ion transit time \(\tau_T = 2\pi R_{ax} / \sqrt{2 E_{norm}/m_i}\), where \(E_{norm}\) is a reference energy set with sml_en_order_keV (in keV) \(\Rightarrow\,E_{norm} = \text{sml_en_order_keV}\, 10^{3} e\). The default value of sml_en_order is 0.2 keV.

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.

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.

real (8), parameter sml_module::sml_e_charge =1.6022D-19

elementary charge in C (MKS)

character (len=65) sml_module::sml_ele_file ="neo10.1.ele"

Unstructured mesh data: ele-file.

real (8), parameter sml_module::sml_elec_mass =9.1094D-31

electron mass in kg (MKS)

logical sml_module::sml_electron_on =.false.

Whether to run with adiabatic (.false.) or kinetic (.true.) electrons.

logical sml_module::sml_em_b_para_eff = .false.

Effective dB_|| via a modified grad-B drift (Joiner et al., PoP, 2010)

logical sml_module::sml_em_control_variate = .false.

Switch for use of control variate method.

logical sml_module::sml_em_control_variate_final_cv = .false.

Internal setting for control variate method.

logical sml_module::sml_em_control_variate_flag = .false.

Internal setting for control variate method.

integer sml_module::sml_em_control_variate_niter = 1

Number of iterations for Ampere solve with control-variate method.

logical sml_module::sml_em_es_step = .false.

If this is true, A_s is fixed, A_h=0, the Poisson equation is solved in the ES form (with adiabatic response on the LHS), and the electron weight update uses the ES method, i.e. the ES algorithm is used in a constant perturbed magnetic field. This parameter is not an input but set dynamically through a control function (intended for RMP penetration calculation).

logical sml_module::sml_em_exclude_private = .true.

Makes the private flux region electrostatic if .true.

logical sml_module::sml_em_mixed_variable = .true.

Switch for use of mixed-variable formulation.

logical sml_module::sml_em_n0 = .false.

Include n=0 electromagnetic mode.

integer sml_module::sml_em_pullback_mode = 3

(0) ??? (1) ??? (2) ??? (3) mixed-variable pullback with dA_s/dt=0, (4) pullback using Ohm's law dA_s/dt + gamma*b.grad(phi) = 0 (5) pullback using dA_s/dt + b.grad(phi) = -eta*j

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.

real (8) sml_module::sml_en_order =3.2044D-17

(not an input) Characteristic ion energy in normalized unit

real (8) sml_module::sml_en_order_kev =0.2D0

Characteristic ion energy (keV) –> controls reference time (toroidal ion transit time)

real (8), parameter sml_module::sml_epsilon0 =8.8542D-12

permittivity of free space in F/m (MKS)

real (8), parameter sml_module::sml_ev2j =sml_e_charge

Conversion factor from eV to J.

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,...)

logical sml_module::sml_exclude_private_turb = .true.

If .true. the private-flux region has no turbulence.

real (8) sml_module::sml_f0_grid_init_ptl_imbal =-1D0

Initial particle load imbalance.

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.

real (8) sml_module::sml_f0_grid_max_ptl_imbal =2D0

Upper threshold for the particle load imbalance (typically ~1.3).

real (8) sml_module::sml_f0_grid_min_ptl_imbal =1D0

Lower threshold for the particle load imbalance.

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.

integer sml_module::sml_f_source_period =1

Run source routines (collisions, neutral recycling, etc.) every sml_f_source_period time steps.

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))

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)

logical sml_module::sml_field_aligned_initial =.false.

Use field aligned initial condition.

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.

real (8) sml_module::sml_flat_marker_cutoff1 =4D0

Normalized (to \(v_{th}\)) parallel velocity cutoff of flat marker distribution.

real (8) sml_module::sml_flat_marker_cutoff2 =4D0

Like sml_flat_marker_cutoff1 but for the perpendicular velocity.

real (8) sml_module::sml_flat_marker_decay_start1 =3.5D0

Normalized (to \(v_{th}\)) velocity at which the marker distribution decays exponentially.

real (8) sml_module::sml_flat_marker_decay_start2 =3.5D0

Like sml_flat_marker_decay_start1 but for the perpendicular velocity.

real (8) sml_module::sml_flat_marker_width1 =0.5D0

Decay length of flat marker distribution in the normalized (to \(v_{th}\)) parallel velocity.

real (8) sml_module::sml_flat_marker_width2 =0.5D0

Like sml_flat_marker_width1 but for the perpendicular velocity.

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.

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.

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.

integer sml_module::sml_gstep = 0

Global time step (counting the current + all previous runs in case of restarts)

logical sml_module::sml_helmholtz_spectral =.false.

Whether to solve Helmholtz-type equations with toroidally spectral solver.

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.

real (8) sml_module::sml_initial_deltaf_noise =1D-3

Delta-f particle weights are initialized with this level of noise.

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)

character (len=65) sml_module::sml_input_file_dir ='./'

Path to the magnetic equilibrium, mesh and profile files (max. 65 characters)

integer sml_module::sml_intpl_comm =MPI_COMM_NULL

Communicator for all MPI ranks assigned to the same (R,Z) patch (toroidal communication)

integer sml_module::sml_intpl_group =MPI_GROUP_EMPTY

MPI group for all MPI ranks assigned to the same (R,Z) patch.

integer sml_module::sml_intpl_mype =0

MPI rank index within sml_intpl_comm.

integer sml_module::sml_intpl_totalpe =0

Total number of MPI ranks within sml_intpl_comm.

real (8) sml_module::sml_inv_f_source_period =1

(Not an input) Inverse of sml_f_source_period

integer sml_module::sml_istep = 0

Current time step number (counting only the current simulation)

logical sml_module::sml_iter_solver =.true.

For sml_poisson_solver_type=0: 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.

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.

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.

integer sml_module::sml_iter_solver_max_it =10

Maximum number of iterations allowed when sml_iter_solver_converge=.true.

integer sml_module::sml_iter_solver_niter =10

Number of iterations for the iterative axisymmetric Poisson solver when sml_iter_solver_converge=.false.

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.

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.

real (8), parameter sml_module::sml_j2ev =1D0/sml_e_charge

Conversion factor from J to eV.

integer, dimension(:), allocatable sml_module::sml_ksp_comm

MPI communicator for a subset of ranks on a plane used for PETSc KSP solves.

integer, dimension(:), allocatable sml_module::sml_ksp_group

MPI group for a subset of ranks on a plane used for PETSc KSP solves.

integer sml_module::sml_ksp_mype = -1

MPI rank index within sml_ksp_comm.

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!)

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.

real (kind=8) sml_module::sml_load_den_uni =-1D0

Marker density for uniform loading.

real (8), parameter sml_module::sml_load_maxe = 12D0

Maximum particle energy (wrt the thermal speed) in initial particle distribution (if sml_flat_marker=.true.)

real (kind=8) sml_module::sml_load_nptl =-1D0

Avg. number of ptl/vertex.

logical sml_module::sml_loop_voltage_on =.false.

Switches the loop voltage current drive on/off.

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.)

integer sml_module::sml_machine = -99

Not used anymore. Left only for input file compatibility. Will be removed near future.

real (8) sml_module::sml_marker_den =-1D0

Marker density. Used for (uniform) loading and initial weight calculation.

real (8), dimension(:,:), allocatable sml_module::sml_marker_den2

Triangle based marker density.

real (8) sml_module::sml_marker_min_temp = 1D1

minimum temperature of markers (only if sml_flat_marker=.false.)

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.).

real (8) sml_module::sml_marker_temp_factor2 =1D0

perp temperature factor (only if sml_flat_marker=.false.)

real (8) sml_module::sml_marker_temp_factor3 =1D0

low mu fill temperature (only if sml_flat_marker=.false.)

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.

real (kind=8) sml_module::sml_max_loading_factor =1D1

Upper limit for loading factor (default is conservative, might need higher value)

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)

logical sml_module::sml_mms = .false.

Sets particle weights for P. Tranquilli's manufactured solution.

real (8) sml_module::sml_mms_alpha = 7d0

Parameter for factor dependent on spatial coordinate in P. Tranquilli's manufactured solution.

real (8) sml_module::sml_mms_beta = 1d0

Parameter for factor dependent on mu coordinate in P. Tranquilli's manufactured solution.

real (8) sml_module::sml_mms_gamma = 0.5d0

Parameter for factor dependent on parallel velocity coordinate in P. Tranquilli's manufactured solution.

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.

real (8) sml_module::sml_mod_adiabatic_psi_in = 0.99

Inner boundary for psi-dependent weighting function when sml_mod_adiabatic=.true.

real (8) sml_module::sml_mod_adiabatic_psi_out = 1.00

Outer boundary for psi-dependent weighting function when sml_mod_adiabatic=.true.

logical sml_module::sml_mode_select_bands_on = .false.

Determine the number of side bands to include by using gridm_max_surf(i)

real (kind=8) sml_module::sml_mode_select_bd_width = 0.01D0

width of boundary envelope

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.

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.

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).

logical sml_module::sml_mode_select_div_mix = .true.

Whether to blend filtered and unfiltered data near the divertor plates (set .false. for increasing stability in EM simulations)

real (kind=8) sml_module::sml_mode_select_inpsi = -0.1D0

inner boundary for mode selection

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)

real (kind=8) sml_module::sml_mode_select_max_kth_rho = 1.0D0

Max. k_theta*rhoi retained in poloidal Fourier filter.

integer sml_module::sml_mode_select_mmax = 25

Highest pol. mode number for Fourier filter.

integer sml_module::sml_mode_select_mmin = 0

Lowest pol. mode number for Fourier filter.

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.

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

integer sml_module::sml_mode_select_n = 1

Toroidal mode number for Fourier filter.

integer sml_module::sml_mode_select_nmax = 1

Highest numerical tor. mode number for Fourier filter (0,1,...,sml_nphi_total-1)

integer sml_module::sml_mode_select_nmax_real = 999

Highest real toroidal mode number for FFT filter (n_real = (n_num+(i-1)*sml_nphi_total)*sml_wedge_n), max. i depending on mesh resolution.

integer sml_module::sml_mode_select_nmin = 1

Lowest numerical tor. mode number for Fourier filter (0,1,...,sml_nphi_total-1)

integer sml_module::sml_mode_select_nmin_real = 0

Lowest real toroidal mode number for FFT filter (n_real = (n_num+(i-1)*sml_nphi_total)*sml_wedge_n), max. i depending on mesh resolution.

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)

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.

real (kind=8) sml_module::sml_mode_select_outpsi = 10.0D0

outer boundary for mode selection

real (kind=8) sml_module::sml_mode_select_psitol = 5D-5

psi tolerance (in SI-units –> Wb) for the identification of flux-surfaces

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}!)

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)

integer sml_module::sml_monte_num =10000

Number of samples for Monte-Carlo volume calculation. It should be greater than particle number for correct simulation.

integer sml_module::sml_mstep = 3000

Total number of time steps for simulation. (simulation time) = dt*mstep.

real (8), parameter sml_module::sml_mu0 =1.2566370614D-6

Magnetic vacuum permeability in H/m (MKS)

integer sml_module::sml_mype =-1

Processor index, 0 - (# of MPI ranks -1)

integer, parameter sml_module::sml_n_vf_diag =9

Number of diagnostic output quantities from the particle push routine.

logical sml_module::sml_neutral =.false.

Switch for neutral recycling module (must be configured with the neu_param namelist)

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)

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.

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)

logical sml_module::sml_no_turb =.false.

Set all non-axisymmetric field perturbations to zero (electromagnetic version only)

character (len=65) sml_module::sml_node_file ="neo10.1.node"

Unstructured mesh data: node-file.

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.

integer sml_module::sml_nphi_total =1

Number of poloidal planes (= toroidal grid size)

integer, parameter sml_module::sml_nrk = 2

Order of Runge-Kutta time integration of particles + fields.

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)

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)

integer sml_module::sml_nthreads =-1

Total number of OpenMP threads per process.

integer sml_module::sml_num_ksp = 1

Number of communicators per plane for PETSc KSP solves.

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)

real (8) sml_module::sml_outpsi_priv1 =0.97D0

Outer boundary (for Poisson solver), normalized poloidal flux.

real (8) sml_module::sml_outpsi_priv2 =2.0D0

Outer boundary (for Poisson solver, 2nd private region), normalized poloidal flux.

integer sml_module::sml_pe_per_ksp = 0

Number of MPI ranks used for PETSc KSP solves.

integer sml_module::sml_pe_per_plane =0

Number of MPI ranks per poloidal plane (>=2*sml_grid_nrho)

real (8), parameter sml_module::sml_pi = 3.1415926535897931D0

Pi.

integer sml_module::sml_plane_comm =MPI_COMM_NULL

Communicator for all MPI ranks assigned to the same poloidal plane.

integer sml_module::sml_plane_group =MPI_GROUP_EMPTY

MPI group for all MPI ranks assigned to the same poloidal plane.

integer sml_module::sml_plane_index =-1

Index of the poloidal plane to which an MPI rank is assigned (0...sml_nphi_total-1)

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.

integer sml_module::sml_plane_mype =0

MPI rank index within sml_plane_comm.

integer sml_module::sml_plane_per_pe =0

Number of poloidal planes per MPI rank (typically 1)

integer sml_module::sml_plane_totalpe =0

Total number of MPI ranks assigned to a poloidal plane.

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)

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.

logical sml_module::sml_poisson_natural_boundary = .false.
integer sml_module::sml_poisson_solver_type =0

(0) Simple axisymmetric Poisson solver (single equation) (–> see sml_iter_solver) (1) Linear Poisson equation for the axisymmetric potential (as in sml_iter_solver=.true.) but with constraint equation for the flux-surface averaged potential on the RHS. Solved with Schur complement solver. Much faster and accurate than the iterative solver, but causes instability in simulations with open field-lines. (2) Non-linear Poisson equation

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

real (8), parameter sml_module::sml_prot_mass =1.6720D-27

proton mass in kg (MKS)

real (8) sml_module::sml_ptl_imbal_ion =3D0

Maximal load ion particle imbalance.

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)

logical sml_module::sml_read_eq =.true.

Read B-field profile from an eqd-file.

logical sml_module::sml_read_eq_m3dc1 =.false.

Read B-field profile from M3D-C1 output file –> overrides sml_read_eq.

logical sml_module::sml_reduce_core_ptl = .false.

Whether to reduce number of particles initialized in the core.

logical sml_module::sml_replace_pot0 =.false.

If .true., replace Poisson solution with external data, if .false., add external potential to Poisson solution.

logical sml_module::sml_resamp_on = .false.

Switch for particle resampling (must be configured with resamp_param namelist.

logical sml_module::sml_restart =.false.
logical sml_module::sml_rgn1_pot0_only =.false.

If .true., the axisymmetric Poisson equation is solved only inside the separatrix.

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)

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)

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)

logical sml_module::sml_sheath_adjust =.false.

Constant (.false.) or dynamic (.true.) sheath potential (for sml_sheath_mode=1)

real (8) sml_module::sml_sheath_adjust_factor =0.25D0

Damping factor for slower adjustment of the sheath potential if sml_sheath_mode=1.

logical sml_module::sml_sheath_init_pot_auto =.false.

Set initial sheath potential to eq. based on Ti,Te, Maxwellian assumption.

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)

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)

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.

integer sml_module::sml_special =0

Switch for special simulation: (0) normal, (1) single particle simulation, (2) undefined, (3) undefined, (4) Poincare plot.

logical sml_module::sml_split_weight_scheme = .false.

Whether to use the split-weight scheme.

real (8), parameter sml_module::sml_sqrt2pi = 2.5066282746310002D0

Sqrt(2Pi)

real (8), parameter sml_module::sml_sqrtpi = 1.7724538509055158D0

Sqrt(Pi)

character (len=65) sml_module::sml_surf_file ="dummy.flx.aif"

Unstructured mesh data: flx-file.

logical sml_module::sml_symmetric_f0g =.false.

Enforce axisymmetry only in f0g (used only in XGC1 fluid-kinetic hybrid method; -DHYB_EM=ON)

real (8) sml_module::sml_time = 0D0

Simulation time in seconds.

integer sml_module::sml_totalpe =-1

Total number of processors (must be > (2*sml_grid_nrho)*sml_nphi_total)

real (8) sml_module::sml_tran =3.2D-5

Torodial transit time of an ion with the characteristic energy.

logical sml_module::sml_tri_psi_weighting =.true.

Use modified triangle shape functions (Useful for coarse meshes in XGCa when straight element edges do not represent the curved flux-surfaces well.

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.

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.

integer sml_module::sml_update_ampere_solver_nstep =1

Number of time steps between subsequent updates of the Ampere's law solver operators.

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.

integer sml_module::sml_update_poisson_solver_nstep =1

Number of time steps between subsequent updates of the Poisson solver operators.

logical sml_module::sml_update_poisson_turb =.false.

Update the n != 0 Poisson solver, too (energy conservation?)

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.

logical sml_module::sml_use_pade =.false.

Use Pade approximation for short wavelengths.

logical sml_module::sml_use_simple00 =.false.

Use simple 1D solver for the flux-surface averaged potential instead of PETSc.

logical sml_module::sml_verbose = .false.

???

integer sml_module::sml_wedge_n =1

Simulate a wedge of 2pi/sml_wedge_n of the full torus.

logical sml_module::sml_zero_inner_bd =.false.

If .true., use Dirichlet boundary condition \(\phi=0\) for axisymmetric Poisson solver.

logical sml_module::solver
logical sml_module::surface
logical sml_module::switch
logical sml_module::the
logical sml_module::to
logical sml_module::true

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