XGCa
Variables
sml_module Module Reference

Variables

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_gstep = 0
 Global time step (counting the current + all previous runs in case of restarts) 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_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...
 
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_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...
 
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...
 
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, dimension(:), allocatable sml_ksp_root
 MPI root rank of plane, will broadcast solutions of 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_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_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_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_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...
 
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...
 
logical sml_use_simple00 =.false.
 Use simple 1D solver for the flux-surface averaged potential instead of PETSc. More...
 
logical 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_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...
 
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.
 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_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_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_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...
 
logical, parameter sml_cylindrical =.true.
 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_verbose = .false.
 ??? More...
 
logical sml_em_mixed_variable = .true.
 Switch for use of mixed-variable formulation. 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_diff_on = .false.
 Anomalous diffusion. 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...
 

Variable Documentation

◆ adios_stage_escaped_ptls

logical sml_module::adios_stage_escaped_ptls = .FALSE.

Enable/disable Adios stage mode for xgc.escaped_ptls.

◆ adios_stage_f0

logical sml_module::adios_stage_f0 = .TRUE.

Enable/disable Adios stage mode for xgc.f0.

◆ adios_stage_f0_max

integer sml_module::adios_stage_f0_max = 10

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

◆ adios_stage_f3d

logical sml_module::adios_stage_f3d = .FALSE.

Enable/disable Adios stage mode for xgc.f3d.

◆ adios_stage_f3d_max

integer sml_module::adios_stage_f3d_max = 10

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

◆ adios_stage_restart

logical sml_module::adios_stage_restart = .FALSE.

Enable/disable Adios stage mode for xgc.restart.

◆ adios_stage_restartf0

logical sml_module::adios_stage_restartf0 = .FALSE.

Enable/disable Adios stage mode for xgc.restartf0.

◆ false

logical sml_module::false

◆ for

logical sml_module::for

◆ new

logical sml_module::new

◆ restart

logical sml_module::restart

◆ restarting

logical sml_module::restarting

◆ run

logical sml_module::run

◆ simulation

logical sml_module::simulation

◆ sml_00_efield

logical sml_module::sml_00_efield =.true.

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

◆ sml_00_xz_up

logical sml_module::sml_00_xz_up =.false.

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

◆ sml_0m_efield

logical sml_module::sml_0m_efield =.true.

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

◆ sml_2pi

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

2 Pi

◆ sml_2pi_wedge_n

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

◆ sml_3db_on

logical sml_module::sml_3db_on = .false.

Switch RMP field on/off.

◆ sml_add_pot0

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)

◆ sml_add_pot0_file

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.

◆ sml_add_pot0_mixing_time

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)

◆ sml_adiabatic_from_poisson

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.

◆ sml_adios_comm

integer sml_module::sml_adios_comm =MPI_COMM_NULL

Adios communicator.

◆ sml_adios_group

integer sml_module::sml_adios_group =MPI_GROUP_EMPTY

Adios MPI group.

◆ sml_ampere_natural_boundary

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

◆ sml_bd_ext_delta_ai

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.

◆ sml_bd_ext_delta_ao

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.

◆ sml_bd_ext_delta_ji

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.

◆ sml_bd_ext_delta_jo

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.

◆ sml_bd_max_r

real (8) sml_module::sml_bd_max_r =1D3

Simulation boundary in R-Z space (in m)

◆ sml_bd_max_z

real (8) sml_module::sml_bd_max_z =1D3

Simulation boundary in R-Z space (in m)

◆ sml_bd_min_r

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

Simulation boundary in R-Z space (in m)

◆ sml_bd_min_z

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

Simulation boundary in R-Z space (in m)

◆ sml_bp_mult

real (8) sml_module::sml_bp_mult =1D0

Artificial multiplication of poloidal B-field.

◆ sml_bp_sign

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.

◆ sml_bt_mult

real (8) sml_module::sml_bt_mult =1D0

Artificial multiplication of toroidal B-field.

◆ sml_bt_sign

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)

◆ sml_comm

integer sml_module::sml_comm =MPI_COMM_NULL

Global MPI communicator within an XGC instance.

◆ sml_comm_color

integer sml_module::sml_comm_color =-1

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

◆ sml_comm_null

integer sml_module::sml_comm_null =MPI_COMM_NULL

MPI_COMM_NULL communicator for adios posix method.

◆ sml_comm_self

integer sml_module::sml_comm_self =MPI_COMM_NULL

MPI_COMM_SELF communicator for single-process adios2 outputs.

◆ sml_comm_world

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.

◆ sml_concentric

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

◆ sml_core_ptl_fac

real(8) sml_module::sml_core_ptl_fac = 1D0

Factor particles in core per vertex vs in edge.

◆ sml_core_ptl_psi

real(8) sml_module::sml_core_ptl_psi = 1D0

psi value where n_ptl per vertex drops off

◆ sml_cylindrical

logical parameter sml_module::sml_cylindrical =.true.

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

◆ sml_diff_on

logical sml_module::sml_diff_on = .false.

Anomalous diffusion.

◆ sml_dpot_bd_apply

logical sml_module::sml_dpot_bd_apply = .false.

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

◆ sml_dpot_bd_width

real (8) sml_module::sml_dpot_bd_width = 0.02D0

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

◆ sml_dpot_te_limit

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.

◆ sml_drift_on

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.

◆ sml_dwdt_exb_only

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.

◆ sml_dwdt_fix_bg

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.

◆ sml_e_charge

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

elementary charge in C (MKS)

◆ sml_ele_file

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

Unstructured mesh data: ele-file.

◆ sml_elec_mass

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

electron mass in kg (MKS)

◆ sml_electron_on

logical sml_module::sml_electron_on =.false.

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

◆ sml_em_b_para_eff

logical sml_module::sml_em_b_para_eff = .false.

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

◆ sml_em_control_variate

logical sml_module::sml_em_control_variate = .false.

Switch for use of control variate method.

◆ sml_em_control_variate_final_cv

logical sml_module::sml_em_control_variate_final_cv = .false.

Internal setting for control variate method.

◆ sml_em_control_variate_flag

logical sml_module::sml_em_control_variate_flag = .false.

Internal setting for control variate method.

◆ sml_em_control_variate_niter

integer sml_module::sml_em_control_variate_niter = 1

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

◆ sml_em_exclude_private

logical sml_module::sml_em_exclude_private = .true.

Makes the private flux region electrostatic if .true.

◆ sml_em_mixed_variable

logical sml_module::sml_em_mixed_variable = .true.

Switch for use of mixed-variable formulation.

◆ sml_em_n0

logical sml_module::sml_em_n0 = .false.

Include n=0 electromagnetic mode.

◆ sml_em_use_dpot_te_limit

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.

◆ sml_en_order

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

(not an input) Characteristic ion energy in normalized unit

◆ sml_en_order_kev

real (8) sml_module::sml_en_order_kev =0.2D0

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

◆ sml_epsilon0

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

permittivity of free space in F/m (MKS)

◆ sml_ev2j

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

Conversion factor from eV to J.

◆ sml_exclude_private

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

◆ sml_exclude_private_turb

logical sml_module::sml_exclude_private_turb = .true.

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

◆ sml_f0_grid_init_ptl_imbal

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

Initial particle load imbalance.

◆ sml_f0_grid_lbal_period

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.

◆ sml_f0_grid_max_ptl_imbal

real (8) sml_module::sml_f0_grid_max_ptl_imbal =2D0

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

◆ sml_f0_grid_min_ptl_imbal

real (8) sml_module::sml_f0_grid_min_ptl_imbal =1D0

Lower threshold for the particle load imbalance.

◆ sml_f0_nmu_decomp

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.

◆ sml_f_source_period

integer sml_module::sml_f_source_period =1

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

◆ sml_ff_order

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

◆ sml_ff_step

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)

◆ sml_field_aligned_initial

logical sml_module::sml_field_aligned_initial =.false.

Use field aligned initial condition.

◆ sml_flat_marker

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.

◆ sml_flat_marker_cutoff1

real (8) sml_module::sml_flat_marker_cutoff1 =4D0

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

◆ sml_flat_marker_cutoff2

real (8) sml_module::sml_flat_marker_cutoff2 =4D0

Like sml_flat_marker_cutoff1 but for the perpendicular velocity.

◆ sml_flat_marker_decay_start1

real (8) sml_module::sml_flat_marker_decay_start1 =3.5D0

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

◆ sml_flat_marker_decay_start2

real (8) sml_module::sml_flat_marker_decay_start2 =3.5D0

Like sml_flat_marker_decay_start1 but for the perpendicular velocity.

◆ sml_flat_marker_width1

real (8) sml_module::sml_flat_marker_width1 =0.5D0

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

◆ sml_flat_marker_width2

real (8) sml_module::sml_flat_marker_width2 =0.5D0

Like sml_flat_marker_width1 but for the perpendicular velocity.

◆ sml_grad_psitheta

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.

◆ sml_gradpsi_limit

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.

◆ sml_grid_nrho

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.

◆ sml_gstep

integer sml_module::sml_gstep = 0

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

◆ sml_helmholtz_spectral

logical sml_module::sml_helmholtz_spectral =.false.

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

◆ sml_heuristic_priv_pot

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.

◆ sml_initial_deltaf_noise

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

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

◆ sml_inpsi

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)

◆ sml_input_file_dir

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

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

◆ sml_intpl_comm

integer sml_module::sml_intpl_comm =MPI_COMM_NULL

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

◆ sml_intpl_group

integer sml_module::sml_intpl_group =MPI_GROUP_EMPTY

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

◆ sml_intpl_mype

integer sml_module::sml_intpl_mype =0

MPI rank index within sml_intpl_comm.

◆ sml_intpl_totalpe

integer sml_module::sml_intpl_totalpe =0

Total number of MPI ranks within sml_intpl_comm.

◆ sml_inv_f_source_period

real (8) sml_module::sml_inv_f_source_period =1

(Not an input) Inverse of sml_f_source_period

◆ sml_iter_solver

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.

◆ sml_iter_solver_atol

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.

◆ sml_iter_solver_converge

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.

◆ sml_iter_solver_max_it

integer sml_module::sml_iter_solver_max_it =10

Maximum number of iterations allowed when sml_iter_solver_converge=.true.

◆ sml_iter_solver_niter

integer sml_module::sml_iter_solver_niter =10

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

◆ sml_iter_solver_precond_type

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.

◆ sml_iter_solver_rtol

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.

◆ sml_j2ev

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

Conversion factor from J to eV.

◆ sml_ksp_comm

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

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

◆ sml_ksp_group

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

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

◆ sml_ksp_mype

integer sml_module::sml_ksp_mype = -1

MPI rank index within sml_ksp_comm.

◆ sml_ksp_root

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

MPI root rank of plane, will broadcast solutions of KSP solves.

◆ sml_limit_marker_den

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

◆ sml_limit_marker_den_fac

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.

◆ sml_load_den_uni

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

Marker density for uniform loading.

◆ sml_load_nptl

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

Avg. number of ptl/vertex.

◆ sml_loop_voltage_on

logical sml_module::sml_loop_voltage_on =.false.

Switches the loop voltage current drive on/off.

◆ sml_low_mu_fill_population

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

◆ sml_machine

integer sml_module::sml_machine = -99

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

◆ sml_marker_den

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

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

◆ sml_marker_den2

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

Triangle based marker density.

◆ sml_marker_min_temp

real (8) sml_module::sml_marker_min_temp = 1D1

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

◆ sml_marker_temp_factor

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

◆ sml_marker_temp_factor2

real (8) sml_module::sml_marker_temp_factor2 =1D0

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

◆ sml_max_imbalance

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.

◆ sml_max_loading_factor

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

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

◆ sml_min_loading_factor

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)

◆ sml_mms

logical sml_module::sml_mms = .false.

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

◆ sml_mms_alpha

real (8) sml_module::sml_mms_alpha = 7d0

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

◆ sml_mms_beta

real (8) sml_module::sml_mms_beta = 1d0

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

◆ sml_mms_gamma

real (8) sml_module::sml_mms_gamma = 0.5d0

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

◆ sml_mod_adiabatic

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.

◆ sml_mod_adiabatic_psi_in

real (8) sml_module::sml_mod_adiabatic_psi_in = 0.99

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

◆ sml_mod_adiabatic_psi_out

real (8) sml_module::sml_mod_adiabatic_psi_out = 1.00

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

◆ sml_mode_select_bands_on

logical sml_module::sml_mode_select_bands_on = .false.

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

◆ sml_mode_select_bd_width

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

width of boundary envelope

◆ sml_mode_select_cutoff

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.

◆ sml_mode_select_cutoff_mode

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.

◆ sml_mode_select_damp_width

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

◆ sml_mode_select_inpsi

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

inner boundary for mode selection

◆ sml_mode_select_keep_axisym

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)

◆ sml_mode_select_max_kth_rho

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

Max. k_theta*rhoi retained in poloidal Fourier filter.

◆ sml_mode_select_mmax

integer sml_module::sml_mode_select_mmax = 25

Highest pol. mode number for Fourier filter.

◆ sml_mode_select_mmin

integer sml_module::sml_mode_select_mmin = 0

Lowest pol. mode number for Fourier filter.

◆ sml_mode_select_mode

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.

◆ sml_mode_select_mres_q

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

◆ sml_mode_select_no_m0

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)

◆ sml_mode_select_num_m_damp

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.

◆ sml_mode_select_outpsi

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

outer boundary for mode selection

◆ sml_mode_select_psitol

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

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

◆ sml_mode_select_sol_mode

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

◆ sml_mode_select_use_minm

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)

◆ sml_mstep

integer sml_module::sml_mstep = 3000

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

◆ sml_mu0

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

Magnetic vacuum permeability in H/m (MKS)

◆ sml_mype

integer sml_module::sml_mype =-1

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

◆ sml_neutral

logical sml_module::sml_neutral =.false.

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

◆ sml_nhybrid

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)

◆ sml_nlarmor

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.

◆ sml_no_fp_in_f

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)

◆ sml_no_turb

logical sml_module::sml_no_turb =.false.

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

◆ sml_node_file

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

Unstructured mesh data: node-file.

◆ sml_nphi_2pi

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.

◆ sml_nphi_total

integer sml_module::sml_nphi_total =1

Number of poloidal planes (= toroidal grid size)

◆ sml_nrk

integer, parameter sml_module::sml_nrk = 2

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

◆ sml_nsurf3

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)

◆ sml_nsurf3_2

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)

◆ sml_nthreads

integer sml_module::sml_nthreads =-1

Total number of OpenMP threads per process.

◆ sml_num_ksp

integer sml_module::sml_num_ksp = 1

Number of communicators per plane for PETSc KSP solves.

◆ sml_outpsi

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)

◆ sml_outpsi_priv1

real (8) sml_module::sml_outpsi_priv1 =0.97D0

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

◆ sml_pe_per_ksp

integer sml_module::sml_pe_per_ksp = 0

Number of MPI ranks used for PETSc KSP solves.

◆ sml_pe_per_plane

integer sml_module::sml_pe_per_plane =0

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

◆ sml_pi

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

Pi.

◆ sml_plane_comm

integer sml_module::sml_plane_comm =MPI_COMM_NULL

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

◆ sml_plane_group

integer sml_module::sml_plane_group =MPI_GROUP_EMPTY

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

◆ sml_plane_index

integer sml_module::sml_plane_index =-1

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

◆ sml_plane_major

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.

◆ sml_plane_mype

integer sml_module::sml_plane_mype =0

MPI rank index within sml_plane_comm.

◆ sml_plane_per_pe

integer sml_module::sml_plane_per_pe =0

Number of poloidal planes per MPI rank (typically 1)

◆ sml_plane_totalpe

integer sml_module::sml_plane_totalpe =0

Total number of MPI ranks assigned to a poloidal plane.

◆ sml_poisson_0m_full_geo

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)

◆ sml_poisson_adia_wall

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.

◆ sml_poisson_natural_boundary

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

◆ sml_poisson_use_bc

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

◆ sml_prot_mass

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

proton mass in kg (MKS)

◆ sml_ptl_imbal_ion

real (8) sml_module::sml_ptl_imbal_ion =3D0

Maximal load ion particle imbalance.

◆ sml_radiation

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)

◆ sml_read_eq

logical sml_module::sml_read_eq =.true.

Read B-field profile from an eqd-file.

◆ sml_read_eq_m3dc1

logical sml_module::sml_read_eq_m3dc1 =.false.

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

◆ sml_reduce_core_ptl

logical sml_module::sml_reduce_core_ptl = .false.

Whether to reduce number of particles initialized in the core.

◆ sml_replace_pot0

logical sml_module::sml_replace_pot0 =.false.

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

◆ sml_resamp_on

logical sml_module::sml_resamp_on = .false.

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

◆ sml_restart

logical sml_module::sml_restart =.false.

◆ sml_rhomax

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)

◆ sml_sep2_surf_index

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)

◆ sml_sep_surf_index

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)

◆ sml_sheath_adjust

logical sml_module::sml_sheath_adjust =.false.

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

◆ sml_sheath_adjust_factor

real (8) sml_module::sml_sheath_adjust_factor =0.25D0

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

◆ sml_sheath_init_pot_auto

logical sml_module::sml_sheath_init_pot_auto =.false.

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

◆ sml_sheath_init_pot_factor

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)

◆ sml_sheath_mode

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)

◆ sml_source

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.

◆ sml_special

integer sml_module::sml_special =0

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

◆ sml_sqrt2pi

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

Sqrt(2Pi)

◆ sml_sqrtpi

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

Sqrt(Pi)

◆ sml_surf_file

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

Unstructured mesh data: flx-file.

◆ sml_symmetric_f0g

logical sml_module::sml_symmetric_f0g =.false.

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

◆ sml_totalpe

integer sml_module::sml_totalpe =-1

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

◆ sml_tri_psi_weighting

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.

◆ sml_turb_efield

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.

◆ sml_update_ampere_solver

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.

◆ sml_update_ampere_solver_nstep

integer sml_module::sml_update_ampere_solver_nstep =1

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

◆ sml_update_poisson_solver

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.

◆ sml_update_poisson_solver_nstep

integer sml_module::sml_update_poisson_solver_nstep =1

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

◆ sml_update_poisson_turb

logical sml_module::sml_update_poisson_turb =.false.

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

◆ sml_use_loading_factor

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.

◆ sml_use_pade

logical sml_module::sml_use_pade =.false.

Use Pade approximation for short wavelengths.

◆ sml_use_simple00

logical sml_module::sml_use_simple00 =.false.

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

◆ sml_verbose

logical sml_module::sml_verbose = .false.

???

◆ sml_wedge_n

integer sml_module::sml_wedge_n =1

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

◆ sml_zero_inner_bd

logical sml_module::sml_zero_inner_bd =.false.

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

◆ switch

logical sml_module::switch

◆ true

logical sml_module::true