30 #ifdef WARPX_USE_PSATD
47 #include "Utils/export.H"
52 #include <AMReX_Config.H>
92 static WarpX& GetInstance ();
94 static void ResetInstance ();
116 static std::string PicsarVersion ();
122 void Evolve (
int numsteps = -1);
124 void EvolveImplicitPicardInit (
int lev);
127 void FinishImplicitFieldUpdate(
amrex::Vector<std::array< std::unique_ptr<amrex::MultiFab>, 3 > >& Efield_fp,
128 amrex::Vector<std::array< std::unique_ptr<amrex::MultiFab>, 3 > >& Efield_n);
139 int num_shift,
int dir,
int lev,
bool update_cost_flag,
140 amrex::Real external_field=0.0,
bool useparser =
false,
148 [[nodiscard]] std::string
GetAuthors ()
const {
return m_authors; }
227 bool update_with_rho =
false;
383 static void AllocInitMultiFab (
384 std::unique_ptr<amrex::MultiFab>& mf,
390 const std::string&
name,
391 std::optional<const amrex::Real> initial_value = {});
408 static void AllocInitMultiFab (
409 std::unique_ptr<amrex::iMultiFab>& mf,
415 const std::string&
name,
416 std::optional<const int> initial_value = {});
429 static void AliasInitMultiFab (
430 std::unique_ptr<amrex::MultiFab>& mf,
435 const std::string&
name,
436 std::optional<const amrex::Real> initial_value);
450 static void AllocInitMultiFabFromModel (
451 std::unique_ptr<amrex::MultiFab>& mf,
454 const std::string&
name,
455 std::optional<const amrex::Real> initial_value = {});
463 [[nodiscard]] std::array<const amrex::MultiFab* const, 3>
466 Bfield_aux[lev][0].get(),
467 Bfield_aux[lev][1].get(),
468 Bfield_aux[lev][2].get()
472 [[nodiscard]] std::array<const amrex::MultiFab* const, 3>
475 Efield_aux[lev][0].get(),
476 Efield_aux[lev][1].get(),
477 Efield_aux[lev][2].get()
530 [[nodiscard]]
bool DoPML ()
const {
return do_pml;}
533 #if (defined WARPX_DIM_RZ) && (defined WARPX_USE_PSATD)
538 [[nodiscard]] std::vector<bool> getPMLdirections()
const;
542 void setLoadBalanceEfficiency (
int lev, amrex::Real efficiency);
544 amrex::Real getLoadBalanceEfficiency (
int lev);
551 amrex::Real time_of_last_gal_shift = 0;
565 void applyMirrors(amrex::Real time);
577 void PrintDtDxDyDz ();
592 int MoveWindow (
int step,
bool move_j);
599 void ShiftGalileanBoundary ();
605 void UpdateInjectionPosition (amrex::Real
dt);
608 void EvolveE ( amrex::Real
dt);
609 void EvolveE (
int lev, amrex::Real
dt);
610 void EvolveB ( amrex::Real
dt,
DtType dt_type);
611 void EvolveB (
int lev, amrex::Real
dt,
DtType dt_type);
612 void EvolveF ( amrex::Real
dt,
DtType dt_type);
613 void EvolveF (
int lev, amrex::Real
dt,
DtType dt_type);
614 void EvolveG ( amrex::Real
dt,
DtType dt_type);
615 void EvolveG (
int lev, amrex::Real
dt,
DtType dt_type);
617 void EvolveE (
int lev,
PatchType patch_type, amrex::Real
dt);
621 void MacroscopicEvolveE ( amrex::Real
dt);
622 void MacroscopicEvolveE (
int lev, amrex::Real
dt);
623 void MacroscopicEvolveE (
int lev,
PatchType patch_type, amrex::Real
dt);
630 void HybridPICEvolveFields ();
639 void HybridPICDepositInitialRhoAndJ ();
652 void Hybrid_QED_Push (
int lev, amrex::Real
dt);
660 void Hybrid_QED_Push (
int lev,
PatchType patch_type, amrex::Real
dt);
675 return load_balance_intervals;
685 void DampFieldsInGuards (
int lev,
686 const std::array<std::unique_ptr<amrex::MultiFab>,3>& Efield,
687 const std::array<std::unique_ptr<amrex::MultiFab>,3>& Bfield);
696 void DampFieldsInGuards (
int lev, std::unique_ptr<amrex::MultiFab>& mf);
725 void ApplyEfieldBoundary (
int lev,
PatchType patch_type);
726 void ApplyBfieldBoundary (
int lev,
PatchType patch_type,
DtType dt_type);
741 void ApplyElectronPressureBoundary (
int lev,
PatchType patch_type);
744 void DampPML (
int lev);
745 void DampPML (
int lev,
PatchType patch_type);
746 void DampPML_Cartesian (
int lev,
PatchType patch_type);
749 void DampJPML (
int lev);
750 void DampJPML (
int lev,
PatchType patch_type);
753 bool isAnyBoundaryPML();
755 PML* GetPML (
int lev);
756 #if (defined WARPX_DIM_RZ) && (defined WARPX_USE_PSATD)
757 PML_RZ* GetPML_RZ (
int lev);
761 void doFieldIonization ();
765 void doFieldIonization (
int lev);
773 void doQEDEvents (
int lev);
776 void PushParticlesandDeposit (
int lev, amrex::Real cur_time,
DtType a_dt_type=
DtType::Full,
bool skip_current=
false,
778 void PushParticlesandDeposit (amrex::Real cur_time,
bool skip_current=
false,
783 void UpdateAuxilaryData ();
784 void UpdateAuxilaryDataStagToNodal ();
785 void UpdateAuxilaryDataSameType ();
821 void SyncCurrentAndRho ();
836 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
837 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp,
838 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_buffer);
843 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_fp,
844 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_cp,
845 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_buffer);
848 [[nodiscard]]
int getnsubsteps (
int lev)
const {
return nsubsteps[lev];}
850 [[nodiscard]]
int getistep (
int lev)
const {
return istep[lev];}
853 [[nodiscard]] amrex::Real
gett_old (
int lev)
const {
return t_old[lev];}
855 [[nodiscard]] amrex::Real
gett_new (
int lev)
const {
return t_new[lev];}
856 void sett_new (
int lev, amrex::Real time) {t_new[lev] = time;}
858 [[nodiscard]] amrex::Real
getdt (
int lev)
const {
return dt.at(lev);}
863 [[nodiscard]]
int maxStep ()
const {
return max_step;}
865 [[nodiscard]] amrex::Real
stopTime ()
const {
return stop_time;}
866 void updateStopTime (
const amrex::Real new_stop_time) {stop_time = new_stop_time;}
876 static std::array<amrex::Real,3> CellSize (
int lev);
887 static std::array<amrex::Real,3> LowerCorner (
const amrex::Box& bx,
int lev, amrex::Real time_shift_delta);
896 static std::array<amrex::Real,3> UpperCorner (
const amrex::Box& bx,
int lev, amrex::Real time_shift_delta);
920 bool const step_before_end = (step < end_moving_window_step) || (end_moving_window_step < 0);
921 bool const step_after_start = (step >= start_moving_window_step);
922 return do_moving_window && step_before_end && step_after_start;
930 const std::array<const amrex::MultiFab* const, 3>& B,
931 const std::array<amrex::Real,3>&
dx);
934 const std::array<const amrex::MultiFab* const, 3>& B,
956 void ComputeSpaceChargeField (
bool reset_fields);
957 void AddBoundaryField ();
959 void AddSpaceChargeFieldLabFrame ();
962 std::array<amrex::Real, 3>
beta = {{0,0,0}},
963 amrex::Real required_precision=amrex::Real(1.e-11),
964 amrex::Real absolute_tolerance=amrex::Real(0.0),
968 void setPhiBC (
amrex::Vector<std::unique_ptr<amrex::MultiFab> >& phi )
const;
970 void computeE (
amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>, 3> >& E,
972 std::array<amrex::Real, 3>
beta = {{0,0,0}} )
const;
973 void computeB (
amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>, 3> >& B,
975 std::array<amrex::Real, 3>
beta = {{0,0,0}} )
const;
976 void computePhiTriDiagonal (
const amrex::Vector<std::unique_ptr<amrex::MultiFab> >& rho,
977 amrex::Vector<std::unique_ptr<amrex::MultiFab> >& phi)
const;
981 void ComputeMagnetostaticField ();
982 void AddMagnetostaticFieldLabFrame ();
985 amrex::Real required_precision=amrex::Real(1.e-11),
986 amrex::Real absolute_tolerance=amrex::Real(0.0),
988 int verbosity=2)
const;
1018 std::array< std::unique_ptr<amrex::MultiFab>, 3 >
const& edge_lengths,
1019 std::array< std::unique_ptr<amrex::MultiFab>, 3 >
const& face_areas,
1035 std::string F_name, std::string F_component);
1054 void ApplyFilterandSumBoundaryRho (
int lev,
int glev,
amrex::MultiFab& rho,
int icomp,
int ncomp);
1099 static void ComputeEdgeLengths (std::array< std::unique_ptr<amrex::MultiFab>, 3 >& edge_lengths,
1105 static void ComputeFaceAreas (std::array< std::unique_ptr<amrex::MultiFab>, 3 >& face_areas,
1111 static void ScaleEdges (std::array< std::unique_ptr<amrex::MultiFab>, 3 >& edge_lengths,
1112 const std::array<amrex::Real,3>&
cell_size);
1116 static void ScaleAreas (std::array< std::unique_ptr<amrex::MultiFab>, 3 >& face_areas,
1117 const std::array<amrex::Real,3>&
cell_size);
1132 void ComputeDistanceToEB ();
1141 void ComputeFaceExtensions();
1145 void InitBorrowing();
1149 void ShrinkBorrowing();
1153 void ComputeOneWayExtensions();
1157 void ComputeEightWaysExtensions();
1166 void ApplyBCKCorrection(
int idim);
1172 void PSATDSubtractCurrentPartialSumsAvg ();
1174 #ifdef WARPX_USE_PSATD
1176 # ifdef WARPX_DIM_RZ
1254 static void MakeWarpX ();
1260 void HandleSignals ();
1272 void OneStep_nosub (amrex::Real cur_time);
1273 void OneStep_sub1 (amrex::Real cur_time);
1275 void OneStep_ImplicitPicard(amrex::Real cur_time);
1280 void OneStep_multiJ (amrex::Real cur_time);
1282 void RestrictCurrentFromFineToCoarsePatch (
1283 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
1284 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp,
1286 void AddCurrentFromFineLevelandSumBoundary (
1287 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
1288 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp,
1289 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_buffer,
1291 void StoreCurrent (
int lev);
1292 void RestoreCurrent (
int lev);
1294 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& current,
1298 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& current,
1301 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& current,
1306 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& current,
1310 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
1311 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp,
1315 void RestrictRhoFromFineToCoarsePatch (
1316 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_fp,
1317 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_cp,
1319 void ApplyFilterandSumBoundaryRho (
1320 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_fp,
1321 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_cp,
1326 void AddRhoFromFineLevelandSumBoundary (
1327 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_fp,
1328 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_cp,
1329 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_buffer,
1334 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_fp,
1335 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_cp,
1341 void ReadParameters ();
1345 void BackwardCompatibility ();
1353 GetRestartDMap (
const std::string& chkfile,
const amrex::BoxArray& ba,
int lev)
const;
1355 void InitFromCheckpoint ();
1381 void BuildBufferMasks ();
1384 return current_buffer_masks[lev].
get();
1389 return gather_buffer_masks[lev].
get();
1429 #ifdef WARPX_USE_PSATD
1430 # ifdef WARPX_DIM_RZ
1431 void AllocLevelSpectralSolverRZ (
amrex::Vector<std::unique_ptr<SpectralSolverRZ>>& spectral_solver,
1435 const std::array<amrex::Real,3>&
dx);
1437 void AllocLevelSpectralSolver (
amrex::Vector<std::unique_ptr<SpectralSolver>>& spectral_solver,
1441 const std::array<amrex::Real,3>&
dx,
1442 bool pml_flag=
false);
1457 std::unique_ptr<MultiParticleContainer>
mypc;
1461 bool do_fluid_species =
false;
1462 std::unique_ptr<MultiFluidContainer>
myfl;
1572 int do_silver_mueller = 0;
1575 int pml_has_particles = 0;
1576 int do_pml_j_damping = 0;
1577 int do_pml_in_domain = 0;
1584 #if (defined WARPX_DIM_RZ) && (defined WARPX_USE_PSATD)
1592 amrex::Real moving_window_x = std::numeric_limits<amrex::Real>::max();
1595 int warpx_do_continuous_injection = 0;
1596 int num_injected_species = -1;
1615 int load_balance_with_sfc = 0;
1620 amrex::Real load_balance_knapsack_factor = amrex::Real(1.24);
1626 amrex::Real load_balance_efficiency_ratio_threshold = amrex::Real(1.1);
1634 amrex::Real costs_heuristic_cells_wt = amrex::Real(0);
1640 amrex::Real costs_heuristic_particles_wt = amrex::Real(0);
1648 bool use_hybrid_QED =
false;
1650 int max_step = std::numeric_limits<int>::max();
1651 amrex::Real stop_time = std::numeric_limits<amrex::Real>::max();
1653 int regrid_int = -1;
1655 amrex::Real
cfl = amrex::Real(0.999);
1660 bool write_diagnostics_on_restart =
false;
1665 bool use_single_read =
true;
1666 bool use_single_write =
true;
1667 int mffile_nstreams = 4;
1668 int field_io_nfiles = 1024;
1669 int particle_io_nfiles = 1024;
1676 bool is_synchronized =
true;
1679 static constexpr
bool sync_nodal_points =
true;
1685 int slice_plot_int = -1;
1695 bool fft_periodic_single_box =
false;
1719 return *m_field_factory[lev];
1726 #ifdef WARPX_USE_PSATD
1740 void PSATDForwardTransformEB (
1741 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& E_fp,
1742 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& B_fp,
1743 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& E_cp,
1744 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& B_cp);
1759 void PSATDBackwardTransformEB (
1760 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& E_fp,
1761 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& B_fp,
1762 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& E_cp,
1763 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& B_cp);
1777 void PSATDBackwardTransformEBavg (
1778 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& E_avg_fp,
1779 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& B_avg_fp,
1780 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& E_avg_cp,
1781 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& B_avg_cp);
1794 void PSATDForwardTransformJ (
1795 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
1796 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp,
1797 bool apply_kspace_filter=
true);
1807 void PSATDBackwardTransformJ (
1808 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
1809 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp);
1822 void PSATDForwardTransformRho (
1823 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_fp,
1824 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_cp,
1825 int icomp,
int dcomp,
bool apply_kspace_filter=
true);
1830 void PSATDMoveRhoNewToRhoOld ();
1835 void PSATDMoveJNewToJOld ();
1840 void PSATDForwardTransformF ();
1845 void PSATDBackwardTransformF ();
1850 void PSATDForwardTransformG ();
1855 void PSATDBackwardTransformG ();
1860 void PSATDCurrentCorrection ();
1865 void PSATDVayDeposition ();
1870 void PSATDPushSpectralFields ();
1877 void PSATDScaleAverageFields (amrex::Real scale_factor);
1882 void PSATDEraseAverageFields ();
1884 # ifdef WARPX_DIM_RZ
PatchType
Definition: WarpX.H:80
DtType
Definition: WarpXDtType.H:11
PushType
Definition: WarpXPushType.H:12
Definition: AcceleratorLattice.H:21
Definition: BilinearFilter.H:17
Definition: ElectrostaticSolver.H:41
Top-level class for the electromagnetic finite-difference solver.
Definition: FiniteDifferenceSolver.H:34
This class contains the parameters needed to evaluate hybrid field solutions (kinetic ions with fluid...
Definition: HybridPICModel.H:30
This class contains the macroscopic properties of the medium needed to evaluate macroscopic Maxwell e...
Definition: MacroscopicProperties.H:31
Definition: MagnetostaticSolver.H:21
This class contains a vector of all diagnostics in the simulation.
Definition: MultiDiagnostics.H:21
Definition: MultiFluidContainer.H:33
Definition: MultiParticleContainer.H:66
void PushPSATD(int lev)
Definition: PML.cpp:1349
void FillBoundaryG(PatchType patch_type, std::optional< bool > nodal_sync=std::nullopt)
Definition: PML.cpp:1285
void FillBoundaryB(PatchType patch_type, std::optional< bool > nodal_sync=std::nullopt)
Definition: PML.cpp:1253
void FillBoundaryE(PatchType patch_type, std::optional< bool > nodal_sync=std::nullopt)
Definition: PML.cpp:1236
std::unique_ptr< SpectralSolver > spectral_solver_cp
Definition: PML.H:250
std::unique_ptr< SpectralSolver > spectral_solver_fp
Definition: PML.H:249
void FillBoundaryF(PatchType patch_type, std::optional< bool > nodal_sync=std::nullopt)
Definition: PML.cpp:1270
Definition: ParticleBoundaryBuffer.H:22
Top-level class for the electromagnetic spectral solver.
Definition: SpectralSolver.H:33
Definition: SpectralSolverRZ.H:22
std::unique_ptr< ParticleBoundaryBuffer > m_particle_boundary_buffer
particle buffer for scraped particles on the boundaries
Definition: WarpX.H:1704
static int self_fields_max_iters
Definition: WarpX.H:908
const amrex::MultiFab & getrho_fp(int lev)
Definition: WarpX.H:517
static int field_centering_nox
Order of finite centering of fields (from staggered grid to nodal grid), along x.
Definition: WarpX.H:264
amrex::Vector< std::unique_ptr< amrex::LayoutData< amrex::Real > > > costs
Definition: WarpX.H:1613
static short current_deposition_algo
Integer that corresponds to the current deposition algorithm (Esirkepov, direct, Vay)
Definition: WarpX.H:158
int maxlevel_extEMfield_init
Definition: WarpX.H:154
amrex::Vector< std::unique_ptr< amrex::MultiFab > > G_fp
Definition: WarpX.H:1474
amrex::Gpu::DeviceVector< amrex::Real > device_field_centering_stencil_coeffs_y
Definition: WarpX.H:1068
static int moving_window_dir
Definition: WarpX.H:924
amrex::Gpu::DeviceVector< amrex::Real > device_current_centering_stencil_coeffs_x
Definition: WarpX.H:1072
static bool do_dive_cleaning
Definition: WarpX.H:252
static amrex::Real zmax_plasma_to_compute_max_step
Definition: WarpX.H:322
bool DoFluidSpecies() const
Definition: WarpX.H:531
amrex::MultiFab * get_pointer_edge_lengths(int lev, int direction) const
Definition: WarpX.H:501
amrex::MultiFab * get_pointer_Efield_fp(int lev, int direction) const
Definition: WarpX.H:484
const amrex::MultiFab & getEfield_fp(int lev, int direction)
Definition: WarpX.H:515
amrex::Vector< int > getnsubsteps() const
Definition: WarpX.H:847
static bool do_multi_J
Definition: WarpX.H:346
std::unique_ptr< MacroscopicProperties > m_macroscopic_properties
Definition: WarpX.H:1602
MultiDiagnostics & GetMultiDiags()
Definition: WarpX.H:134
bool DoPML() const
Definition: WarpX.H:530
const amrex::MultiFab & getcurrent_cp(int lev, int direction)
Definition: WarpX.H:507
static short rho_in_time
Definition: WarpX.H:214
amrex::Vector< std::unique_ptr< amrex::FabFactory< amrex::FArrayBox > > > m_field_factory
Definition: WarpX.H:1714
bool getis_synchronized() const
Definition: WarpX.H:861
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_cp
Definition: WarpX.H:1554
amrex::Vector< std::unique_ptr< amrex::MultiFab > > m_distance_to_eb
Definition: WarpX.H:1542
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_slice
Definition: WarpX.H:1692
MultiFluidContainer & GetFluidContainer()
Definition: WarpX.H:131
static short psatd_solution_type
Definition: WarpX.H:209
amrex::Vector< std::unique_ptr< amrex::iMultiFab > > gather_buffer_masks
Definition: WarpX.H:1564
void updateStopTime(const amrex::Real new_stop_time)
Definition: WarpX.H:866
std::array< const amrex::MultiFab *const, 3 > get_array_Efield_aux(const int lev) const
Definition: WarpX.H:473
amrex::Vector< int > mirror_z_npoints
Definition: WarpX.H:560
static amrex::Real zmin_domain_boost_step_0
Definition: WarpX.H:329
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_slice
Definition: WarpX.H:1691
static bool do_compute_max_step_from_zmax
Definition: WarpX.H:326
static short evolve_scheme
Integer that corresponds to the evolve scheme (explicit, implicit_picard, semi_implicit_picard)
Definition: WarpX.H:168
static amrex::Vector< int > field_boundary_lo
Definition: WarpX.H:189
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:341
SpectralSolverRZ & get_spectral_solver_fp(int lev)
Definition: WarpX.H:1181
static int n_field_gather_buffer
Definition: WarpX.H:355
static int do_multi_J_n_depositions
Definition: WarpX.H:347
void InitializeExternalFieldsOnGridUsingParser(amrex::MultiFab *mfx, amrex::MultiFab *mfy, amrex::MultiFab *mfz, amrex::ParserExecutor< 3 > const &xfield_parser, amrex::ParserExecutor< 3 > const &yfield_parser, amrex::ParserExecutor< 3 > const &zfield_parser, std::array< std::unique_ptr< amrex::MultiFab >, 3 > const &edge_lengths, std::array< std::unique_ptr< amrex::MultiFab >, 3 > const &face_areas, char field, int lev, PatchType patch_type)
This function initializes the E and B fields on each level using the parser and the user-defined func...
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_fp_nodal
Definition: WarpX.H:1548
amrex::Vector< amrex::Real > t_new
Definition: WarpX.H:1452
static bool do_single_precision_comms
perform field communications in single precision
Definition: WarpX.H:230
amrex::IntVect slice_cr_ratio
Definition: WarpX.H:1687
static amrex::Vector< ParticleBoundaryType > particle_boundary_lo
Definition: WarpX.H:199
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_store
Definition: WarpX.H:1545
void CheckKnownIssues()
Checks for known numerical issues involving different WarpX modules.
guardCellManager guard_cells
Definition: WarpX.H:1681
static bool do_shared_mem_charge_deposition
used shared memory algorithm for charge deposition
Definition: WarpX.H:233
static int em_solver_medium
Integer that corresponds to electromagnetic Maxwell solver (vacuum - 0, macroscopic - 1)
Definition: WarpX.H:180
MultiParticleContainer & GetPartContainer()
Definition: WarpX.H:130
static amrex::Vector< int > boost_direction
Direction of the Lorentz transform that defines the boosted frame of the simulation.
Definition: WarpX.H:318
static bool use_fdtd_nci_corr
Definition: WarpX.H:287
static bool verboncoeur_axis_correction
Definition: WarpX.H:301
void AverageAndPackFields(amrex::Vector< std::string > &varnames, amrex::Vector< amrex::MultiFab > &mf_avg, amrex::IntVect ngrow) const
static amrex::Real moving_window_v
Definition: WarpX.H:925
static bool do_shared_mem_current_deposition
use shared memory algorithm for current deposition
Definition: WarpX.H:236
amrex::Vector< amrex::IntVect > do_pml_Hi
Definition: WarpX.H:1582
std::string GetAuthors() const
If an authors' string is specified in the inputfile, this method returns that string....
Definition: WarpX.H:148
void setistep(int lev, int ii)
Definition: WarpX.H:851
amrex::MultiFab * get_pointer_vector_potential_fp(int lev, int direction) const
Definition: WarpX.H:492
static bool fft_do_time_averaging
Definition: WarpX.H:926
static short particle_pusher_algo
Integer that corresponds to the particle push algorithm (Boris, Vay, Higuera-Cary)
Definition: WarpX.H:164
amrex::Vector< std::unique_ptr< PML > > pml
Definition: WarpX.H:1583
amrex::RealVect fine_tag_lo
Definition: WarpX.H:1671
std::string restart_chkfile
Definition: WarpX.H:1657
static WarpX * m_instance
Definition: WarpX.H:1257
const amrex::MultiFab & getG_fp(int lev)
Definition: WarpX.H:520
amrex::Vector< std::unique_ptr< amrex::MultiFab > > rho_cp
Definition: WarpX.H:1553
amrex::MultiFab * get_pointer_G_fp(int lev) const
Definition: WarpX.H:490
static bool do_dynamic_scheduling
Definition: WarpX.H:334
const amrex::MultiFab & getBfield_cp(int lev, int direction)
Definition: WarpX.H:509
std::unique_ptr< amrex::Parser > ref_patch_parser
User-defined parser to define refinement patches.
Definition: WarpX.H:1674
amrex::Gpu::DeviceVector< amrex::Real > device_field_centering_stencil_coeffs_z
Definition: WarpX.H:1069
amrex::MultiFab * get_pointer_phi_fp(int lev) const
Definition: WarpX.H:491
static int self_fields_verbosity
Definition: WarpX.H:909
amrex::Real stopTime() const
Definition: WarpX.H:865
amrex::Vector< std::unique_ptr< PML_RZ > > pml_rz
Definition: WarpX.H:1585
const amrex::MultiFab & getphi_fp(int lev)
Definition: WarpX.H:518
static std::map< std::string, amrex::MultiFab * > multifab_map
Definition: WarpX.H:460
std::unique_ptr< MultiFluidContainer > myfl
Definition: WarpX.H:1462
amrex::Gpu::DeviceVector< amrex::Real > device_field_centering_stencil_coeffs_x
Definition: WarpX.H:1067
amrex::MultiFab * get_pointer_current_fp(int lev, int direction) const
Definition: WarpX.H:486
std::unique_ptr< HybridPICModel > m_hybrid_pic_model
Definition: WarpX.H:1605
amrex::MultiFab * get_pointer_current_cp(int lev, int direction) const
Definition: WarpX.H:496
amrex::Vector< amrex::Real > getdt() const
Definition: WarpX.H:857
static int noz
Order of the particle shape factors (splines) along z.
Definition: WarpX.H:261
amrex::Gpu::DeviceVector< amrex::Real > device_current_centering_stencil_coeffs_z
Definition: WarpX.H:1074
amrex::Vector< amrex::Real > gett_new() const
Definition: WarpX.H:854
const amrex::MultiFab & getBfield_avg_cp(int lev, int direction)
Definition: WarpX.H:525
static int num_mirrors
Definition: WarpX.H:557
amrex::MultiFab * get_pointer_face_areas(int lev, int direction) const
Definition: WarpX.H:502
amrex::Vector< std::unique_ptr< amrex::MultiFab > > phi_fp
Definition: WarpX.H:1476
ParticleBoundaryBuffer & GetParticleBoundaryBuffer()
Definition: WarpX.H:136
void WriteUsedInputsFile() const
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_n
Definition: WarpX.H:1486
bool do_pml_divb_cleaning
Definition: WarpX.H:1580
amrex::Vector< int > getistep() const
Definition: WarpX.H:849
static int current_centering_noy
Order of finite centering of currents (from nodal grid to staggered grid), along y.
Definition: WarpX.H:273
amrex::Gpu::DeviceVector< amrex::Real > device_current_centering_stencil_coeffs_y
Definition: WarpX.H:1073
amrex::MultiFab * get_pointer_Efield_aux(int lev, int direction) const
Definition: WarpX.H:481
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_avg_cp
Definition: WarpX.H:1557
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 initiali...
const amrex::MultiFab & getrho_cp(int lev)
Definition: WarpX.H:510
amrex::Vector< amrex::Real > load_balance_efficiency
Definition: WarpX.H:1628
static amrex::Real self_fields_required_precision
Definition: WarpX.H:906
static amrex::IntVect sort_bin_size
Definition: WarpX.H:338
amrex::IntVect m_rho_nodal_flag
Definition: WarpX.H:366
static std::map< std::string, amrex::iMultiFab * > imultifab_map
Definition: WarpX.H:461
utils::parser::IntervalsParser load_balance_intervals
Definition: WarpX.H:1610
amrex::Vector< std::array< std::unique_ptr< amrex::iMultiFab >, 3 > > m_flag_ext_face
Definition: WarpX.H:1518
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_fp
Definition: WarpX.H:1477
amrex::IntVect getngEB() const
Definition: WarpX.H:939
utils::parser::IntervalsParser override_sync_intervals
Definition: WarpX.H:1643
utils::parser::IntervalsParser get_load_balance_intervals() const
returns the load balance interval
Definition: WarpX.H:673
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > m_face_areas
EB: Areas of the mesh faces.
Definition: WarpX.H:1503
amrex::Real gett_old(int lev) const
Definition: WarpX.H:853
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_cax
Definition: WarpX.H:1562
amrex::MultiFab * get_pointer_F_cp(int lev) const
Definition: WarpX.H:498
const amrex::MultiFab & getF_fp(int lev)
Definition: WarpX.H:519
static int do_moving_window
Definition: WarpX.H:911
amrex::MultiFab * get_pointer_Efield_cp(int lev, int direction) const
Definition: WarpX.H:494
void ReadExternalFieldFromFile(std::string read_fields_from_path, amrex::MultiFab *mf, std::string F_name, std::string F_component)
Load field values from a user-specified openPMD file for a specific field (specified by F_name)
int maxStep() const
Definition: WarpX.H:863
static int nox
Order of the particle shape factors (splines) along x.
Definition: WarpX.H:257
int getnsubsteps(int lev) const
Definition: WarpX.H:848
WarpX(WarpX const &)=delete
static amrex::Real quantum_xi_c2
Definition: WarpX.H:662
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_slice
Definition: WarpX.H:1693
amrex::Vector< std::array< std::unique_ptr< amrex::iMultiFab >, 3 > > m_flag_info_face
Definition: WarpX.H:1511
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_fp_vay
Definition: WarpX.H:1478
void updateMaxStep(const int new_max_step)
Definition: WarpX.H:864
HybridPICModel & GetHybridPICModel()
Definition: WarpX.H:133
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_cp
Definition: WarpX.H:1556
static bool serialize_initial_conditions
If true, the initial conditions from random number generators are serialized (useful for reproducible...
Definition: WarpX.H:311
const amrex::iMultiFab * getGatherBufferMasks(int lev) const
Definition: WarpX.H:1387
amrex::Vector< std::unique_ptr< SpectralSolverRZ > > spectral_solver_fp
Definition: WarpX.H:1885
static amrex::IntVect m_fill_guards_fields
Whether to fill guard cells when computing inverse FFTs of fields.
Definition: WarpX.H:245
static short grid_type
Definition: WarpX.H:363
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > vector_potential_grad_buf_b_stag
Definition: WarpX.H:1494
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_aux
Definition: WarpX.H:1469
const amrex::MultiFab & getEfield_cp(int lev, int direction)
Definition: WarpX.H:508
static int current_centering_nox
Order of finite centering of currents (from nodal grid to staggered grid), along x.
Definition: WarpX.H:271
amrex::MultiFab * get_pointer_Bfield_aux(int lev, int direction) const
Definition: WarpX.H:482
static bool use_filter_compensation
If true, a compensation step is added to the bilinear filtering of charge and currents.
Definition: WarpX.H:308
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > vector_potential_grad_buf_e_stag
Definition: WarpX.H:1493
amrex::Vector< std::array< std::unique_ptr< amrex::LayoutData< FaceInfoBox > >, 3 > > m_borrowing
Definition: WarpX.H:1526
static short charge_deposition_algo
Integer that corresponds to the charge deposition algorithm (only standard deposition)
Definition: WarpX.H:160
amrex::Real gett_new(int lev) const
Definition: WarpX.H:855
amrex::Vector< amrex::Real > dt
Definition: WarpX.H:1454
amrex::Vector< std::unique_ptr< amrex::MultiFab > > rho_slice
Definition: WarpX.H:1690
amrex::Vector< std::unique_ptr< amrex::MultiFab > > F_cp
Definition: WarpX.H:1551
amrex::RealVect fine_tag_hi
Definition: WarpX.H:1672
amrex::IntVect get_ng_fieldgather() const
Definition: WarpX.H:944
amrex::IntVect get_ng_depos_rho() const
Definition: WarpX.H:943
const amrex::MultiFab & getfaceareas(int lev, int direction)
Definition: WarpX.H:528
static int start_moving_window_step
Definition: WarpX.H:912
amrex::Vector< int > istep
Definition: WarpX.H:1449
static int electrostatic_solver_id
Definition: WarpX.H:903
void PrintMainPICparameters()
void prepareFields(int 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
const AcceleratorLattice & get_accelerator_lattice(int lev)
Definition: WarpX.H:1081
amrex::Vector< std::unique_ptr< amrex::MultiFab > > G_slice
Definition: WarpX.H:1689
static int n_current_deposition_buffer
Definition: WarpX.H:359
amrex::Vector< std::unique_ptr< amrex::MultiFab > > F_fp
Definition: WarpX.H:1473
static amrex::Vector< int > field_boundary_hi
Definition: WarpX.H:194
int Verbose() const
Definition: WarpX.H:118
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_cax
Definition: WarpX.H:1561
amrex::Vector< std::unique_ptr< amrex::MultiFab > > charge_buf
Definition: WarpX.H:1568
std::array< const amrex::MultiFab *const, 3 > get_array_Bfield_aux(const 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:1501
const amrex::iMultiFab * getCurrentBufferMasks(int lev) const
Definition: WarpX.H:1383
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_avg_fp
Definition: WarpX.H:1481
amrex::Vector< int > injected_plasma_species
Definition: WarpX.H:1597
static bool do_device_synchronize
Definition: WarpX.H:349
static int max_picard_iterations
The maximum number of Picard iterations to do each time step.
Definition: WarpX.H:170
static bool use_kspace_filter
If true, the bilinear filtering of charge and currents is done in Fourier space.
Definition: WarpX.H:306
amrex::MultiFab * get_pointer_F_fp(int lev) const
Definition: WarpX.H:489
int getistep(int lev) const
Definition: WarpX.H:850
std::unique_ptr< MultiDiagnostics > multi_diags
Definition: WarpX.H:1458
static int noy
Order of the particle shape factors (splines) along y.
Definition: WarpX.H:259
amrex::Vector< int > nsubsteps
Definition: WarpX.H:1450
void ComputeMaxStep()
Compute the last time step of the simulation Calls computeMaxStepBoostAccelerator() if required.
static int field_centering_noz
Order of finite centering of fields (from staggered grid to nodal grid), along z.
Definition: WarpX.H:268
void sett_new(int lev, amrex::Real time)
Definition: WarpX.H:856
static amrex::Real picard_iteration_tolerance
The tolerance for the Picard iteration convergence.
Definition: WarpX.H:172
amrex::IntVect getngF() const
Definition: WarpX.H:940
static amrex::Real beta_boost
Beta value corresponding to the Lorentz factor of the boosted frame of the simulation.
Definition: WarpX.H:316
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_fp_external
Definition: WarpX.H:1497
amrex::MultiFab * get_pointer_G_cp(int lev) const
Definition: WarpX.H:499
void InitializeEBGridData(int lev)
This function initializes and calculates grid quantities used along with EBs such as edge lengths,...
void CheckGuardCells()
Check that the number of guard cells is smaller than the number of valid cells, for all available Mul...
static bool do_divb_cleaning
Solve additional Maxwell equation for G in order to control errors in magnetic Gauss' law.
Definition: WarpX.H:254
std::unique_ptr< MultiParticleContainer > mypc
Definition: WarpX.H:1457
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_buf
Definition: WarpX.H:1567
static bool use_filter
If true, a bilinear filter is used to smooth charge and currents.
Definition: WarpX.H:304
amrex::MultiFab * get_pointer_rho_fp(int lev) const
Definition: WarpX.H:488
static amrex::IntVect m_fill_guards_current
Whether to fill guard cells when computing inverse FFTs of currents.
Definition: WarpX.H:248
void LoadExternalFieldsFromFile(int lev)
Load field values from a user-specified openPMD file, for the fields Ex, Ey, Ez, Bx,...
MacroscopicProperties & GetMacroscopicProperties()
Definition: WarpX.H:132
MagnetostaticSolver::VectorPoissonBoundaryHandler m_vector_poisson_boundary_handler
Definition: WarpX.H:980
const amrex::MultiFab & getG_cp(int lev)
Definition: WarpX.H:512
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > vector_potential_fp_nodal
Definition: WarpX.H:1492
ElectrostaticSolver::PoissonBoundaryHandler m_poisson_boundary_handler
Definition: WarpX.H:955
static amrex::IntVect shared_tilesize
tileSize to use for shared current deposition operations
Definition: WarpX.H:242
static int do_similar_dm_pml
Definition: WarpX.H:1578
amrex::Vector< std::unique_ptr< FiniteDifferenceSolver > > m_fdtd_solver_fp
Definition: WarpX.H:1894
amrex::Vector< amrex::Real > gett_old() const
Definition: WarpX.H:852
static int current_centering_noz
Order of finite centering of currents (from nodal grid to staggered grid), along z.
Definition: WarpX.H:275
static bool safe_guard_cells
Definition: WarpX.H:350
amrex::IntVect getngUpdateAux() const
Definition: WarpX.H:941
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_cp
Definition: WarpX.H:1555
amrex::Vector< std::unique_ptr< amrex::MultiFab > > rho_fp
Definition: WarpX.H:1475
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_n
Definition: WarpX.H:1485
amrex::MultiFab * get_pointer_rho_cp(int lev) const
Definition: WarpX.H:497
const amrex::MultiFab & getedgelengths(int lev, int direction)
Definition: WarpX.H:527
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_fp
Definition: WarpX.H:1480
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_save
Definition: WarpX.H:1487
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > ECTRhofield
Definition: WarpX.H:1535
amrex::Vector< amrex::Real > t_old
Definition: WarpX.H:1453
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:343
static bool refine_plasma
Definition: WarpX.H:335
amrex::FabFactory< amrex::FArrayBox > const & fieldFactory(int lev) const noexcept
Definition: WarpX.H:1717
static int macroscopic_solver_algo
Definition: WarpX.H:184
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_aux
Definition: WarpX.H:1470
static int ncomps
Definition: WarpX.H:283
static int moving_window_active(int const step)
Definition: WarpX.H:919
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_save
Definition: WarpX.H:1488
static bool galerkin_interpolation
Definition: WarpX.H:297
amrex::Vector< std::unique_ptr< NCIGodfreyFilter > > nci_godfrey_filter_bxbyez
Definition: WarpX.H:549
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > m_area_mod
Definition: WarpX.H:1522
static amrex::IntVect filter_npass_each_dir
Definition: WarpX.H:546
amrex::IntVect get_numprocs() const
Definition: WarpX.H:953
const amrex::MultiFab & getBfield_fp(int lev, int direction)
Definition: WarpX.H:516
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Venl
Definition: WarpX.H:1539
static short electromagnetic_solver_id
Integer that corresponds to the type of Maxwell solver (Yee, CKC, PSATD, ECT)
Definition: WarpX.H:166
amrex::Real v_particle_pml
Definition: WarpX.H:1587
amrex::IntVect get_ng_depos_J() const
Definition: WarpX.H:942
BilinearFilter bilinear_filter
Definition: WarpX.H:547
amrex::MultiFab * get_pointer_current_fp_nodal(int lev, int direction) const
Definition: WarpX.H:487
const amrex::MultiFab & getEfield_avg_fp(int lev, int direction)
Definition: WarpX.H:522
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_avg_fp
Definition: WarpX.H:1482
const amrex::MultiFab & getBfield_avg_fp(int lev, int direction)
Definition: WarpX.H:523
static int field_centering_noy
Order of finite centering of fields (from staggered grid to nodal grid), along y.
Definition: WarpX.H:266
amrex::Real getdt(int lev) const
Definition: WarpX.H:858
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_fp_external
Definition: WarpX.H:1498
const amrex::MultiFab & getEfield_avg_cp(int lev, int direction)
Definition: WarpX.H:524
amrex::Vector< std::unique_ptr< NCIGodfreyFilter > > nci_godfrey_filter_exeybz
Definition: WarpX.H:548
static bool do_current_centering
Definition: WarpX.H:219
amrex::Vector< amrex::Real > mirror_z
Definition: WarpX.H:558
amrex::Vector< std::unique_ptr< amrex::MultiFab > > F_slice
Definition: WarpX.H:1688
int getdo_moving_window() const
Definition: WarpX.H:859
static bool do_subcycling
Definition: WarpX.H:345
static int n_rz_azimuthal_modes
Number of modes for the RZ multi-mode version.
Definition: WarpX.H:278
static short J_in_time
Definition: WarpX.H:213
std::unique_ptr< ExternalFieldParams > m_p_ext_field_params
Definition: WarpX.H:1590
static amrex::Real gamma_boost
Lorentz factor of the boosted frame in which a boosted-frame simulation is run.
Definition: WarpX.H:314
static short field_gathering_algo
Integer that corresponds to the field gathering algorithm (energy-conserving, momentum-conserving)
Definition: WarpX.H:162
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_avg_cp
Definition: WarpX.H:1558
static int shared_mem_current_tpb
number of threads to use per block in shared deposition
Definition: WarpX.H:239
static short load_balance_costs_update_algo
Definition: WarpX.H:178
amrex::MultiFab * get_pointer_Bfield_fp(int lev, int direction) const
Definition: WarpX.H:485
amrex::Vector< std::unique_ptr< FiniteDifferenceSolver > > m_fdtd_solver_cp
Definition: WarpX.H:1895
void computeMaxStepBoostAccelerator()
amrex::Vector< amrex::Real > mirror_z_width
Definition: WarpX.H:559
const amrex::MultiFab & getcurrent_fp(int lev, int direction)
Definition: WarpX.H:514
std::unique_ptr< MultiReducedDiags > reduced_diags
object with all reduced diagnostics, similar to MultiParticleContainer for species.
Definition: WarpX.H:563
const amrex::MultiFab & getBfield(int lev, int direction)
Definition: WarpX.H:505
const amrex::MultiFab & getF_cp(int lev)
Definition: WarpX.H:511
amrex::Vector< std::unique_ptr< amrex::iMultiFab > > current_buffer_masks
Definition: WarpX.H:1563
std::string m_authors
Author of an input file / simulation setup.
Definition: WarpX.H:1447
amrex::MultiFab * get_pointer_Bfield_cp(int lev, int direction) const
Definition: WarpX.H:495
int slice_max_grid_size
Definition: WarpX.H:1684
amrex::Vector< std::unique_ptr< amrex::MultiFab > > G_cp
Definition: WarpX.H:1552
static bool require_picard_convergence
Flags whether the Picard iterations are required to converge.
Definition: WarpX.H:174
const amrex::MultiFab & getEfield(int lev, int direction)
Definition: WarpX.H:504
static amrex::Real self_fields_absolute_tolerance
Definition: WarpX.H:907
amrex::Vector< std::unique_ptr< AcceleratorLattice > > m_accelerator_lattice
Definition: WarpX.H:1707
static amrex::Vector< ParticleBoundaryType > particle_boundary_hi
Definition: WarpX.H:204
std::optional< amrex::Real > m_const_dt
Definition: WarpX.H:1599
FiniteDifferenceSolver * get_pointer_fdtd_solver_fp(int lev)
Definition: WarpX.H:1184
amrex::RealBox slice_realbox
Definition: WarpX.H:1686
amrex::Vector< amrex::IntVect > do_pml_Lo
Definition: WarpX.H:1581
amrex::Vector< std::unique_ptr< SpectralSolverRZ > > spectral_solver_cp
Definition: WarpX.H:1886
amrex::Real getmoving_window_x() const
Definition: WarpX.H:860
bool do_pml_dive_cleaning
Definition: WarpX.H:1579
const PML_RZ * getPMLRZ()
Definition: WarpX.H:534
static bool compute_max_step_from_btd
If true, the code will compute max_step from the back transformed diagnostics.
Definition: WarpX.H:332
bool current_correction
If true, a correction is applied to the current in Fourier space,.
Definition: WarpX.H:223
static int end_moving_window_step
Definition: WarpX.H:913
static utils::parser::IntervalsParser sort_intervals
Definition: WarpX.H:337
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_fp
Definition: WarpX.H:1479
Definition: WarpXParticleContainer.H:110
void MakeNewLevelFromScratch(int lev, Real time, const BoxArray &ba, const DistributionMapping &dm) override=0
virtual void ClearLevel(int lev)=0
AmrCore & operator=(AmrCore &&rhs) noexcept
void ErrorEst(int lev, TagBoxArray &tags, Real time, int ngrow) override=0
virtual void RemakeLevel(int lev, Real time, const BoxArray &ba, const DistributionMapping &dm)=0
virtual void MakeNewLevelFromCoarse(int lev, Real time, const BoxArray &ba, const DistributionMapping &dm)=0
virtual void PostProcessBaseGrids(BoxArray &) const
const FArrayBox & get(const MFIter &mfi) const noexcept
This class computes and stores the number of guard cells needed for the allocation of the MultiFabs a...
Definition: GuardCellManager.H:20
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:103
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:86
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:126
void Finalize(AMReX *pamrex)
ii
Definition: check_interp_points_and_weights.py:148
cell_size
Definition: compute_domain.py:37
name
Definition: run_automated.py:229
float dt
Definition: stencil.py:442
tuple dx
lab frame
Definition: stencil.py:429
beta
Definition: stencil.py:434
float cfl
Definition: stencil.py:439
string field
Definition: video_yt.py:31