WarpX
Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Protected Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | Friends | List of all members
WarpX Class Reference

#include <WarpX.H>

Inheritance diagram for WarpX:

Public Member Functions

 WarpX ()
 
 ~WarpX ()
 
int Verbose () const
 
void InitData ()
 
void Evolve (int numsteps=-1)
 
MultiParticleContainerGetPartContainer ()
 
std::array< const amrex::MultiFab *const, 3 > get_array_Bfield_aux (const int lev) const
 
std::array< const amrex::MultiFab *const, 3 > get_array_Efield_aux (const int lev) const
 
amrex::MultiFab * get_pointer_Efield_aux (int lev, int direction) const
 
amrex::MultiFab * get_pointer_Bfield_aux (int lev, int direction) const
 
amrex::MultiFab * get_pointer_Efield_fp (int lev, int direction) const
 
amrex::MultiFab * get_pointer_Bfield_fp (int lev, int direction) const
 
amrex::MultiFab * get_pointer_current_fp (int lev, int direction) const
 
amrex::MultiFab * get_pointer_rho_fp (int lev) const
 
amrex::MultiFab * get_pointer_F_fp (int lev) const
 
amrex::MultiFab * get_pointer_Efield_cp (int lev, int direction) const
 
amrex::MultiFab * get_pointer_Bfield_cp (int lev, int direction) const
 
amrex::MultiFab * get_pointer_current_cp (int lev, int direction) const
 
amrex::MultiFab * get_pointer_rho_cp (int lev) const
 
amrex::MultiFab * get_pointer_F_cp (int lev) const
 
const amrex::MultiFab & getcurrent (int lev, int direction)
 
const amrex::MultiFab & getEfield (int lev, int direction)
 
const amrex::MultiFab & getBfield (int lev, int direction)
 
const amrex::MultiFab & getcurrent_cp (int lev, int direction)
 
const amrex::MultiFab & getEfield_cp (int lev, int direction)
 
const amrex::MultiFab & getBfield_cp (int lev, int direction)
 
const amrex::MultiFab & getrho_cp (int lev)
 
const amrex::MultiFab & getcurrent_fp (int lev, int direction)
 
const amrex::MultiFab & getEfield_fp (int lev, int direction)
 
const amrex::MultiFab & getBfield_fp (int lev, int direction)
 
const amrex::MultiFab & getrho_fp (int lev)
 
const amrex::MultiFab & getF_fp (int lev)
 
bool DoPML () const
 
std::vector< bool > getPMLdirections () const
 
void applyMirrors (amrex::Real time)
 
void ComputeDt ()
 
void computeMaxStepBoostAccelerator (const amrex::Geometry &geom)
 
int MoveWindow (bool move_j)
 
void ShiftGalileanBoundary ()
 This function shifts the boundary of the grid by 'm_v_galilean*dt'. In doding so, only positions attributes are changed while fields remain unchanged. More...
 
void UpdatePlasmaInjectionPosition (amrex::Real dt)
 
void ResetProbDomain (const amrex::RealBox &rb)
 
void EvolveE (amrex::Real dt)
 
void EvolveE (int lev, amrex::Real dt)
 
void EvolveB (amrex::Real dt)
 
void EvolveB (int lev, amrex::Real dt)
 
void EvolveF (amrex::Real dt, DtType dt_type)
 
void EvolveF (int lev, amrex::Real dt, DtType dt_type)
 
void EvolveB (int lev, PatchType patch_type, amrex::Real dt)
 
void EvolveE (int lev, PatchType patch_type, amrex::Real dt)
 
void EvolveF (int lev, PatchType patch_type, amrex::Real dt, DtType dt_type)
 
void MacroscopicEvolveE (amrex::Real dt)
 
void MacroscopicEvolveE (int lev, amrex::Real dt)
 
void MacroscopicEvolveE (int lev, PatchType patch_type, amrex::Real dt)
 
void Hybrid_QED_Push (amrex::Vector< amrex::Real > dt)
 apply QED correction on electric field More...
 
void Hybrid_QED_Push (int lev, amrex::Real dt)
 apply QED correction on electric field for level lev More...
 
void Hybrid_QED_Push (int lev, PatchType patch_type, amrex::Real dt)
 apply QED correction on electric field for level lev and patch type patch_type More...
 
void LoadBalance ()
 perform load balance; compute and communicate new amrex::DistributionMapping More...
 
void ResetCosts ()
 resets costs to zero More...
 
IntervalsParser get_load_balance_intervals () const
 returns the load balance interval More...
 
void DampFieldsInGuards (std::array< std::unique_ptr< amrex::MultiFab >, 3 > &Efield, std::array< std::unique_ptr< amrex::MultiFab >, 3 > &Bfield)
 Private function for spectral solver Applies a damping factor in the guards cells that extend beyond the extent of the domain, reducing fluctuations that can appear in parallel simulations. This will be called when use_damp_fields_in_z_guard is true. More...
 
void ApplyInverseVolumeScalingToCurrentDensity (amrex::MultiFab *Jx, amrex::MultiFab *Jy, amrex::MultiFab *Jz, int lev)
 
void ApplyInverseVolumeScalingToChargeDensity (amrex::MultiFab *Rho, int lev)
 
void DampPML ()
 
void DampPML (int lev)
 
void DampPML (int lev, PatchType patch_type)
 
void DampJPML ()
 
void DampJPML (int lev)
 
void DampJPML (int lev, PatchType patch_type)
 
void CopyJPML ()
 Copy the current J from the regular grid to the PML. More...
 
PMLGetPML (int lev)
 
void doFieldIonization ()
 
void doFieldIonization (int lev)
 
void doQEDEvents ()
 
void doQEDEvents (int lev)
 
void PushParticlesandDepose (int lev, amrex::Real cur_time, DtType a_dt_type=DtType::Full)
 
void PushParticlesandDepose (amrex::Real cur_time)
 
void UpdateAuxilaryData ()
 
void UpdateAuxilaryDataStagToNodal ()
 
void UpdateAuxilaryDataSameType ()
 
void FillBoundaryB (amrex::IntVect ng, amrex::IntVect ng_extra_fine=amrex::IntVect::TheZeroVector())
 
void FillBoundaryE (amrex::IntVect ng, amrex::IntVect ng_extra_fine=amrex::IntVect::TheZeroVector())
 
void FillBoundaryB_avg (amrex::IntVect ng, amrex::IntVect ng_extra_fine=amrex::IntVect::TheZeroVector())
 
void FillBoundaryE_avg (amrex::IntVect ng, amrex::IntVect ng_extra_fine=amrex::IntVect::TheZeroVector())
 
void FillBoundaryF (amrex::IntVect ng)
 
void FillBoundaryAux (amrex::IntVect ng)
 
void FillBoundaryE (int lev, amrex::IntVect ng, amrex::IntVect ng_extra_fine=amrex::IntVect::TheZeroVector())
 
void FillBoundaryB (int lev, amrex::IntVect ng, amrex::IntVect ng_extra_fine=amrex::IntVect::TheZeroVector())
 
void FillBoundaryE_avg (int lev, amrex::IntVect ng, amrex::IntVect ng_extra_fine=amrex::IntVect::TheZeroVector())
 
void FillBoundaryB_avg (int lev, amrex::IntVect ng, amrex::IntVect ng_extra_fine=amrex::IntVect::TheZeroVector())
 
void FillBoundaryF (int lev, amrex::IntVect ng)
 
void FillBoundaryAux (int lev, amrex::IntVect ng)
 
void SyncCurrent ()
 
void SyncRho ()
 
amrex::Vector< int > getnsubsteps () const
 
int getnsubsteps (int lev) const
 
amrex::Vector< int > getistep () const
 
int getistep (int lev) const
 
void setistep (int lev, int ii)
 
amrex::Vector< amrex::Real > gett_old () const
 
amrex::Real gett_old (int lev) const
 
amrex::Vector< amrex::Real > gett_new () const
 
amrex::Real gett_new (int lev) const
 
void sett_new (int lev, amrex::Real time)
 
amrex::Vector< amrex::Real > getdt () const
 
amrex::Real getdt (int lev) const
 
amrex::Real getmoving_window_x () const
 
bool getis_synchronized () const
 
void setplot_rho (bool a_plot_rho)
 
int maxStep () const
 
amrex::Real stopTime () const
 
void AverageAndPackFields (amrex::Vector< std::string > &varnames, amrex::Vector< amrex::MultiFab > &mf_avg, const int ngrow) const
 
void prepareFields (int const step, amrex::Vector< std::string > &varnames, amrex::Vector< amrex::MultiFab > &mf_avg, amrex::Vector< const amrex::MultiFab *> &output_mf, amrex::Vector< amrex::Geometry > &output_geom) const
 
std::array< amrex::Real, 3 > LowerCornerWithGalilean (const amrex::Box &bx, const amrex::Array< amrex::Real, 3 > &v_galilean, int lev)
 
amrex::RealBox getSliceRealBox () const
 
void ComputeDivE (amrex::MultiFab &divE, const int lev)
 
const amrex::IntVect getngE () const
 
const amrex::IntVect getngF () const
 
const amrex::IntVect getngExtra () const
 
const amrex::IntVect getngUpdateAux () const
 
const amrex::IntVect get_ng_depos_J () const
 
const amrex::IntVect get_ng_depos_rho () const
 
void ComputeSpaceChargeField (bool const reset_fields)
 
void AddSpaceChargeField (WarpXParticleContainer &pc)
 
void computePhi (const amrex::Vector< std::unique_ptr< amrex::MultiFab > > &rho, amrex::Vector< std::unique_ptr< amrex::MultiFab > > &phi, std::array< amrex::Real, 3 > const beta={{0, 0, 0}}, amrex::Real const required_precision=1.e-11) const
 
void computeE (amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > &E, const amrex::Vector< std::unique_ptr< amrex::MultiFab > > &phi, std::array< amrex::Real, 3 > const beta={{0, 0, 0}}) const
 
void computeB (amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > &B, const amrex::Vector< std::unique_ptr< amrex::MultiFab > > &phi, std::array< amrex::Real, 3 > const beta={{0, 0, 0}}) const
 
void InitializeExternalFieldsOnGridUsingParser (amrex::MultiFab *mfx, amrex::MultiFab *mfy, amrex::MultiFab *mfz, HostDeviceParser< 3 > const &xfield_parser, HostDeviceParser< 3 > const &yfield_parser, HostDeviceParser< 3 > const &zfield_parser, const int lev)
 This function initializes the E and B fields on each level using the parser and the user-defined function for the external fields. The subroutine will parse the x_/y_z_external_grid_function and then, the field multifab is initialized based on the (x,y,z) position on the staggered yee-grid or cell-centered grid, in the interior cells and guard cells. More...
 
void ComputeCostsHeuristic (amrex::Vector< std::unique_ptr< amrex::LayoutData< amrex::Real > > > &costs)
 adds particle and cell contributions in cells to compute heuristic cost in each box on each level, and records in costs More...
 

Static Public Member Functions

static WarpXGetInstance ()
 
static void ResetInstance ()
 
static std::string Version ()
 Version of WarpX executable. More...
 
static std::string PicsarVersion ()
 Version of PICSAR dependency. More...
 
static void shiftMF (amrex::MultiFab &mf, const amrex::Geometry &geom, int num_shift, int dir, amrex::IntVect ng_extra, amrex::Real external_field=0.0, bool useparser=false, HostDeviceParser< 3 > const &field_parser={})
 
static void GotoNextLine (std::istream &is)
 
static amrex::LayoutData< amrex::Real > * getCosts (int lev)
 
static std::array< amrex::Real, 3 > CellSize (int lev)
 
static amrex::RealBox getRealBox (const amrex::Box &bx, int lev)
 
static std::array< amrex::Real, 3 > LowerCorner (const amrex::Box &bx, std::array< amrex::Real, 3 > galilean_shift, int lev)
 
static std::array< amrex::Real, 3 > UpperCorner (const amrex::Box &bx, int lev)
 
static amrex::IntVect RefRatio (int lev)
 
static const amrex::iMultiFab * CurrentBufferMasks (int lev)
 
static const amrex::iMultiFab * GatherBufferMasks (int lev)
 
static void ComputeDivB (amrex::MultiFab &divB, int const dcomp, const std::array< const amrex::MultiFab *const, 3 > &B, const std::array< amrex::Real, 3 > &dx)
 
static void ComputeDivB (amrex::MultiFab &divB, int const dcomp, const std::array< const amrex::MultiFab *const, 3 > &B, const std::array< amrex::Real, 3 > &dx, int const ngrow)
 

Public Attributes

std::unique_ptr< ParserWrapper< 3 > > Bxfield_parser
 
std::unique_ptr< ParserWrapper< 3 > > Byfield_parser
 
std::unique_ptr< ParserWrapper< 3 > > Bzfield_parser
 
std::unique_ptr< ParserWrapper< 3 > > Exfield_parser
 
std::unique_ptr< ParserWrapper< 3 > > Eyfield_parser
 
std::unique_ptr< ParserWrapper< 3 > > Ezfield_parser
 
bool current_correction = false
 
bool update_with_rho
 
BilinearFilter bilinear_filter
 
amrex::Vector< std::unique_ptr< NCIGodfreyFilter > > nci_godfrey_filter_exeybz
 
amrex::Vector< std::unique_ptr< NCIGodfreyFilter > > nci_godfrey_filter_bxbyez
 
amrex::Real time_of_last_gal_shift = 0
 
amrex::Array< amrex::Real, 3 > m_v_galilean = {{0}}
 
amrex::Array< amrex::Real, 3 > m_galilean_shift = {{0}}
 
amrex::Vector< amrex::Real > mirror_z
 
amrex::Vector< amrex::Real > mirror_z_width
 
amrex::Vector< int > mirror_z_npoints
 
MultiReducedDiagsreduced_diags
 object with all reduced diagnotics, similar to MultiParticleContainer for species. More...
 

Static Public Attributes

static std::string authors = ""
 Author of an input file / simulation setup. More...
 
static amrex::Vector< amrex::Real > E_external_grid
 
static amrex::Vector< amrex::Real > B_external_grid
 
static std::string B_ext_grid_s = "default"
 
static std::string E_ext_grid_s = "default"
 
static std::string str_Bx_ext_grid_function
 
static std::string str_By_ext_grid_function
 
static std::string str_Bz_ext_grid_function
 
static std::string str_Ex_ext_grid_function
 
static std::string str_Ey_ext_grid_function
 
static std::string str_Ez_ext_grid_function
 
static long current_deposition_algo
 
static long charge_deposition_algo
 
static long field_gathering_algo
 
static long particle_pusher_algo
 
static int maxwell_solver_id
 
static long load_balance_costs_update_algo
 
static int em_solver_medium
 
static int macroscopic_solver_algo
 
static int do_dive_cleaning = 0
 
static long nox = 1
 
static long noy = 1
 
static long noz = 1
 
static long n_rz_azimuthal_modes = 1
 
static long ncomps = 1
 
static bool use_fdtd_nci_corr = false
 
static bool galerkin_interpolation = true
 
static bool use_filter = false
 
static bool use_kspace_filter = false
 
static bool use_filter_compensation = false
 
static bool use_damp_fields_in_z_guard = false
 
static bool serialize_ics = false
 
static bool do_back_transformed_diagnostics = false
 
static std::string lab_data_directory = "lab_frame_data"
 
static int num_snapshots_lab = std::numeric_limits<int>::lowest()
 
static amrex::Real dt_snapshots_lab = std::numeric_limits<Real>::lowest()
 
static bool do_back_transformed_fields = true
 
static bool do_back_transformed_particles = true
 
static amrex::Real gamma_boost = 1.
 
static amrex::Real beta_boost = 0.
 
static amrex::Vector< int > boost_direction = {0,0,0}
 
static amrex::Real zmax_plasma_to_compute_max_step = 0.
 
static int do_compute_max_step_from_zmax = 0
 
static bool do_dynamic_scheduling = true
 
static bool refine_plasma = false
 
static IntervalsParser sort_intervals
 
static amrex::IntVect sort_bin_size
 
static int do_subcycling = 0
 
static bool do_device_synchronize_before_profile = false
 
static bool safe_guard_cells = 0
 
static int n_field_gather_buffer = -1
 
static int n_current_deposition_buffer = -1
 in number of cells from the edge (identical for each dimension) More...
 
static int do_nodal = false
 in number of cells from the edge (identical for each dimension) More...
 
static amrex::IntVect filter_npass_each_dir
 
static int num_mirrors = 0
 
static amrex::Real quantum_xi_c2 = PhysConst::xi_c2
 
static int do_electrostatic = 0
 
static int do_moving_window = 0
 
static int moving_window_dir = -1
 
static amrex::Real moving_window_v = std::numeric_limits<amrex::Real>::max()
 
static bool fft_do_time_averaging = false
 
static int num_slice_snapshots_lab = 0
 
static amrex::Real dt_slice_snapshots_lab
 
static amrex::Real particle_slice_width_lab = 0.0
 

Protected Member Functions

void InitLevelData (int lev, amrex::Real time)
 This function initializes E, B, rho, and F, at all the levels of the multifab. rho and F are initialized with 0. The E and B fields are initialized using user-defined inputs. The initialization type is set using "B_ext_grid_init_style" and "E_ext_grid_init_style". The initialization style is set to "default" if not explicitly defined by the user, and the E and B fields are initialized with E_external_grid and B_external_grid, respectively, each with a default value of 0. If the initialization type for the E and B field is "constant", then, the E and B fields at all the levels are initialized with user-defined values for E_external_grid and B_external_grid. If the initialization type for B-field is set to "parse_B_ext_grid_function", then, the parser is used to read Bx_external_grid_function(x,y,z), By_external_grid_function(x,y,z), and Bz_external_grid_function(x,y,z). Similarly, if the E-field initialization type is set to "parse_E_ext_grid_function", then, the parser is used to read Ex_external_grid_function(x,y,z), Ey_external_grid_function(x,y,z), and Ex_external_grid_function(x,y,z). The parser for the E and B initialization assumes that the function has three independent variables, at max, namely, x, y, z. However, any number of constants can be used in the function used to define the E and B fields on the grid. More...
 
virtual void ErrorEst (int lev, amrex::TagBoxArray &tags, amrex::Real time, int) final
 Tagging cells for refinement. More...
 
virtual void PostProcessBaseGrids (amrex::BoxArray &ba0) const final
 
virtual void MakeNewLevelFromScratch (int lev, amrex::Real time, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm) final
 
virtual void MakeNewLevelFromCoarse (int, amrex::Real, const amrex::BoxArray &, const amrex::DistributionMapping &) final
 
virtual void RemakeLevel (int lev, amrex::Real time, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm) final
 
virtual void ClearLevel (int lev) final
 Delete level data. Called by AmrCore::regrid. More...
 

Private Member Functions

void EvolveEM (int numsteps)
 
void FillBoundaryB (int lev, PatchType patch_type, amrex::IntVect ng)
 
void FillBoundaryE (int lev, PatchType patch_type, amrex::IntVect ng)
 
void FillBoundaryF (int lev, PatchType patch_type, amrex::IntVect ng)
 
void FillBoundaryB_avg (int lev, PatchType patch_type, amrex::IntVect ng)
 
void FillBoundaryE_avg (int lev, PatchType patch_type, amrex::IntVect ng)
 
void OneStep_nosub (amrex::Real t)
 
void OneStep_sub1 (amrex::Real t)
 
void RestrictCurrentFromFineToCoarsePatch (int lev)
 Fills the values of the current on the coarse patch by averaging the values of the current of the fine patch (on the same level). More...
 
void AddCurrentFromFineLevelandSumBoundary (int lev)
 
void StoreCurrent (int lev)
 
void RestoreCurrent (int lev)
 
void ApplyFilterandSumBoundaryJ (int lev, PatchType patch_type)
 
void NodalSyncJ (int lev, PatchType patch_type)
 
void RestrictRhoFromFineToCoarsePatch (int lev)
 
void ApplyFilterandSumBoundaryRho (int lev, PatchType patch_type, int icomp, int ncomp)
 
void AddRhoFromFineLevelandSumBoundary (int lev, int icomp, int ncomp)
 
void NodalSyncRho (int lev, PatchType patch_type, int icomp, int ncomp)
 
void CurrentCorrection ()
 Private function for current correction in Fourier space (equation (19) of https://doi.org/10.1016/j.jcp.2013.03.010): loops over the MR levels and applies the correction on the fine and coarse patches (calls the virtual method CurrentCorrection of the spectral algorithm in use, via the public interface defined in the class SpectralSolver). More...
 
void VayDeposition ()
 Private function for Vay deposition in Fourier space (equations (20)-(24) of https://doi.org/10.1016/j.jcp.2013.03.010): loops over the MR levels and applies the correction on the fine and coarse patches (calls the virtual method VayDeposition of the spectral algorithm in use, via the public interface defined in the class SpectralSolver). More...
 
void ReadParameters ()
 
void BackwardCompatibility ()
 
void InitFromScratch ()
 
void AllocLevelData (int lev, const amrex::BoxArray &new_grids, const amrex::DistributionMapping &new_dmap)
 
void InitFromCheckpoint ()
 
void PostRestart ()
 
void InitPML ()
 
void ComputePMLFactors ()
 
void InitFilter ()
 
void InitDiagnostics ()
 
void InitNCICorrector ()
 
std::unique_ptr< amrex::MultiFab > GetCellCenteredData ()
 
void ExchangeWithPmlB (int lev)
 
void ExchangeWithPmlE (int lev)
 
void ExchangeWithPmlF (int lev)
 
void BuildBufferMasks ()
 
void BuildBufferMasksInBox (const amrex::Box tbx, amrex::IArrayBox &buffer_mask, const amrex::IArrayBox &guard_mask, const int ng)
 Build buffer mask within given FArrayBox. More...
 
const amrex::iMultiFab * getCurrentBufferMasks (int lev) const
 
const amrex::iMultiFab * getGatherBufferMasks (int lev) const
 
void AllocLevelMFs (int lev, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm, const amrex::IntVect &ngE, const amrex::IntVect &ngJ, const amrex::IntVect &ngRho, const amrex::IntVect &ngF, const amrex::IntVect &ngextra, const bool aux_is_nodal)
 
void EvolvePSATD (int numsteps)
 
void PushPSATD (amrex::Real dt)
 
void PushPSATD (int lev, amrex::Real dt)
 

Private Attributes

amrex::Vector< int > istep
 
amrex::Vector< int > nsubsteps
 
amrex::Vector< amrex::Real > t_new
 
amrex::Vector< amrex::Real > t_old
 
amrex::Vector< amrex::Real > dt
 
std::unique_ptr< MultiParticleContainermypc
 
std::unique_ptr< MultiDiagnosticsmulti_diags
 
std::unique_ptr< BackTransformedDiagnosticmyBFD
 
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_aux
 
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_aux
 
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_avg_aux
 
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_avg_aux
 
amrex::Vector< std::unique_ptr< amrex::MultiFab > > F_fp
 
amrex::Vector< std::unique_ptr< amrex::MultiFab > > rho_fp
 
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_fp
 
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_fp
 
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_fp
 
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_avg_fp
 
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_avg_fp
 
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_store
 
amrex::Vector< std::unique_ptr< amrex::MultiFab > > F_cp
 
amrex::Vector< std::unique_ptr< amrex::MultiFab > > rho_cp
 
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_cp
 
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_cp
 
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_cp
 
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_avg_cp
 
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_avg_cp
 
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_cax
 
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_cax
 
amrex::Vector< std::unique_ptr< amrex::iMultiFab > > current_buffer_masks
 
amrex::Vector< std::unique_ptr< amrex::iMultiFab > > gather_buffer_masks
 
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_buf
 
amrex::Vector< std::unique_ptr< amrex::MultiFab > > charge_buf
 
int do_pml = 1
 
int pml_ncell = 10
 
int pml_delta = 10
 
int pml_has_particles = 0
 
int do_pml_j_damping = 0
 
int do_pml_in_domain = 0
 
amrex::IntVect do_pml_Lo = amrex::IntVect::TheUnitVector()
 
amrex::IntVect do_pml_Hi = amrex::IntVect::TheUnitVector()
 
amrex::Vector< std::unique_ptr< PML > > pml
 
amrex::Real moving_window_x = std::numeric_limits<amrex::Real>::max()
 
amrex::Real current_injection_position = 0
 
int warpx_do_continuous_injection = 0
 
int num_injected_species = -1
 
amrex::Vector< int > injected_plasma_species
 
int n_buffer = 4
 
amrex::Real const_dt = 0.5e-11
 
std::unique_ptr< MacroscopicPropertiesm_macroscopic_properties
 
IntervalsParser load_balance_intervals
 
amrex::Vector< std::unique_ptr< amrex::LayoutData< amrex::Real > > > costs
 
int load_balance_with_sfc = 0
 
amrex::Real load_balance_knapsack_factor = 1.24
 
amrex::Real load_balance_efficiency_ratio_threshold = 1.1
 
amrex::Real costs_heuristic_cells_wt = -1
 
amrex::Real costs_heuristic_particles_wt = -1
 
IntervalsParser override_sync_intervals
 
int verbose = 1
 
bool use_hybrid_QED = 0
 
int max_step = std::numeric_limits<int>::max()
 
amrex::Real stop_time = std::numeric_limits<amrex::Real>::max()
 
int regrid_int = -1
 
amrex::Real cfl = 0.7
 
std::string restart_chkfile
 
bool plot_rho = false
 
amrex::VisMF::Header::Version plotfile_headerversion = amrex::VisMF::Header::Version_v1
 
amrex::VisMF::Header::Version slice_plotfile_headerversion = amrex::VisMF::Header::Version_v1
 
bool use_single_read = true
 
bool use_single_write = true
 
int mffile_nstreams = 4
 
int field_io_nfiles = 1024
 
int particle_io_nfiles = 1024
 
amrex::RealVect fine_tag_lo
 
amrex::RealVect fine_tag_hi
 
bool is_synchronized = true
 
guardCellManager guard_cells
 
int slice_max_grid_size
 
int slice_plot_int = -1
 
amrex::RealBox slice_realbox
 
amrex::IntVect slice_cr_ratio
 
amrex::Vector< std::unique_ptr< amrex::MultiFab > > F_slice
 
amrex::Vector< std::unique_ptr< amrex::MultiFab > > rho_slice
 
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_slice
 
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_slice
 
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_slice
 
bool fft_periodic_single_box = false
 
int nox_fft = 16
 
int noy_fft = 16
 
int noz_fft = 16
 
amrex::IntVect numprocs {0}
 
int fftw_plan_measure = 1
 
amrex::Vector< std::unique_ptr< SpectralSolverRZ > > spectral_solver_fp
 
amrex::Vector< std::unique_ptr< SpectralSolverRZ > > spectral_solver_cp
 
amrex::Vector< std::unique_ptr< FiniteDifferenceSolver > > m_fdtd_solver_fp
 
amrex::Vector< std::unique_ptr< FiniteDifferenceSolver > > m_fdtd_solver_cp
 

Static Private Attributes

static WarpXm_instance = nullptr
 

Friends

class PML
 

Constructor & Destructor Documentation

◆ WarpX()

WarpX::WarpX ( )

create object for reduced diagnostics

◆ ~WarpX()

WarpX::~WarpX ( )

Member Function Documentation

◆ AddCurrentFromFineLevelandSumBoundary()

void WarpX::AddCurrentFromFineLevelandSumBoundary ( int  lev)
private

◆ AddRhoFromFineLevelandSumBoundary()

void WarpX::AddRhoFromFineLevelandSumBoundary ( int  lev,
int  icomp,
int  ncomp 
)
private

◆ AddSpaceChargeField()

void WarpX::AddSpaceChargeField ( WarpXParticleContainer pc)

◆ AllocLevelData()

void WarpX::AllocLevelData ( int  lev,
const amrex::BoxArray &  new_grids,
const amrex::DistributionMapping &  new_dmap 
)
private

◆ AllocLevelMFs()

void WarpX::AllocLevelMFs ( int  lev,
const amrex::BoxArray &  ba,
const amrex::DistributionMapping &  dm,
const amrex::IntVect &  ngE,
const amrex::IntVect &  ngJ,
const amrex::IntVect &  ngRho,
const amrex::IntVect &  ngF,
const amrex::IntVect &  ngextra,
const bool  aux_is_nodal 
)
private

◆ ApplyFilterandSumBoundaryJ()

void WarpX::ApplyFilterandSumBoundaryJ ( int  lev,
PatchType  patch_type 
)
private

◆ ApplyFilterandSumBoundaryRho()

void WarpX::ApplyFilterandSumBoundaryRho ( int  lev,
PatchType  patch_type,
int  icomp,
int  ncomp 
)
private

◆ ApplyInverseVolumeScalingToChargeDensity()

void WarpX::ApplyInverseVolumeScalingToChargeDensity ( amrex::MultiFab *  Rho,
int  lev 
)

◆ ApplyInverseVolumeScalingToCurrentDensity()

void WarpX::ApplyInverseVolumeScalingToCurrentDensity ( amrex::MultiFab *  Jx,
amrex::MultiFab *  Jy,
amrex::MultiFab *  Jz,
int  lev 
)

◆ applyMirrors()

void WarpX::applyMirrors ( amrex::Real  time)

◆ AverageAndPackFields()

void WarpX::AverageAndPackFields ( amrex::Vector< std::string > &  varnames,
amrex::Vector< amrex::MultiFab > &  mf_avg,
const int  ngrow 
) const

◆ BackwardCompatibility()

void WarpX::BackwardCompatibility ( )
private

This function queries deprecated input parameters and abort the run if one of them is specified.

◆ BuildBufferMasks()

void WarpX::BuildBufferMasks ( )
private

◆ BuildBufferMasksInBox()

void WarpX::BuildBufferMasksInBox ( const amrex::Box  tbx,
amrex::IArrayBox &  buffer_mask,
const amrex::IArrayBox &  guard_mask,
const int  ng 
)
private

Build buffer mask within given FArrayBox.

Parameters
tbxCurrent FArrayBox
buffer_maskBuffer mask to be set
guard_maskGuard mask used to set buffer_mask
ngNumber of guard cells

◆ CellSize()

std::array< Real, 3 > WarpX::CellSize ( int  lev)
static

◆ ClearLevel()

void WarpX::ClearLevel ( int  lev)
finalprotectedvirtual

Delete level data. Called by AmrCore::regrid.

◆ computeB()

void WarpX::computeB ( amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > &  B,
const amrex::Vector< std::unique_ptr< amrex::MultiFab > > &  phi,
std::array< amrex::Real, 3 > const  beta = {{0,0,0}} 
) const

◆ ComputeCostsHeuristic()

void WarpX::ComputeCostsHeuristic ( amrex::Vector< std::unique_ptr< amrex::LayoutData< amrex::Real > > > &  costs)

adds particle and cell contributions in cells to compute heuristic cost in each box on each level, and records in costs

Parameters
[in]costsvector of (unique_ptr to) vectors; expected to be initialized to correct number of boxes and boxes per level

◆ ComputeDivB() [1/2]

void WarpX::ComputeDivB ( amrex::MultiFab &  divB,
int const  dcomp,
const std::array< const amrex::MultiFab *const, 3 > &  B,
const std::array< amrex::Real, 3 > &  dx 
)
static

◆ ComputeDivB() [2/2]

void WarpX::ComputeDivB ( amrex::MultiFab &  divB,
int const  dcomp,
const std::array< const amrex::MultiFab *const, 3 > &  B,
const std::array< amrex::Real, 3 > &  dx,
int const  ngrow 
)
static

◆ ComputeDivE()

void WarpX::ComputeDivE ( amrex::MultiFab &  divE,
const int  lev 
)

◆ ComputeDt()

void WarpX::ComputeDt ( )

Determine the timestep of the simulation.

◆ computeE()

void WarpX::computeE ( amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > &  E,
const amrex::Vector< std::unique_ptr< amrex::MultiFab > > &  phi,
std::array< amrex::Real, 3 > const  beta = {{0,0,0}} 
) const

◆ computeMaxStepBoostAccelerator()

void WarpX::computeMaxStepBoostAccelerator ( const amrex::Geometry &  geom)

◆ computePhi()

void WarpX::computePhi ( const amrex::Vector< std::unique_ptr< amrex::MultiFab > > &  rho,
amrex::Vector< std::unique_ptr< amrex::MultiFab > > &  phi,
std::array< amrex::Real, 3 > const  beta = {{0,0,0}},
amrex::Real const  required_precision = 1.e-11 
) const

◆ ComputePMLFactors()

void WarpX::ComputePMLFactors ( )
private

◆ ComputeSpaceChargeField()

void WarpX::ComputeSpaceChargeField ( bool const  reset_fields)

◆ CopyJPML()

void WarpX::CopyJPML ( )

Copy the current J from the regular grid to the PML.

◆ CurrentBufferMasks()

const iMultiFab * WarpX::CurrentBufferMasks ( int  lev)
static

◆ CurrentCorrection()

void WarpX::CurrentCorrection ( )
private

Private function for current correction in Fourier space (equation (19) of https://doi.org/10.1016/j.jcp.2013.03.010): loops over the MR levels and applies the correction on the fine and coarse patches (calls the virtual method CurrentCorrection of the spectral algorithm in use, via the public interface defined in the class SpectralSolver).

◆ DampFieldsInGuards()

void WarpX::DampFieldsInGuards ( std::array< std::unique_ptr< amrex::MultiFab >, 3 > &  Efield,
std::array< std::unique_ptr< amrex::MultiFab >, 3 > &  Bfield 
)

Private function for spectral solver Applies a damping factor in the guards cells that extend beyond the extent of the domain, reducing fluctuations that can appear in parallel simulations. This will be called when use_damp_fields_in_z_guard is true.

◆ DampJPML() [1/3]

void WarpX::DampJPML ( )

◆ DampJPML() [2/3]

void WarpX::DampJPML ( int  lev)

◆ DampJPML() [3/3]

void WarpX::DampJPML ( int  lev,
PatchType  patch_type 
)

◆ DampPML() [1/3]

void WarpX::DampPML ( )

◆ DampPML() [2/3]

void WarpX::DampPML ( int  lev)

◆ DampPML() [3/3]

void WarpX::DampPML ( int  lev,
PatchType  patch_type 
)

But, it does not matter because in damp_pml, where

◆ doFieldIonization() [1/2]

void WarpX::doFieldIonization ( )

Run the ionization module on all species

◆ doFieldIonization() [2/2]

void WarpX::doFieldIonization ( int  lev)

Run the ionization module on all species at level lev

Parameters
levlevel

◆ DoPML()

bool WarpX::DoPML ( ) const
inline

◆ doQEDEvents() [1/2]

void WarpX::doQEDEvents ( )

Run the QED module on all species

◆ doQEDEvents() [2/2]

void WarpX::doQEDEvents ( int  lev)

Run the QED module on all species at level lev

Parameters
levlevel

◆ ErrorEst()

void WarpX::ErrorEst ( int  lev,
amrex::TagBoxArray &  tags,
amrex::Real  time,
int   
)
finalprotectedvirtual

Tagging cells for refinement.

◆ Evolve()

void WarpX::Evolve ( int  numsteps = -1)

reduced diags

◆ EvolveB() [1/3]

void WarpX::EvolveB ( amrex::Real  dt)

◆ EvolveB() [2/3]

void WarpX::EvolveB ( int  lev,
amrex::Real  dt 
)

◆ EvolveB() [3/3]

void WarpX::EvolveB ( int  lev,
PatchType  patch_type,
amrex::Real  dt 
)

◆ EvolveE() [1/3]

void WarpX::EvolveE ( amrex::Real  dt)

◆ EvolveE() [2/3]

void WarpX::EvolveE ( int  lev,
amrex::Real  dt 
)

◆ EvolveE() [3/3]

void WarpX::EvolveE ( int  lev,
PatchType  patch_type,
amrex::Real  dt 
)

◆ EvolveEM()

void WarpX::EvolveEM ( int  numsteps)
private

Advance the simulation by numsteps steps, electromagnetic case.

◆ EvolveF() [1/3]

void WarpX::EvolveF ( amrex::Real  dt,
DtType  dt_type 
)

◆ EvolveF() [2/3]

void WarpX::EvolveF ( int  lev,
amrex::Real  dt,
DtType  dt_type 
)

◆ EvolveF() [3/3]

void WarpX::EvolveF ( int  lev,
PatchType  patch_type,
amrex::Real  dt,
DtType  dt_type 
)

◆ EvolvePSATD()

void WarpX::EvolvePSATD ( int  numsteps)
private

◆ ExchangeWithPmlB()

void WarpX::ExchangeWithPmlB ( int  lev)
private

◆ ExchangeWithPmlE()

void WarpX::ExchangeWithPmlE ( int  lev)
private

◆ ExchangeWithPmlF()

void WarpX::ExchangeWithPmlF ( int  lev)
private

◆ FillBoundaryAux() [1/2]

void WarpX::FillBoundaryAux ( amrex::IntVect  ng)

◆ FillBoundaryAux() [2/2]

void WarpX::FillBoundaryAux ( int  lev,
amrex::IntVect  ng 
)

◆ FillBoundaryB() [1/3]

void WarpX::FillBoundaryB ( amrex::IntVect  ng,
amrex::IntVect  ng_extra_fine = amrex::IntVect::TheZeroVector() 
)

◆ FillBoundaryB() [2/3]

void WarpX::FillBoundaryB ( int  lev,
amrex::IntVect  ng,
amrex::IntVect  ng_extra_fine = amrex::IntVect::TheZeroVector() 
)

◆ FillBoundaryB() [3/3]

void WarpX::FillBoundaryB ( int  lev,
PatchType  patch_type,
amrex::IntVect  ng 
)
private

◆ FillBoundaryB_avg() [1/3]

void WarpX::FillBoundaryB_avg ( amrex::IntVect  ng,
amrex::IntVect  ng_extra_fine = amrex::IntVect::TheZeroVector() 
)

◆ FillBoundaryB_avg() [2/3]

void WarpX::FillBoundaryB_avg ( int  lev,
amrex::IntVect  ng,
amrex::IntVect  ng_extra_fine = amrex::IntVect::TheZeroVector() 
)

◆ FillBoundaryB_avg() [3/3]

void WarpX::FillBoundaryB_avg ( int  lev,
PatchType  patch_type,
amrex::IntVect  ng 
)
private

◆ FillBoundaryE() [1/3]

void WarpX::FillBoundaryE ( amrex::IntVect  ng,
amrex::IntVect  ng_extra_fine = amrex::IntVect::TheZeroVector() 
)

◆ FillBoundaryE() [2/3]

void WarpX::FillBoundaryE ( int  lev,
amrex::IntVect  ng,
amrex::IntVect  ng_extra_fine = amrex::IntVect::TheZeroVector() 
)

◆ FillBoundaryE() [3/3]

void WarpX::FillBoundaryE ( int  lev,
PatchType  patch_type,
amrex::IntVect  ng 
)
private

◆ FillBoundaryE_avg() [1/3]

void WarpX::FillBoundaryE_avg ( amrex::IntVect  ng,
amrex::IntVect  ng_extra_fine = amrex::IntVect::TheZeroVector() 
)

◆ FillBoundaryE_avg() [2/3]

void WarpX::FillBoundaryE_avg ( int  lev,
amrex::IntVect  ng,
amrex::IntVect  ng_extra_fine = amrex::IntVect::TheZeroVector() 
)

◆ FillBoundaryE_avg() [3/3]

void WarpX::FillBoundaryE_avg ( int  lev,
PatchType  patch_type,
amrex::IntVect  ng 
)
private

◆ FillBoundaryF() [1/3]

void WarpX::FillBoundaryF ( amrex::IntVect  ng)

◆ FillBoundaryF() [2/3]

void WarpX::FillBoundaryF ( int  lev,
amrex::IntVect  ng 
)

◆ FillBoundaryF() [3/3]

void WarpX::FillBoundaryF ( int  lev,
PatchType  patch_type,
amrex::IntVect  ng 
)
private

◆ GatherBufferMasks()

const iMultiFab * WarpX::GatherBufferMasks ( int  lev)
static

◆ get_array_Bfield_aux()

std::array<const amrex::MultiFab* const, 3> WarpX::get_array_Bfield_aux ( const int  lev) const
inline

◆ get_array_Efield_aux()

std::array<const amrex::MultiFab* const, 3> WarpX::get_array_Efield_aux ( const int  lev) const
inline

◆ get_load_balance_intervals()

IntervalsParser WarpX::get_load_balance_intervals ( ) const
inline

returns the load balance interval

◆ get_ng_depos_J()

const amrex::IntVect WarpX::get_ng_depos_J ( ) const
inline

◆ get_ng_depos_rho()

const amrex::IntVect WarpX::get_ng_depos_rho ( ) const
inline

◆ get_pointer_Bfield_aux()

amrex::MultiFab* WarpX::get_pointer_Bfield_aux ( int  lev,
int  direction 
) const
inline

◆ get_pointer_Bfield_cp()

amrex::MultiFab* WarpX::get_pointer_Bfield_cp ( int  lev,
int  direction 
) const
inline

◆ get_pointer_Bfield_fp()

amrex::MultiFab* WarpX::get_pointer_Bfield_fp ( int  lev,
int  direction 
) const
inline

◆ get_pointer_current_cp()

amrex::MultiFab* WarpX::get_pointer_current_cp ( int  lev,
int  direction 
) const
inline

◆ get_pointer_current_fp()

amrex::MultiFab* WarpX::get_pointer_current_fp ( int  lev,
int  direction 
) const
inline

◆ get_pointer_Efield_aux()

amrex::MultiFab* WarpX::get_pointer_Efield_aux ( int  lev,
int  direction 
) const
inline

◆ get_pointer_Efield_cp()

amrex::MultiFab* WarpX::get_pointer_Efield_cp ( int  lev,
int  direction 
) const
inline

◆ get_pointer_Efield_fp()

amrex::MultiFab* WarpX::get_pointer_Efield_fp ( int  lev,
int  direction 
) const
inline

◆ get_pointer_F_cp()

amrex::MultiFab* WarpX::get_pointer_F_cp ( int  lev) const
inline

◆ get_pointer_F_fp()

amrex::MultiFab* WarpX::get_pointer_F_fp ( int  lev) const
inline

◆ get_pointer_rho_cp()

amrex::MultiFab* WarpX::get_pointer_rho_cp ( int  lev) const
inline

◆ get_pointer_rho_fp()

amrex::MultiFab* WarpX::get_pointer_rho_fp ( int  lev) const
inline

◆ getBfield()

const amrex::MultiFab& WarpX::getBfield ( int  lev,
int  direction 
)
inline

◆ getBfield_cp()

const amrex::MultiFab& WarpX::getBfield_cp ( int  lev,
int  direction 
)
inline

◆ getBfield_fp()

const amrex::MultiFab& WarpX::getBfield_fp ( int  lev,
int  direction 
)
inline

◆ GetCellCenteredData()

std::unique_ptr< MultiFab > WarpX::GetCellCenteredData ( )
private

◆ getCosts()

static amrex::LayoutData<amrex::Real>* WarpX::getCosts ( int  lev)
inlinestatic

◆ getcurrent()

const amrex::MultiFab& WarpX::getcurrent ( int  lev,
int  direction 
)
inline

◆ getcurrent_cp()

const amrex::MultiFab& WarpX::getcurrent_cp ( int  lev,
int  direction 
)
inline

◆ getcurrent_fp()

const amrex::MultiFab& WarpX::getcurrent_fp ( int  lev,
int  direction 
)
inline

◆ getCurrentBufferMasks()

const amrex::iMultiFab* WarpX::getCurrentBufferMasks ( int  lev) const
inlineprivate

◆ getdt() [1/2]

amrex::Vector<amrex::Real> WarpX::getdt ( ) const
inline

◆ getdt() [2/2]

amrex::Real WarpX::getdt ( int  lev) const
inline

◆ getEfield()

const amrex::MultiFab& WarpX::getEfield ( int  lev,
int  direction 
)
inline

◆ getEfield_cp()

const amrex::MultiFab& WarpX::getEfield_cp ( int  lev,
int  direction 
)
inline

◆ getEfield_fp()

const amrex::MultiFab& WarpX::getEfield_fp ( int  lev,
int  direction 
)
inline

◆ getF_fp()

const amrex::MultiFab& WarpX::getF_fp ( int  lev)
inline

◆ getGatherBufferMasks()

const amrex::iMultiFab* WarpX::getGatherBufferMasks ( int  lev) const
inlineprivate

◆ GetInstance()

WarpX & WarpX::GetInstance ( )
static

◆ getis_synchronized()

bool WarpX::getis_synchronized ( ) const
inline

◆ getistep() [1/2]

amrex::Vector<int> WarpX::getistep ( ) const
inline

◆ getistep() [2/2]

int WarpX::getistep ( int  lev) const
inline

◆ getmoving_window_x()

amrex::Real WarpX::getmoving_window_x ( ) const
inline

◆ getngE()

const amrex::IntVect WarpX::getngE ( ) const
inline

◆ getngExtra()

const amrex::IntVect WarpX::getngExtra ( ) const
inline

◆ getngF()

const amrex::IntVect WarpX::getngF ( ) const
inline

◆ getngUpdateAux()

const amrex::IntVect WarpX::getngUpdateAux ( ) const
inline

◆ getnsubsteps() [1/2]

amrex::Vector<int> WarpX::getnsubsteps ( ) const
inline

◆ getnsubsteps() [2/2]

int WarpX::getnsubsteps ( int  lev) const
inline

◆ GetPartContainer()

MultiParticleContainer& WarpX::GetPartContainer ( )
inline

◆ GetPML()

PML * WarpX::GetPML ( int  lev)

◆ getPMLdirections()

std::vector< bool > WarpX::getPMLdirections ( ) const

get low-high-low-high-... vector for each direction indicating if mother grid PMLs are enabled

◆ getRealBox()

amrex::RealBox WarpX::getRealBox ( const amrex::Box &  bx,
int  lev 
)
static

◆ getrho_cp()

const amrex::MultiFab& WarpX::getrho_cp ( int  lev)
inline

◆ getrho_fp()

const amrex::MultiFab& WarpX::getrho_fp ( int  lev)
inline

◆ getSliceRealBox()

amrex::RealBox WarpX::getSliceRealBox ( ) const
inline

◆ gett_new() [1/2]

amrex::Vector<amrex::Real> WarpX::gett_new ( ) const
inline

◆ gett_new() [2/2]

amrex::Real WarpX::gett_new ( int  lev) const
inline

◆ gett_old() [1/2]

amrex::Vector<amrex::Real> WarpX::gett_old ( ) const
inline

◆ gett_old() [2/2]

amrex::Real WarpX::gett_old ( int  lev) const
inline

◆ GotoNextLine()

void WarpX::GotoNextLine ( std::istream &  is)
static

◆ Hybrid_QED_Push() [1/3]

void WarpX::Hybrid_QED_Push ( amrex::Vector< amrex::Real >  dt)

apply QED correction on electric field

Parameters
dtvector of time steps (for all levels)

◆ Hybrid_QED_Push() [2/3]

void WarpX::Hybrid_QED_Push ( int  lev,
amrex::Real  dt 
)

apply QED correction on electric field for level lev

Parameters
levmesh refinement level
dttime step

◆ Hybrid_QED_Push() [3/3]

void WarpX::Hybrid_QED_Push ( int  lev,
PatchType  patch_type,
amrex::Real  dt 
)

apply QED correction on electric field for level lev and patch type patch_type

Parameters
levmesh refinement level
dtpatch_type which MR patch: PatchType::fine or PatchType::coarse
dttime step

◆ InitData()

void WarpX::InitData ( )

◆ InitDiagnostics()

void WarpX::InitDiagnostics ( )
private

◆ InitFilter()

void WarpX::InitFilter ( )
private

◆ InitFromCheckpoint()

void WarpX::InitFromCheckpoint ( )
private

◆ InitFromScratch()

void WarpX::InitFromScratch ( )
private

◆ InitializeExternalFieldsOnGridUsingParser()

void WarpX::InitializeExternalFieldsOnGridUsingParser ( amrex::MultiFab *  mfx,
amrex::MultiFab *  mfy,
amrex::MultiFab *  mfz,
HostDeviceParser< 3 > const &  xfield_parser,
HostDeviceParser< 3 > const &  yfield_parser,
HostDeviceParser< 3 > const &  zfield_parser,
const int  lev 
)

This function initializes the E and B fields on each level using the parser and the user-defined function for the external fields. The subroutine will parse the x_/y_z_external_grid_function and then, the field multifab is initialized based on the (x,y,z) position on the staggered yee-grid or cell-centered grid, in the interior cells and guard cells.

Parameters
[in]mfx,x-componentof the field to be initialized
[in]mfy,y-componentof the field to be initialized
[in]mfz,z-componentof the field to be initialized
[in]xfield_parser,parserfunction to initialize x-field
[in]yfield_parser,parserfunction to initialize y-field
[in]zfield_parser,parserfunction to initialize z-field
[in]lev,levelof the Multifabs that is initialized

◆ InitLevelData()

void WarpX::InitLevelData ( int  lev,
amrex::Real  time 
)
protected

This function initializes E, B, rho, and F, at all the levels of the multifab. rho and F are initialized with 0. The E and B fields are initialized using user-defined inputs. The initialization type is set using "B_ext_grid_init_style" and "E_ext_grid_init_style". The initialization style is set to "default" if not explicitly defined by the user, and the E and B fields are initialized with E_external_grid and B_external_grid, respectively, each with a default value of 0. If the initialization type for the E and B field is "constant", then, the E and B fields at all the levels are initialized with user-defined values for E_external_grid and B_external_grid. If the initialization type for B-field is set to "parse_B_ext_grid_function", then, the parser is used to read Bx_external_grid_function(x,y,z), By_external_grid_function(x,y,z), and Bz_external_grid_function(x,y,z). Similarly, if the E-field initialization type is set to "parse_E_ext_grid_function", then, the parser is used to read Ex_external_grid_function(x,y,z), Ey_external_grid_function(x,y,z), and Ex_external_grid_function(x,y,z). The parser for the E and B initialization assumes that the function has three independent variables, at max, namely, x, y, z. However, any number of constants can be used in the function used to define the E and B fields on the grid.

◆ InitNCICorrector()

void WarpX::InitNCICorrector ( )
private

◆ InitPML()

void WarpX::InitPML ( )
private

◆ LoadBalance()

void WarpX::LoadBalance ( )

perform load balance; compute and communicate new amrex::DistributionMapping

◆ LowerCorner()

std::array< Real, 3 > WarpX::LowerCorner ( const amrex::Box &  bx,
std::array< amrex::Real, 3 >  galilean_shift,
int  lev 
)
static

◆ LowerCornerWithGalilean()

std::array< Real, 3 > WarpX::LowerCornerWithGalilean ( const amrex::Box &  bx,
const amrex::Array< amrex::Real, 3 > &  v_galilean,
int  lev 
)

◆ MacroscopicEvolveE() [1/3]

void WarpX::MacroscopicEvolveE ( amrex::Real  dt)

◆ MacroscopicEvolveE() [2/3]

void WarpX::MacroscopicEvolveE ( int  lev,
amrex::Real  dt 
)

◆ MacroscopicEvolveE() [3/3]

void WarpX::MacroscopicEvolveE ( int  lev,
PatchType  patch_type,
amrex::Real  dt 
)

◆ MakeNewLevelFromCoarse()

virtual void WarpX::MakeNewLevelFromCoarse ( int  ,
amrex::Real  ,
const amrex::BoxArray &  ,
const amrex::DistributionMapping &   
)
inlinefinalprotectedvirtual

Make a new level using provided BoxArray and DistributionMapping and fill with interpolated coarse level data. Called by AmrCore::regrid.

◆ MakeNewLevelFromScratch()

void WarpX::MakeNewLevelFromScratch ( int  lev,
amrex::Real  time,
const amrex::BoxArray &  ba,
const amrex::DistributionMapping &  dm 
)
finalprotectedvirtual

Make a new level from scratch using provided BoxArray and DistributionMapping. Only used during initialization. Called by AmrCoreInitFromScratch.

◆ maxStep()

int WarpX::maxStep ( ) const
inline

◆ MoveWindow()

int WarpX::MoveWindow ( bool  move_j)

◆ NodalSyncJ()

void WarpX::NodalSyncJ ( int  lev,
PatchType  patch_type 
)
private

◆ NodalSyncRho()

void WarpX::NodalSyncRho ( int  lev,
PatchType  patch_type,
int  icomp,
int  ncomp 
)
private

◆ OneStep_nosub()

void WarpX::OneStep_nosub ( amrex::Real  t)
private

◆ OneStep_sub1()

void WarpX::OneStep_sub1 ( amrex::Real  t)
private

◆ PicsarVersion()

std::string WarpX::PicsarVersion ( )
static

Version of PICSAR dependency.

◆ PostProcessBaseGrids()

void WarpX::PostProcessBaseGrids ( amrex::BoxArray &  ba0) const
finalprotectedvirtual

Use this function to override the Level 0 grids made by AMReX. This function is called in amrex::AmrCore::InitFromScratch.

◆ PostRestart()

void WarpX::PostRestart ( )
private

◆ prepareFields()

void WarpX::prepareFields ( int const  step,
amrex::Vector< std::string > &  varnames,
amrex::Vector< amrex::MultiFab > &  mf_avg,
amrex::Vector< const amrex::MultiFab *> &  output_mf,
amrex::Vector< amrex::Geometry > &  output_geom 
) const

◆ PushParticlesandDepose() [1/2]

void WarpX::PushParticlesandDepose ( int  lev,
amrex::Real  cur_time,
DtType  a_dt_type = DtType::Full 
)

◆ PushParticlesandDepose() [2/2]

void WarpX::PushParticlesandDepose ( amrex::Real  cur_time)

◆ PushPSATD() [1/2]

void WarpX::PushPSATD ( amrex::Real  dt)
private

◆ PushPSATD() [2/2]

void WarpX::PushPSATD ( int  lev,
amrex::Real  dt 
)
private

◆ ReadParameters()

void WarpX::ReadParameters ( )
private

◆ RefRatio()

IntVect WarpX::RefRatio ( int  lev)
static

◆ RemakeLevel()

void WarpX::RemakeLevel ( int  lev,
amrex::Real  time,
const amrex::BoxArray &  ba,
const amrex::DistributionMapping &  dm 
)
finalprotectedvirtual

Remake an existing level using provided BoxArray and DistributionMapping and fill with existing fine and coarse data. Called by AmrCore::regrid.

◆ ResetCosts()

void WarpX::ResetCosts ( )

resets costs to zero

◆ ResetInstance()

void WarpX::ResetInstance ( )
static

◆ ResetProbDomain()

void WarpX::ResetProbDomain ( const amrex::RealBox &  rb)

◆ RestoreCurrent()

void WarpX::RestoreCurrent ( int  lev)
private

◆ RestrictCurrentFromFineToCoarsePatch()

void WarpX::RestrictCurrentFromFineToCoarsePatch ( int  lev)
private

Fills the values of the current on the coarse patch by averaging the values of the current of the fine patch (on the same level).

◆ RestrictRhoFromFineToCoarsePatch()

void WarpX::RestrictRhoFromFineToCoarsePatch ( int  lev)
private

◆ setistep()

void WarpX::setistep ( int  lev,
int  ii 
)
inline

◆ setplot_rho()

void WarpX::setplot_rho ( bool  a_plot_rho)
inline

◆ sett_new()

void WarpX::sett_new ( int  lev,
amrex::Real  time 
)
inline

◆ ShiftGalileanBoundary()

void WarpX::ShiftGalileanBoundary ( )

This function shifts the boundary of the grid by 'm_v_galilean*dt'. In doding so, only positions attributes are changed while fields remain unchanged.

◆ shiftMF()

void WarpX::shiftMF ( amrex::MultiFab &  mf,
const amrex::Geometry &  geom,
int  num_shift,
int  dir,
amrex::IntVect  ng_extra,
amrex::Real  external_field = 0.0,
bool  useparser = false,
HostDeviceParser< 3 > const &  field_parser = {} 
)
static

◆ stopTime()

amrex::Real WarpX::stopTime ( ) const
inline

◆ StoreCurrent()

void WarpX::StoreCurrent ( int  lev)
private

◆ SyncCurrent()

void WarpX::SyncCurrent ( )

◆ SyncRho()

void WarpX::SyncRho ( )

◆ UpdateAuxilaryData()

void WarpX::UpdateAuxilaryData ( )

◆ UpdateAuxilaryDataSameType()

void WarpX::UpdateAuxilaryDataSameType ( )

◆ UpdateAuxilaryDataStagToNodal()

void WarpX::UpdateAuxilaryDataStagToNodal ( )

◆ UpdatePlasmaInjectionPosition()

void WarpX::UpdatePlasmaInjectionPosition ( amrex::Real  dt)

◆ UpperCorner()

std::array< Real, 3 > WarpX::UpperCorner ( const amrex::Box &  bx,
int  lev 
)
static

◆ VayDeposition()

void WarpX::VayDeposition ( )
private

Private function for Vay deposition in Fourier space (equations (20)-(24) of https://doi.org/10.1016/j.jcp.2013.03.010): loops over the MR levels and applies the correction on the fine and coarse patches (calls the virtual method VayDeposition of the spectral algorithm in use, via the public interface defined in the class SpectralSolver).

◆ Verbose()

int WarpX::Verbose ( ) const
inline

◆ Version()

std::string WarpX::Version ( )
static

Version of WarpX executable.

Friends And Related Function Documentation

◆ PML

friend class PML
friend

Member Data Documentation

◆ authors

std::string WarpX::authors = ""
static

Author of an input file / simulation setup.

◆ B_ext_grid_s

std::string WarpX::B_ext_grid_s = "default"
static

◆ B_external_grid

Vector< Real > WarpX::B_external_grid
static

◆ beta_boost

Real WarpX::beta_boost = 0.
static

◆ Bfield_aux

amrex::Vector<std::array< std::unique_ptr<amrex::MultiFab>, 3 > > WarpX::Bfield_aux
private

◆ Bfield_avg_aux

amrex::Vector<std::array< std::unique_ptr<amrex::MultiFab>, 3 > > WarpX::Bfield_avg_aux
private

◆ Bfield_avg_cp

amrex::Vector<std::array< std::unique_ptr<amrex::MultiFab>, 3 > > WarpX::Bfield_avg_cp
private

◆ Bfield_avg_fp

amrex::Vector<std::array< std::unique_ptr<amrex::MultiFab>, 3 > > WarpX::Bfield_avg_fp
private

◆ Bfield_cax

amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>, 3 > > WarpX::Bfield_cax
private

◆ Bfield_cp

amrex::Vector<std::array< std::unique_ptr<amrex::MultiFab>, 3 > > WarpX::Bfield_cp
private

◆ Bfield_fp

amrex::Vector<std::array< std::unique_ptr<amrex::MultiFab>, 3 > > WarpX::Bfield_fp
private

◆ Bfield_slice

amrex::Vector<std::array< std::unique_ptr<amrex::MultiFab>, 3 > > WarpX::Bfield_slice
private

◆ bilinear_filter

BilinearFilter WarpX::bilinear_filter

◆ boost_direction

Vector< int > WarpX::boost_direction = {0,0,0}
static

◆ Bxfield_parser

std::unique_ptr<ParserWrapper<3> > WarpX::Bxfield_parser

◆ Byfield_parser

std::unique_ptr<ParserWrapper<3> > WarpX::Byfield_parser

◆ Bzfield_parser

std::unique_ptr<ParserWrapper<3> > WarpX::Bzfield_parser

◆ cfl

amrex::Real WarpX::cfl = 0.7
private

◆ charge_buf

amrex::Vector<std::unique_ptr<amrex::MultiFab> > WarpX::charge_buf
private

◆ charge_deposition_algo

long WarpX::charge_deposition_algo
static

◆ const_dt

amrex::Real WarpX::const_dt = 0.5e-11
private

◆ costs

amrex::Vector<std::unique_ptr<amrex::LayoutData<amrex::Real> > > WarpX::costs
private

Collection of LayoutData to keep track of weights used in load balancing routines. Contains timer-based or heuristic-based costs depending on input option

◆ costs_heuristic_cells_wt

amrex::Real WarpX::costs_heuristic_cells_wt = -1
private

Weight factor for cells in Heuristic costs update. Default values on GPU are determined from single-GPU tests on Summit. The problem setup for these tests is an empty (i.e. no particles) domain of size 256 by 256 by 256 cells, from which the average time per iteration per cell is computed.

◆ costs_heuristic_particles_wt

amrex::Real WarpX::costs_heuristic_particles_wt = -1
private

Weight factor for particles in Heuristic costs update. Default values on GPU are determined from single-GPU tests on Summit. The problem setup for these tests is a high-ppc (27 particles per cell) uniform plasma on a domain of size 128 by 128 by 128, from which the approximate time per iteration per particle is computed.

◆ current_buf

amrex::Vector<std::array< std::unique_ptr<amrex::MultiFab>, 3 > > WarpX::current_buf
private

◆ current_buffer_masks

amrex::Vector<std::unique_ptr<amrex::iMultiFab> > WarpX::current_buffer_masks
private

◆ current_correction

bool WarpX::current_correction = false

◆ current_cp

amrex::Vector<std::array< std::unique_ptr<amrex::MultiFab>, 3 > > WarpX::current_cp
private

◆ current_deposition_algo

long WarpX::current_deposition_algo
static

◆ current_fp

amrex::Vector<std::array< std::unique_ptr<amrex::MultiFab>, 3 > > WarpX::current_fp
private

◆ current_injection_position

amrex::Real WarpX::current_injection_position = 0
private

◆ current_slice

amrex::Vector<std::array< std::unique_ptr<amrex::MultiFab>, 3 > > WarpX::current_slice
private

◆ current_store

amrex::Vector<std::array< std::unique_ptr<amrex::MultiFab>, 3 > > WarpX::current_store
private

◆ do_back_transformed_diagnostics

bool WarpX::do_back_transformed_diagnostics = false
static

◆ do_back_transformed_fields

bool WarpX::do_back_transformed_fields = true
static

◆ do_back_transformed_particles

bool WarpX::do_back_transformed_particles = true
static

◆ do_compute_max_step_from_zmax

int WarpX::do_compute_max_step_from_zmax = 0
static

◆ do_device_synchronize_before_profile

bool WarpX::do_device_synchronize_before_profile = false
static

◆ do_dive_cleaning

int WarpX::do_dive_cleaning = 0
static

◆ do_dynamic_scheduling

bool WarpX::do_dynamic_scheduling = true
static

◆ do_electrostatic

int WarpX::do_electrostatic = 0
static

◆ do_moving_window

int WarpX::do_moving_window = 0
static

◆ do_nodal

int WarpX::do_nodal = false
static

in number of cells from the edge (identical for each dimension)

◆ do_pml

int WarpX::do_pml = 1
private

◆ do_pml_Hi

amrex::IntVect WarpX::do_pml_Hi = amrex::IntVect::TheUnitVector()
private

◆ do_pml_in_domain

int WarpX::do_pml_in_domain = 0
private

◆ do_pml_j_damping

int WarpX::do_pml_j_damping = 0
private

◆ do_pml_Lo

amrex::IntVect WarpX::do_pml_Lo = amrex::IntVect::TheUnitVector()
private

◆ do_subcycling

int WarpX::do_subcycling = 0
static

◆ dt

amrex::Vector<amrex::Real> WarpX::dt
private

◆ dt_slice_snapshots_lab

Real WarpX::dt_slice_snapshots_lab
static

◆ dt_snapshots_lab

Real WarpX::dt_snapshots_lab = std::numeric_limits<Real>::lowest()
static

◆ E_ext_grid_s

std::string WarpX::E_ext_grid_s = "default"
static

◆ E_external_grid

Vector< Real > WarpX::E_external_grid
static

◆ Efield_aux

amrex::Vector<std::array< std::unique_ptr<amrex::MultiFab>, 3 > > WarpX::Efield_aux
private

◆ Efield_avg_aux

amrex::Vector<std::array< std::unique_ptr<amrex::MultiFab>, 3 > > WarpX::Efield_avg_aux
private

◆ Efield_avg_cp

amrex::Vector<std::array< std::unique_ptr<amrex::MultiFab>, 3 > > WarpX::Efield_avg_cp
private

◆ Efield_avg_fp

amrex::Vector<std::array< std::unique_ptr<amrex::MultiFab>, 3 > > WarpX::Efield_avg_fp
private

◆ Efield_cax

amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>, 3 > > WarpX::Efield_cax
private

◆ Efield_cp

amrex::Vector<std::array< std::unique_ptr<amrex::MultiFab>, 3 > > WarpX::Efield_cp
private

◆ Efield_fp

amrex::Vector<std::array< std::unique_ptr<amrex::MultiFab>, 3 > > WarpX::Efield_fp
private

◆ Efield_slice

amrex::Vector<std::array< std::unique_ptr<amrex::MultiFab>, 3 > > WarpX::Efield_slice
private

◆ em_solver_medium

int WarpX::em_solver_medium
static

◆ Exfield_parser

std::unique_ptr<ParserWrapper<3> > WarpX::Exfield_parser

◆ Eyfield_parser

std::unique_ptr<ParserWrapper<3> > WarpX::Eyfield_parser

◆ Ezfield_parser

std::unique_ptr<ParserWrapper<3> > WarpX::Ezfield_parser

◆ F_cp

amrex::Vector< std::unique_ptr<amrex::MultiFab> > WarpX::F_cp
private

◆ F_fp

amrex::Vector< std::unique_ptr<amrex::MultiFab> > WarpX::F_fp
private

◆ F_slice

amrex::Vector< std::unique_ptr<amrex::MultiFab> > WarpX::F_slice
private

◆ fft_do_time_averaging

bool WarpX::fft_do_time_averaging = false
static

◆ fft_periodic_single_box

bool WarpX::fft_periodic_single_box = false
private

◆ fftw_plan_measure

int WarpX::fftw_plan_measure = 1
private

◆ field_gathering_algo

long WarpX::field_gathering_algo
static

◆ field_io_nfiles

int WarpX::field_io_nfiles = 1024
private

◆ filter_npass_each_dir

IntVect WarpX::filter_npass_each_dir
static

◆ fine_tag_hi

amrex::RealVect WarpX::fine_tag_hi
private

◆ fine_tag_lo

amrex::RealVect WarpX::fine_tag_lo
private

◆ galerkin_interpolation

bool WarpX::galerkin_interpolation = true
static

◆ gamma_boost

Real WarpX::gamma_boost = 1.
static

◆ gather_buffer_masks

amrex::Vector<std::unique_ptr<amrex::iMultiFab> > WarpX::gather_buffer_masks
private

◆ guard_cells

guardCellManager WarpX::guard_cells
private

◆ injected_plasma_species

amrex::Vector<int> WarpX::injected_plasma_species
private

◆ is_synchronized

bool WarpX::is_synchronized = true
private

◆ istep

amrex::Vector<int> WarpX::istep
private

◆ lab_data_directory

std::string WarpX::lab_data_directory = "lab_frame_data"
static

◆ load_balance_costs_update_algo

long WarpX::load_balance_costs_update_algo
static

◆ load_balance_efficiency_ratio_threshold

amrex::Real WarpX::load_balance_efficiency_ratio_threshold = 1.1
private

Threshold value that controls whether to adopt the proposed distribution mapping during load balancing. The new distribution mapping is adopted if the ratio of proposed distribution mapping efficiency to current distribution mapping efficiency is larger than the threshold; 'efficiency' here means the average cost per MPI rank.

◆ load_balance_intervals

IntervalsParser WarpX::load_balance_intervals
private

Load balancing intervals that reads the "load_balance_int" string int the input file for getting steps at which load balancing is performed

◆ load_balance_knapsack_factor

amrex::Real WarpX::load_balance_knapsack_factor = 1.24
private

Controls the maximum number of boxes that can be assigned to a rank during load balance via the 'knapsack' strategy; e.g., if there are 4 boxes per rank, load_balance_knapsack_factor=2 limits the maximum number of boxes that can be assigned to a rank to 8.

◆ load_balance_with_sfc

int WarpX::load_balance_with_sfc = 0
private

Load balance with 'space filling curve' strategy.

◆ m_fdtd_solver_cp

amrex::Vector<std::unique_ptr<FiniteDifferenceSolver> > WarpX::m_fdtd_solver_cp
private

◆ m_fdtd_solver_fp

amrex::Vector<std::unique_ptr<FiniteDifferenceSolver> > WarpX::m_fdtd_solver_fp
private

◆ m_galilean_shift

amrex::Array<amrex::Real,3> WarpX::m_galilean_shift = {{0}}

◆ m_instance

WarpX * WarpX::m_instance = nullptr
staticprivate

◆ m_macroscopic_properties

std::unique_ptr<MacroscopicProperties> WarpX::m_macroscopic_properties
private

◆ m_v_galilean

amrex::Array<amrex::Real,3> WarpX::m_v_galilean = {{0}}

◆ macroscopic_solver_algo

int WarpX::macroscopic_solver_algo
static

◆ max_step

int WarpX::max_step = std::numeric_limits<int>::max()
private

◆ maxwell_solver_id

int WarpX::maxwell_solver_id
static

◆ mffile_nstreams

int WarpX::mffile_nstreams = 4
private

◆ mirror_z

amrex::Vector<amrex::Real> WarpX::mirror_z

◆ mirror_z_npoints

amrex::Vector<int> WarpX::mirror_z_npoints

◆ mirror_z_width

amrex::Vector<amrex::Real> WarpX::mirror_z_width

◆ moving_window_dir

int WarpX::moving_window_dir = -1
static

◆ moving_window_v

Real WarpX::moving_window_v = std::numeric_limits<amrex::Real>::max()
static

◆ moving_window_x

amrex::Real WarpX::moving_window_x = std::numeric_limits<amrex::Real>::max()
private

◆ multi_diags

std::unique_ptr<MultiDiagnostics> WarpX::multi_diags
private

◆ myBFD

std::unique_ptr<BackTransformedDiagnostic> WarpX::myBFD
private

◆ mypc

std::unique_ptr<MultiParticleContainer> WarpX::mypc
private

◆ n_buffer

int WarpX::n_buffer = 4
private

◆ n_current_deposition_buffer

int WarpX::n_current_deposition_buffer = -1
static

in number of cells from the edge (identical for each dimension)

◆ n_field_gather_buffer

int WarpX::n_field_gather_buffer = -1
static

◆ n_rz_azimuthal_modes

long WarpX::n_rz_azimuthal_modes = 1
static

◆ nci_godfrey_filter_bxbyez

amrex::Vector< std::unique_ptr<NCIGodfreyFilter> > WarpX::nci_godfrey_filter_bxbyez

◆ nci_godfrey_filter_exeybz

amrex::Vector< std::unique_ptr<NCIGodfreyFilter> > WarpX::nci_godfrey_filter_exeybz

◆ ncomps

long WarpX::ncomps = 1
static

◆ nox

long WarpX::nox = 1
static

◆ nox_fft

int WarpX::nox_fft = 16
private

◆ noy

long WarpX::noy = 1
static

◆ noy_fft

int WarpX::noy_fft = 16
private

◆ noz

long WarpX::noz = 1
static

◆ noz_fft

int WarpX::noz_fft = 16
private

◆ nsubsteps

amrex::Vector<int> WarpX::nsubsteps
private

◆ num_injected_species

int WarpX::num_injected_species = -1
private

◆ num_mirrors

int WarpX::num_mirrors = 0
static

◆ num_slice_snapshots_lab

int WarpX::num_slice_snapshots_lab = 0
static

◆ num_snapshots_lab

int WarpX::num_snapshots_lab = std::numeric_limits<int>::lowest()
static

◆ numprocs

amrex::IntVect WarpX::numprocs {0}
private

◆ override_sync_intervals

IntervalsParser WarpX::override_sync_intervals
private

◆ particle_io_nfiles

int WarpX::particle_io_nfiles = 1024
private

◆ particle_pusher_algo

long WarpX::particle_pusher_algo
static

◆ particle_slice_width_lab

Real WarpX::particle_slice_width_lab = 0.0
static

◆ plot_rho

bool WarpX::plot_rho = false
private

◆ plotfile_headerversion

amrex::VisMF::Header::Version WarpX::plotfile_headerversion = amrex::VisMF::Header::Version_v1
private

◆ pml

amrex::Vector<std::unique_ptr<PML> > WarpX::pml
private

◆ pml_delta

int WarpX::pml_delta = 10
private

◆ pml_has_particles

int WarpX::pml_has_particles = 0
private

◆ pml_ncell

int WarpX::pml_ncell = 10
private

◆ quantum_xi_c2

Real WarpX::quantum_xi_c2 = PhysConst::xi_c2
static

◆ reduced_diags

MultiReducedDiags* WarpX::reduced_diags

object with all reduced diagnotics, similar to MultiParticleContainer for species.

◆ refine_plasma

bool WarpX::refine_plasma = false
static

◆ regrid_int

int WarpX::regrid_int = -1
private

◆ restart_chkfile

std::string WarpX::restart_chkfile
private

◆ rho_cp

amrex::Vector< std::unique_ptr<amrex::MultiFab> > WarpX::rho_cp
private

◆ rho_fp

amrex::Vector< std::unique_ptr<amrex::MultiFab> > WarpX::rho_fp
private

◆ rho_slice

amrex::Vector< std::unique_ptr<amrex::MultiFab> > WarpX::rho_slice
private

◆ safe_guard_cells

bool WarpX::safe_guard_cells = 0
static

◆ serialize_ics

bool WarpX::serialize_ics = false
static

◆ slice_cr_ratio

amrex::IntVect WarpX::slice_cr_ratio
private

◆ slice_max_grid_size

int WarpX::slice_max_grid_size
private

◆ slice_plot_int

int WarpX::slice_plot_int = -1
private

◆ slice_plotfile_headerversion

amrex::VisMF::Header::Version WarpX::slice_plotfile_headerversion = amrex::VisMF::Header::Version_v1
private

◆ slice_realbox

amrex::RealBox WarpX::slice_realbox
private

◆ sort_bin_size

amrex::IntVect WarpX::sort_bin_size
static

◆ sort_intervals

IntervalsParser WarpX::sort_intervals
static

◆ spectral_solver_cp

amrex::Vector<std::unique_ptr<SpectralSolverRZ> > WarpX::spectral_solver_cp
private

◆ spectral_solver_fp

amrex::Vector<std::unique_ptr<SpectralSolverRZ> > WarpX::spectral_solver_fp
private

◆ stop_time

amrex::Real WarpX::stop_time = std::numeric_limits<amrex::Real>::max()
private

◆ str_Bx_ext_grid_function

std::string WarpX::str_Bx_ext_grid_function
static

◆ str_By_ext_grid_function

std::string WarpX::str_By_ext_grid_function
static

◆ str_Bz_ext_grid_function

std::string WarpX::str_Bz_ext_grid_function
static

◆ str_Ex_ext_grid_function

std::string WarpX::str_Ex_ext_grid_function
static

◆ str_Ey_ext_grid_function

std::string WarpX::str_Ey_ext_grid_function
static

◆ str_Ez_ext_grid_function

std::string WarpX::str_Ez_ext_grid_function
static

◆ t_new

amrex::Vector<amrex::Real> WarpX::t_new
private

◆ t_old

amrex::Vector<amrex::Real> WarpX::t_old
private

◆ time_of_last_gal_shift

amrex::Real WarpX::time_of_last_gal_shift = 0

◆ update_with_rho

bool WarpX::update_with_rho

◆ use_damp_fields_in_z_guard

bool WarpX::use_damp_fields_in_z_guard = false
static

◆ use_fdtd_nci_corr

bool WarpX::use_fdtd_nci_corr = false
static

◆ use_filter

bool WarpX::use_filter = false
static

◆ use_filter_compensation

bool WarpX::use_filter_compensation = false
static

◆ use_hybrid_QED

bool WarpX::use_hybrid_QED = 0
private

◆ use_kspace_filter

bool WarpX::use_kspace_filter = false
static

◆ use_single_read

bool WarpX::use_single_read = true
private

◆ use_single_write

bool WarpX::use_single_write = true
private

◆ verbose

int WarpX::verbose = 1
private

◆ warpx_do_continuous_injection

int WarpX::warpx_do_continuous_injection = 0
private

◆ zmax_plasma_to_compute_max_step

Real WarpX::zmax_plasma_to_compute_max_step = 0.
static

The documentation for this class was generated from the following files: