29 #ifdef WARPX_USE_PSATD
45 #include "Utils/export.H"
50 #include <AMReX_Config.H>
90 static WarpX& GetInstance ();
92 static void ResetInstance ();
113 static std::string PicsarVersion ();
119 void Evolve (
int numsteps = -1);
130 int num_shift,
int dir,
int lev,
bool update_cost_flag,
131 amrex::Real external_field=0.0,
bool useparser =
false,
228 bool update_with_rho =
false;
384 static void AllocInitMultiFab (
385 std::unique_ptr<amrex::MultiFab>& mf,
391 const std::string&
name,
392 std::optional<const amrex::Real> initial_value = {});
409 static void AllocInitMultiFab (
410 std::unique_ptr<amrex::iMultiFab>& mf,
416 const std::string&
name,
417 std::optional<const int> initial_value = {});
430 static void AliasInitMultiFab (
431 std::unique_ptr<amrex::MultiFab>& mf,
436 const std::string&
name,
437 std::optional<const amrex::Real> initial_value);
445 std::array<const amrex::MultiFab* const, 3>
448 Bfield_aux[lev][0].get(),
449 Bfield_aux[lev][1].get(),
450 Bfield_aux[lev][2].get()
453 std::array<const amrex::MultiFab* const, 3>
456 Efield_aux[lev][0].get(),
457 Efield_aux[lev][1].get(),
458 Efield_aux[lev][2].get()
508 bool DoPML ()
const {
return do_pml;}
511 #if (defined WARPX_DIM_RZ) && (defined WARPX_USE_PSATD)
516 std::vector<bool> getPMLdirections()
const;
520 void setLoadBalanceEfficiency (
int lev, amrex::Real efficiency);
522 amrex::Real getLoadBalanceEfficiency (
int lev);
529 amrex::Real time_of_last_gal_shift = 0;
543 void applyMirrors(amrex::Real time);
555 void PrintDtDxDyDz ();
570 int MoveWindow (
int step,
bool move_j);
577 void ShiftGalileanBoundary ();
583 void UpdateInjectionPosition (amrex::Real
dt);
586 void EvolveE ( amrex::Real
dt);
587 void EvolveE (
int lev, amrex::Real
dt);
588 void EvolveB ( amrex::Real
dt,
DtType dt_type);
589 void EvolveB (
int lev, amrex::Real
dt,
DtType dt_type);
590 void EvolveF ( amrex::Real
dt,
DtType dt_type);
591 void EvolveF (
int lev, amrex::Real
dt,
DtType dt_type);
592 void EvolveG ( amrex::Real
dt,
DtType dt_type);
593 void EvolveG (
int lev, amrex::Real
dt,
DtType dt_type);
595 void EvolveE (
int lev,
PatchType patch_type, amrex::Real
dt);
599 void MacroscopicEvolveE ( amrex::Real
dt);
600 void MacroscopicEvolveE (
int lev, amrex::Real
dt);
601 void MacroscopicEvolveE (
int lev,
PatchType patch_type, amrex::Real
dt);
608 void HybridPICEvolveFields ();
617 void HybridPICDepositInitialRhoAndJ ();
630 void Hybrid_QED_Push (
int lev, amrex::Real
dt);
638 void Hybrid_QED_Push (
int lev,
PatchType patch_type, amrex::Real
dt);
653 return load_balance_intervals;
663 void DampFieldsInGuards (
int lev,
664 const std::array<std::unique_ptr<amrex::MultiFab>,3>& Efield,
665 const std::array<std::unique_ptr<amrex::MultiFab>,3>& Bfield);
674 void DampFieldsInGuards (
int lev, std::unique_ptr<amrex::MultiFab>& mf);
703 void ApplyEfieldBoundary (
int lev,
PatchType patch_type);
704 void ApplyBfieldBoundary (
int lev,
PatchType patch_type,
DtType dt_type);
714 void ApplyElectronPressureBoundary (
int lev,
PatchType patch_type);
717 void DampPML (
int lev);
718 void DampPML (
int lev,
PatchType patch_type);
719 void DampPML_Cartesian (
int lev,
PatchType patch_type);
722 void DampJPML (
int lev);
723 void DampJPML (
int lev,
PatchType patch_type);
726 bool isAnyBoundaryPML();
728 PML* GetPML (
int lev);
729 #if (defined WARPX_DIM_RZ) && (defined WARPX_USE_PSATD)
730 PML_RZ* GetPML_RZ (
int lev);
734 void doFieldIonization ();
738 void doFieldIonization (
int lev);
746 void doQEDEvents (
int lev);
749 void PushParticlesandDepose (
int lev, amrex::Real cur_time,
DtType a_dt_type=
DtType::Full,
bool skip_current=
false);
750 void PushParticlesandDepose ( amrex::Real cur_time,
bool skip_current=
false);
754 void UpdateAuxilaryData ();
755 void UpdateAuxilaryDataStagToNodal ();
756 void UpdateAuxilaryDataSameType ();
792 void SyncCurrentAndRho ();
807 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
808 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp,
809 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_buffer);
814 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_fp,
815 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_cp,
816 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_buffer);
824 amrex::Real
gett_old (
int lev)
const {
return t_old[lev];}
826 amrex::Real
gett_new (
int lev)
const {
return t_new[lev];}
827 void sett_new (
int lev, amrex::Real time) {t_new[lev] = time;}
829 amrex::Real
getdt (
int lev)
const {
return dt.at(lev);}
837 void updateStopTime (
const amrex::Real new_stop_time) {stop_time = new_stop_time;}
847 static std::array<amrex::Real,3> CellSize (
int lev);
858 static std::array<amrex::Real,3> LowerCorner (
const amrex::Box& bx,
int lev, amrex::Real time_shift_delta);
867 static std::array<amrex::Real,3> UpperCorner (
const amrex::Box& bx,
int lev, amrex::Real time_shift_delta);
891 bool const step_before_end = (step < end_moving_window_step) || (end_moving_window_step < 0);
892 bool const step_after_start = (step >= start_moving_window_step);
893 return do_moving_window && step_before_end && step_after_start;
901 const std::array<const amrex::MultiFab* const, 3>& B,
902 const std::array<amrex::Real,3>&
dx);
905 const std::array<const amrex::MultiFab* const, 3>& B,
927 void ComputeSpaceChargeField (
bool reset_fields);
928 void AddBoundaryField ();
930 void AddSpaceChargeFieldLabFrame ();
933 std::array<amrex::Real, 3>
beta = {{0,0,0}},
934 amrex::Real required_precision=amrex::Real(1.e-11),
935 amrex::Real absolute_tolerance=amrex::Real(0.0),
939 void setPhiBC (
amrex::Vector<std::unique_ptr<amrex::MultiFab> >& phi )
const;
941 void computeE (
amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>, 3> >& E,
943 std::array<amrex::Real, 3>
beta = {{0,0,0}} )
const;
944 void computeB (
amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>, 3> >& B,
946 std::array<amrex::Real, 3>
beta = {{0,0,0}} )
const;
947 void computePhiTriDiagonal (
const amrex::Vector<std::unique_ptr<amrex::MultiFab> >& rho,
948 amrex::Vector<std::unique_ptr<amrex::MultiFab> >& phi)
const;
952 void ComputeMagnetostaticField ();
953 void AddMagnetostaticFieldLabFrame ();
956 amrex::Real required_precision=amrex::Real(1.e-11),
957 amrex::Real absolute_tolerance=amrex::Real(0.0),
959 int verbosity=2)
const;
989 std::array< std::unique_ptr<amrex::MultiFab>, 3 >
const& edge_lengths,
990 std::array< std::unique_ptr<amrex::MultiFab>, 3 >
const& face_areas,
996 std::string F_name, std::string F_component);
1015 void ApplyFilterandSumBoundaryRho (
int lev,
int glev,
amrex::MultiFab& rho,
int icomp,
int ncomp);
1060 static void ComputeEdgeLengths (std::array< std::unique_ptr<amrex::MultiFab>, 3 >& edge_lengths,
1066 static void ComputeFaceAreas (std::array< std::unique_ptr<amrex::MultiFab>, 3 >& face_areas,
1072 static void ScaleEdges (std::array< std::unique_ptr<amrex::MultiFab>, 3 >& edge_lengths,
1073 const std::array<amrex::Real,3>&
cell_size);
1077 static void ScaleAreas (std::array< std::unique_ptr<amrex::MultiFab>, 3 >& face_areas,
1078 const std::array<amrex::Real,3>&
cell_size);
1093 void ComputeDistanceToEB ();
1102 void ComputeFaceExtensions();
1106 void InitBorrowing();
1110 void ShrinkBorrowing();
1114 void ComputeOneWayExtensions();
1118 void ComputeEightWaysExtensions();
1127 void ApplyBCKCorrection(
int idim);
1133 void PSATDSubtractCurrentPartialSumsAvg ();
1135 #ifdef WARPX_USE_PSATD
1137 # ifdef WARPX_DIM_RZ
1215 static void MakeWarpX ();
1221 void HandleSignals ();
1238 void OneStep_nosub (amrex::Real t);
1239 void OneStep_sub1 (amrex::Real t);
1244 void OneStep_multiJ (amrex::Real t);
1246 void RestrictCurrentFromFineToCoarsePatch (
1247 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
1248 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp,
1250 void AddCurrentFromFineLevelandSumBoundary (
1251 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
1252 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp,
1253 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_buffer,
1255 void StoreCurrent (
int lev);
1256 void RestoreCurrent (
int lev);
1258 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& current,
1262 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& current,
1265 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& current,
1270 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& current,
1274 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
1275 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp,
1279 void RestrictRhoFromFineToCoarsePatch (
1280 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_fp,
1281 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_cp,
1283 void ApplyFilterandSumBoundaryRho (
1284 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_fp,
1285 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_cp,
1290 void AddRhoFromFineLevelandSumBoundary (
1291 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_fp,
1292 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_cp,
1293 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_buffer,
1298 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_fp,
1299 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_cp,
1305 void ReadParameters ();
1309 void BackwardCompatibility ();
1317 GetRestartDMap (
const std::string& chkfile,
const amrex::BoxArray& ba,
int lev)
const;
1319 void InitFromCheckpoint ();
1345 void BuildBufferMasks ();
1348 return current_buffer_masks[lev].
get();
1351 return gather_buffer_masks[lev].
get();
1391 #ifdef WARPX_USE_PSATD
1392 # ifdef WARPX_DIM_RZ
1393 void AllocLevelSpectralSolverRZ (
amrex::Vector<std::unique_ptr<SpectralSolverRZ>>& spectral_solver,
1397 const std::array<amrex::Real,3>&
dx);
1399 void AllocLevelSpectralSolver (
amrex::Vector<std::unique_ptr<SpectralSolver>>& spectral_solver,
1403 const std::array<amrex::Real,3>&
dx,
1404 bool pml_flag=
false);
1416 std::unique_ptr<MultiParticleContainer>
mypc;
1420 bool do_fluid_species = 0;
1421 std::unique_ptr<MultiFluidContainer>
myfl;
1525 int do_silver_mueller = 0;
1528 int pml_has_particles = 0;
1529 int do_pml_j_damping = 0;
1530 int do_pml_in_domain = 0;
1537 #if (defined WARPX_DIM_RZ) && (defined WARPX_USE_PSATD)
1542 amrex::Real moving_window_x = std::numeric_limits<amrex::Real>::max();
1545 int warpx_do_continuous_injection = 0;
1546 int num_injected_species = -1;
1565 int load_balance_with_sfc = 0;
1570 amrex::Real load_balance_knapsack_factor = amrex::Real(1.24);
1576 amrex::Real load_balance_efficiency_ratio_threshold = amrex::Real(1.1);
1584 amrex::Real costs_heuristic_cells_wt = amrex::Real(0);
1590 amrex::Real costs_heuristic_particles_wt = amrex::Real(0);
1598 bool use_hybrid_QED = 0;
1600 int max_step = std::numeric_limits<int>::max();
1601 amrex::Real stop_time = std::numeric_limits<amrex::Real>::max();
1603 int regrid_int = -1;
1605 amrex::Real
cfl = amrex::Real(0.999);
1610 bool write_diagonstics_on_restart =
false;
1615 bool use_single_read =
true;
1616 bool use_single_write =
true;
1617 int mffile_nstreams = 4;
1618 int field_io_nfiles = 1024;
1619 int particle_io_nfiles = 1024;
1624 bool is_synchronized =
true;
1627 static constexpr
bool sync_nodal_points =
true;
1633 int slice_plot_int = -1;
1643 bool fft_periodic_single_box =
false;
1665 return *m_field_factory[lev];
1672 #ifdef WARPX_USE_PSATD
1686 void PSATDForwardTransformEB (
1687 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& E_fp,
1688 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& B_fp,
1689 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& E_cp,
1690 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& B_cp);
1705 void PSATDBackwardTransformEB (
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);
1723 void PSATDBackwardTransformEBavg (
1724 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& E_avg_fp,
1725 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& B_avg_fp,
1726 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& E_avg_cp,
1727 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& B_avg_cp);
1740 void PSATDForwardTransformJ (
1741 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
1742 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp,
1743 bool apply_kspace_filter=
true);
1753 void PSATDBackwardTransformJ (
1754 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
1755 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp);
1768 void PSATDForwardTransformRho (
1769 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_fp,
1770 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_cp,
1771 int icomp,
int dcomp,
bool apply_kspace_filter=
true);
1776 void PSATDMoveRhoNewToRhoOld ();
1781 void PSATDMoveJNewToJOld ();
1786 void PSATDForwardTransformF ();
1791 void PSATDBackwardTransformF ();
1796 void PSATDForwardTransformG ();
1801 void PSATDBackwardTransformG ();
1806 void PSATDCurrentCorrection ();
1811 void PSATDVayDeposition ();
1816 void PSATDPushSpectralFields ();
1823 void PSATDScaleAverageFields (amrex::Real scale_factor);
1828 void PSATDEraseAverageFields ();
1830 # 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:32
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:238
std::unique_ptr< SpectralSolver > spectral_solver_fp
Definition: PML.H:237
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:1652
static int self_fields_max_iters
Definition: WarpX.H:879
const amrex::MultiFab & getrho_fp(int lev)
Definition: WarpX.H:498
static int field_centering_nox
Order of finite centering of fields (from staggered grid to nodal grid), along x.
Definition: WarpX.H:265
amrex::Vector< std::unique_ptr< amrex::LayoutData< amrex::Real > > > costs
Definition: WarpX.H:1563
static short current_deposition_algo
Integer that corresponds to the current deposition algorithm (Esirkepov, direct, Vay)
Definition: WarpX.H:167
amrex::Vector< std::unique_ptr< amrex::MultiFab > > G_fp
Definition: WarpX.H:1433
amrex::Gpu::DeviceVector< amrex::Real > device_field_centering_stencil_coeffs_y
Definition: WarpX.H:1029
static int moving_window_dir
Definition: WarpX.H:895
amrex::Gpu::DeviceVector< amrex::Real > device_current_centering_stencil_coeffs_x
Definition: WarpX.H:1033
static bool do_dive_cleaning
Definition: WarpX.H:253
static amrex::Real zmax_plasma_to_compute_max_step
Definition: WarpX.H:323
bool DoFluidSpecies() const
Definition: WarpX.H:509
amrex::MultiFab * get_pointer_edge_lengths(int lev, int direction) const
Definition: WarpX.H:482
amrex::MultiFab * get_pointer_Efield_fp(int lev, int direction) const
Definition: WarpX.H:465
const amrex::MultiFab & getEfield_fp(int lev, int direction)
Definition: WarpX.H:496
amrex::Vector< int > getnsubsteps() const
Definition: WarpX.H:818
static bool do_multi_J
Definition: WarpX.H:347
std::unique_ptr< MacroscopicProperties > m_macroscopic_properties
Definition: WarpX.H:1552
MultiDiagnostics & GetMultiDiags()
Definition: WarpX.H:125
bool DoPML() const
Definition: WarpX.H:508
const amrex::MultiFab & getcurrent_cp(int lev, int direction)
Definition: WarpX.H:488
static short rho_in_time
Definition: WarpX.H:215
amrex::Vector< std::unique_ptr< amrex::FabFactory< amrex::FArrayBox > > > m_field_factory
Definition: WarpX.H:1662
bool getis_synchronized() const
Definition: WarpX.H:832
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_cp
Definition: WarpX.H:1507
amrex::Vector< std::unique_ptr< amrex::MultiFab > > m_distance_to_eb
Definition: WarpX.H:1495
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_slice
Definition: WarpX.H:1640
MultiFluidContainer & GetFluidContainer()
Definition: WarpX.H:122
static short psatd_solution_type
Definition: WarpX.H:210
amrex::Vector< std::unique_ptr< amrex::iMultiFab > > gather_buffer_masks
Definition: WarpX.H:1517
void updateStopTime(const amrex::Real new_stop_time)
Definition: WarpX.H:837
std::array< const amrex::MultiFab *const, 3 > get_array_Efield_aux(const int lev) const
Definition: WarpX.H:454
amrex::Vector< int > mirror_z_npoints
Definition: WarpX.H:538
static amrex::Real zmin_domain_boost_step_0
Definition: WarpX.H:330
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_slice
Definition: WarpX.H:1639
static bool do_compute_max_step_from_zmax
Definition: WarpX.H:327
static amrex::Vector< int > field_boundary_lo
Definition: WarpX.H:190
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:342
SpectralSolverRZ & get_spectral_solver_fp(int lev)
Definition: WarpX.H:1142
static int n_field_gather_buffer
Definition: WarpX.H:356
static int do_multi_J_n_depositions
Definition: WarpX.H:348
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:1501
amrex::Vector< amrex::Real > t_new
Definition: WarpX.H:1411
static bool do_single_precision_comms
perform field communications in single precision
Definition: WarpX.H:231
amrex::IntVect slice_cr_ratio
Definition: WarpX.H:1635
static amrex::Vector< ParticleBoundaryType > particle_boundary_lo
Definition: WarpX.H:200
static amrex::Vector< amrex::Real > B_external_grid
Initial magnetic field on the grid.
Definition: WarpX.H:140
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_store
Definition: WarpX.H:1498
void CheckKnownIssues()
Checks for known numerical issues involving different WarpX modules.
guardCellManager guard_cells
Definition: WarpX.H:1629
static bool do_shared_mem_charge_deposition
used shared memory algorithm for charge deposition
Definition: WarpX.H:234
static int em_solver_medium
Integer that corresponds to electromagnetic Maxwell solver (vacuum - 0, macroscopic - 1)
Definition: WarpX.H:181
MultiParticleContainer & GetPartContainer()
Definition: WarpX.H:121
static amrex::Vector< int > boost_direction
Direction of the Lorentz transform that defines the boosted frame of the simulation.
Definition: WarpX.H:319
static bool use_fdtd_nci_corr
Definition: WarpX.H:288
static bool verboncoeur_axis_correction
Definition: WarpX.H:302
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:896
static bool do_shared_mem_current_deposition
use shared memory algorithm for current deposition
Definition: WarpX.H:237
amrex::Vector< amrex::IntVect > do_pml_Hi
Definition: WarpX.H:1535
void setistep(int lev, int ii)
Definition: WarpX.H:822
amrex::MultiFab * get_pointer_vector_potential_fp(int lev, int direction) const
Definition: WarpX.H:473
static bool fft_do_time_averaging
Definition: WarpX.H:897
static short particle_pusher_algo
Integer that corresponds to the particle push algorithm (Boris, Vay, Higuera-Cary)
Definition: WarpX.H:173
amrex::Vector< std::unique_ptr< PML > > pml
Definition: WarpX.H:1536
amrex::RealVect fine_tag_lo
Definition: WarpX.H:1621
std::string restart_chkfile
Definition: WarpX.H:1607
static WarpX * m_instance
Definition: WarpX.H:1218
const amrex::MultiFab & getG_fp(int lev)
Definition: WarpX.H:501
amrex::Vector< std::unique_ptr< amrex::MultiFab > > rho_cp
Definition: WarpX.H:1506
amrex::MultiFab * get_pointer_G_fp(int lev) const
Definition: WarpX.H:471
static bool do_dynamic_scheduling
Definition: WarpX.H:335
const amrex::MultiFab & getBfield_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:145
amrex::Gpu::DeviceVector< amrex::Real > device_field_centering_stencil_coeffs_z
Definition: WarpX.H:1030
amrex::MultiFab * get_pointer_phi_fp(int lev) const
Definition: WarpX.H:472
static int self_fields_verbosity
Definition: WarpX.H:880
amrex::Real stopTime() const
Definition: WarpX.H:836
std::unique_ptr< amrex::Parser > Byfield_parser
User-defined parser to initialize y-component of the magnetic field on the grid.
Definition: WarpX.H:155
amrex::Vector< std::unique_ptr< PML_RZ > > pml_rz
Definition: WarpX.H:1538
const amrex::MultiFab & getphi_fp(int lev)
Definition: WarpX.H:499
static std::map< std::string, amrex::MultiFab * > multifab_map
Definition: WarpX.H:442
std::unique_ptr< MultiFluidContainer > myfl
Definition: WarpX.H:1421
amrex::Gpu::DeviceVector< amrex::Real > device_field_centering_stencil_coeffs_x
Definition: WarpX.H:1028
amrex::MultiFab * get_pointer_current_fp(int lev, int direction) const
Definition: WarpX.H:467
std::unique_ptr< HybridPICModel > m_hybrid_pic_model
Definition: WarpX.H:1555
amrex::MultiFab * get_pointer_current_cp(int lev, int direction) const
Definition: WarpX.H:477
amrex::Vector< amrex::Real > getdt() const
Definition: WarpX.H:828
static int noz
Order of the particle shape factors (splines) along z.
Definition: WarpX.H:262
amrex::Gpu::DeviceVector< amrex::Real > device_current_centering_stencil_coeffs_z
Definition: WarpX.H:1035
amrex::Vector< amrex::Real > gett_new() const
Definition: WarpX.H:825
const amrex::MultiFab & getBfield_avg_cp(int lev, int direction)
Definition: WarpX.H:506
static int num_mirrors
Definition: WarpX.H:535
amrex::MultiFab * get_pointer_face_areas(int lev, int direction) const
Definition: WarpX.H:483
amrex::Vector< std::unique_ptr< amrex::MultiFab > > phi_fp
Definition: WarpX.H:1435
ParticleBoundaryBuffer & GetParticleBoundaryBuffer()
Definition: WarpX.H:127
void WriteUsedInputsFile() const
bool do_pml_divb_cleaning
Definition: WarpX.H:1533
amrex::Vector< int > getistep() const
Definition: WarpX.H:820
static int current_centering_noy
Order of finite centering of currents (from nodal grid to staggered grid), along y.
Definition: WarpX.H:274
amrex::Gpu::DeviceVector< amrex::Real > device_current_centering_stencil_coeffs_y
Definition: WarpX.H:1034
static bool add_external_E_field
Whether to apply the effect of an externally-defined electric field.
Definition: WarpX.H:148
amrex::MultiFab * get_pointer_Efield_aux(int lev, int direction) const
Definition: WarpX.H:462
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_avg_cp
Definition: WarpX.H:1510
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:491
amrex::Vector< amrex::Real > load_balance_efficiency
Definition: WarpX.H:1578
static amrex::Real self_fields_required_precision
Definition: WarpX.H:877
static amrex::IntVect sort_bin_size
Definition: WarpX.H:339
amrex::IntVect m_rho_nodal_flag
Definition: WarpX.H:367
static std::map< std::string, amrex::iMultiFab * > imultifab_map
Definition: WarpX.H:443
utils::parser::IntervalsParser load_balance_intervals
Definition: WarpX.H:1560
amrex::Vector< std::array< std::unique_ptr< amrex::iMultiFab >, 3 > > m_flag_ext_face
Definition: WarpX.H:1471
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_fp
Definition: WarpX.H:1436
amrex::IntVect getngEB() const
Definition: WarpX.H:910
utils::parser::IntervalsParser override_sync_intervals
Definition: WarpX.H:1593
std::unique_ptr< amrex::Parser > Bxfield_parser
User-defined parser to initialize x-component of the magnetic field on the grid.
Definition: WarpX.H:153
utils::parser::IntervalsParser get_load_balance_intervals() const
returns the load balance interval
Definition: WarpX.H:651
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > m_face_areas
EB: Areas of the mesh faces.
Definition: WarpX.H:1456
amrex::Real gett_old(int lev) const
Definition: WarpX.H:824
std::unique_ptr< amrex::Parser > Exfield_parser
User-defined parser to initialize x-component of the electric field on the grid.
Definition: WarpX.H:159
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_cax
Definition: WarpX.H:1515
amrex::MultiFab * get_pointer_F_cp(int lev) const
Definition: WarpX.H:479
const amrex::MultiFab & getF_fp(int lev)
Definition: WarpX.H:500
static int do_moving_window
Definition: WarpX.H:882
amrex::MultiFab * get_pointer_Efield_cp(int lev, int direction) const
Definition: WarpX.H:475
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:834
static int nox
Order of the particle shape factors (splines) along x.
Definition: WarpX.H:258
int getnsubsteps(int lev) const
Definition: WarpX.H:819
WarpX(WarpX const &)=delete
static amrex::Real quantum_xi_c2
Definition: WarpX.H:640
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_slice
Definition: WarpX.H:1641
amrex::Vector< std::array< std::unique_ptr< amrex::iMultiFab >, 3 > > m_flag_info_face
Definition: WarpX.H:1464
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_fp_vay
Definition: WarpX.H:1437
void updateMaxStep(const int new_max_step)
Definition: WarpX.H:835
HybridPICModel & GetHybridPICModel()
Definition: WarpX.H:124
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_cp
Definition: WarpX.H:1509
static bool serialize_initial_conditions
If true, the initial conditions from random number generators are serialized (useful for reproducible...
Definition: WarpX.H:312
const amrex::iMultiFab * getGatherBufferMasks(int lev) const
Definition: WarpX.H:1350
std::unique_ptr< amrex::Parser > Bzfield_parser
User-defined parser to initialize z-component of the magnetic field on the grid.
Definition: WarpX.H:157
amrex::Vector< std::unique_ptr< SpectralSolverRZ > > spectral_solver_fp
Definition: WarpX.H:1831
static amrex::IntVect m_fill_guards_fields
Whether to fill guard cells when computing inverse FFTs of fields.
Definition: WarpX.H:246
static short grid_type
Definition: WarpX.H:364
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > vector_potential_grad_buf_b_stag
Definition: WarpX.H:1447
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_aux
Definition: WarpX.H:1428
const amrex::MultiFab & getEfield_cp(int lev, int direction)
Definition: WarpX.H:489
static int current_centering_nox
Order of finite centering of currents (from nodal grid to staggered grid), along x.
Definition: WarpX.H:272
amrex::MultiFab * get_pointer_Bfield_aux(int lev, int direction) const
Definition: WarpX.H:463
static bool use_filter_compensation
If true, a compensation step is added to the bilinear filtering of charge and currents.
Definition: WarpX.H:309
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > vector_potential_grad_buf_e_stag
Definition: WarpX.H:1446
amrex::Vector< std::array< std::unique_ptr< amrex::LayoutData< FaceInfoBox > >, 3 > > m_borrowing
Definition: WarpX.H:1479
static bool add_external_B_field
Whether to apply the effect of an externally-defined magnetic field.
Definition: WarpX.H:150
static short charge_deposition_algo
Integer that corresponds to the charge deposition algorithm (only standard deposition)
Definition: WarpX.H:169
amrex::Real gett_new(int lev) const
Definition: WarpX.H:826
amrex::Vector< amrex::Real > dt
Definition: WarpX.H:1413
amrex::Vector< std::unique_ptr< amrex::MultiFab > > rho_slice
Definition: WarpX.H:1638
amrex::Vector< std::unique_ptr< amrex::MultiFab > > F_cp
Definition: WarpX.H:1504
amrex::RealVect fine_tag_hi
Definition: WarpX.H:1622
amrex::IntVect get_ng_fieldgather() const
Definition: WarpX.H:915
amrex::IntVect get_ng_depos_rho() const
Definition: WarpX.H:914
static int start_moving_window_step
Definition: WarpX.H:883
amrex::Vector< int > istep
Definition: WarpX.H:1408
static int electrostatic_solver_id
Definition: WarpX.H:874
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:1042
amrex::Vector< std::unique_ptr< amrex::MultiFab > > G_slice
Definition: WarpX.H:1637
static int n_current_deposition_buffer
Definition: WarpX.H:360
amrex::Vector< std::unique_ptr< amrex::MultiFab > > F_fp
Definition: WarpX.H:1432
static amrex::Vector< int > field_boundary_hi
Definition: WarpX.H:195
int Verbose() const
Definition: WarpX.H:115
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_cax
Definition: WarpX.H:1514
amrex::Vector< std::unique_ptr< amrex::MultiFab > > charge_buf
Definition: WarpX.H:1521
std::array< const amrex::MultiFab *const, 3 > get_array_Bfield_aux(const int lev) const
Definition: WarpX.H:446
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > m_edge_lengths
EB: Lengths of the mesh edges.
Definition: WarpX.H:1454
const amrex::iMultiFab * getCurrentBufferMasks(int lev) const
Definition: WarpX.H:1347
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_avg_fp
Definition: WarpX.H:1440
amrex::Vector< int > injected_plasma_species
Definition: WarpX.H:1547
static bool do_device_synchronize
Definition: WarpX.H:350
static bool use_kspace_filter
If true, the bilinear filtering of charge and currents is done in Fourier space.
Definition: WarpX.H:307
amrex::MultiFab * get_pointer_F_fp(int lev) const
Definition: WarpX.H:470
int getistep(int lev) const
Definition: WarpX.H:821
std::unique_ptr< MultiDiagnostics > multi_diags
Definition: WarpX.H:1417
std::unique_ptr< amrex::Parser > Ezfield_parser
User-defined parser to initialize z-component of the electric field on the grid.
Definition: WarpX.H:163
static int noy
Order of the particle shape factors (splines) along y.
Definition: WarpX.H:260
void EvolveEM(int numsteps)
amrex::Vector< int > nsubsteps
Definition: WarpX.H:1409
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:269
void sett_new(int lev, amrex::Real time)
Definition: WarpX.H:827
amrex::IntVect getngF() const
Definition: WarpX.H:911
static amrex::Real beta_boost
Beta value corresponding to the Lorentz factor of the boosted frame of the simulation.
Definition: WarpX.H:317
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_fp_external
Definition: WarpX.H:1450
amrex::MultiFab * get_pointer_G_cp(int lev) const
Definition: WarpX.H:480
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:255
std::unique_ptr< MultiParticleContainer > mypc
Definition: WarpX.H:1416
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_buf
Definition: WarpX.H:1520
static bool use_filter
If true, a bilinear filter is used to smooth charge and currents.
Definition: WarpX.H:305
amrex::MultiFab * get_pointer_rho_fp(int lev) const
Definition: WarpX.H:469
static amrex::IntVect m_fill_guards_current
Whether to fill guard cells when computing inverse FFTs of currents.
Definition: WarpX.H:249
MacroscopicProperties & GetMacroscopicProperties()
Definition: WarpX.H:123
MagnetostaticSolver::VectorPoissonBoundaryHandler m_vector_poisson_boundary_handler
Definition: WarpX.H:951
const amrex::MultiFab & getG_cp(int lev)
Definition: WarpX.H:493
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > vector_potential_fp_nodal
Definition: WarpX.H:1445
ElectrostaticSolver::PoissonBoundaryHandler m_poisson_boundary_handler
Definition: WarpX.H:926
static amrex::IntVect shared_tilesize
tileSize to use for shared current deposition operations
Definition: WarpX.H:243
static int do_similar_dm_pml
Definition: WarpX.H:1531
amrex::Vector< std::unique_ptr< FiniteDifferenceSolver > > m_fdtd_solver_fp
Definition: WarpX.H:1840
amrex::Vector< amrex::Real > gett_old() const
Definition: WarpX.H:823
static int current_centering_noz
Order of finite centering of currents (from nodal grid to staggered grid), along z.
Definition: WarpX.H:276
static bool safe_guard_cells
Definition: WarpX.H:351
amrex::IntVect getngUpdateAux() const
Definition: WarpX.H:912
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_cp
Definition: WarpX.H:1508
amrex::Vector< std::unique_ptr< amrex::MultiFab > > rho_fp
Definition: WarpX.H:1434
amrex::MultiFab * get_pointer_rho_cp(int lev) const
Definition: WarpX.H:478
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_fp
Definition: WarpX.H:1439
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > ECTRhofield
Definition: WarpX.H:1488
amrex::Vector< amrex::Real > t_old
Definition: WarpX.H:1412
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:344
static bool refine_plasma
Definition: WarpX.H:336
amrex::FabFactory< amrex::FArrayBox > const & fieldFactory(int lev) const noexcept
Definition: WarpX.H:1664
static int macroscopic_solver_algo
Definition: WarpX.H:185
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_aux
Definition: WarpX.H:1429
static int ncomps
Definition: WarpX.H:284
static int moving_window_active(int const step)
Definition: WarpX.H:890
static bool galerkin_interpolation
Definition: WarpX.H:298
amrex::Vector< std::unique_ptr< NCIGodfreyFilter > > nci_godfrey_filter_bxbyez
Definition: WarpX.H:527
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > m_area_mod
Definition: WarpX.H:1475
static amrex::IntVect filter_npass_each_dir
Definition: WarpX.H:524
amrex::IntVect get_numprocs() const
Definition: WarpX.H:924
const amrex::MultiFab & getBfield_fp(int lev, int direction)
Definition: WarpX.H:497
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Venl
Definition: WarpX.H:1492
static short electromagnetic_solver_id
Integer that corresponds to the type of Maxwell solver (Yee, CKC, PSATD, ECT)
Definition: WarpX.H:175
amrex::Real v_particle_pml
Definition: WarpX.H:1540
amrex::IntVect get_ng_depos_J() const
Definition: WarpX.H:913
BilinearFilter bilinear_filter
Definition: WarpX.H:525
amrex::MultiFab * get_pointer_current_fp_nodal(int lev, int direction) const
Definition: WarpX.H:468
const amrex::MultiFab & getEfield_avg_fp(int lev, int direction)
Definition: WarpX.H:503
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_avg_fp
Definition: WarpX.H:1441
const amrex::MultiFab & getBfield_avg_fp(int lev, int direction)
Definition: WarpX.H:504
static int field_centering_noy
Order of finite centering of fields (from staggered grid to nodal grid), along y.
Definition: WarpX.H:267
amrex::Real getdt(int lev) const
Definition: WarpX.H:829
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_fp_external
Definition: WarpX.H:1451
const amrex::MultiFab & getEfield_avg_cp(int lev, int direction)
Definition: WarpX.H:505
amrex::Vector< std::unique_ptr< NCIGodfreyFilter > > nci_godfrey_filter_exeybz
Definition: WarpX.H:526
static bool do_current_centering
Definition: WarpX.H:220
amrex::Vector< amrex::Real > mirror_z
Definition: WarpX.H:536
amrex::Vector< std::unique_ptr< amrex::MultiFab > > F_slice
Definition: WarpX.H:1636
int getdo_moving_window() const
Definition: WarpX.H:830
static bool do_subcycling
Definition: WarpX.H:346
static int n_rz_azimuthal_modes
Number of modes for the RZ multi-mode version.
Definition: WarpX.H:279
static short J_in_time
Definition: WarpX.H:214
static amrex::Real gamma_boost
Lorentz factor of the boosted frame in which a boosted-frame simulation is run.
Definition: WarpX.H:315
static short field_gathering_algo
Integer that corresponds to the field gathering algorithm (energy-conserving, momentum-conserving)
Definition: WarpX.H:171
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_avg_cp
Definition: WarpX.H:1511
static int shared_mem_current_tpb
number of threads to use per block in shared deposition
Definition: WarpX.H:240
static short load_balance_costs_update_algo
Definition: WarpX.H:179
amrex::MultiFab * get_pointer_Bfield_fp(int lev, int direction) const
Definition: WarpX.H:466
amrex::Vector< std::unique_ptr< FiniteDifferenceSolver > > m_fdtd_solver_cp
Definition: WarpX.H:1841
void computeMaxStepBoostAccelerator()
amrex::Vector< amrex::Real > mirror_z_width
Definition: WarpX.H:537
const amrex::MultiFab & getcurrent_fp(int lev, int direction)
Definition: WarpX.H:495
std::unique_ptr< MultiReducedDiags > reduced_diags
object with all reduced diagnotics, similar to MultiParticleContainer for species.
Definition: WarpX.H:541
const amrex::MultiFab & getBfield(int lev, int direction)
Definition: WarpX.H:486
const amrex::MultiFab & getF_cp(int lev)
Definition: WarpX.H:492
amrex::Vector< std::unique_ptr< amrex::iMultiFab > > current_buffer_masks
Definition: WarpX.H:1516
amrex::MultiFab * get_pointer_Bfield_cp(int lev, int direction) const
Definition: WarpX.H:476
int slice_max_grid_size
Definition: WarpX.H:1632
static std::string B_ext_grid_s
Initialization type for external magnetic field on the grid.
Definition: WarpX.H:143
amrex::Vector< std::unique_ptr< amrex::MultiFab > > G_cp
Definition: WarpX.H:1505
const amrex::MultiFab & getEfield(int lev, int direction)
Definition: WarpX.H:485
std::unique_ptr< amrex::Parser > Eyfield_parser
User-defined parser to initialize y-component of the electric field on the grid.
Definition: WarpX.H:161
static amrex::Real self_fields_absolute_tolerance
Definition: WarpX.H:878
amrex::Vector< std::unique_ptr< AcceleratorLattice > > m_accelerator_lattice
Definition: WarpX.H:1655
static amrex::Vector< ParticleBoundaryType > particle_boundary_hi
Definition: WarpX.H:205
std::optional< amrex::Real > m_const_dt
Definition: WarpX.H:1549
FiniteDifferenceSolver * get_pointer_fdtd_solver_fp(int lev)
Definition: WarpX.H:1145
amrex::RealBox slice_realbox
Definition: WarpX.H:1634
amrex::Vector< amrex::IntVect > do_pml_Lo
Definition: WarpX.H:1534
amrex::Vector< std::unique_ptr< SpectralSolverRZ > > spectral_solver_cp
Definition: WarpX.H:1832
amrex::Real getmoving_window_x() const
Definition: WarpX.H:831
static amrex::Vector< amrex::Real > E_external_grid
Initial electric field on the grid.
Definition: WarpX.H:138
bool do_pml_dive_cleaning
Definition: WarpX.H:1532
static std::string authors
Author of an input file / simulation setup.
Definition: WarpX.H:135
const PML_RZ * getPMLRZ()
Definition: WarpX.H:512
static bool compute_max_step_from_btd
If true, the code will compute max_step from the back transformed diagnostics.
Definition: WarpX.H:333
bool current_correction
If true, a correction is applied to the current in Fourier space,.
Definition: WarpX.H:224
static int end_moving_window_step
Definition: WarpX.H:884
static utils::parser::IntervalsParser sort_intervals
Definition: WarpX.H:338
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_fp
Definition: WarpX.H:1438
Definition: WarpXParticleContainer.H:104
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
direction
Definition: AnyFFT.H:75
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