49 const int CALL_AT_F_SOURCE = 1;
50 bool sml_radiation = nlr.
get<
bool>(
"sml_radiation",
false);
52 bool sml_neutral = nlr.
get<
bool>(
"sml_neutral",
false);
53 bool sml_source = nlr.
get<
bool>(
"sml_source",
false);
54 bool sml_current_drive = nlr.
get<
bool>(
"sml_current_drive_on",
false);
55 bool sml_thermal_bath_on = nlr.
get<
bool>(
"sml_thermal_bath_on",
false);
56 if (sml_radiation) sml_neutral =
true;
66 if(!f0_grid)
exit_XGC(
"\nERROR: sml_neutrals can't (yet) be used unless all non-adiabatic species have ptl_dynamic_f0 = .true.\n");
69 int start_time = nlr.
get<
int>(
"neu_start_time",2);
74 if(!f0_grid)
exit_XGC(
"\nERROR: sml_source can't (yet) be used unless all non-adiabatic species have ptl_dynamic_f0 = .true.\n");
77 int start_time = nlr.
get<
int>(
"src_start_time",1);
81 if(sml_current_drive){
83 int start_time = nlr.
get<
int>(
"src_current_drive_start_time",1);
87 if(sml_thermal_bath_on){
92 bool diff_on = nlr.
get<
bool>(
"diff_on",
false);
95 bool electron_on = nlr.
get<
bool>(
"sml_electron_on",
false);
98 if(
is_rank_zero()) printf(
"\ndiff_on=TRUE is not compatible with sml_electron_on=FALSE");
99 exit_XGC(
"\nThe anomalous diffusion model requires kinetic electrons.\n");
105 int start_time = nlr.
get<
int>(
"diff_start_time", 1);
110 bool pellet_on = nlr.
get<
bool>(
"src_pellet_on",
false);
118 int col_mode_in = nlr.
get<
int>(
"col_mode", 0);
125 if(
is_rank_zero()) printf(
"\ncol_mode==2 is currently not supported. If you are reviving it, dont forget to address this potential issue: https://github.com/PrincetonUniversity/XGC-Devel/issues/266");
127 exit_XGC(
"\nInvalid col_mode specified. Acceptable options are 0, 1, 4, or 5.\n");
Source neutrals
Definition: sources.hpp:29
Sources(NLReader::NamelistReader &nlr, const DomainDecomposition< DeviceType > &pol_decomp, const MagneticField< DeviceType > &magnetic_field, const Grid< DeviceType > &grid, const VelocityGrid &vgrid, Plasma &plasma, bool overwrite_existing_files)
Definition: sources.hpp:42
Definition: sources.hpp:19
bool is_rank_zero()
Definition: globals.hpp:27
bool dynamic_f0
Whether f0 can evolve in time.
Definition: species.hpp:96
T get(const string ¶m, const T default_val, int val_ind=0)
Definition: NamelistReader.hpp:373
Source collisions
Definition: sources.hpp:33
int f_source_period
Frequency of f_sources.
Definition: sources.hpp:26
Definition: velocity_grid.hpp:8
subroutine plasma(grid, itr, p, dene_out, deni_out, Te_out, Ti_out, Vparai_out)
Calculate the plasma density, temperature, and parallel velocity for a point in triangle itr using pl...
Definition: neutral_totalf.F90:1224
Definition: thermal_bath.hpp:8
Definition: NamelistReader.hpp:193
Definition: magnetic_field.hpp:12
Definition: pellet.hpp:12
MonteCarloCollider< DeviceType > col_mc
Monte carlo collisions, only used by MonteCarloNonConserving.
Definition: sources.hpp:39
Source current_drive
Definition: sources.hpp:34
Definition: diffusion.hpp:15
CollisionGrid< DeviceType > col_grid
Collision grid, only used by NonLinearFokkerPlanckLandau.
Definition: sources.hpp:40
void use_namelist(const string &namelist)
Definition: NamelistReader.hpp:355
Source heat_and_torque
Definition: sources.hpp:32
bool is_triggered(int step) const
Definition: step_trigger.hpp:25
CollisionMode
Definition: sources.hpp:12
int n_nonadiabatic_species
Number of nonadiabatic species.
Definition: plasma.hpp:90
Diffusion diffusion
Definition: sources.hpp:30
StepTrigger step_trigger
Definition: source.hpp:8
CollisionMode col_mode
Collision operator model.
Definition: sources.hpp:38
void exit_XGC(std::string msg)
Definition: globals.hpp:37
bool is_adiabatic
Whether this species is adiabatic.
Definition: species.hpp:80
Pellet pellet
Definition: sources.hpp:35
Definition: magnetic_field.F90:1
Definition: plasma.hpp:13
Radiation radiation
Definition: sources.hpp:31
ThermalBath thermal_bath
Definition: sources.hpp:36
Definition: species.hpp:75
std::shared_ptr< XGC_IO_Stream > io_stream
Definition: col_grid.hpp:214
void close_streams()
Definition: sources.hpp:142
StepTrigger step_trigger
Definition: sources.hpp:22
bool is_triggered(int step)
Definition: sources.hpp:150
Definition: step_trigger.hpp:4
bool true_for_all_species(F func) const
Definition: plasma.hpp:190
bool diag_on
Definition: col_grid.hpp:213
Definition: radiation.hpp:13