XGC1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Functions
switch_em_es.cpp File Reference
#include "sml.hpp"
#include "plasma.hpp"
#include "perturbed_B_field.hpp"
Include dependency graph for switch_em_es.cpp:

Functions

void set_sml_em_es_step (int is_electrostatic, int ncycle_half, double dt)
 
void switch_em_es (Simulation< DeviceType > &sml, Plasma &plasma, const PerturbedBField< DeviceType > &perturbed_B_field)
 

Function Documentation

void set_sml_em_es_step ( int  is_electrostatic,
int  ncycle_half,
double  dt 
)

Here is the caller graph for this function:

void switch_em_es ( Simulation< DeviceType > &  sml,
Plasma plasma,
const PerturbedBField< DeviceType > &  perturbed_B_field 
)

Within the EM algorithm, this routine switches the behavior of the EM code between the electrostatic algorithm and the electromagnetic algorithm. At the fundamental level, this involves adjusting the time step size and the number of electron subcycling steps, and setting an indicator flag in the sml class to indicate to other parts of the code whether to use the ES or EM method. If the indicator is set to ES, the Ampere solver and pullback transform are skipped, the Poisson equation is set up with the adiabatic response term on the RHS, and the electron background distribution function will contain the adiabatic response (used in the weight update).

Parameters
[in,out]smlClass with simulation parameters
[in]perturbed_B_fieldClass with parameters for RMP field

Here is the call graph for this function:

Here is the caller graph for this function: