XGC1
|
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 =16 |
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 =.false. |
Use modified triangle shape functions (Useful for coarse meshes in XGCa when straight element edges do not represent the curved flux-surfaces well. More... | |
integer, parameter | sml_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... | |
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 =16 |
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 =.false. |
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 |