50 #include "Utils/export.H"
57 #include <AMReX_Config.H>
88 static WarpX& GetInstance ();
90 static void ResetInstance ();
112 static std::string PicsarVersion ();
118 void Evolve (
int numsteps = -1);
123 void ImplicitPreRHSOp ( amrex::Real cur_time,
124 amrex::Real a_full_dt,
126 bool a_from_jacobian );
127 void SaveParticlesAtImplicitStepStart ();
128 void FinishImplicitParticleUpdate ();
130 void UpdateMagneticFieldAndApplyBCs (
const amrex::Vector<std::array< std::unique_ptr<amrex::MultiFab>, 3 > >& a_Bn,
131 amrex::Real a_thetadt );
132 void ApplyMagneticFieldBCs ();
133 void FinishMagneticFieldAndApplyBCs (
const amrex::Vector<std::array< std::unique_ptr<amrex::MultiFab>, 3 > >& a_Bn,
134 amrex::Real a_theta );
135 void FinishImplicitField (
amrex::Vector<std::array< std::unique_ptr<amrex::MultiFab>, 3 > >& Field_fp,
136 const amrex::Vector<std::array< std::unique_ptr<amrex::MultiFab>, 3 > >& Field_n,
139 void ImplicitComputeRHSE (
int lev, amrex::Real
dt,
WarpXSolverVec& a_Erhs_vec);
154 int num_shift,
int dir,
int lev,
bool update_cost_flag,
155 amrex::Real external_field=0.0,
bool useparser =
false,
163 [[nodiscard]] std::string
GetAuthors ()
const {
return m_authors; }
232 bool do_current_centering =
false;
236 bool current_correction =
true;
240 bool update_with_rho =
false;
396 static void AllocInitMultiFab (
397 std::unique_ptr<amrex::MultiFab>& mf,
403 const std::string&
name,
404 std::optional<const amrex::Real> initial_value = {});
421 static void AllocInitMultiFab (
422 std::unique_ptr<amrex::iMultiFab>& mf,
428 const std::string&
name,
429 std::optional<const int> initial_value = {});
442 static void AliasInitMultiFab (
443 std::unique_ptr<amrex::MultiFab>& mf,
448 const std::string&
name,
449 std::optional<const amrex::Real> initial_value);
463 static void AllocInitMultiFabFromModel (
464 std::unique_ptr<amrex::MultiFab>& mf,
467 const std::string&
name,
468 std::optional<const amrex::Real> initial_value = {});
511 [[nodiscard]] std::array<const amrex::MultiFab* const, 3>
538 [[nodiscard]]
bool DoPML ()
const {
return do_pml;}
541 #if (defined WARPX_DIM_RZ) && (defined WARPX_USE_FFT)
546 [[nodiscard]] std::vector<bool> getPMLdirections()
const;
550 void setLoadBalanceEfficiency (
int lev, amrex::Real efficiency);
552 amrex::Real getLoadBalanceEfficiency (
int lev);
559 amrex::Real time_of_last_gal_shift = 0;
573 void applyMirrors(amrex::Real time);
585 void PrintDtDxDyDz ();
600 int MoveWindow (
int step,
bool move_j);
607 void ShiftGalileanBoundary ();
613 void UpdateInjectionPosition (amrex::Real
dt);
616 void EvolveE ( amrex::Real
dt);
617 void EvolveE (
int lev, amrex::Real
dt);
618 void EvolveB ( amrex::Real
dt,
DtType dt_type);
619 void EvolveB (
int lev, amrex::Real
dt,
DtType dt_type);
620 void EvolveF ( amrex::Real
dt,
DtType dt_type);
621 void EvolveF (
int lev, amrex::Real
dt,
DtType dt_type);
622 void EvolveG ( amrex::Real
dt,
DtType dt_type);
623 void EvolveG (
int lev, amrex::Real
dt,
DtType dt_type);
625 void EvolveE (
int lev,
PatchType patch_type, amrex::Real
dt);
629 void MacroscopicEvolveE ( amrex::Real
dt);
630 void MacroscopicEvolveE (
int lev, amrex::Real
dt);
631 void MacroscopicEvolveE (
int lev,
PatchType patch_type, amrex::Real
dt);
638 void HybridPICEvolveFields ();
647 void HybridPICDepositInitialRhoAndJ ();
660 void Hybrid_QED_Push (
int lev, amrex::Real
dt);
668 void Hybrid_QED_Push (
int lev,
PatchType patch_type, amrex::Real
dt);
674 void CheckLoadBalance (
int step);
690 void RescaleCosts (
int step);
696 return load_balance_intervals;
706 void DampFieldsInGuards (
int lev,
707 const std::array<std::unique_ptr<amrex::MultiFab>,3>& Efield,
708 const std::array<std::unique_ptr<amrex::MultiFab>,3>& Bfield);
717 void DampFieldsInGuards (
int lev, std::unique_ptr<amrex::MultiFab>& mf);
746 void ApplyEfieldBoundary (
int lev,
PatchType patch_type);
747 void ApplyBfieldBoundary (
int lev,
PatchType patch_type,
DtType dt_type);
762 void ApplyElectronPressureBoundary (
int lev,
PatchType patch_type);
765 void DampPML (
int lev);
766 void DampPML (
int lev,
PatchType patch_type);
767 void DampPML_Cartesian (
int lev,
PatchType patch_type);
770 void DampJPML (
int lev);
771 void DampJPML (
int lev,
PatchType patch_type);
774 bool isAnyBoundaryPML();
776 static bool isAnyParticleBoundaryThermal();
778 PML* GetPML (
int lev);
779 #if (defined WARPX_DIM_RZ) && (defined WARPX_USE_FFT)
780 PML_RZ* GetPML_RZ (
int lev);
784 void doFieldIonization ();
788 void doFieldIonization (
int lev);
796 void doQEDEvents (
int lev);
799 void PushParticlesandDeposit (
int lev, amrex::Real cur_time,
DtType a_dt_type=
DtType::Full,
bool skip_current=
false,
801 void PushParticlesandDeposit (amrex::Real cur_time,
bool skip_current=
false,
806 void UpdateAuxilaryData ();
807 void UpdateAuxilaryDataStagToNodal ();
808 void UpdateAuxilaryDataSameType ();
821 void FillBoundaryB (
amrex::IntVect ng, std::optional<bool> nodal_sync = std::nullopt);
822 void FillBoundaryE (
amrex::IntVect ng, std::optional<bool> nodal_sync = std::nullopt);
826 void FillBoundaryF (
amrex::IntVect ng, std::optional<bool> nodal_sync = std::nullopt);
827 void FillBoundaryG (
amrex::IntVect ng, std::optional<bool> nodal_sync = std::nullopt);
829 void FillBoundaryE (
int lev,
amrex::IntVect ng, std::optional<bool> nodal_sync = std::nullopt);
830 void FillBoundaryB (
int lev,
amrex::IntVect ng, std::optional<bool> nodal_sync = std::nullopt);
834 void FillBoundaryF (
int lev,
amrex::IntVect ng, std::optional<bool> nodal_sync = std::nullopt);
835 void FillBoundaryG (
int lev,
amrex::IntVect ng, std::optional<bool> nodal_sync = std::nullopt);
844 void SyncCurrentAndRho ();
859 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
860 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp,
861 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_buffer);
866 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_fp,
867 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_cp,
868 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_buffer);
871 [[nodiscard]]
int getnsubsteps (
int lev)
const {
return nsubsteps[lev];}
873 [[nodiscard]]
int getistep (
int lev)
const {
return istep[lev];}
876 [[nodiscard]] amrex::Real
gett_old (
int lev)
const {
return t_old[lev];}
878 [[nodiscard]] amrex::Real
gett_new (
int lev)
const {
return t_new[lev];}
879 void sett_new (
int lev, amrex::Real time) {t_new[lev] = time;}
881 [[nodiscard]] amrex::Real
getdt (
int lev)
const {
return dt.at(lev);}
886 [[nodiscard]]
int maxStep ()
const {
return max_step;}
888 [[nodiscard]] amrex::Real
stopTime ()
const {
return stop_time;}
889 void updateStopTime (
const amrex::Real new_stop_time) {stop_time = new_stop_time;}
899 static std::array<amrex::Real,3> CellSize (
int lev);
945 bool const step_before_end = (step < end_moving_window_step) || (end_moving_window_step < 0);
946 bool const step_after_start = (step >= start_moving_window_step);
947 return do_moving_window && step_before_end && step_after_start;
955 const std::array<const amrex::MultiFab* const, 3>& B,
956 const std::array<amrex::Real,3>&
dx);
959 const std::array<const amrex::MultiFab* const, 3>& B,
980 bool m_boundary_potential_specified =
false;
982 void ComputeSpaceChargeField (
bool reset_fields);
983 void AddBoundaryField ();
985 void AddSpaceChargeFieldLabFrame ();
988 std::array<amrex::Real, 3>
beta = {{0,0,0}},
989 amrex::Real required_precision=amrex::Real(1.e-11),
990 amrex::Real absolute_tolerance=amrex::Real(0.0),
994 void setPhiBC (
amrex::Vector<std::unique_ptr<amrex::MultiFab> >& phi )
const;
996 void computeE (
amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>, 3> >& E,
998 std::array<amrex::Real, 3>
beta = {{0,0,0}} )
const;
999 void computeB (
amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>, 3> >& B,
1000 const amrex::Vector<std::unique_ptr<amrex::MultiFab> >& phi,
1001 std::array<amrex::Real, 3>
beta = {{0,0,0}} )
const;
1002 void computePhiTriDiagonal (
const amrex::Vector<std::unique_ptr<amrex::MultiFab> >& rho,
1003 amrex::Vector<std::unique_ptr<amrex::MultiFab> >& phi)
const;
1007 void ComputeMagnetostaticField ();
1008 void AddMagnetostaticFieldLabFrame ();
1011 amrex::Real required_precision=amrex::Real(1.e-11),
1012 amrex::Real absolute_tolerance=amrex::Real(0.0),
1014 int verbosity=2)
const;
1044 std::array< std::unique_ptr<amrex::MultiFab>, 3 >
const& edge_lengths,
1045 std::array< std::unique_ptr<amrex::MultiFab>, 3 >
const& face_areas,
1061 const std::string& F_name,
const std::string& F_component);
1080 void ApplyFilterandSumBoundaryRho (
int lev,
int glev,
amrex::MultiFab& rho,
int icomp,
int ncomp);
1125 static void ComputeEdgeLengths (std::array< std::unique_ptr<amrex::MultiFab>, 3 >& edge_lengths,
1131 static void ComputeFaceAreas (std::array< std::unique_ptr<amrex::MultiFab>, 3 >& face_areas,
1137 static void ScaleEdges (std::array< std::unique_ptr<amrex::MultiFab>, 3 >& edge_lengths,
1138 const std::array<amrex::Real,3>&
cell_size);
1142 static void ScaleAreas (std::array< std::unique_ptr<amrex::MultiFab>, 3 >& face_areas,
1143 const std::array<amrex::Real,3>&
cell_size);
1158 void ComputeDistanceToEB ();
1167 void ComputeFaceExtensions();
1171 void InitBorrowing();
1175 void ShrinkBorrowing();
1179 void ComputeOneWayExtensions();
1183 void ComputeEightWaysExtensions();
1192 void ApplyBCKCorrection(
int idim);
1198 void PSATDSubtractCurrentPartialSumsAvg ();
1200 #ifdef WARPX_USE_FFT
1202 # ifdef WARPX_DIM_RZ
1280 static void MakeWarpX ();
1286 void HandleSignals ();
1288 void FillBoundaryB (
int lev,
PatchType patch_type,
amrex::IntVect ng, std::optional<bool> nodal_sync = std::nullopt);
1289 void FillBoundaryE (
int lev,
PatchType patch_type,
amrex::IntVect ng, std::optional<bool> nodal_sync = std::nullopt);
1290 void FillBoundaryF (
int lev,
PatchType patch_type,
amrex::IntVect ng, std::optional<bool> nodal_sync = std::nullopt);
1291 void FillBoundaryG (
int lev,
PatchType patch_type,
amrex::IntVect ng, std::optional<bool> nodal_sync = std::nullopt);
1298 void OneStep_nosub (amrex::Real cur_time);
1299 void OneStep_sub1 (amrex::Real cur_time);
1304 void OneStep_multiJ (amrex::Real cur_time);
1306 void RestrictCurrentFromFineToCoarsePatch (
1307 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
1308 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp,
1310 void AddCurrentFromFineLevelandSumBoundary (
1311 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
1312 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp,
1313 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_buffer,
1315 void StoreCurrent (
int lev);
1316 void RestoreCurrent (
int lev);
1318 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& current,
1322 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& current,
1325 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& current,
1330 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& current,
1334 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
1335 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp,
1339 void RestrictRhoFromFineToCoarsePatch (
1340 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_fp,
1341 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_cp,
1343 void ApplyFilterandSumBoundaryRho (
1344 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_fp,
1345 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_cp,
1350 void AddRhoFromFineLevelandSumBoundary (
1351 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_fp,
1352 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_cp,
1353 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_buffer,
1358 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_fp,
1359 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_cp,
1365 void ReadParameters ();
1369 void BackwardCompatibility ();
1377 GetRestartDMap (
const std::string& chkfile,
const amrex::BoxArray& ba,
int lev)
const;
1379 void InitFromCheckpoint ();
1405 void BuildBufferMasks ();
1408 return current_buffer_masks[lev].
get();
1413 return gather_buffer_masks[lev].
get();
1453 #ifdef WARPX_USE_FFT
1454 # ifdef WARPX_DIM_RZ
1455 void AllocLevelSpectralSolverRZ (
amrex::Vector<std::unique_ptr<SpectralSolverRZ>>& spectral_solver,
1459 const std::array<amrex::Real,3>&
dx);
1461 void AllocLevelSpectralSolver (
amrex::Vector<std::unique_ptr<SpectralSolver>>& spectral_solver,
1465 const std::array<amrex::Real,3>&
dx,
1466 bool pml_flag=
false);
1481 std::unique_ptr<MultiParticleContainer>
mypc;
1485 bool do_fluid_species =
false;
1486 std::unique_ptr<MultiFluidContainer>
myfl;
1606 int do_silver_mueller = 0;
1609 int pml_has_particles = 0;
1610 int do_pml_j_damping = 0;
1611 int do_pml_in_domain = 0;
1612 bool do_similar_dm_pml =
true;
1618 #if (defined WARPX_DIM_RZ) && (defined WARPX_USE_FFT)
1626 amrex::Real moving_window_x = std::numeric_limits<amrex::Real>::max();
1629 int warpx_do_continuous_injection = 0;
1630 int num_injected_species = -1;
1649 int load_balance_with_sfc = 0;
1654 amrex::Real load_balance_knapsack_factor = amrex::Real(1.24);
1660 amrex::Real load_balance_efficiency_ratio_threshold = amrex::Real(1.1);
1668 amrex::Real costs_heuristic_cells_wt = amrex::Real(0);
1674 amrex::Real costs_heuristic_particles_wt = amrex::Real(0);
1682 bool use_hybrid_QED =
false;
1684 int max_step = std::numeric_limits<int>::max();
1685 amrex::Real stop_time = std::numeric_limits<amrex::Real>::max();
1687 int regrid_int = -1;
1689 amrex::Real
cfl = amrex::Real(0.999);
1694 bool write_diagnostics_on_restart =
false;
1699 bool use_single_read =
true;
1700 bool use_single_write =
true;
1701 int mffile_nstreams = 4;
1702 int field_io_nfiles = 1024;
1703 int particle_io_nfiles = 1024;
1710 bool is_synchronized =
true;
1713 static constexpr
bool sync_nodal_points =
true;
1719 int slice_plot_int = -1;
1729 bool fft_periodic_single_box =
false;
1753 return *m_field_factory[lev];
1758 bool m_exit_loop_due_to_interrupt_signal =
false;
1763 bool checkStopSimulation (amrex::Real cur_time);
1770 void checkEarlyUnusedParams ();
1780 void HandleParticlesAtBoundaries (
int step, amrex::Real cur_time,
int num_moved);
1789 void ExplicitFillBoundaryEBUpdateAux ();
1793 #ifdef WARPX_USE_FFT
1807 void PSATDForwardTransformEB (
1808 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& E_fp,
1809 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& B_fp,
1810 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& E_cp,
1811 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& B_cp);
1826 void PSATDBackwardTransformEB (
1827 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& E_fp,
1828 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& B_fp,
1829 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& E_cp,
1830 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& B_cp);
1844 void PSATDBackwardTransformEBavg (
1845 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& E_avg_fp,
1846 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& B_avg_fp,
1847 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& E_avg_cp,
1848 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& B_avg_cp);
1861 void PSATDForwardTransformJ (
1862 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
1863 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp,
1864 bool apply_kspace_filter=
true);
1874 void PSATDBackwardTransformJ (
1875 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
1876 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp);
1889 void PSATDForwardTransformRho (
1890 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_fp,
1891 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_cp,
1892 int icomp,
int dcomp,
bool apply_kspace_filter=
true);
1897 void PSATDMoveRhoNewToRhoOld ();
1902 void PSATDMoveJNewToJOld ();
1907 void PSATDForwardTransformF ();
1912 void PSATDBackwardTransformF ();
1917 void PSATDForwardTransformG ();
1922 void PSATDBackwardTransformG ();
1927 void PSATDCurrentCorrection ();
1932 void PSATDVayDeposition ();
1937 void PSATDPushSpectralFields ();
1944 void PSATDScaleAverageFields (amrex::Real scale_factor);
1949 void PSATDEraseAverageFields ();
1951 # ifdef WARPX_DIM_RZ
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:37
This class contains the parameters needed to evaluate hybrid field solutions (kinetic ions with fluid...
Definition: HybridPICModel.H:32
This class contains the macroscopic properties of the medium needed to evaluate macroscopic Maxwell e...
Definition: MacroscopicProperties.H:34
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
Definition: ParticleBoundaryBuffer.H:22
Top-level class for the electromagnetic spectral solver.
Definition: SpectralSolver.H:35
Definition: SpectralSolverRZ.H:25
std::unique_ptr< ParticleBoundaryBuffer > m_particle_boundary_buffer
particle buffer for scraped particles on the boundaries
Definition: WarpX.H:1738
static int self_fields_max_iters
Definition: WarpX.H:933
static int field_centering_nox
Order of finite centering of fields (from staggered grid to nodal grid), along x.
Definition: WarpX.H:277
amrex::Vector< std::unique_ptr< amrex::LayoutData< amrex::Real > > > costs
Definition: WarpX.H:1647
void LoadExternalFields(int lev)
Load field values from a user-specified openPMD file, for the fields Ex, Ey, Ez, Bx,...
static short current_deposition_algo
Integer that corresponds to the current deposition algorithm (Esirkepov, direct, Vay,...
Definition: WarpX.H:173
int maxlevel_extEMfield_init
Definition: WarpX.H:169
amrex::Vector< std::unique_ptr< amrex::MultiFab > > G_fp
Definition: WarpX.H:1498
amrex::Gpu::DeviceVector< amrex::Real > device_field_centering_stencil_coeffs_y
Definition: WarpX.H:1094
static int moving_window_dir
Definition: WarpX.H:949
amrex::Gpu::DeviceVector< amrex::Real > device_current_centering_stencil_coeffs_x
Definition: WarpX.H:1098
amrex::Real m_quantum_xi_c2
Definition: WarpX.H:670
static bool do_dive_cleaning
Definition: WarpX.H:265
static amrex::Real zmax_plasma_to_compute_max_step
Definition: WarpX.H:335
bool DoFluidSpecies() const
Definition: WarpX.H:539
amrex::Vector< int > getnsubsteps() const
Definition: WarpX.H:870
static bool do_multi_J
Definition: WarpX.H:359
std::unique_ptr< MacroscopicProperties > m_macroscopic_properties
Definition: WarpX.H:1636
MultiDiagnostics & GetMultiDiags()
Definition: WarpX.H:147
bool DoPML() const
Definition: WarpX.H:538
static short rho_in_time
Definition: WarpX.H:227
amrex::Vector< std::unique_ptr< amrex::FabFactory< amrex::FArrayBox > > > m_field_factory
Definition: WarpX.H:1748
bool getis_synchronized() const
Definition: WarpX.H:884
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_cp
Definition: WarpX.H:1574
amrex::Vector< std::unique_ptr< amrex::MultiFab > > m_distance_to_eb
Definition: WarpX.H:1562
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_slice
Definition: WarpX.H:1726
MultiFluidContainer & GetFluidContainer()
Definition: WarpX.H:143
static short psatd_solution_type
Definition: WarpX.H:222
amrex::Vector< std::unique_ptr< amrex::iMultiFab > > gather_buffer_masks
Definition: WarpX.H:1584
void updateStopTime(const amrex::Real new_stop_time)
Definition: WarpX.H:889
amrex::Vector< int > mirror_z_npoints
Definition: WarpX.H:568
static amrex::Real zmin_domain_boost_step_0
Definition: WarpX.H:342
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_slice
Definition: WarpX.H:1725
static bool do_compute_max_step_from_zmax
Definition: WarpX.H:339
static int max_particle_its_in_implicit_scheme
Maximum iterations used for self-consistent particle update in implicit particle-suppressed evolve sc...
Definition: WarpX.H:185
static short evolve_scheme
Integer that corresponds to the evolve scheme (explicit, semi_implicit_em, theta_implicit_em)
Definition: WarpX.H:183
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:354
SpectralSolverRZ & get_spectral_solver_fp(int lev)
Definition: WarpX.H:1207
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > E_external_particle_field
Definition: WarpX.H:1517
static int n_field_gather_buffer
Definition: WarpX.H:368
static int do_multi_J_n_depositions
Definition: WarpX.H:360
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:1568
amrex::Vector< amrex::Real > t_new
Definition: WarpX.H:1476
static bool do_single_precision_comms
perform field communications in single precision
Definition: WarpX.H:243
amrex::IntVect slice_cr_ratio
Definition: WarpX.H:1721
static amrex::Vector< ParticleBoundaryType > particle_boundary_lo
Definition: WarpX.H:212
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_store
Definition: WarpX.H:1565
void CheckKnownIssues()
Checks for known numerical issues involving different WarpX modules.
guardCellManager guard_cells
Definition: WarpX.H:1715
static bool do_shared_mem_charge_deposition
used shared memory algorithm for charge deposition
Definition: WarpX.H:246
static int em_solver_medium
Integer that corresponds to electromagnetic Maxwell solver (vacuum - 0, macroscopic - 1)
Definition: WarpX.H:193
MultiParticleContainer & GetPartContainer()
Definition: WarpX.H:142
static amrex::Vector< int > boost_direction
Direction of the Lorentz transform that defines the boosted frame of the simulation.
Definition: WarpX.H:331
static bool use_fdtd_nci_corr
Definition: WarpX.H:300
static bool verboncoeur_axis_correction
Definition: WarpX.H:314
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:950
static bool do_shared_mem_current_deposition
use shared memory algorithm for current deposition
Definition: WarpX.H:249
amrex::Vector< amrex::IntVect > do_pml_Hi
Definition: WarpX.H:1616
std::string GetAuthors() const
If an authors' string is specified in the inputfile, this method returns that string....
Definition: WarpX.H:163
void setistep(int lev, int ii)
Definition: WarpX.H:874
static bool fft_do_time_averaging
Definition: WarpX.H:951
static short particle_pusher_algo
Integer that corresponds to the particle push algorithm (Boris, Vay, Higuera-Cary)
Definition: WarpX.H:179
amrex::Vector< std::unique_ptr< PML > > pml
Definition: WarpX.H:1617
amrex::RealVect fine_tag_lo
Definition: WarpX.H:1705
std::string restart_chkfile
Definition: WarpX.H:1691
static WarpX * m_instance
Definition: WarpX.H:1283
amrex::Vector< std::unique_ptr< amrex::MultiFab > > rho_cp
Definition: WarpX.H:1573
static bool do_dynamic_scheduling
Definition: WarpX.H:347
std::unique_ptr< amrex::Parser > ref_patch_parser
User-defined parser to define refinement patches.
Definition: WarpX.H:1708
amrex::Gpu::DeviceVector< amrex::Real > device_field_centering_stencil_coeffs_z
Definition: WarpX.H:1095
static int self_fields_verbosity
Definition: WarpX.H:934
amrex::Real stopTime() const
Definition: WarpX.H:888
amrex::Vector< std::unique_ptr< PML_RZ > > pml_rz
Definition: WarpX.H:1619
static std::map< std::string, amrex::MultiFab * > multifab_map
Definition: WarpX.H:473
std::unique_ptr< MultiFluidContainer > myfl
Definition: WarpX.H:1486
amrex::Gpu::DeviceVector< amrex::Real > device_field_centering_stencil_coeffs_x
Definition: WarpX.H:1093
std::unique_ptr< HybridPICModel > m_hybrid_pic_model
Definition: WarpX.H:1639
amrex::Vector< amrex::Real > getdt() const
Definition: WarpX.H:880
static int noz
Order of the particle shape factors (splines) along z.
Definition: WarpX.H:274
amrex::Gpu::DeviceVector< amrex::Real > device_current_centering_stencil_coeffs_z
Definition: WarpX.H:1100
amrex::Vector< amrex::Real > gett_new() const
Definition: WarpX.H:877
static int num_mirrors
Definition: WarpX.H:565
amrex::Vector< std::unique_ptr< amrex::MultiFab > > phi_fp
Definition: WarpX.H:1500
ParticleBoundaryBuffer & GetParticleBoundaryBuffer()
Definition: WarpX.H:151
void WriteUsedInputsFile() const
bool do_pml_divb_cleaning
Definition: WarpX.H:1614
amrex::Vector< int > getistep() const
Definition: WarpX.H:872
static int current_centering_noy
Order of finite centering of currents (from nodal grid to staggered grid), along y.
Definition: WarpX.H:286
static amrex::Vector< FieldBoundaryType > field_boundary_lo
Definition: WarpX.H:202
amrex::Gpu::DeviceVector< amrex::Real > device_current_centering_stencil_coeffs_y
Definition: WarpX.H:1099
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_avg_cp
Definition: WarpX.H:1577
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...
amrex::Vector< amrex::Real > load_balance_efficiency
Definition: WarpX.H:1662
static amrex::Real self_fields_required_precision
Definition: WarpX.H:931
static amrex::IntVect sort_bin_size
Definition: WarpX.H:351
amrex::IntVect m_rho_nodal_flag
Definition: WarpX.H:379
static std::map< std::string, amrex::iMultiFab * > imultifab_map
Definition: WarpX.H:474
utils::parser::IntervalsParser load_balance_intervals
Definition: WarpX.H:1644
amrex::Vector< std::array< std::unique_ptr< amrex::iMultiFab >, 3 > > m_flag_ext_face
Definition: WarpX.H:1538
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_fp
Definition: WarpX.H:1501
amrex::IntVect getngEB() const
Definition: WarpX.H:964
utils::parser::IntervalsParser override_sync_intervals
Definition: WarpX.H:1677
utils::parser::IntervalsParser get_load_balance_intervals() const
returns the load balance interval
Definition: WarpX.H:694
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > m_face_areas
EB: Areas of the mesh faces.
Definition: WarpX.H:1523
amrex::Real gett_old(int lev) const
Definition: WarpX.H:876
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_cax
Definition: WarpX.H:1582
static int do_moving_window
Definition: WarpX.H:936
int maxStep() const
Definition: WarpX.H:886
static int nox
Order of the particle shape factors (splines) along x.
Definition: WarpX.H:270
int getnsubsteps(int lev) const
Definition: WarpX.H:871
WarpX(WarpX const &)=delete
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_slice
Definition: WarpX.H:1727
amrex::Vector< std::array< std::unique_ptr< amrex::iMultiFab >, 3 > > m_flag_info_face
Definition: WarpX.H:1531
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_fp_vay
Definition: WarpX.H:1502
void updateMaxStep(const int new_max_step)
Definition: WarpX.H:887
HybridPICModel & GetHybridPICModel()
Definition: WarpX.H:145
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_cp
Definition: WarpX.H:1576
static bool serialize_initial_conditions
If true, the initial conditions from random number generators are serialized (useful for reproducible...
Definition: WarpX.H:324
const amrex::iMultiFab * getGatherBufferMasks(int lev) const
Definition: WarpX.H:1411
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > B_external_particle_field
Definition: WarpX.H:1518
amrex::Vector< std::unique_ptr< SpectralSolverRZ > > spectral_solver_fp
Definition: WarpX.H:1952
static amrex::IntVect m_fill_guards_fields
Whether to fill guard cells when computing inverse FFTs of fields.
Definition: WarpX.H:258
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > vector_potential_grad_buf_b_stag
Definition: WarpX.H:1512
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_aux
Definition: WarpX.H:1493
static int current_centering_nox
Order of finite centering of currents (from nodal grid to staggered grid), along x.
Definition: WarpX.H:284
static bool use_filter_compensation
If true, a compensation step is added to the bilinear filtering of charge and currents.
Definition: WarpX.H:321
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > vector_potential_grad_buf_e_stag
Definition: WarpX.H:1511
amrex::Vector< std::array< std::unique_ptr< amrex::LayoutData< FaceInfoBox > >, 3 > > m_borrowing
Definition: WarpX.H:1546
static short charge_deposition_algo
Integer that corresponds to the charge deposition algorithm (only standard deposition)
Definition: WarpX.H:175
amrex::Real gett_new(int lev) const
Definition: WarpX.H:878
amrex::Vector< amrex::Real > dt
Definition: WarpX.H:1478
amrex::Vector< std::unique_ptr< amrex::MultiFab > > rho_slice
Definition: WarpX.H:1724
amrex::Vector< std::unique_ptr< amrex::MultiFab > > F_cp
Definition: WarpX.H:1571
amrex::RealVect fine_tag_hi
Definition: WarpX.H:1706
amrex::IntVect get_ng_fieldgather() const
Definition: WarpX.H:969
amrex::IntVect get_ng_depos_rho() const
Definition: WarpX.H:968
static int poisson_solver_id
Definition: WarpX.H:928
static int start_moving_window_step
Definition: WarpX.H:937
amrex::Vector< int > istep
Definition: WarpX.H:1473
static int electrostatic_solver_id
Definition: WarpX.H:927
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:1107
amrex::Vector< std::unique_ptr< amrex::MultiFab > > G_slice
Definition: WarpX.H:1723
static amrex::ParticleReal particle_tol_in_implicit_scheme
Relative tolerance used for self-consistent particle update in implicit particle-suppressed evolve sc...
Definition: WarpX.H:187
static int n_current_deposition_buffer
Definition: WarpX.H:372
amrex::Vector< std::unique_ptr< amrex::MultiFab > > F_fp
Definition: WarpX.H:1497
int Verbose() const
Definition: WarpX.H:114
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_cax
Definition: WarpX.H:1581
amrex::Vector< std::unique_ptr< amrex::MultiFab > > charge_buf
Definition: WarpX.H:1588
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > m_edge_lengths
EB: Lengths of the mesh edges.
Definition: WarpX.H:1521
const amrex::iMultiFab * getCurrentBufferMasks(int lev) const
Definition: WarpX.H:1407
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_avg_fp
Definition: WarpX.H:1505
amrex::Vector< int > injected_plasma_species
Definition: WarpX.H:1631
static bool do_device_synchronize
Definition: WarpX.H:362
static bool use_kspace_filter
If true, the bilinear filtering of charge and currents is done in Fourier space.
Definition: WarpX.H:319
int getistep(int lev) const
Definition: WarpX.H:873
std::unique_ptr< MultiDiagnostics > multi_diags
Definition: WarpX.H:1482
static int noy
Order of the particle shape factors (splines) along y.
Definition: WarpX.H:272
amrex::Vector< int > nsubsteps
Definition: WarpX.H:1474
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:281
void sett_new(int lev, amrex::Real time)
Definition: WarpX.H:879
static ablastr::utils::enums::GridType grid_type
Definition: WarpX.H:376
amrex::IntVect getngF() const
Definition: WarpX.H:965
static amrex::Real beta_boost
Beta value corresponding to the Lorentz factor of the boosted frame of the simulation.
Definition: WarpX.H:329
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_fp_external
Definition: WarpX.H:1515
std::unique_ptr< ImplicitSolver > m_implicit_solver
Definition: WarpX.H:1965
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...
void ReadExternalFieldFromFile(const std::string &read_fields_from_path, amrex::MultiFab *mf, const std::string &F_name, const std::string &F_component)
Load field values from a user-specified openPMD file for a specific field (specified by F_name)
static bool do_divb_cleaning
Solve additional Maxwell equation for G in order to control errors in magnetic Gauss' law.
Definition: WarpX.H:267
std::unique_ptr< MultiParticleContainer > mypc
Definition: WarpX.H:1481
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_buf
Definition: WarpX.H:1587
static bool use_filter
If true, a bilinear filter is used to smooth charge and currents.
Definition: WarpX.H:317
void AddExternalFields(int lev)
static amrex::IntVect m_fill_guards_current
Whether to fill guard cells when computing inverse FFTs of currents.
Definition: WarpX.H:261
MacroscopicProperties & GetMacroscopicProperties()
Definition: WarpX.H:144
MagnetostaticSolver::VectorPoissonBoundaryHandler m_vector_poisson_boundary_handler
Definition: WarpX.H:1006
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > vector_potential_fp_nodal
Definition: WarpX.H:1510
ElectrostaticSolver::PoissonBoundaryHandler m_poisson_boundary_handler
Definition: WarpX.H:981
static amrex::IntVect shared_tilesize
tileSize to use for shared current deposition operations
Definition: WarpX.H:255
amrex::Vector< std::unique_ptr< FiniteDifferenceSolver > > m_fdtd_solver_fp
Definition: WarpX.H:1961
amrex::Vector< amrex::Real > gett_old() const
Definition: WarpX.H:875
static int current_centering_noz
Order of finite centering of currents (from nodal grid to staggered grid), along z.
Definition: WarpX.H:288
static bool safe_guard_cells
Definition: WarpX.H:363
amrex::IntVect getngUpdateAux() const
Definition: WarpX.H:966
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_cp
Definition: WarpX.H:1575
amrex::Vector< std::unique_ptr< amrex::MultiFab > > rho_fp
Definition: WarpX.H:1499
static amrex::Vector< FieldBoundaryType > field_boundary_hi
Definition: WarpX.H:207
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_fp
Definition: WarpX.H:1504
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > ECTRhofield
Definition: WarpX.H:1555
amrex::Vector< amrex::Real > t_old
Definition: WarpX.H:1477
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:356
static bool refine_plasma
Definition: WarpX.H:348
amrex::FabFactory< amrex::FArrayBox > const & fieldFactory(int lev) const noexcept
Definition: WarpX.H:1751
static int macroscopic_solver_algo
Definition: WarpX.H:197
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_aux
Definition: WarpX.H:1494
static int ncomps
Definition: WarpX.H:296
static int moving_window_active(int const step)
Definition: WarpX.H:944
static bool galerkin_interpolation
Definition: WarpX.H:310
amrex::Vector< std::unique_ptr< NCIGodfreyFilter > > nci_godfrey_filter_bxbyez
Definition: WarpX.H:557
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > m_area_mod
Definition: WarpX.H:1542
static amrex::IntVect filter_npass_each_dir
Definition: WarpX.H:554
amrex::IntVect get_numprocs() const
Definition: WarpX.H:978
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Venl
Definition: WarpX.H:1559
static short electromagnetic_solver_id
Integer that corresponds to the type of Maxwell solver (Yee, CKC, PSATD, ECT)
Definition: WarpX.H:181
amrex::Real v_particle_pml
Definition: WarpX.H:1621
amrex::IntVect get_ng_depos_J() const
Definition: WarpX.H:967
BilinearFilter bilinear_filter
Definition: WarpX.H:555
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_avg_fp
Definition: WarpX.H:1506
static int field_centering_noy
Order of finite centering of fields (from staggered grid to nodal grid), along y.
Definition: WarpX.H:279
amrex::Real getdt(int lev) const
Definition: WarpX.H:881
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_fp_external
Definition: WarpX.H:1516
HybridPICModel * get_pointer_HybridPICModel() const
Definition: WarpX.H:146
amrex::Vector< std::unique_ptr< NCIGodfreyFilter > > nci_godfrey_filter_exeybz
Definition: WarpX.H:556
amrex::Vector< amrex::Real > mirror_z
Definition: WarpX.H:566
amrex::Vector< std::unique_ptr< amrex::MultiFab > > F_slice
Definition: WarpX.H:1722
int getdo_moving_window() const
Definition: WarpX.H:882
static bool do_subcycling
Definition: WarpX.H:358
static int n_rz_azimuthal_modes
Number of modes for the RZ multi-mode version.
Definition: WarpX.H:291
static short J_in_time
Definition: WarpX.H:226
std::unique_ptr< ExternalFieldParams > m_p_ext_field_params
Definition: WarpX.H:1624
static amrex::Real gamma_boost
Lorentz factor of the boosted frame in which a boosted-frame simulation is run.
Definition: WarpX.H:327
static short field_gathering_algo
Integer that corresponds to the field gathering algorithm (energy-conserving, momentum-conserving)
Definition: WarpX.H:177
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_avg_cp
Definition: WarpX.H:1578
static int shared_mem_current_tpb
number of threads to use per block in shared deposition
Definition: WarpX.H:252
static short load_balance_costs_update_algo
Definition: WarpX.H:191
amrex::Vector< std::unique_ptr< FiniteDifferenceSolver > > m_fdtd_solver_cp
Definition: WarpX.H:1962
void computeMaxStepBoostAccelerator()
amrex::Vector< amrex::Real > mirror_z_width
Definition: WarpX.H:567
std::unique_ptr< MultiReducedDiags > reduced_diags
object with all reduced diagnostics, similar to MultiParticleContainer for species.
Definition: WarpX.H:571
amrex::Vector< std::unique_ptr< amrex::iMultiFab > > current_buffer_masks
Definition: WarpX.H:1583
std::string m_authors
Author of an input file / simulation setup.
Definition: WarpX.H:1471
int slice_max_grid_size
Definition: WarpX.H:1718
amrex::Vector< std::unique_ptr< amrex::MultiFab > > G_cp
Definition: WarpX.H:1572
static amrex::Real self_fields_absolute_tolerance
Definition: WarpX.H:932
amrex::Vector< std::unique_ptr< AcceleratorLattice > > m_accelerator_lattice
Definition: WarpX.H:1741
static amrex::Vector< ParticleBoundaryType > particle_boundary_hi
Definition: WarpX.H:217
std::optional< amrex::Real > m_const_dt
Definition: WarpX.H:1633
FiniteDifferenceSolver * get_pointer_fdtd_solver_fp(int lev)
Definition: WarpX.H:1210
amrex::RealBox slice_realbox
Definition: WarpX.H:1720
amrex::Vector< amrex::IntVect > do_pml_Lo
Definition: WarpX.H:1615
amrex::Vector< std::unique_ptr< SpectralSolverRZ > > spectral_solver_cp
Definition: WarpX.H:1953
amrex::Real getmoving_window_x() const
Definition: WarpX.H:883
bool do_pml_dive_cleaning
Definition: WarpX.H:1613
const PML_RZ * getPMLRZ()
Definition: WarpX.H:542
static bool compute_max_step_from_btd
If true, the code will compute max_step from the back transformed diagnostics.
Definition: WarpX.H:345
static int end_moving_window_step
Definition: WarpX.H:938
static utils::parser::IntervalsParser sort_intervals
Definition: WarpX.H:350
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_fp
Definition: WarpX.H:1503
Definition: WarpXParticleContainer.H:111
This is a wrapper class around a Vector of array of pointers to MultiFabs that contains basic math op...
Definition: WarpXSolverVec.H:48
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 IArrayBox & 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:22
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, utils::enums::GridType grid_type, T_BoundaryHandler const boundary_handler, bool is_solver_igf_on_lev0, 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:100
GridType
Definition: Enums.H:17
PatchType
Definition: Enums.H:28
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
FieldType
Definition: Fields.H:13