25 #ifdef WARPX_USE_PSATD 45 #include <AMReX_Config.H> 84 static WarpX& GetInstance ();
85 static void ResetInstance ();
91 static std::string PicsarVersion ();
97 void Evolve (
int numsteps = -1);
106 int num_shift,
int dir,
const int lev,
bool update_cost_flag,
107 amrex::Real external_field=0.0,
bool useparser =
false,
110 static void GotoNextLine (std::istream& is);
214 bool update_with_rho =
false;
353 static void AllocInitMultiFab (
354 std::unique_ptr<amrex::MultiFab>& mf,
359 const std::string&
name,
360 std::optional<const amrex::Real> initial_value = {});
376 static void AllocInitMultiFab (
377 std::unique_ptr<amrex::iMultiFab>& mf,
382 const std::string& name,
383 std::optional<const int> initial_value = {});
395 static void AliasInitMultiFab (
396 std::unique_ptr<amrex::MultiFab>& mf,
400 const std::string& name,
401 std::optional<const amrex::Real> initial_value);
415 static void AddToMultiFabMap(
const std::string& name,
const std::unique_ptr<amrex::MultiFab>& mf) {
416 multifab_map[
name] = mf.get();
425 static void AddToMultiFabMap(
const std::string& name,
const std::unique_ptr<amrex::iMultiFab>& mf) {
426 imultifab_map[
name] = mf.get();
429 std::array<const amrex::MultiFab* const, 3>
432 Bfield_aux[lev][0].get(),
433 Bfield_aux[lev][1].get(),
434 Bfield_aux[lev][2].get()
437 std::array<const amrex::MultiFab* const, 3>
440 Efield_aux[lev][0].get(),
441 Efield_aux[lev][1].get(),
442 Efield_aux[lev][2].get()
492 bool DoPML ()
const {
return do_pml;}
494 #if (defined WARPX_DIM_RZ) && (defined WARPX_USE_PSATD) 499 std::vector<bool> getPMLdirections()
const;
507 m_instance->load_balance_efficiency[lev] = efficiency;
518 return m_instance->load_balance_efficiency[lev];
530 amrex::Real time_of_last_gal_shift = 0;
544 void applyMirrors(amrex::Real time);
550 void PrintMainPICparameters ();
553 void WriteUsedInputsFile ()
const;
556 void PrintDtDxDyDz ();
563 void ComputeMaxStep ();
565 void computeMaxStepBoostAccelerator();
571 int MoveWindow (
const int step,
bool move_j);
578 void ShiftGalileanBoundary ();
579 void UpdatePlasmaInjectionPosition (amrex::Real
dt);
581 void EvolveE ( amrex::Real
dt);
582 void EvolveE (
int lev, amrex::Real
dt);
583 void EvolveB ( amrex::Real
dt,
DtType dt_type);
584 void EvolveB (
int lev, amrex::Real
dt,
DtType dt_type);
585 void EvolveF ( amrex::Real
dt,
DtType dt_type);
586 void EvolveF (
int lev, amrex::Real
dt,
DtType dt_type);
587 void EvolveG ( amrex::Real
dt,
DtType dt_type);
588 void EvolveG (
int lev, amrex::Real
dt,
DtType dt_type);
590 void EvolveE (
int lev,
PatchType patch_type, amrex::Real
dt);
594 void MacroscopicEvolveE ( amrex::Real
dt);
595 void MacroscopicEvolveE (
int lev, amrex::Real
dt);
596 void MacroscopicEvolveE (
int lev,
PatchType patch_type, amrex::Real
dt);
609 void Hybrid_QED_Push (
int lev, amrex::Real
dt);
617 void Hybrid_QED_Push (
int lev,
PatchType patch_type, amrex::Real
dt);
632 return load_balance_intervals;
642 void DampFieldsInGuards (
const int lev,
643 const std::array<std::unique_ptr<amrex::MultiFab>,3>& Efield,
644 const std::array<std::unique_ptr<amrex::MultiFab>,3>& Bfield);
653 void DampFieldsInGuards (
const int lev, std::unique_ptr<amrex::MultiFab>& mf);
665 void ApplyEfieldBoundary (
const int lev,
PatchType patch_type);
666 void ApplyBfieldBoundary (
const int lev,
PatchType patch_type,
DtType dt_type);
669 void DampPML (
const int lev);
670 void DampPML (
const int lev,
PatchType patch_type);
671 void DampPML_Cartesian (
const int lev,
PatchType patch_type);
674 void DampJPML (
int lev);
675 void DampJPML (
int lev,
PatchType patch_type);
678 bool isAnyBoundaryPML();
683 void NodalSyncPML ();
688 void NodalSyncPML (
int lev);
693 void NodalSyncPML (
int lev,
PatchType patch_type);
695 PML* GetPML (
int lev);
696 #if (defined WARPX_DIM_RZ) && (defined WARPX_USE_PSATD) 697 PML_RZ* GetPML_RZ (
int lev);
701 void doFieldIonization ();
705 void doFieldIonization (
int lev);
713 void doQEDEvents (
int lev);
716 void PushParticlesandDepose (
int lev, amrex::Real cur_time,
DtType a_dt_type=
DtType::Full,
bool skip_current=
false);
717 void PushParticlesandDepose ( amrex::Real cur_time,
bool skip_current=
false);
721 void UpdateAuxilaryData ();
722 void UpdateAuxilaryDataStagToNodal ();
723 void UpdateAuxilaryDataSameType ();
758 void SyncCurrentAndRho ();
772 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
773 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp);
783 amrex::Real
gett_old (
int lev)
const {
return t_old[lev];}
785 amrex::Real
gett_new (
int lev)
const {
return t_new[lev];}
786 void sett_new (
int lev, amrex::Real time) {t_new[lev] = time;}
788 amrex::Real
getdt (
int lev)
const {
return dt[lev];}
797 void updateStopTime (
const amrex::Real new_stop_time) {stop_time = new_stop_time;}
807 static std::array<amrex::Real,3> CellSize (
int lev);
818 static std::array<amrex::Real,3> LowerCorner (
const amrex::Box& bx,
const int lev,
const amrex::Real time_shift_delta);
827 static std::array<amrex::Real,3> UpperCorner (
const amrex::Box& bx,
const int lev,
const amrex::Real time_shift_delta);
851 bool const step_before_end = (step < end_moving_window_step) || (end_moving_window_step < 0);
852 bool const step_after_start = (step >= start_moving_window_step);
853 return do_moving_window && step_before_end && step_after_start;
861 const std::array<const amrex::MultiFab* const, 3>& B,
862 const std::array<amrex::Real,3>&
dx);
865 const std::array<const amrex::MultiFab* const, 3>& B,
887 void ComputeSpaceChargeField (
bool const reset_fields);
888 void AddBoundaryField ();
890 void AddSpaceChargeFieldLabFrame ();
893 std::array<amrex::Real, 3>
const beta = {{0,0,0}},
894 amrex::Real
const required_precision=amrex::Real(1.e-11),
895 amrex::Real absolute_tolerance=amrex::Real(0.0),
896 const int max_iters=200,
897 const int verbosity=2)
const;
899 void setPhiBC (
amrex::Vector<std::unique_ptr<amrex::MultiFab> >& phi )
const;
901 void computeE (
amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>, 3> >& E,
903 std::array<amrex::Real, 3>
const beta = {{0,0,0}} )
const;
904 void computeB (
amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>, 3> >& B,
906 std::array<amrex::Real, 3>
const beta = {{0,0,0}} )
const;
907 void computePhiTriDiagonal (
const amrex::Vector<std::unique_ptr<amrex::MultiFab> >& rho,
908 amrex::Vector<std::unique_ptr<amrex::MultiFab> >& phi)
const;
912 void ComputeMagnetostaticField ();
913 void AddMagnetostaticFieldLabFrame ();
916 amrex::Real
const required_precision=amrex::Real(1.e-11),
917 amrex::Real absolute_tolerance=amrex::Real(0.0),
918 const int max_iters=200,
919 const int verbosity=2)
const;
944 void InitializeExternalFieldsOnGridUsingParser (
949 std::array< std::unique_ptr<amrex::MultiFab>, 3 >
const& edge_lengths,
950 std::array< std::unique_ptr<amrex::MultiFab>, 3 >
const& face_areas,
962 void InitializeEBGridData(
int lev);
971 void ApplyFilterandSumBoundaryRho (
int lev,
int glev,
amrex::MultiFab& rho,
int icomp,
int ncomp);
995 virtual void ErrorEst (
int lev,
amrex::TagBoxArray& tags, amrex::Real time,
int )
final;
1027 void InitLevelData (
int lev, amrex::Real time);
1036 virtual void MakeNewLevelFromScratch (
int lev, amrex::Real time,
const amrex::BoxArray& ba,
1042 virtual void MakeNewLevelFromCoarse (
int , amrex::Real ,
const amrex::BoxArray& ,
1048 virtual void RemakeLevel (
int lev, amrex::Real time,
const amrex::BoxArray& ba,
1052 virtual void ClearLevel (
int lev)
final;
1060 static void CheckSignals ();
1062 void HandleSignals ();
1067 void EvolveEM(
int numsteps);
1077 void OneStep_nosub (amrex::Real t);
1078 void OneStep_sub1 (amrex::Real t);
1083 void OneStep_multiJ (
const amrex::Real t);
1085 void RestrictCurrentFromFineToCoarsePatch (
1086 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
1087 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp,
1089 void AddCurrentFromFineLevelandSumBoundary (
1090 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
1091 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp,
1093 void StoreCurrent (
const int lev);
1094 void RestoreCurrent (
const int lev);
1096 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& current,
1100 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& current,
1103 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& current,
1108 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& current,
1112 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
1113 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp,
1117 void RestrictRhoFromFineToCoarsePatch (
1118 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_fp,
1119 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_cp,
1121 void ApplyFilterandSumBoundaryRho (
1122 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_fp,
1123 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_cp,
1128 void AddRhoFromFineLevelandSumBoundary (
1129 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_fp,
1130 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_cp,
1135 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_fp,
1136 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_cp,
1142 void ReadParameters ();
1146 void BackwardCompatibility ();
1148 void InitFromScratch ();
1154 GetRestartDMap (
const std::string& chkfile,
const amrex::BoxArray& ba,
int lev)
const;
1156 void InitFromCheckpoint ();
1157 void PostRestart ();
1164 void InitDiagnostics ();
1166 void InitNCICorrector ();
1172 void CheckGuardCells();
1183 void CheckKnownIssues();
1186 void PerformanceHints ();
1188 void BuildBufferMasks ();
1192 return current_buffer_masks[lev].
get();
1195 return gather_buffer_masks[lev].
get();
1225 const int centering_nox,
1226 const int centering_noy,
1227 const int centering_noz,
1228 const short a_grid_type);
1235 #ifdef WARPX_USE_PSATD 1236 # ifdef WARPX_DIM_RZ 1237 void AllocLevelSpectralSolverRZ (
amrex::Vector<std::unique_ptr<SpectralSolverRZ>>& spectral_solver,
1241 const std::array<amrex::Real,3>&
dx);
1243 void AllocLevelSpectralSolver (
amrex::Vector<std::unique_ptr<SpectralSolver>>& spectral_solver,
1247 const std::array<amrex::Real,3>& dx,
1248 const bool pml_flag=
false);
1260 std::unique_ptr<MultiParticleContainer>
mypc;
1361 int do_silver_mueller = 0;
1364 int pml_has_particles = 0;
1365 int do_pml_j_damping = 0;
1366 int do_pml_in_domain = 0;
1373 #if (defined WARPX_DIM_RZ) && (defined WARPX_USE_PSATD) 1378 amrex::Real moving_window_x = std::numeric_limits<amrex::Real>::max();
1379 amrex::Real current_injection_position = 0;
1382 int warpx_do_continuous_injection = 0;
1383 int num_injected_species = -1;
1399 int load_balance_with_sfc = 0;
1404 amrex::Real load_balance_knapsack_factor = amrex::Real(1.24);
1410 amrex::Real load_balance_efficiency_ratio_threshold = amrex::Real(1.1);
1418 amrex::Real costs_heuristic_cells_wt = amrex::Real(0);
1424 amrex::Real costs_heuristic_particles_wt = amrex::Real(0);
1432 bool use_hybrid_QED = 0;
1434 int max_step = std::numeric_limits<int>::max();
1435 amrex::Real stop_time = std::numeric_limits<amrex::Real>::max();
1437 int regrid_int = -1;
1439 amrex::Real
cfl = amrex::Real(0.999);
1446 bool use_single_read =
true;
1447 bool use_single_write =
true;
1448 int mffile_nstreams = 4;
1449 int field_io_nfiles = 1024;
1450 int particle_io_nfiles = 1024;
1455 bool is_synchronized =
true;
1458 const bool sync_nodal_points =
true;
1464 int slice_plot_int = -1;
1474 bool fft_periodic_single_box =
false;
1496 return *m_field_factory[lev];
1514 static void ComputeEdgeLengths (std::array< std::unique_ptr<amrex::MultiFab>, 3 >& edge_lengths,
1520 static void ComputeFaceAreas (std::array< std::unique_ptr<amrex::MultiFab>, 3 >& face_areas,
1526 static void ScaleEdges (std::array< std::unique_ptr<amrex::MultiFab>, 3 >& edge_lengths,
1527 const std::array<amrex::Real,3>&
cell_size);
1531 static void ScaleAreas (std::array< std::unique_ptr<amrex::MultiFab>, 3 >& face_areas,
1532 const std::array<amrex::Real,3>& cell_size);
1546 void ComputeDistanceToEB ();
1555 void ComputeFaceExtensions();
1559 void InitBorrowing();
1563 void ShrinkBorrowing();
1567 void ComputeOneWayExtensions();
1571 void ComputeEightWaysExtensions();
1580 void ApplyBCKCorrection(
const int idim);
1586 void PSATDSubtractCurrentPartialSumsAvg ();
1589 void ScrapeParticles ();
1593 #ifdef WARPX_USE_PSATD 1607 void PSATDForwardTransformEB (
1608 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& E_fp,
1609 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& B_fp,
1610 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& E_cp,
1611 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& B_cp);
1626 void PSATDBackwardTransformEB (
1627 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& E_fp,
1628 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& B_fp,
1629 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& E_cp,
1630 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& B_cp);
1644 void PSATDBackwardTransformEBavg (
1645 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& E_avg_fp,
1646 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& B_avg_fp,
1647 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& E_avg_cp,
1648 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& B_avg_cp);
1661 void PSATDForwardTransformJ (
1662 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
1663 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp,
1664 const bool apply_kspace_filter=
true);
1674 void PSATDBackwardTransformJ (
1675 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
1676 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp);
1689 void PSATDForwardTransformRho (
1690 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_fp,
1691 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_cp,
1692 const int icomp,
const int dcomp,
const bool apply_kspace_filter=
true);
1697 void PSATDMoveRhoNewToRhoOld ();
1702 void PSATDMoveJNewToJOld ();
1707 void PSATDForwardTransformF ();
1712 void PSATDBackwardTransformF ();
1717 void PSATDForwardTransformG ();
1722 void PSATDBackwardTransformG ();
1727 void PSATDCurrentCorrection ();
1732 void PSATDVayDeposition ();
1737 void PSATDPushSpectralFields ();
1744 void PSATDScaleAverageFields (
const amrex::Real scale_factor);
1749 void PSATDEraseAverageFields ();
1751 # ifdef WARPX_DIM_RZ 1761 # ifdef WARPX_DIM_RZ
const amrex::MultiFab & getG_cp(int lev)
Definition: WarpX.H:477
static std::string str_Bz_ext_grid_function
String storing parser function to initialize z-component of the magnetic field on the grid...
Definition: WarpX.H:130
amrex::Gpu::DeviceVector< amrex::Real > device_current_centering_stencil_coeffs_y
Definition: WarpX.H:990
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_fp
Definition: WarpX.H:1276
static bool fft_do_time_averaging
Definition: WarpX.H:857
amrex::MultiFab * get_pointer_current_fp_nodal(int lev, int direction) const
Definition: WarpX.H:452
static int moving_window_dir
Definition: WarpX.H:855
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_fp
Definition: WarpX.H:1279
amrex::Vector< std::unique_ptr< NCIGodfreyFilter > > nci_godfrey_filter_bxbyez
Definition: WarpX.H:528
amrex::Vector< amrex::Real > getdt() const
Definition: WarpX.H:787
static short rho_in_time
Definition: WarpX.H:201
amrex::Vector< int > getistep() const
Definition: WarpX.H:779
amrex::FabFactory< amrex::FArrayBox > const & fieldFactory(int lev) const noexcept
Definition: WarpX.H:1495
DtType
Definition: WarpXDtType.H:10
amrex::Vector< std::unique_ptr< SpectralSolverRZ > > spectral_solver_cp
Definition: WarpX.H:1753
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_avg_cp
Definition: WarpX.H:1346
static bool refine_plasma
Definition: WarpX.H:306
amrex::RealVect fine_tag_hi
Definition: WarpX.H:1453
static std::map< std::string, amrex::iMultiFab * > imultifab_map
Definition: WarpX.H:407
static int do_moving_window
Definition: WarpX.H:842
bool do_pml_dive_cleaning
Definition: WarpX.H:1368
This class contains the macroscopic properties of the medium needed to evaluate macroscopic Maxwell e...
Definition: MacroscopicProperties.H:30
static bool compute_max_step_from_btd
If true, the code will compute max_step from the back transformed diagnostics.
Definition: WarpX.H:303
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_avg_fp
Definition: WarpX.H:1281
amrex::Vector< amrex::IntVect > do_pml_Hi
Definition: WarpX.H:1371
amrex::IntVect m_rho_nodal_flag
Definition: WarpX.H:337
static amrex::IntVect sort_idx_type
Specifies the type of grid used for the above sorting, i.e. cell-centered, nodal, or mixed...
Definition: WarpX.H:314
static amrex::Vector< int > field_boundary_lo
Definition: WarpX.H:176
void PushPSATD(const int lev)
Definition: PML.cpp:1383
static amrex::Real self_fields_required_precision
Definition: WarpX.H:837
const amrex::MultiFab & getrho_fp(int lev)
Definition: WarpX.H:482
amrex::Vector< int > injected_plasma_species
Definition: WarpX.H:1384
std::unique_ptr< SpectralSolver > spectral_solver_cp
Definition: PML.H:244
static WarpX * m_instance
Definition: WarpX.H:1057
static amrex::Vector< int > boost_direction
Direction of the Lorentz transform that defines the boosted frame of the simulation.
Definition: WarpX.H:289
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_store
Definition: WarpX.H:1334
amrex::Vector< std::array< std::unique_ptr< amrex::iMultiFab >, 3 > > m_flag_info_face
Definition: WarpX.H:1300
amrex::Vector< std::array< std::unique_ptr< amrex::LayoutData< FaceInfoBox > >, 3 > > m_borrowing
Definition: WarpX.H:1315
amrex::Real gett_new(int lev) const
Definition: WarpX.H:785
int maxStep() const
Definition: WarpX.H:794
static short electromagnetic_solver_id
Integer that corresponds to the type of Maxwell solver (Yee, CKC, PSATD, ECT)
Definition: WarpX.H:161
void ComputePMLFactors(amrex::Real dt)
Definition: PML.cpp:991
amrex::Vector< std::unique_ptr< amrex::MultiFab > > F_cp
Definition: WarpX.H:1340
MultiParticleContainer & GetPartContainer()
Definition: WarpX.H:99
void sett_new(int lev, amrex::Real time)
Definition: WarpX.H:786
const amrex::MultiFab & getBfield_cp(int lev, int direction)
Definition: WarpX.H:474
std::unique_ptr< amrex::Parser > Bxfield_parser
User-defined parser to initialize x-component of the magnetic field on the grid.
Definition: WarpX.H:139
Definition: AcceleratorLattice.H:20
Definition: ParticleBoundaryBuffer.H:19
const amrex::MultiFab & getG_fp(int lev)
Definition: WarpX.H:485
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > vector_potential_fp_nodal
Definition: WarpX.H:1285
amrex::Vector< std::unique_ptr< AcceleratorLattice > > m_accelerator_lattice
Definition: WarpX.H:1486
const amrex::MultiFab & getEfield_fp(int lev, int direction)
Definition: WarpX.H:480
std::unique_ptr< MultiDiagnostics > multi_diags
Definition: WarpX.H:1261
void setLoadBalanceEfficiency(const int lev, const amrex::Real efficiency)
Definition: WarpX.H:503
static int n_field_gather_buffer
Definition: WarpX.H:326
std::unique_ptr< MultiParticleContainer > mypc
Definition: WarpX.H:1260
void computeVectorPotential(amrex::Vector< amrex::Array< amrex::MultiFab *, 3 > > const &curr, amrex::Vector< amrex::Array< amrex::MultiFab *, 3 > > &A, amrex::Real const relative_tolerance, amrex::Real absolute_tolerance, int const max_iters, int const verbosity, amrex::Vector< amrex::Geometry > const geom, amrex::Vector< amrex::DistributionMapping > const dmap, amrex::Vector< amrex::BoxArray > const grids, T_BoundaryHandler const boundary_handler, bool const do_single_precision_comms=false, std::optional< amrex::Vector< amrex::IntVect > > rel_ref_ratio=std::nullopt, [[maybe_unused]] T_PostACalculationFunctor post_A_calculation=std::nullopt, [[maybe_unused]] std::optional< amrex::Real const > current_time=std::nullopt, [[maybe_unused]] std::optional< amrex::Vector< T_FArrayBoxFactory const *> > eb_farray_box_factory=std::nullopt)
Definition: VectorPoissonSolver.H:95
float cfl
Definition: yt3d_mpi.py:41
static bool do_current_centering
Definition: WarpX.H:206
static int noy
Order of the particle shape factors (splines) along y.
Definition: WarpX.H:234
amrex::Vector< std::array< std::unique_ptr< amrex::iMultiFab >, 3 > > m_flag_ext_face
Definition: WarpX.H:1307
amrex::MultiFab * get_pointer_edge_lengths(int lev, int direction) const
Definition: WarpX.H:466
const AcceleratorLattice & get_accelerator_lattice(int lev)
Definition: WarpX.H:998
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_avg_cp
Definition: WarpX.H:1347
const amrex::MultiFab & getEfield(int lev, int direction)
Definition: WarpX.H:469
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_fp_nodal
Definition: WarpX.H:1337
amrex::Vector< std::unique_ptr< amrex::iMultiFab > > gather_buffer_masks
Definition: WarpX.H:1353
static short current_deposition_algo
Integer that corresponds to the current deposition algorithm (Esirkepov, direct, Vay) ...
Definition: WarpX.H:153
int dx
Definition: compute_domain.py:35
utils::parser::IntervalsParser get_load_balance_intervals() const
returns the load balance interval
Definition: WarpX.H:630
std::unique_ptr< MultiReducedDiags > reduced_diags
object with all reduced diagnotics, similar to MultiParticleContainer for species.
Definition: WarpX.H:542
std::unique_ptr< amrex::Parser > Bzfield_parser
User-defined parser to initialize z-component of the magnetic field on the grid.
Definition: WarpX.H:143
bool current_correction
If true, a correction is applied to the current in Fourier space,.
Definition: WarpX.H:210
static short charge_deposition_algo
Integer that corresponds to the charge deposition algorithm (only standard deposition) ...
Definition: WarpX.H:155
amrex::Vector< std::unique_ptr< amrex::MultiFab > > rho_cp
Definition: WarpX.H:1342
amrex::MultiFab * get_pointer_rho_fp(int lev) const
Definition: WarpX.H:453
static amrex::Real moving_window_v
Definition: WarpX.H:856
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_cp
Definition: WarpX.H:1345
amrex::MultiFab * get_pointer_Efield_aux(int lev, int direction) const
Definition: WarpX.H:446
void FillBoundaryE()
Definition: PML.cpp:1242
MultiDiagnostics & GetMultiDiags()
Definition: WarpX.H:101
bool getis_synchronized() const
Definition: WarpX.H:792
SpectralSolverRZ & get_spectral_solver_fp(int lev)
Definition: WarpX.H:1766
static int electrostatic_solver_id
Definition: WarpX.H:834
const amrex::IntVect get_ng_depos_J() const
Definition: WarpX.H:873
amrex::MultiFab * get_pointer_Efield_cp(int lev, int direction) const
Definition: WarpX.H:459
Definition: MultiParticleContainer.H:64
static void AddToMultiFabMap(const std::string &name, const std::unique_ptr< amrex::MultiFab > &mf)
Add the MultiFab to the map of MultiFabs.
Definition: WarpX.H:415
bool DoPML() const
Definition: WarpX.H:492
static int current_centering_nox
Order of finite centering of currents (from nodal grid to staggered grid), along x.
Definition: WarpX.H:246
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_buf
Definition: WarpX.H:1356
amrex::RealBox slice_realbox
Definition: WarpX.H:1465
amrex::Vector< std::unique_ptr< amrex::MultiFab > > charge_buf
Definition: WarpX.H:1357
int dt
Definition: Stencil.py:468
void updateStopTime(const amrex::Real new_stop_time)
Definition: WarpX.H:797
amrex::MultiFab * get_pointer_Bfield_fp(int lev, int direction) const
Definition: WarpX.H:450
amrex::Vector< std::unique_ptr< amrex::LayoutData< amrex::Real > > > costs
Definition: WarpX.H:1397
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > vector_potential_grad_buf_b_stag
Definition: WarpX.H:1287
const amrex::MultiFab & getF_fp(int lev)
Definition: WarpX.H:484
static int em_solver_medium
Integer that corresponds to electromagnetic Maxwell solver (vacuum - 0, macroscopic - 1) ...
Definition: WarpX.H:167
const amrex::MultiFab & getrho_cp(int lev)
Definition: WarpX.H:475
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > m_area_mod
Definition: WarpX.H:1311
static bool do_device_synchronize
Definition: WarpX.H:320
static std::string str_Ez_ext_grid_function
String storing parser function to initialize z-component of the electric field on the grid...
Definition: WarpX.H:136
amrex::Vector< int > istep
Definition: WarpX.H:1252
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_aux
Definition: WarpX.H:1268
amrex::MultiFab * get_pointer_rho_cp(int lev) const
Definition: WarpX.H:462
std::unique_ptr< amrex::Parser > Byfield_parser
User-defined parser to initialize y-component of the magnetic field on the grid.
Definition: WarpX.H:141
static int num_mirrors
Definition: WarpX.H:536
amrex::Vector< std::unique_ptr< amrex::iMultiFab > > current_buffer_masks
Definition: WarpX.H:1352
static amrex::Vector< ParticleBoundaryType > particle_boundary_hi
Definition: WarpX.H:191
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_avg_fp
Definition: WarpX.H:1280
Definition: ElectrostaticSolver.H:35
amrex::MultiFab * get_pointer_face_areas(int lev, int direction) const
Definition: WarpX.H:467
void updateMaxStep(const int new_max_step)
Definition: WarpX.H:795
const amrex::iMultiFab * getGatherBufferMasks(int lev) const
Definition: WarpX.H:1194
amrex::Vector< std::unique_ptr< amrex::MultiFab > > F_fp
Definition: WarpX.H:1272
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_slice
Definition: WarpX.H:1472
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_fp_vay
Definition: WarpX.H:1277
amrex::Vector< int > mirror_z_npoints
Definition: WarpX.H:539
void FillBoundaryF()
Definition: PML.cpp:1290
amrex::Vector< amrex::Real > gett_old() const
Definition: WarpX.H:782
amrex::Real getdt(int lev) const
Definition: WarpX.H:788
amrex::Real getLoadBalanceEfficiency(const int lev)
Definition: WarpX.H:514
static int do_multi_J_n_depositions
Definition: WarpX.H:318
direction
Definition: AnyFFT.H:74
BilinearFilter bilinear_filter
Definition: WarpX.H:526
static int n_current_deposition_buffer
Definition: WarpX.H:330
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_cp
Definition: WarpX.H:1343
amrex::Vector< std::unique_ptr< amrex::MultiFab > > m_distance_to_eb
Definition: WarpX.H:1331
static bool use_fdtd_nci_corr
Definition: WarpX.H:262
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > vector_potential_grad_buf_e_stag
Definition: WarpX.H:1286
static int start_moving_window_step
Definition: WarpX.H:843
const FArrayBox & get(const MFIter &mfi) const noexcept
static int moving_window_active(int const step)
Definition: WarpX.H:850
static amrex::Real gamma_boost
Lorentz factor of the boosted frame in which a boosted-frame simulation is run.
Definition: WarpX.H:285
cell_size
Definition: compute_domain.py:37
amrex::Vector< amrex::Real > t_new
Definition: WarpX.H:1255
void computePhi(amrex::Vector< amrex::MultiFab *> const &rho, amrex::Vector< amrex::MultiFab *> &phi, std::array< amrex::Real, 3 > const beta, amrex::Real const relative_tolerance, amrex::Real absolute_tolerance, int const max_iters, int const verbosity, amrex::Vector< amrex::Geometry > const geom, amrex::Vector< amrex::DistributionMapping > const dmap, amrex::Vector< amrex::BoxArray > const grids, T_BoundaryHandler const boundary_handler, bool const do_single_precision_comms=false, std::optional< amrex::Vector< amrex::IntVect > > rel_ref_ratio=std::nullopt, [[maybe_unused]] T_PostPhiCalculationFunctor post_phi_calculation=std::nullopt, [[maybe_unused]] std::optional< amrex::Real const > current_time=std::nullopt, [[maybe_unused]] std::optional< amrex::Vector< T_FArrayBoxFactory const *> > eb_farray_box_factory=std::nullopt)
Definition: PoissonSolver.H:133
amrex::MultiFab * get_pointer_phi_fp(int lev) const
Definition: WarpX.H:456
amrex::Vector< std::unique_ptr< amrex::MultiFab > > G_slice
Definition: WarpX.H:1468
static short psatd_solution_type
Definition: WarpX.H:196
std::optional< amrex::Real > m_const_dt
Definition: WarpX.H:1386
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_slice
Definition: WarpX.H:1471
static utils::parser::IntervalsParser sort_intervals
Definition: WarpX.H:308
int getnsubsteps(int lev) const
Definition: WarpX.H:778
utils::parser::IntervalsParser load_balance_intervals
Definition: WarpX.H:1394
static amrex::Vector< amrex::Real > E_external_grid
Initial electric field on the grid.
Definition: WarpX.H:116
amrex::Vector< amrex::IntVect > do_pml_Lo
Definition: WarpX.H:1370
void FillBoundaryG()
Definition: PML.cpp:1312
amrex::Vector< std::unique_ptr< amrex::MultiFab > > G_cp
Definition: WarpX.H:1341
std::array< const amrex::MultiFab *const, 3 > get_array_Efield_aux(const int lev) const
Definition: WarpX.H:438
static amrex::Real beta_boost
Beta value corresponding to the Lorentz factor of the boosted frame of the simulation.
Definition: WarpX.H:287
static bool do_dive_cleaning
Definition: WarpX.H:227
amrex::Vector< amrex::Real > dt
Definition: WarpX.H:1257
std::unique_ptr< amrex::Parser > Exfield_parser
User-defined parser to initialize x-component of the electric field on the grid.
Definition: WarpX.H:145
static bool do_multi_J
Definition: WarpX.H:317
std::array< const amrex::MultiFab *const, 3 > get_array_Bfield_aux(const int lev) const
Definition: WarpX.H:430
amrex::MultiFab * get_pointer_G_fp(int lev) const
Definition: WarpX.H:455
static int field_centering_noz
Order of finite centering of fields (from staggered grid to nodal grid), along z. ...
Definition: WarpX.H:243
amrex::Real stopTime() const
Definition: WarpX.H:796
This class is a parser for multiple slices of the form x,y,z,... where x, y and z are slices of the f...
Definition: IntervalsParser.H:102
const amrex::MultiFab & getBfield_avg_cp(int lev, int direction)
Definition: WarpX.H:490
static std::string E_ext_grid_s
Initialization type for external electric field on the grid.
Definition: WarpX.H:123
amrex::Vector< std::unique_ptr< SpectralSolverRZ > > spectral_solver_fp
Definition: WarpX.H:1752
const amrex::IntVect get_ng_depos_rho() const
Definition: WarpX.H:874
static bool use_filter
If true, a bilinear filter is used to smooth charge and currents.
Definition: WarpX.H:275
int getdo_moving_window() const
Definition: WarpX.H:789
amrex::Gpu::DeviceVector< amrex::Real > device_field_centering_stencil_coeffs_y
Definition: WarpX.H:985
amrex::Vector< amrex::Real > load_balance_efficiency
Definition: WarpX.H:1412
ii
Definition: check_interp_points_and_weights.py:148
Definition: BilinearFilter.H:16
amrex::Vector< std::unique_ptr< PML > > pml
Definition: WarpX.H:1372
static amrex::Real zmax_plasma_to_compute_max_step
Definition: WarpX.H:293
amrex::Gpu::DeviceVector< amrex::Real > device_field_centering_stencil_coeffs_x
Definition: WarpX.H:984
static bool sort_particles_for_deposition
If true, particles will be sorted in the order x -> y -> z -> ppc for faster deposition.
Definition: WarpX.H:312
This class contains a vector of all diagnostics in the simulation.
Definition: MultiDiagnostics.H:20
amrex::Vector< std::unique_ptr< amrex::MultiFab > > phi_fp
Definition: WarpX.H:1275
const amrex::MultiFab & getBfield_fp(int lev, int direction)
Definition: WarpX.H:481
amrex::MultiFab * get_pointer_Bfield_cp(int lev, int direction) const
Definition: WarpX.H:460
amrex::MultiFab * get_pointer_G_cp(int lev) const
Definition: WarpX.H:464
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > m_edge_lengths
EB: Lengths of the mesh edges.
Definition: WarpX.H:1290
amrex::MultiFab * get_pointer_current_fp(int lev, int direction) const
Definition: WarpX.H:451
const amrex::MultiFab & getEfield_avg_cp(int lev, int direction)
Definition: WarpX.H:489
static int self_fields_verbosity
Definition: WarpX.H:840
static int field_centering_noy
Order of finite centering of fields (from staggered grid to nodal grid), along y. ...
Definition: WarpX.H:241
const amrex::MultiFab & getBfield(int lev, int direction)
Definition: WarpX.H:470
const amrex::IntVect get_numprocs() const
Definition: WarpX.H:884
std::unique_ptr< MacroscopicProperties > m_macroscopic_properties
Definition: WarpX.H:1389
static amrex::Real quantum_xi_c2
Definition: WarpX.H:619
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_cp
Definition: WarpX.H:1344
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > m_face_areas
EB: Areas of the mesh faces.
Definition: WarpX.H:1292
const amrex::IntVect getngUpdateAux() const
Definition: WarpX.H:872
amrex::RealVect fine_tag_lo
Definition: WarpX.H:1452
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_cax
Definition: WarpX.H:1350
static int n_rz_azimuthal_modes
Number of modes for the RZ multi-mode version.
Definition: WarpX.H:253
static short field_gathering_algo
Integer that corresponds to the field gathering algorithm (energy-conserving, momentum-conserving) ...
Definition: WarpX.H:157
void FillBoundaryB()
Definition: PML.cpp:1266
static void AddToMultiFabMap(const std::string &name, const std::unique_ptr< amrex::iMultiFab > &mf)
Add the iMultiFab to the map of MultiFabs.
Definition: WarpX.H:425
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_slice
Definition: WarpX.H:1470
ParticleBoundaryBuffer & GetParticleBoundaryBuffer()
Definition: WarpX.H:103
const amrex::IntVect getngF() const
Definition: WarpX.H:871
static bool do_compute_max_step_from_zmax
Definition: WarpX.H:297
static std::string str_Bx_ext_grid_function
String storing parser function to initialize x-component of the magnetic field on the grid...
Definition: WarpX.H:126
std::unique_ptr< ParticleBoundaryBuffer > m_particle_boundary_buffer
particle buffer for scraped particles on the boundaries
Definition: WarpX.H:1483
const amrex::MultiFab & getEfield_avg_fp(int lev, int direction)
Definition: WarpX.H:487
amrex::Gpu::DeviceVector< amrex::Real > device_current_centering_stencil_coeffs_z
Definition: WarpX.H:991
static int ncomps
Definition: WarpX.H:258
int getistep(int lev) const
Definition: WarpX.H:780
bool do_pml_divb_cleaning
Definition: WarpX.H:1369
amrex::Gpu::DeviceVector< amrex::Real > device_current_centering_stencil_coeffs_x
Definition: WarpX.H:989
std::unique_ptr< amrex::Parser > Eyfield_parser
User-defined parser to initialize y-component of the electric field on the grid.
Definition: WarpX.H:147
static bool use_kspace_filter
If true, the bilinear filtering of charge and currents is done in Fourier space.
Definition: WarpX.H:277
static bool use_filter_compensation
If true, a compensation step is added to the bilinear filtering of charge and currents.
Definition: WarpX.H:279
static bool do_divb_cleaning
Solve additional Maxwell equation for G in order to control errors in magnetic Gauss' law...
Definition: WarpX.H:229
amrex::Vector< std::unique_ptr< NCIGodfreyFilter > > nci_godfrey_filter_exeybz
Definition: WarpX.H:527
amrex::Vector< int > getnsubsteps() const
Definition: WarpX.H:777
amrex::Gpu::DeviceVector< amrex::Real > device_field_centering_stencil_coeffs_z
Definition: WarpX.H:986
const amrex::MultiFab & getF_cp(int lev)
Definition: WarpX.H:476
const amrex::IntVect get_ng_fieldgather() const
Definition: WarpX.H:875
static short load_balance_costs_update_algo
Definition: WarpX.H:165
static bool do_single_precision_comms
perform field communications in single precision
Definition: WarpX.H:217
amrex::MultiFab * get_pointer_current_cp(int lev, int direction) const
Definition: WarpX.H:461
static bool do_subcycling
Definition: WarpX.H:316
amrex::MultiFab * get_pointer_Efield_fp(int lev, int direction) const
Definition: WarpX.H:449
static amrex::IntVect m_fill_guards_fields
Whether to fill guard cells when computing inverse FFTs of fields.
Definition: WarpX.H:220
const amrex::MultiFab & getBfield_avg_fp(int lev, int direction)
Definition: WarpX.H:488
static amrex::Real self_fields_absolute_tolerance
Definition: WarpX.H:838
Definition: MagnetostaticSolver.H:21
std::unique_ptr< SpectralSolver > spectral_solver_fp
Definition: PML.H:243
static short grid_type
Definition: WarpX.H:334
static std::string str_Ex_ext_grid_function
String storing parser function to initialize x-component of the electric field on the grid...
Definition: WarpX.H:132
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > ECTRhofield
Definition: WarpX.H:1324
amrex::Vector< amrex::Real > t_old
Definition: WarpX.H:1256
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_cax
Definition: WarpX.H:1351
amrex::Vector< std::unique_ptr< PML_RZ > > pml_rz
Definition: WarpX.H:1374
static int current_centering_noy
Order of finite centering of currents (from nodal grid to staggered grid), along y.
Definition: WarpX.H:248
amrex::Vector< int > nsubsteps
Definition: WarpX.H:1253
string name
Definition: Stencil.py:485
static int end_moving_window_step
Definition: WarpX.H:844
MagnetostaticSolver::VectorPoissonBoundaryHandler m_vector_poisson_boundary_handler
Definition: WarpX.H:911
static amrex::Real zmin_domain_boost_step_0
Definition: WarpX.H:300
static amrex::IntVect filter_npass_each_dir
Definition: WarpX.H:525
static bool galerkin_interpolation
Definition: WarpX.H:272
static std::string str_Ey_ext_grid_function
String storing parser function to initialize y-component of the electric field on the grid...
Definition: WarpX.H:134
static int field_centering_nox
Order of finite centering of fields (from staggered grid to nodal grid), along x. ...
Definition: WarpX.H:239
amrex::IntVect slice_cr_ratio
Definition: WarpX.H:1466
amrex::Real getcurrent_injection_position() const
Definition: WarpX.H:791
amrex::MultiFab * get_pointer_Bfield_aux(int lev, int direction) const
Definition: WarpX.H:447
static int current_centering_noz
Order of finite centering of currents (from nodal grid to staggered grid), along z.
Definition: WarpX.H:250
static int nox
Order of the particle shape factors (splines) along x.
Definition: WarpX.H:232
static amrex::Vector< amrex::Real > B_external_grid
Initial magnetic field on the grid.
Definition: WarpX.H:118
amrex::Real getmoving_window_x() const
Definition: WarpX.H:790
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Venl
Definition: WarpX.H:1328
static std::map< std::string, amrex::MultiFab * > multifab_map
Definition: WarpX.H:406
const amrex::MultiFab & getphi_fp(int lev)
Definition: WarpX.H:483
static bool serialize_initial_conditions
If true, the initial conditions from random number generators are serialized (useful for reproducible...
Definition: WarpX.H:282
MacroscopicProperties & GetMacroscopicProperties()
Definition: WarpX.H:100
amrex::Vector< std::unique_ptr< amrex::MultiFab > > G_fp
Definition: WarpX.H:1273
static std::string B_ext_grid_s
Initialization type for external magnetic field on the grid.
Definition: WarpX.H:121
amrex::Vector< std::unique_ptr< FiniteDifferenceSolver > > m_fdtd_solver_fp
Definition: WarpX.H:1770
static std::string str_By_ext_grid_function
String storing parser function to initialize y-component of the magnetic field on the grid...
Definition: WarpX.H:128
static amrex::Vector< ParticleBoundaryType > particle_boundary_lo
Definition: WarpX.H:186
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_aux
Definition: WarpX.H:1269
PatchType
Definition: WarpX.H:71
std::string restart_chkfile
Definition: WarpX.H:1441
int slice_max_grid_size
Definition: WarpX.H:1463
static amrex::IntVect m_fill_guards_current
Whether to fill guard cells when computing inverse FFTs of currents.
Definition: WarpX.H:223
amrex::Vector< amrex::Real > mirror_z
Definition: WarpX.H:537
int Verbose() const
Definition: WarpX.H:93
static bool do_dynamic_scheduling
Definition: WarpX.H:305
static int macroscopic_solver_algo
Definition: WarpX.H:171
utils::parser::IntervalsParser override_sync_intervals
Definition: WarpX.H:1427
ElectrostaticSolver::PoissonBoundaryHandler m_poisson_boundary_handler
Definition: WarpX.H:886
amrex::Vector< std::unique_ptr< amrex::MultiFab > > F_slice
Definition: WarpX.H:1467
static std::string authors
Author of an input file / simulation setup.
Definition: WarpX.H:113
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_fp
Definition: WarpX.H:1278
static amrex::Vector< int > field_boundary_hi
Definition: WarpX.H:181
string field
Definition: video_yt.py:31
static bool safe_guard_cells
Definition: WarpX.H:321
Definition: SpectralSolverRZ.H:21
amrex::Vector< std::unique_ptr< amrex::MultiFab > > rho_slice
Definition: WarpX.H:1469
const amrex::IntVect getngEB() const
Definition: WarpX.H:870
const PML_RZ * getPMLRZ()
Definition: WarpX.H:495
static short particle_pusher_algo
Integer that corresponds to the particle push algorithm (Boris, Vay, Higuera-Cary) ...
Definition: WarpX.H:159
const amrex::MultiFab & getcurrent_fp(int lev, int direction)
Definition: WarpX.H:479
static int self_fields_max_iters
Definition: WarpX.H:839
amrex::Vector< std::unique_ptr< FiniteDifferenceSolver > > m_fdtd_solver_cp
Definition: WarpX.H:1771
amrex::Vector< std::unique_ptr< amrex::FabFactory< amrex::FArrayBox > > > m_field_factory
Definition: WarpX.H:1493
amrex::MultiFab * get_pointer_vector_potential_fp(int lev, int direction) const
Definition: WarpX.H:457
amrex::Real v_particle_pml
Definition: WarpX.H:1376
guardCellManager guard_cells
Definition: WarpX.H:1460
amrex::MultiFab * get_pointer_F_cp(int lev) const
Definition: WarpX.H:463
amrex::Real gett_old(int lev) const
Definition: WarpX.H:783
amrex::Vector< amrex::Real > mirror_z_width
Definition: WarpX.H:538
amrex::Vector< amrex::Real > gett_new() const
Definition: WarpX.H:784
std::unique_ptr< amrex::Parser > Ezfield_parser
User-defined parser to initialize z-component of the electric field on the grid.
Definition: WarpX.H:149
static int noz
Order of the particle shape factors (splines) along z.
Definition: WarpX.H:236
const amrex::MultiFab & getcurrent_cp(int lev, int direction)
Definition: WarpX.H:472
const amrex::MultiFab & getEfield_cp(int lev, int direction)
Definition: WarpX.H:473
void setistep(int lev, int ii)
Definition: WarpX.H:781
const amrex::iMultiFab * getCurrentBufferMasks(int lev) const
Definition: WarpX.H:1191
amrex::Vector< std::unique_ptr< amrex::MultiFab > > rho_fp
Definition: WarpX.H:1274
This class computes and stores the number of guard cells needed for the allocation of the MultiFabs a...
Definition: GuardCellManager.H:20
Definition: WarpXParticleContainer.H:101
static amrex::IntVect sort_bin_size
Definition: WarpX.H:309
static int do_similar_dm_pml
Definition: WarpX.H:1367
amrex::MultiFab * get_pointer_F_fp(int lev) const
Definition: WarpX.H:454
static short J_in_time
Definition: WarpX.H:200
Top-level class for the electromagnetic spectral solver.
Definition: SpectralSolver.H:32