XGC1
|
#include <sml.hpp>
Public Member Functions | |
Simulation (NLReader::NamelistReader &nlr) | |
Public Attributes | |
int | bounce |
Bounce routine switch 0 for off, 1 for inner boundary, 2 for both boundaries. More... | |
int | bounce_zero_weight |
If ==1 and bounce>0, set particle weights to zero after bouncing from the outer boundary. More... | |
double | bounce_buffer |
Buffer width between sml_outpsi and where the particle actually bounces (must be >=0) More... | |
double | dt |
Time step. More... | |
int | sheath_mode |
Type of sheath (0 is none) More... | |
bool | sheath_adjust |
Whether to adjust the sheath. More... | |
bool | ptb_3db_on |
Toggle for ptb_3db. More... | |
bool | drift_on |
Toggle for using drift. More... | |
bool | neutrals |
Toggle for using neutrals. More... | |
bool | diag_heat_on |
Use heat diagnostics in sheath. More... | |
bool | deltaf |
Whether some species is deltaf. More... | |
bool | xz_00_up |
Use upper region of xz when obtaining 00 mode. More... | |
int | mstep |
Max number of time steps. More... | |
int | nrk |
Order of Runge-Kutta time integration of particles + fields. More... | |
bool | electron_on |
Use kinetic electrons. More... | |
bool | f0_grid |
Whether to use f0 grid. More... | |
bool | limit_marker_den |
Whether to limit marker density. More... | |
int | special |
Special run (eg single particle, poincare) More... | |
int | nthreads |
Number of OMP threads on the host. More... | |
int | restart_write_period |
How many steps between restart writes. More... | |
bool | field_solver_on =true |
If false, charge deposition and field solve is skipped. More... | |
bool | split_weight_scheme |
Whether to use the split-weight scheme. More... | |
bool | dwdt_fix_bg |
bool | dwdt_exb_only |
bool | em_mixed_variable |
Switch for use of mixed-variable formulation. More... | |
bool | em_control_variate |
Switch for use of control variate method. More... | |
int | em_pullback_mode |
bool | em_control_variate_final_cv |
bool | em_control_variate_flag |
int | em_control_variate_niter |
Number of iterations for Ampere solve with control-variate method. More... | |
bool | em_b_para_eff |
Effective dB_|| via a modified grad-B drift (Joiner et al., PoP, 2010) More... | |
bool | em_es_step |
bool | exclude_private |
Whether to exclude private region in ion charge deposition. More... | |
bool | grad_psitheta |
bool | update_poisson_solver |
Whether poisson solver is updated. More... | |
double | dpot_te_limit |
Max absolute value of dpot/temp in getf0. More... | |
bool | no_fp_in_f |
double | f0_grid_alpha |
bool | f0_update_analytic |
bool | f0_update_analytic_local |
If .false. –> flux-surface average update, .true. –> local. More... | |
double | f0_update_analytic_alpha |
Separate alpha from sml_f0_grid_alpha for Maxwellian contribution. More... | |
double | f0_update_analytic_damp_width |
int | f0_grid_alpha_start |
bool | ignore_f0g |
bool | diff_on |
bool | resamp_on |
Do resampling. More... | |
bool | resamp_for_final_restart_write |
Perform resampling before dumping the final restart file. More... | |
bool | resamp_restart_read |
Whether to read a restart file written from a simulation with different grid. More... | |
bool | field_aligned_initial |
bool | flat_marker |
double | marker_temp_factor |
double | marker_temp_factor2 |
double | marker_temp_factor3 |
double | flat_marker_decay_start1 |
double | flat_marker_decay_start2 |
double | flat_marker_cutoff1 |
double | flat_marker_cutoff2 |
double | flat_marker_width1 |
double | flat_marker_width2 |
double | initial_deltaf_noise |
double | marker_min_temp |
double | low_mu_fill_population |
double | time |
Current simulation time. More... | |
int | gstep |
Current time step. More... | |
bool | multirate_timestepping |
Use multirate timestepping. More... | |
int | mr_factor [5] |
double | mr_psi_max [5] |
maximum normalized psi value of each multirate region More... | |
int | mstep_rmp_es |
int | mstep_rmp_em |
int | rmp_es_to_em_dt_ratio |
Ratio of EM to ES time step size in RMP penetration calculation. More... | |
bool | cce_coupling_on |
Core-edge coupling flag. More... | |
bool | use_unfused_electron_push_kernel |
double | loop_voltage |
Inductive current drive: loop voltage (from Faraday's law curl(E)=-dB/dt) More... | |
double | loop_voltage_psimax |
Inductive current drive: outer boundary (in pol. flux) of the loop voltage. More... | |
Static Public Attributes | |
static constexpr bool | is_XGCa = false |
Equivalent to the preprocessor flag for now. More... | |
static constexpr bool | reduced_deltaf = false |
Equivalent to the preprocessor flag for now. More... | |
static constexpr bool | separate_n0 = true |
Equivalent to the preprocessor flag for now. More... | |
static constexpr bool | explicit_electromagnetic = false |
Equivalent to the preprocessor flag for now. More... | |
static constexpr bool | old_f0_update_analytic = false |
Equivalent to the preprocessor flag for now. More... | |
Simulation< Device >::Simulation | ( | NLReader::NamelistReader & | nlr | ) |
Constructor for simulation
int Simulation< Device >::bounce |
Bounce routine switch 0 for off, 1 for inner boundary, 2 for both boundaries.
double Simulation< Device >::bounce_buffer |
Buffer width between sml_outpsi and where the particle actually bounces (must be >=0)
int Simulation< Device >::bounce_zero_weight |
If ==1 and bounce>0, set particle weights to zero after bouncing from the outer boundary.
bool Simulation< Device >::cce_coupling_on |
Core-edge coupling flag.
bool Simulation< Device >::deltaf |
Whether some species is deltaf.
bool Simulation< Device >::diag_heat_on |
Use heat diagnostics in sheath.
bool Simulation< Device >::diff_on |
double Simulation< Device >::dpot_te_limit |
Max absolute value of dpot/temp in getf0.
bool Simulation< Device >::drift_on |
Toggle for using drift.
double Simulation< Device >::dt |
Time step.
bool Simulation< Device >::dwdt_exb_only |
bool Simulation< Device >::dwdt_fix_bg |
bool Simulation< Device >::electron_on |
Use kinetic electrons.
bool Simulation< Device >::em_b_para_eff |
Effective dB_|| via a modified grad-B drift (Joiner et al., PoP, 2010)
bool Simulation< Device >::em_control_variate |
Switch for use of control variate method.
bool Simulation< Device >::em_control_variate_final_cv |
bool Simulation< Device >::em_control_variate_flag |
int Simulation< Device >::em_control_variate_niter |
Number of iterations for Ampere solve with control-variate method.
bool Simulation< Device >::em_es_step |
If true, the ES algorithm will be used within the EM code (details in XGC_core/module.F90)
bool Simulation< Device >::em_mixed_variable |
Switch for use of mixed-variable formulation.
int Simulation< Device >::em_pullback_mode |
(0) ??? (1) ??? (2) ??? (3) mixed-variable pullback with dA_s/dt=0, (4) pullback using Ohm's law dA_s/dt + b.grad(phi) = 0 (5) pullback using dA_s/dt + b.grad(phi) = -eta*j
bool Simulation< Device >::exclude_private |
Whether to exclude private region in ion charge deposition.
|
static |
Equivalent to the preprocessor flag for now.
bool Simulation< Device >::f0_grid |
Whether to use f0 grid.
double Simulation< Device >::f0_grid_alpha |
Fraction of the particle weight that is transferred to the background distribution function (particle noise control) every sml_f_source_period time steps. As a rule of thumb, sml_f0_grid_alpha=sml_dt*sml_f_source_period can be used.
int Simulation< Device >::f0_grid_alpha_start |
For delayed onset of total-f particle noise control. (must be >=1) Values >1 cause a linear ramp-up of sml_f0_grid_alpha from 0 to its input value from time step 1 to sml_f0_grid_alpha_start.
bool Simulation< Device >::f0_update_analytic |
Switch on/off the update of the analytic part of the distribution function
double Simulation< Device >::f0_update_analytic_alpha |
Separate alpha from sml_f0_grid_alpha for Maxwellian contribution.
double Simulation< Device >::f0_update_analytic_damp_width |
For width of \(\exp^{-(x/w)^2}\) damping factor for updating density/temperature of the analytical f0
bool Simulation< Device >::f0_update_analytic_local |
If .false. –> flux-surface average update, .true. –> local.
bool Simulation< Device >::field_aligned_initial |
bool Simulation< Device >::field_solver_on =true |
If false, charge deposition and field solve is skipped.
bool Simulation< Device >::flat_marker |
double Simulation< Device >::flat_marker_cutoff1 |
double Simulation< Device >::flat_marker_cutoff2 |
double Simulation< Device >::flat_marker_decay_start1 |
double Simulation< Device >::flat_marker_decay_start2 |
double Simulation< Device >::flat_marker_width1 |
double Simulation< Device >::flat_marker_width2 |
bool Simulation< Device >::grad_psitheta |
If true, gradiant operator is calculated as \((\hat{\boldsymbol{\psi}}\cdot\nabla,\hat{\boldsymbol{\theta}}^\ast)\cdot\nabla\) instead of \((R,Z)\) coordinates.
int Simulation< Device >::gstep |
Current time step.
bool Simulation< Device >::ignore_f0g |
Ignore f0g in f0 calculation. When true, it skips the update of den_f0_h, instead using the initialized value (which is zero). This is helpful to density conservation of heating when f0g is noisy due to insufficient number of particles.
double Simulation< Device >::initial_deltaf_noise |
|
static |
Equivalent to the preprocessor flag for now.
bool Simulation< Device >::limit_marker_den |
Whether to limit marker density.
double Simulation< Device >::loop_voltage |
Inductive current drive: loop voltage (from Faraday's law curl(E)=-dB/dt)
double Simulation< Device >::loop_voltage_psimax |
Inductive current drive: outer boundary (in pol. flux) of the loop voltage.
double Simulation< Device >::low_mu_fill_population |
double Simulation< Device >::marker_min_temp |
double Simulation< Device >::marker_temp_factor |
double Simulation< Device >::marker_temp_factor2 |
double Simulation< Device >::marker_temp_factor3 |
int Simulation< Device >::mr_factor[5] |
multirate timestepping for core region ions; mr_ratio (> 1) is the factor used to accelerate the core region physics.
double Simulation< Device >::mr_psi_max[5] |
maximum normalized psi value of each multirate region
int Simulation< Device >::mstep |
Max number of time steps.
int Simulation< Device >::mstep_rmp_em |
Number of electromagnetic time steps for RMP penetration calculation with damped Newton iteration
int Simulation< Device >::mstep_rmp_es |
Number of electrostatic time steps for RMP penetration calculation with damped Newton iteration
bool Simulation< Device >::multirate_timestepping |
Use multirate timestepping.
bool Simulation< Device >::neutrals |
Toggle for using neutrals.
bool Simulation< Device >::no_fp_in_f |
If .true. the distribution function used for the source routines will not include particle information (only for testing)
int Simulation< Device >::nrk |
Order of Runge-Kutta time integration of particles + fields.
int Simulation< Device >::nthreads |
Number of OMP threads on the host.
|
static |
Equivalent to the preprocessor flag for now.
bool Simulation< Device >::ptb_3db_on |
Toggle for ptb_3db.
|
static |
Equivalent to the preprocessor flag for now.
bool Simulation< Device >::resamp_for_final_restart_write |
Perform resampling before dumping the final restart file.
bool Simulation< Device >::resamp_on |
Do resampling.
bool Simulation< Device >::resamp_restart_read |
Whether to read a restart file written from a simulation with different grid.
int Simulation< Device >::restart_write_period |
How many steps between restart writes.
int Simulation< Device >::rmp_es_to_em_dt_ratio |
Ratio of EM to ES time step size in RMP penetration calculation.
|
static |
Equivalent to the preprocessor flag for now.
bool Simulation< Device >::sheath_adjust |
Whether to adjust the sheath.
int Simulation< Device >::sheath_mode |
Type of sheath (0 is none)
int Simulation< Device >::special |
Special run (eg single particle, poincare)
bool Simulation< Device >::split_weight_scheme |
Whether to use the split-weight scheme.
double Simulation< Device >::time |
Current simulation time.
bool Simulation< Device >::update_poisson_solver |
Whether poisson solver is updated.
bool Simulation< Device >::use_unfused_electron_push_kernel |
bool Simulation< Device >::xz_00_up |
Use upper region of xz when obtaining 00 mode.