29 #ifdef WARPX_USE_PSATD
45 #include "Utils/export.H"
50 #include <AMReX_Config.H>
90 static WarpX& GetInstance ();
92 static void ResetInstance ();
114 static std::string PicsarVersion ();
120 void Evolve (
int numsteps = -1);
131 int num_shift,
int dir,
int lev,
bool update_cost_flag,
132 amrex::Real external_field=0.0,
bool useparser =
false,
140 [[nodiscard]] std::string
GetAuthors ()
const {
return m_authors; }
239 bool update_with_rho =
false;
395 static void AllocInitMultiFab (
396 std::unique_ptr<amrex::MultiFab>& mf,
402 const std::string&
name,
403 std::optional<const amrex::Real> initial_value = {});
420 static void AllocInitMultiFab (
421 std::unique_ptr<amrex::iMultiFab>& mf,
427 const std::string&
name,
428 std::optional<const int> initial_value = {});
441 static void AliasInitMultiFab (
442 std::unique_ptr<amrex::MultiFab>& mf,
447 const std::string&
name,
448 std::optional<const amrex::Real> initial_value);
456 [[nodiscard]] std::array<const amrex::MultiFab* const, 3>
459 Bfield_aux[lev][0].get(),
460 Bfield_aux[lev][1].get(),
461 Bfield_aux[lev][2].get()
465 [[nodiscard]] std::array<const amrex::MultiFab* const, 3>
468 Efield_aux[lev][0].get(),
469 Efield_aux[lev][1].get(),
470 Efield_aux[lev][2].get()
523 [[nodiscard]]
bool DoPML ()
const {
return do_pml;}
526 #if (defined WARPX_DIM_RZ) && (defined WARPX_USE_PSATD)
531 [[nodiscard]] std::vector<bool> getPMLdirections()
const;
535 void setLoadBalanceEfficiency (
int lev, amrex::Real efficiency);
537 amrex::Real getLoadBalanceEfficiency (
int lev);
544 amrex::Real time_of_last_gal_shift = 0;
558 void applyMirrors(amrex::Real time);
570 void PrintDtDxDyDz ();
585 int MoveWindow (
int step,
bool move_j);
592 void ShiftGalileanBoundary ();
598 void UpdateInjectionPosition (amrex::Real
dt);
601 void EvolveE ( amrex::Real
dt);
602 void EvolveE (
int lev, amrex::Real
dt);
603 void EvolveB ( amrex::Real
dt,
DtType dt_type);
604 void EvolveB (
int lev, amrex::Real
dt,
DtType dt_type);
605 void EvolveF ( amrex::Real
dt,
DtType dt_type);
606 void EvolveF (
int lev, amrex::Real
dt,
DtType dt_type);
607 void EvolveG ( amrex::Real
dt,
DtType dt_type);
608 void EvolveG (
int lev, amrex::Real
dt,
DtType dt_type);
610 void EvolveE (
int lev,
PatchType patch_type, amrex::Real
dt);
614 void MacroscopicEvolveE ( amrex::Real
dt);
615 void MacroscopicEvolveE (
int lev, amrex::Real
dt);
616 void MacroscopicEvolveE (
int lev,
PatchType patch_type, amrex::Real
dt);
623 void HybridPICEvolveFields ();
632 void HybridPICDepositInitialRhoAndJ ();
645 void Hybrid_QED_Push (
int lev, amrex::Real
dt);
653 void Hybrid_QED_Push (
int lev,
PatchType patch_type, amrex::Real
dt);
668 return load_balance_intervals;
678 void DampFieldsInGuards (
int lev,
679 const std::array<std::unique_ptr<amrex::MultiFab>,3>& Efield,
680 const std::array<std::unique_ptr<amrex::MultiFab>,3>& Bfield);
689 void DampFieldsInGuards (
int lev, std::unique_ptr<amrex::MultiFab>& mf);
718 void ApplyEfieldBoundary (
int lev,
PatchType patch_type);
719 void ApplyBfieldBoundary (
int lev,
PatchType patch_type,
DtType dt_type);
729 void ApplyElectronPressureBoundary (
int lev,
PatchType patch_type);
732 void DampPML (
int lev);
733 void DampPML (
int lev,
PatchType patch_type);
734 void DampPML_Cartesian (
int lev,
PatchType patch_type);
737 void DampJPML (
int lev);
738 void DampJPML (
int lev,
PatchType patch_type);
741 bool isAnyBoundaryPML();
743 PML* GetPML (
int lev);
744 #if (defined WARPX_DIM_RZ) && (defined WARPX_USE_PSATD)
745 PML_RZ* GetPML_RZ (
int lev);
749 void doFieldIonization ();
753 void doFieldIonization (
int lev);
761 void doQEDEvents (
int lev);
764 void PushParticlesandDepose (
int lev, amrex::Real cur_time,
DtType a_dt_type=
DtType::Full,
bool skip_current=
false);
765 void PushParticlesandDepose ( amrex::Real cur_time,
bool skip_current=
false);
769 void UpdateAuxilaryData ();
770 void UpdateAuxilaryDataStagToNodal ();
771 void UpdateAuxilaryDataSameType ();
807 void SyncCurrentAndRho ();
822 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
823 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp,
824 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_buffer);
829 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_fp,
830 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_cp,
831 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_buffer);
834 [[nodiscard]]
int getnsubsteps (
int lev)
const {
return nsubsteps[lev];}
836 [[nodiscard]]
int getistep (
int lev)
const {
return istep[lev];}
839 [[nodiscard]] amrex::Real
gett_old (
int lev)
const {
return t_old[lev];}
841 [[nodiscard]] amrex::Real
gett_new (
int lev)
const {
return t_new[lev];}
842 void sett_new (
int lev, amrex::Real time) {t_new[lev] = time;}
844 [[nodiscard]] amrex::Real
getdt (
int lev)
const {
return dt.at(lev);}
849 [[nodiscard]]
int maxStep ()
const {
return max_step;}
851 [[nodiscard]] amrex::Real
stopTime ()
const {
return stop_time;}
852 void updateStopTime (
const amrex::Real new_stop_time) {stop_time = new_stop_time;}
862 static std::array<amrex::Real,3> CellSize (
int lev);
873 static std::array<amrex::Real,3> LowerCorner (
const amrex::Box& bx,
int lev, amrex::Real time_shift_delta);
882 static std::array<amrex::Real,3> UpperCorner (
const amrex::Box& bx,
int lev, amrex::Real time_shift_delta);
906 bool const step_before_end = (step < end_moving_window_step) || (end_moving_window_step < 0);
907 bool const step_after_start = (step >= start_moving_window_step);
908 return do_moving_window && step_before_end && step_after_start;
916 const std::array<const amrex::MultiFab* const, 3>& B,
917 const std::array<amrex::Real,3>&
dx);
920 const std::array<const amrex::MultiFab* const, 3>& B,
942 void ComputeSpaceChargeField (
bool reset_fields);
943 void AddBoundaryField ();
945 void AddSpaceChargeFieldLabFrame ();
948 std::array<amrex::Real, 3>
beta = {{0,0,0}},
949 amrex::Real required_precision=amrex::Real(1.e-11),
950 amrex::Real absolute_tolerance=amrex::Real(0.0),
954 void setPhiBC (
amrex::Vector<std::unique_ptr<amrex::MultiFab> >& phi )
const;
956 void computeE (
amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>, 3> >& E,
958 std::array<amrex::Real, 3>
beta = {{0,0,0}} )
const;
959 void computeB (
amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>, 3> >& B,
961 std::array<amrex::Real, 3>
beta = {{0,0,0}} )
const;
962 void computePhiTriDiagonal (
const amrex::Vector<std::unique_ptr<amrex::MultiFab> >& rho,
963 amrex::Vector<std::unique_ptr<amrex::MultiFab> >& phi)
const;
967 void ComputeMagnetostaticField ();
968 void AddMagnetostaticFieldLabFrame ();
971 amrex::Real required_precision=amrex::Real(1.e-11),
972 amrex::Real absolute_tolerance=amrex::Real(0.0),
974 int verbosity=2)
const;
1004 std::array< std::unique_ptr<amrex::MultiFab>, 3 >
const& edge_lengths,
1005 std::array< std::unique_ptr<amrex::MultiFab>, 3 >
const& face_areas,
1011 std::string F_name, std::string F_component);
1030 void ApplyFilterandSumBoundaryRho (
int lev,
int glev,
amrex::MultiFab& rho,
int icomp,
int ncomp);
1075 static void ComputeEdgeLengths (std::array< std::unique_ptr<amrex::MultiFab>, 3 >& edge_lengths,
1081 static void ComputeFaceAreas (std::array< std::unique_ptr<amrex::MultiFab>, 3 >& face_areas,
1087 static void ScaleEdges (std::array< std::unique_ptr<amrex::MultiFab>, 3 >& edge_lengths,
1088 const std::array<amrex::Real,3>&
cell_size);
1092 static void ScaleAreas (std::array< std::unique_ptr<amrex::MultiFab>, 3 >& face_areas,
1093 const std::array<amrex::Real,3>&
cell_size);
1108 void ComputeDistanceToEB ();
1117 void ComputeFaceExtensions();
1121 void InitBorrowing();
1125 void ShrinkBorrowing();
1129 void ComputeOneWayExtensions();
1133 void ComputeEightWaysExtensions();
1142 void ApplyBCKCorrection(
int idim);
1148 void PSATDSubtractCurrentPartialSumsAvg ();
1150 #ifdef WARPX_USE_PSATD
1152 # ifdef WARPX_DIM_RZ
1230 static void MakeWarpX ();
1236 void HandleSignals ();
1248 void OneStep_nosub (amrex::Real t);
1249 void OneStep_sub1 (amrex::Real t);
1254 void OneStep_multiJ (amrex::Real t);
1256 void RestrictCurrentFromFineToCoarsePatch (
1257 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
1258 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp,
1260 void AddCurrentFromFineLevelandSumBoundary (
1261 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
1262 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp,
1263 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_buffer,
1265 void StoreCurrent (
int lev);
1266 void RestoreCurrent (
int lev);
1268 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& current,
1272 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& current,
1275 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& current,
1280 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& current,
1284 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
1285 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp,
1289 void RestrictRhoFromFineToCoarsePatch (
1290 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_fp,
1291 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_cp,
1293 void ApplyFilterandSumBoundaryRho (
1294 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_fp,
1295 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_cp,
1300 void AddRhoFromFineLevelandSumBoundary (
1301 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_fp,
1302 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_cp,
1303 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_buffer,
1308 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_fp,
1309 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_cp,
1315 void ReadParameters ();
1319 void BackwardCompatibility ();
1327 GetRestartDMap (
const std::string& chkfile,
const amrex::BoxArray& ba,
int lev)
const;
1329 void InitFromCheckpoint ();
1355 void BuildBufferMasks ();
1358 return current_buffer_masks[lev].
get();
1363 return gather_buffer_masks[lev].
get();
1403 #ifdef WARPX_USE_PSATD
1404 # ifdef WARPX_DIM_RZ
1405 void AllocLevelSpectralSolverRZ (
amrex::Vector<std::unique_ptr<SpectralSolverRZ>>& spectral_solver,
1409 const std::array<amrex::Real,3>&
dx);
1411 void AllocLevelSpectralSolver (
amrex::Vector<std::unique_ptr<SpectralSolver>>& spectral_solver,
1415 const std::array<amrex::Real,3>&
dx,
1416 bool pml_flag=
false);
1431 std::unique_ptr<MultiParticleContainer>
mypc;
1435 bool do_fluid_species =
false;
1436 std::unique_ptr<MultiFluidContainer>
myfl;
1540 int do_silver_mueller = 0;
1543 int pml_has_particles = 0;
1544 int do_pml_j_damping = 0;
1545 int do_pml_in_domain = 0;
1552 #if (defined WARPX_DIM_RZ) && (defined WARPX_USE_PSATD)
1557 amrex::Real moving_window_x = std::numeric_limits<amrex::Real>::max();
1560 int warpx_do_continuous_injection = 0;
1561 int num_injected_species = -1;
1580 int load_balance_with_sfc = 0;
1585 amrex::Real load_balance_knapsack_factor = amrex::Real(1.24);
1591 amrex::Real load_balance_efficiency_ratio_threshold = amrex::Real(1.1);
1599 amrex::Real costs_heuristic_cells_wt = amrex::Real(0);
1605 amrex::Real costs_heuristic_particles_wt = amrex::Real(0);
1613 bool use_hybrid_QED =
false;
1615 int max_step = std::numeric_limits<int>::max();
1616 amrex::Real stop_time = std::numeric_limits<amrex::Real>::max();
1618 int regrid_int = -1;
1620 amrex::Real
cfl = amrex::Real(0.999);
1625 bool write_diagnostics_on_restart =
false;
1630 bool use_single_read =
true;
1631 bool use_single_write =
true;
1632 int mffile_nstreams = 4;
1633 int field_io_nfiles = 1024;
1634 int particle_io_nfiles = 1024;
1641 bool is_synchronized =
true;
1644 static constexpr
bool sync_nodal_points =
true;
1650 int slice_plot_int = -1;
1660 bool fft_periodic_single_box =
false;
1684 return *m_field_factory[lev];
1691 #ifdef WARPX_USE_PSATD
1705 void PSATDForwardTransformEB (
1706 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& E_fp,
1707 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& B_fp,
1708 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& E_cp,
1709 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& B_cp);
1724 void PSATDBackwardTransformEB (
1725 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& E_fp,
1726 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& B_fp,
1727 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& E_cp,
1728 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& B_cp);
1742 void PSATDBackwardTransformEBavg (
1743 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& E_avg_fp,
1744 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& B_avg_fp,
1745 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& E_avg_cp,
1746 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& B_avg_cp);
1759 void PSATDForwardTransformJ (
1760 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
1761 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp,
1762 bool apply_kspace_filter=
true);
1772 void PSATDBackwardTransformJ (
1773 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
1774 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp);
1787 void PSATDForwardTransformRho (
1788 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_fp,
1789 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_cp,
1790 int icomp,
int dcomp,
bool apply_kspace_filter=
true);
1795 void PSATDMoveRhoNewToRhoOld ();
1800 void PSATDMoveJNewToJOld ();
1805 void PSATDForwardTransformF ();
1810 void PSATDBackwardTransformF ();
1815 void PSATDForwardTransformG ();
1820 void PSATDBackwardTransformG ();
1825 void PSATDCurrentCorrection ();
1830 void PSATDVayDeposition ();
1835 void PSATDPushSpectralFields ();
1842 void PSATDScaleAverageFields (amrex::Real scale_factor);
1847 void PSATDEraseAverageFields ();
1849 # ifdef WARPX_DIM_RZ
PatchType
Definition: WarpX.H:78
DtType
Definition: WarpXDtType.H:11
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:65
void PushPSATD(int lev)
Definition: PML.cpp:1347
void FillBoundaryG(PatchType patch_type, std::optional< bool > nodal_sync=std::nullopt)
Definition: PML.cpp:1283
void FillBoundaryB(PatchType patch_type, std::optional< bool > nodal_sync=std::nullopt)
Definition: PML.cpp:1251
void FillBoundaryE(PatchType patch_type, std::optional< bool > nodal_sync=std::nullopt)
Definition: PML.cpp:1234
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:1268
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:1669
static int self_fields_max_iters
Definition: WarpX.H:894
const amrex::MultiFab & getrho_fp(int lev)
Definition: WarpX.H:510
static int field_centering_nox
Order of finite centering of fields (from staggered grid to nodal grid), along x.
Definition: WarpX.H:276
amrex::Vector< std::unique_ptr< amrex::LayoutData< amrex::Real > > > costs
Definition: WarpX.H:1578
static short current_deposition_algo
Integer that corresponds to the current deposition algorithm (Esirkepov, direct, Vay)
Definition: WarpX.H:178
int maxlevel_extEMfield_init
Definition: WarpX.H:174
amrex::Vector< std::unique_ptr< amrex::MultiFab > > G_fp
Definition: WarpX.H:1448
amrex::Gpu::DeviceVector< amrex::Real > device_field_centering_stencil_coeffs_y
Definition: WarpX.H:1044
static int moving_window_dir
Definition: WarpX.H:910
amrex::Gpu::DeviceVector< amrex::Real > device_current_centering_stencil_coeffs_x
Definition: WarpX.H:1048
static bool do_dive_cleaning
Definition: WarpX.H:264
static amrex::Real zmax_plasma_to_compute_max_step
Definition: WarpX.H:334
bool DoFluidSpecies() const
Definition: WarpX.H:524
amrex::MultiFab * get_pointer_edge_lengths(int lev, int direction) const
Definition: WarpX.H:494
amrex::MultiFab * get_pointer_Efield_fp(int lev, int direction) const
Definition: WarpX.H:477
const amrex::MultiFab & getEfield_fp(int lev, int direction)
Definition: WarpX.H:508
amrex::Vector< int > getnsubsteps() const
Definition: WarpX.H:833
static bool do_multi_J
Definition: WarpX.H:358
std::unique_ptr< MacroscopicProperties > m_macroscopic_properties
Definition: WarpX.H:1567
MultiDiagnostics & GetMultiDiags()
Definition: WarpX.H:126
bool DoPML() const
Definition: WarpX.H:523
const amrex::MultiFab & getcurrent_cp(int lev, int direction)
Definition: WarpX.H:500
static short rho_in_time
Definition: WarpX.H:226
amrex::Vector< std::unique_ptr< amrex::FabFactory< amrex::FArrayBox > > > m_field_factory
Definition: WarpX.H:1679
bool getis_synchronized() const
Definition: WarpX.H:847
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_cp
Definition: WarpX.H:1522
amrex::Vector< std::unique_ptr< amrex::MultiFab > > m_distance_to_eb
Definition: WarpX.H:1510
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_slice
Definition: WarpX.H:1657
MultiFluidContainer & GetFluidContainer()
Definition: WarpX.H:123
static short psatd_solution_type
Definition: WarpX.H:221
amrex::Vector< std::unique_ptr< amrex::iMultiFab > > gather_buffer_masks
Definition: WarpX.H:1532
void updateStopTime(const amrex::Real new_stop_time)
Definition: WarpX.H:852
std::array< const amrex::MultiFab *const, 3 > get_array_Efield_aux(const int lev) const
Definition: WarpX.H:466
amrex::Vector< int > mirror_z_npoints
Definition: WarpX.H:553
static amrex::Real zmin_domain_boost_step_0
Definition: WarpX.H:341
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_slice
Definition: WarpX.H:1656
static bool do_compute_max_step_from_zmax
Definition: WarpX.H:338
static amrex::Vector< int > field_boundary_lo
Definition: WarpX.H:201
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:353
SpectralSolverRZ & get_spectral_solver_fp(int lev)
Definition: WarpX.H:1157
static int n_field_gather_buffer
Definition: WarpX.H:367
static int do_multi_J_n_depositions
Definition: WarpX.H:359
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:1516
amrex::Vector< amrex::Real > t_new
Definition: WarpX.H:1426
static bool do_single_precision_comms
perform field communications in single precision
Definition: WarpX.H:242
amrex::IntVect slice_cr_ratio
Definition: WarpX.H:1652
static amrex::Vector< ParticleBoundaryType > particle_boundary_lo
Definition: WarpX.H:211
static amrex::Vector< amrex::Real > B_external_grid
Initial magnetic field on the grid.
Definition: WarpX.H:145
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_store
Definition: WarpX.H:1513
void CheckKnownIssues()
Checks for known numerical issues involving different WarpX modules.
guardCellManager guard_cells
Definition: WarpX.H:1646
static bool do_shared_mem_charge_deposition
used shared memory algorithm for charge deposition
Definition: WarpX.H:245
static int em_solver_medium
Integer that corresponds to electromagnetic Maxwell solver (vacuum - 0, macroscopic - 1)
Definition: WarpX.H:192
MultiParticleContainer & GetPartContainer()
Definition: WarpX.H:122
static amrex::Vector< int > boost_direction
Direction of the Lorentz transform that defines the boosted frame of the simulation.
Definition: WarpX.H:330
static bool use_fdtd_nci_corr
Definition: WarpX.H:299
static bool verboncoeur_axis_correction
Definition: WarpX.H:313
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:911
static bool do_shared_mem_current_deposition
use shared memory algorithm for current deposition
Definition: WarpX.H:248
amrex::Vector< amrex::IntVect > do_pml_Hi
Definition: WarpX.H:1550
std::string GetAuthors() const
If an authors' string is specified in the inputfile, this method returns that string....
Definition: WarpX.H:140
void setistep(int lev, int ii)
Definition: WarpX.H:837
amrex::MultiFab * get_pointer_vector_potential_fp(int lev, int direction) const
Definition: WarpX.H:485
static bool fft_do_time_averaging
Definition: WarpX.H:912
static short particle_pusher_algo
Integer that corresponds to the particle push algorithm (Boris, Vay, Higuera-Cary)
Definition: WarpX.H:184
amrex::Vector< std::unique_ptr< PML > > pml
Definition: WarpX.H:1551
amrex::RealVect fine_tag_lo
Definition: WarpX.H:1636
std::string restart_chkfile
Definition: WarpX.H:1622
static WarpX * m_instance
Definition: WarpX.H:1233
const amrex::MultiFab & getG_fp(int lev)
Definition: WarpX.H:513
amrex::Vector< std::unique_ptr< amrex::MultiFab > > rho_cp
Definition: WarpX.H:1521
amrex::MultiFab * get_pointer_G_fp(int lev) const
Definition: WarpX.H:483
static bool do_dynamic_scheduling
Definition: WarpX.H:346
const amrex::MultiFab & getBfield_cp(int lev, int direction)
Definition: WarpX.H:502
std::unique_ptr< amrex::Parser > ref_patch_parser
User-defined parser to define refinement patches.
Definition: WarpX.H:1639
static std::string E_ext_grid_s
Initialization type for external electric field on the grid.
Definition: WarpX.H:150
amrex::Gpu::DeviceVector< amrex::Real > device_field_centering_stencil_coeffs_z
Definition: WarpX.H:1045
amrex::MultiFab * get_pointer_phi_fp(int lev) const
Definition: WarpX.H:484
static int self_fields_verbosity
Definition: WarpX.H:895
amrex::Real stopTime() const
Definition: WarpX.H:851
std::unique_ptr< amrex::Parser > Byfield_parser
User-defined parser to initialize y-component of the magnetic field on the grid.
Definition: WarpX.H:160
amrex::Vector< std::unique_ptr< PML_RZ > > pml_rz
Definition: WarpX.H:1553
const amrex::MultiFab & getphi_fp(int lev)
Definition: WarpX.H:511
static std::map< std::string, amrex::MultiFab * > multifab_map
Definition: WarpX.H:453
std::unique_ptr< MultiFluidContainer > myfl
Definition: WarpX.H:1436
amrex::Gpu::DeviceVector< amrex::Real > device_field_centering_stencil_coeffs_x
Definition: WarpX.H:1043
amrex::MultiFab * get_pointer_current_fp(int lev, int direction) const
Definition: WarpX.H:479
std::unique_ptr< HybridPICModel > m_hybrid_pic_model
Definition: WarpX.H:1570
amrex::MultiFab * get_pointer_current_cp(int lev, int direction) const
Definition: WarpX.H:489
amrex::Vector< amrex::Real > getdt() const
Definition: WarpX.H:843
static int noz
Order of the particle shape factors (splines) along z.
Definition: WarpX.H:273
amrex::Gpu::DeviceVector< amrex::Real > device_current_centering_stencil_coeffs_z
Definition: WarpX.H:1050
amrex::Vector< amrex::Real > gett_new() const
Definition: WarpX.H:840
const amrex::MultiFab & getBfield_avg_cp(int lev, int direction)
Definition: WarpX.H:518
static int num_mirrors
Definition: WarpX.H:550
amrex::MultiFab * get_pointer_face_areas(int lev, int direction) const
Definition: WarpX.H:495
amrex::Vector< std::unique_ptr< amrex::MultiFab > > phi_fp
Definition: WarpX.H:1450
ParticleBoundaryBuffer & GetParticleBoundaryBuffer()
Definition: WarpX.H:128
void WriteUsedInputsFile() const
bool do_pml_divb_cleaning
Definition: WarpX.H:1548
amrex::Vector< int > getistep() const
Definition: WarpX.H:835
static int current_centering_noy
Order of finite centering of currents (from nodal grid to staggered grid), along y.
Definition: WarpX.H:285
amrex::Gpu::DeviceVector< amrex::Real > device_current_centering_stencil_coeffs_y
Definition: WarpX.H:1049
static bool add_external_E_field
Whether to apply the effect of an externally-defined electric field.
Definition: WarpX.H:153
amrex::MultiFab * get_pointer_Efield_aux(int lev, int direction) const
Definition: WarpX.H:474
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_avg_cp
Definition: WarpX.H:1525
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:503
amrex::Vector< amrex::Real > load_balance_efficiency
Definition: WarpX.H:1593
static amrex::Real self_fields_required_precision
Definition: WarpX.H:892
static amrex::IntVect sort_bin_size
Definition: WarpX.H:350
amrex::IntVect m_rho_nodal_flag
Definition: WarpX.H:378
static std::map< std::string, amrex::iMultiFab * > imultifab_map
Definition: WarpX.H:454
utils::parser::IntervalsParser load_balance_intervals
Definition: WarpX.H:1575
amrex::Vector< std::array< std::unique_ptr< amrex::iMultiFab >, 3 > > m_flag_ext_face
Definition: WarpX.H:1486
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_fp
Definition: WarpX.H:1451
amrex::IntVect getngEB() const
Definition: WarpX.H:925
utils::parser::IntervalsParser override_sync_intervals
Definition: WarpX.H:1608
std::unique_ptr< amrex::Parser > Bxfield_parser
User-defined parser to initialize x-component of the magnetic field on the grid.
Definition: WarpX.H:158
utils::parser::IntervalsParser get_load_balance_intervals() const
returns the load balance interval
Definition: WarpX.H:666
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > m_face_areas
EB: Areas of the mesh faces.
Definition: WarpX.H:1471
amrex::Real gett_old(int lev) const
Definition: WarpX.H:839
std::unique_ptr< amrex::Parser > Exfield_parser
User-defined parser to initialize x-component of the electric field on the grid.
Definition: WarpX.H:164
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_cax
Definition: WarpX.H:1530
amrex::MultiFab * get_pointer_F_cp(int lev) const
Definition: WarpX.H:491
const amrex::MultiFab & getF_fp(int lev)
Definition: WarpX.H:512
static int do_moving_window
Definition: WarpX.H:897
amrex::MultiFab * get_pointer_Efield_cp(int lev, int direction) const
Definition: WarpX.H:487
void ReadExternalFieldFromFile(std::string read_fields_from_path, amrex::MultiFab *mf, std::string F_name, std::string F_component)
int maxStep() const
Definition: WarpX.H:849
static int nox
Order of the particle shape factors (splines) along x.
Definition: WarpX.H:269
int getnsubsteps(int lev) const
Definition: WarpX.H:834
WarpX(WarpX const &)=delete
static amrex::Real quantum_xi_c2
Definition: WarpX.H:655
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_slice
Definition: WarpX.H:1658
amrex::Vector< std::array< std::unique_ptr< amrex::iMultiFab >, 3 > > m_flag_info_face
Definition: WarpX.H:1479
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_fp_vay
Definition: WarpX.H:1452
void updateMaxStep(const int new_max_step)
Definition: WarpX.H:850
HybridPICModel & GetHybridPICModel()
Definition: WarpX.H:125
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_cp
Definition: WarpX.H:1524
static bool serialize_initial_conditions
If true, the initial conditions from random number generators are serialized (useful for reproducible...
Definition: WarpX.H:323
const amrex::iMultiFab * getGatherBufferMasks(int lev) const
Definition: WarpX.H:1361
std::unique_ptr< amrex::Parser > Bzfield_parser
User-defined parser to initialize z-component of the magnetic field on the grid.
Definition: WarpX.H:162
amrex::Vector< std::unique_ptr< SpectralSolverRZ > > spectral_solver_fp
Definition: WarpX.H:1850
static amrex::IntVect m_fill_guards_fields
Whether to fill guard cells when computing inverse FFTs of fields.
Definition: WarpX.H:257
static short grid_type
Definition: WarpX.H:375
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > vector_potential_grad_buf_b_stag
Definition: WarpX.H:1462
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_aux
Definition: WarpX.H:1443
const amrex::MultiFab & getEfield_cp(int lev, int direction)
Definition: WarpX.H:501
static int current_centering_nox
Order of finite centering of currents (from nodal grid to staggered grid), along x.
Definition: WarpX.H:283
amrex::MultiFab * get_pointer_Bfield_aux(int lev, int direction) const
Definition: WarpX.H:475
static bool use_filter_compensation
If true, a compensation step is added to the bilinear filtering of charge and currents.
Definition: WarpX.H:320
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > vector_potential_grad_buf_e_stag
Definition: WarpX.H:1461
amrex::Vector< std::array< std::unique_ptr< amrex::LayoutData< FaceInfoBox > >, 3 > > m_borrowing
Definition: WarpX.H:1494
static bool add_external_B_field
Whether to apply the effect of an externally-defined magnetic field.
Definition: WarpX.H:155
static short charge_deposition_algo
Integer that corresponds to the charge deposition algorithm (only standard deposition)
Definition: WarpX.H:180
amrex::Real gett_new(int lev) const
Definition: WarpX.H:841
amrex::Vector< amrex::Real > dt
Definition: WarpX.H:1428
amrex::Vector< std::unique_ptr< amrex::MultiFab > > rho_slice
Definition: WarpX.H:1655
amrex::Vector< std::unique_ptr< amrex::MultiFab > > F_cp
Definition: WarpX.H:1519
amrex::RealVect fine_tag_hi
Definition: WarpX.H:1637
amrex::IntVect get_ng_fieldgather() const
Definition: WarpX.H:930
amrex::IntVect get_ng_depos_rho() const
Definition: WarpX.H:929
const amrex::MultiFab & getfaceareas(int lev, int direction)
Definition: WarpX.H:521
static int start_moving_window_step
Definition: WarpX.H:898
amrex::Vector< int > istep
Definition: WarpX.H:1423
static int electrostatic_solver_id
Definition: WarpX.H:889
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:1057
amrex::Vector< std::unique_ptr< amrex::MultiFab > > G_slice
Definition: WarpX.H:1654
static int n_current_deposition_buffer
Definition: WarpX.H:371
amrex::Vector< std::unique_ptr< amrex::MultiFab > > F_fp
Definition: WarpX.H:1447
static amrex::Vector< int > field_boundary_hi
Definition: WarpX.H:206
int Verbose() const
Definition: WarpX.H:116
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_cax
Definition: WarpX.H:1529
amrex::Vector< std::unique_ptr< amrex::MultiFab > > charge_buf
Definition: WarpX.H:1536
std::array< const amrex::MultiFab *const, 3 > get_array_Bfield_aux(const int lev) const
Definition: WarpX.H:457
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > m_edge_lengths
EB: Lengths of the mesh edges.
Definition: WarpX.H:1469
const amrex::iMultiFab * getCurrentBufferMasks(int lev) const
Definition: WarpX.H:1357
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_avg_fp
Definition: WarpX.H:1455
amrex::Vector< int > injected_plasma_species
Definition: WarpX.H:1562
static bool do_device_synchronize
Definition: WarpX.H:361
static bool use_kspace_filter
If true, the bilinear filtering of charge and currents is done in Fourier space.
Definition: WarpX.H:318
amrex::MultiFab * get_pointer_F_fp(int lev) const
Definition: WarpX.H:482
int getistep(int lev) const
Definition: WarpX.H:836
std::unique_ptr< MultiDiagnostics > multi_diags
Definition: WarpX.H:1432
std::unique_ptr< amrex::Parser > Ezfield_parser
User-defined parser to initialize z-component of the electric field on the grid.
Definition: WarpX.H:168
static int noy
Order of the particle shape factors (splines) along y.
Definition: WarpX.H:271
amrex::Vector< int > nsubsteps
Definition: WarpX.H:1424
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:280
void sett_new(int lev, amrex::Real time)
Definition: WarpX.H:842
amrex::IntVect getngF() const
Definition: WarpX.H:926
static amrex::Real beta_boost
Beta value corresponding to the Lorentz factor of the boosted frame of the simulation.
Definition: WarpX.H:328
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_fp_external
Definition: WarpX.H:1465
amrex::MultiFab * get_pointer_G_cp(int lev) const
Definition: WarpX.H:492
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:266
std::unique_ptr< MultiParticleContainer > mypc
Definition: WarpX.H:1431
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_buf
Definition: WarpX.H:1535
static bool use_filter
If true, a bilinear filter is used to smooth charge and currents.
Definition: WarpX.H:316
amrex::MultiFab * get_pointer_rho_fp(int lev) const
Definition: WarpX.H:481
static amrex::IntVect m_fill_guards_current
Whether to fill guard cells when computing inverse FFTs of currents.
Definition: WarpX.H:260
MacroscopicProperties & GetMacroscopicProperties()
Definition: WarpX.H:124
MagnetostaticSolver::VectorPoissonBoundaryHandler m_vector_poisson_boundary_handler
Definition: WarpX.H:966
const amrex::MultiFab & getG_cp(int lev)
Definition: WarpX.H:505
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > vector_potential_fp_nodal
Definition: WarpX.H:1460
ElectrostaticSolver::PoissonBoundaryHandler m_poisson_boundary_handler
Definition: WarpX.H:941
static amrex::IntVect shared_tilesize
tileSize to use for shared current deposition operations
Definition: WarpX.H:254
static int do_similar_dm_pml
Definition: WarpX.H:1546
amrex::Vector< std::unique_ptr< FiniteDifferenceSolver > > m_fdtd_solver_fp
Definition: WarpX.H:1859
amrex::Vector< amrex::Real > gett_old() const
Definition: WarpX.H:838
static int current_centering_noz
Order of finite centering of currents (from nodal grid to staggered grid), along z.
Definition: WarpX.H:287
static bool safe_guard_cells
Definition: WarpX.H:362
amrex::IntVect getngUpdateAux() const
Definition: WarpX.H:927
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_cp
Definition: WarpX.H:1523
amrex::Vector< std::unique_ptr< amrex::MultiFab > > rho_fp
Definition: WarpX.H:1449
amrex::MultiFab * get_pointer_rho_cp(int lev) const
Definition: WarpX.H:490
const amrex::MultiFab & getedgelengths(int lev, int direction)
Definition: WarpX.H:520
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_fp
Definition: WarpX.H:1454
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > ECTRhofield
Definition: WarpX.H:1503
amrex::Vector< amrex::Real > t_old
Definition: WarpX.H:1427
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:355
static bool refine_plasma
Definition: WarpX.H:347
amrex::FabFactory< amrex::FArrayBox > const & fieldFactory(int lev) const noexcept
Definition: WarpX.H:1682
static int macroscopic_solver_algo
Definition: WarpX.H:196
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_aux
Definition: WarpX.H:1444
static int ncomps
Definition: WarpX.H:295
static int moving_window_active(int const step)
Definition: WarpX.H:905
static bool galerkin_interpolation
Definition: WarpX.H:309
amrex::Vector< std::unique_ptr< NCIGodfreyFilter > > nci_godfrey_filter_bxbyez
Definition: WarpX.H:542
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > m_area_mod
Definition: WarpX.H:1490
static amrex::IntVect filter_npass_each_dir
Definition: WarpX.H:539
amrex::IntVect get_numprocs() const
Definition: WarpX.H:939
const amrex::MultiFab & getBfield_fp(int lev, int direction)
Definition: WarpX.H:509
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Venl
Definition: WarpX.H:1507
static short electromagnetic_solver_id
Integer that corresponds to the type of Maxwell solver (Yee, CKC, PSATD, ECT)
Definition: WarpX.H:186
amrex::Real v_particle_pml
Definition: WarpX.H:1555
amrex::IntVect get_ng_depos_J() const
Definition: WarpX.H:928
BilinearFilter bilinear_filter
Definition: WarpX.H:540
amrex::MultiFab * get_pointer_current_fp_nodal(int lev, int direction) const
Definition: WarpX.H:480
const amrex::MultiFab & getEfield_avg_fp(int lev, int direction)
Definition: WarpX.H:515
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_avg_fp
Definition: WarpX.H:1456
const amrex::MultiFab & getBfield_avg_fp(int lev, int direction)
Definition: WarpX.H:516
static int field_centering_noy
Order of finite centering of fields (from staggered grid to nodal grid), along y.
Definition: WarpX.H:278
amrex::Real getdt(int lev) const
Definition: WarpX.H:844
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_fp_external
Definition: WarpX.H:1466
const amrex::MultiFab & getEfield_avg_cp(int lev, int direction)
Definition: WarpX.H:517
amrex::Vector< std::unique_ptr< NCIGodfreyFilter > > nci_godfrey_filter_exeybz
Definition: WarpX.H:541
static bool do_current_centering
Definition: WarpX.H:231
amrex::Vector< amrex::Real > mirror_z
Definition: WarpX.H:551
amrex::Vector< std::unique_ptr< amrex::MultiFab > > F_slice
Definition: WarpX.H:1653
int getdo_moving_window() const
Definition: WarpX.H:845
static bool do_subcycling
Definition: WarpX.H:357
static int n_rz_azimuthal_modes
Number of modes for the RZ multi-mode version.
Definition: WarpX.H:290
static short J_in_time
Definition: WarpX.H:225
static amrex::Real gamma_boost
Lorentz factor of the boosted frame in which a boosted-frame simulation is run.
Definition: WarpX.H:326
static short field_gathering_algo
Integer that corresponds to the field gathering algorithm (energy-conserving, momentum-conserving)
Definition: WarpX.H:182
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_avg_cp
Definition: WarpX.H:1526
static int shared_mem_current_tpb
number of threads to use per block in shared deposition
Definition: WarpX.H:251
static short load_balance_costs_update_algo
Definition: WarpX.H:190
amrex::MultiFab * get_pointer_Bfield_fp(int lev, int direction) const
Definition: WarpX.H:478
amrex::Vector< std::unique_ptr< FiniteDifferenceSolver > > m_fdtd_solver_cp
Definition: WarpX.H:1860
void computeMaxStepBoostAccelerator()
amrex::Vector< amrex::Real > mirror_z_width
Definition: WarpX.H:552
const amrex::MultiFab & getcurrent_fp(int lev, int direction)
Definition: WarpX.H:507
std::unique_ptr< MultiReducedDiags > reduced_diags
object with all reduced diagnotics, similar to MultiParticleContainer for species.
Definition: WarpX.H:556
const amrex::MultiFab & getBfield(int lev, int direction)
Definition: WarpX.H:498
const amrex::MultiFab & getF_cp(int lev)
Definition: WarpX.H:504
amrex::Vector< std::unique_ptr< amrex::iMultiFab > > current_buffer_masks
Definition: WarpX.H:1531
std::string m_authors
Author of an input file / simulation setup.
Definition: WarpX.H:1421
amrex::MultiFab * get_pointer_Bfield_cp(int lev, int direction) const
Definition: WarpX.H:488
int slice_max_grid_size
Definition: WarpX.H:1649
static std::string B_ext_grid_s
Initialization type for external magnetic field on the grid.
Definition: WarpX.H:148
amrex::Vector< std::unique_ptr< amrex::MultiFab > > G_cp
Definition: WarpX.H:1520
const amrex::MultiFab & getEfield(int lev, int direction)
Definition: WarpX.H:497
std::unique_ptr< amrex::Parser > Eyfield_parser
User-defined parser to initialize y-component of the electric field on the grid.
Definition: WarpX.H:166
static amrex::Real self_fields_absolute_tolerance
Definition: WarpX.H:893
amrex::Vector< std::unique_ptr< AcceleratorLattice > > m_accelerator_lattice
Definition: WarpX.H:1672
static amrex::Vector< ParticleBoundaryType > particle_boundary_hi
Definition: WarpX.H:216
std::optional< amrex::Real > m_const_dt
Definition: WarpX.H:1564
FiniteDifferenceSolver * get_pointer_fdtd_solver_fp(int lev)
Definition: WarpX.H:1160
amrex::RealBox slice_realbox
Definition: WarpX.H:1651
amrex::Vector< amrex::IntVect > do_pml_Lo
Definition: WarpX.H:1549
amrex::Vector< std::unique_ptr< SpectralSolverRZ > > spectral_solver_cp
Definition: WarpX.H:1851
amrex::Real getmoving_window_x() const
Definition: WarpX.H:846
static amrex::Vector< amrex::Real > E_external_grid
Initial electric field on the grid.
Definition: WarpX.H:143
bool do_pml_dive_cleaning
Definition: WarpX.H:1547
const PML_RZ * getPMLRZ()
Definition: WarpX.H:527
static bool compute_max_step_from_btd
If true, the code will compute max_step from the back transformed diagnostics.
Definition: WarpX.H:344
bool current_correction
If true, a correction is applied to the current in Fourier space,.
Definition: WarpX.H:235
static int end_moving_window_step
Definition: WarpX.H:899
static utils::parser::IntervalsParser sort_intervals
Definition: WarpX.H:349
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_fp
Definition: WarpX.H:1453
Definition: WarpXParticleContainer.H:109
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:93
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:132
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