30 #ifdef WARPX_USE_PSATD
48 #include "Utils/export.H"
53 #include <AMReX_Config.H>
84 static WarpX& GetInstance ();
86 static void ResetInstance ();
108 static std::string PicsarVersion ();
114 void Evolve (
int numsteps = -1);
116 void EvolveImplicitPicardInit (
int lev);
119 void FinishImplicitFieldUpdate(
amrex::Vector<std::array< std::unique_ptr<amrex::MultiFab>, 3 > >& Efield_fp,
120 amrex::Vector<std::array< std::unique_ptr<amrex::MultiFab>, 3 > >& Efield_n);
134 int num_shift,
int dir,
int lev,
bool update_cost_flag,
135 amrex::Real external_field=0.0,
bool useparser =
false,
143 [[nodiscard]] std::string
GetAuthors ()
const {
return m_authors; }
222 bool update_with_rho =
false;
378 static void AllocInitMultiFab (
379 std::unique_ptr<amrex::MultiFab>& mf,
385 const std::string&
name,
386 std::optional<const amrex::Real> initial_value = {});
403 static void AllocInitMultiFab (
404 std::unique_ptr<amrex::iMultiFab>& mf,
410 const std::string&
name,
411 std::optional<const int> initial_value = {});
424 static void AliasInitMultiFab (
425 std::unique_ptr<amrex::MultiFab>& mf,
430 const std::string&
name,
431 std::optional<const amrex::Real> initial_value);
445 static void AllocInitMultiFabFromModel (
446 std::unique_ptr<amrex::MultiFab>& mf,
449 const std::string&
name,
450 std::optional<const amrex::Real> initial_value = {});
493 [[nodiscard]] std::array<const amrex::MultiFab* const, 3>
509 [[nodiscard]]
bool DoPML ()
const {
return do_pml;}
512 #if (defined WARPX_DIM_RZ) && (defined WARPX_USE_PSATD)
517 [[nodiscard]] std::vector<bool> getPMLdirections()
const;
521 void setLoadBalanceEfficiency (
int lev, amrex::Real efficiency);
523 amrex::Real getLoadBalanceEfficiency (
int lev);
530 amrex::Real time_of_last_gal_shift = 0;
544 void applyMirrors(amrex::Real time);
556 void PrintDtDxDyDz ();
571 int MoveWindow (
int step,
bool move_j);
578 void ShiftGalileanBoundary ();
584 void UpdateInjectionPosition (amrex::Real
dt);
587 void EvolveE ( amrex::Real
dt);
588 void EvolveE (
int lev, amrex::Real
dt);
589 void EvolveB ( amrex::Real
dt,
DtType dt_type);
590 void EvolveB (
int lev, amrex::Real
dt,
DtType dt_type);
591 void EvolveF ( amrex::Real
dt,
DtType dt_type);
592 void EvolveF (
int lev, amrex::Real
dt,
DtType dt_type);
593 void EvolveG ( amrex::Real
dt,
DtType dt_type);
594 void EvolveG (
int lev, amrex::Real
dt,
DtType dt_type);
596 void EvolveE (
int lev,
PatchType patch_type, amrex::Real
dt);
600 void MacroscopicEvolveE ( amrex::Real
dt);
601 void MacroscopicEvolveE (
int lev, amrex::Real
dt);
602 void MacroscopicEvolveE (
int lev,
PatchType patch_type, amrex::Real
dt);
609 void HybridPICEvolveFields ();
618 void HybridPICDepositInitialRhoAndJ ();
631 void Hybrid_QED_Push (
int lev, amrex::Real
dt);
639 void Hybrid_QED_Push (
int lev,
PatchType patch_type, amrex::Real
dt);
645 void CheckLoadBalance (
int step);
661 void RescaleCosts (
int step);
667 return load_balance_intervals;
677 void DampFieldsInGuards (
int lev,
678 const std::array<std::unique_ptr<amrex::MultiFab>,3>& Efield,
679 const std::array<std::unique_ptr<amrex::MultiFab>,3>& Bfield);
688 void DampFieldsInGuards (
int lev, std::unique_ptr<amrex::MultiFab>& mf);
717 void ApplyEfieldBoundary (
int lev,
PatchType patch_type);
718 void ApplyBfieldBoundary (
int lev,
PatchType patch_type,
DtType dt_type);
733 void ApplyElectronPressureBoundary (
int lev,
PatchType patch_type);
736 void DampPML (
int lev);
737 void DampPML (
int lev,
PatchType patch_type);
738 void DampPML_Cartesian (
int lev,
PatchType patch_type);
741 void DampJPML (
int lev);
742 void DampJPML (
int lev,
PatchType patch_type);
745 bool isAnyBoundaryPML();
747 static bool isAnyParticleBoundaryThermal();
749 PML* GetPML (
int lev);
750 #if (defined WARPX_DIM_RZ) && (defined WARPX_USE_PSATD)
751 PML_RZ* GetPML_RZ (
int lev);
755 void doFieldIonization ();
759 void doFieldIonization (
int lev);
767 void doQEDEvents (
int lev);
770 void PushParticlesandDeposit (
int lev, amrex::Real cur_time,
DtType a_dt_type=
DtType::Full,
bool skip_current=
false,
772 void PushParticlesandDeposit (amrex::Real cur_time,
bool skip_current=
false,
777 void UpdateAuxilaryData ();
778 void UpdateAuxilaryDataStagToNodal ();
779 void UpdateAuxilaryDataSameType ();
792 void FillBoundaryB (
amrex::IntVect ng, std::optional<bool> nodal_sync = std::nullopt);
793 void FillBoundaryE (
amrex::IntVect ng, std::optional<bool> nodal_sync = std::nullopt);
797 void FillBoundaryF (
amrex::IntVect ng, std::optional<bool> nodal_sync = std::nullopt);
798 void FillBoundaryG (
amrex::IntVect ng, std::optional<bool> nodal_sync = std::nullopt);
800 void FillBoundaryE (
int lev,
amrex::IntVect ng, std::optional<bool> nodal_sync = std::nullopt);
801 void FillBoundaryB (
int lev,
amrex::IntVect ng, std::optional<bool> nodal_sync = std::nullopt);
805 void FillBoundaryF (
int lev,
amrex::IntVect ng, std::optional<bool> nodal_sync = std::nullopt);
806 void FillBoundaryG (
int lev,
amrex::IntVect ng, std::optional<bool> nodal_sync = std::nullopt);
815 void SyncCurrentAndRho ();
830 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
831 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp,
832 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_buffer);
837 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_fp,
838 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_cp,
839 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_buffer);
842 [[nodiscard]]
int getnsubsteps (
int lev)
const {
return nsubsteps[lev];}
844 [[nodiscard]]
int getistep (
int lev)
const {
return istep[lev];}
847 [[nodiscard]] amrex::Real
gett_old (
int lev)
const {
return t_old[lev];}
849 [[nodiscard]] amrex::Real
gett_new (
int lev)
const {
return t_new[lev];}
850 void sett_new (
int lev, amrex::Real time) {t_new[lev] = time;}
852 [[nodiscard]] amrex::Real
getdt (
int lev)
const {
return dt.at(lev);}
857 [[nodiscard]]
int maxStep ()
const {
return max_step;}
859 [[nodiscard]] amrex::Real
stopTime ()
const {
return stop_time;}
860 void updateStopTime (
const amrex::Real new_stop_time) {stop_time = new_stop_time;}
870 static std::array<amrex::Real,3> CellSize (
int lev);
881 static std::array<amrex::Real,3> LowerCorner (
const amrex::Box& bx,
int lev, amrex::Real time_shift_delta);
890 static std::array<amrex::Real,3> UpperCorner (
const amrex::Box& bx,
int lev, amrex::Real time_shift_delta);
915 bool const step_before_end = (step < end_moving_window_step) || (end_moving_window_step < 0);
916 bool const step_after_start = (step >= start_moving_window_step);
917 return do_moving_window && step_before_end && step_after_start;
925 const std::array<const amrex::MultiFab* const, 3>& B,
926 const std::array<amrex::Real,3>&
dx);
929 const std::array<const amrex::MultiFab* const, 3>& B,
950 bool m_boundary_potential_specified =
false;
952 void ComputeSpaceChargeField (
bool reset_fields);
953 void AddBoundaryField ();
955 void AddSpaceChargeFieldLabFrame ();
958 std::array<amrex::Real, 3>
beta = {{0,0,0}},
959 amrex::Real required_precision=amrex::Real(1.e-11),
960 amrex::Real absolute_tolerance=amrex::Real(0.0),
964 void setPhiBC (
amrex::Vector<std::unique_ptr<amrex::MultiFab> >& phi )
const;
966 void computeE (
amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>, 3> >& E,
968 std::array<amrex::Real, 3>
beta = {{0,0,0}} )
const;
969 void computeB (
amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>, 3> >& B,
971 std::array<amrex::Real, 3>
beta = {{0,0,0}} )
const;
972 void computePhiTriDiagonal (
const amrex::Vector<std::unique_ptr<amrex::MultiFab> >& rho,
973 amrex::Vector<std::unique_ptr<amrex::MultiFab> >& phi)
const;
977 void ComputeMagnetostaticField ();
978 void AddMagnetostaticFieldLabFrame ();
981 amrex::Real required_precision=amrex::Real(1.e-11),
982 amrex::Real absolute_tolerance=amrex::Real(0.0),
984 int verbosity=2)
const;
1014 std::array< std::unique_ptr<amrex::MultiFab>, 3 >
const& edge_lengths,
1015 std::array< std::unique_ptr<amrex::MultiFab>, 3 >
const& face_areas,
1031 const std::string& F_name,
const std::string& F_component);
1050 void ApplyFilterandSumBoundaryRho (
int lev,
int glev,
amrex::MultiFab& rho,
int icomp,
int ncomp);
1095 static void ComputeEdgeLengths (std::array< std::unique_ptr<amrex::MultiFab>, 3 >& edge_lengths,
1101 static void ComputeFaceAreas (std::array< std::unique_ptr<amrex::MultiFab>, 3 >& face_areas,
1107 static void ScaleEdges (std::array< std::unique_ptr<amrex::MultiFab>, 3 >& edge_lengths,
1108 const std::array<amrex::Real,3>&
cell_size);
1112 static void ScaleAreas (std::array< std::unique_ptr<amrex::MultiFab>, 3 >& face_areas,
1113 const std::array<amrex::Real,3>&
cell_size);
1128 void ComputeDistanceToEB ();
1137 void ComputeFaceExtensions();
1141 void InitBorrowing();
1145 void ShrinkBorrowing();
1149 void ComputeOneWayExtensions();
1153 void ComputeEightWaysExtensions();
1162 void ApplyBCKCorrection(
int idim);
1168 void PSATDSubtractCurrentPartialSumsAvg ();
1170 #ifdef WARPX_USE_PSATD
1172 # ifdef WARPX_DIM_RZ
1250 static void MakeWarpX ();
1256 void HandleSignals ();
1258 void FillBoundaryB (
int lev,
PatchType patch_type,
amrex::IntVect ng, std::optional<bool> nodal_sync = std::nullopt);
1259 void FillBoundaryE (
int lev,
PatchType patch_type,
amrex::IntVect ng, std::optional<bool> nodal_sync = std::nullopt);
1260 void FillBoundaryF (
int lev,
PatchType patch_type,
amrex::IntVect ng, std::optional<bool> nodal_sync = std::nullopt);
1261 void FillBoundaryG (
int lev,
PatchType patch_type,
amrex::IntVect ng, std::optional<bool> nodal_sync = std::nullopt);
1268 void OneStep_nosub (amrex::Real cur_time);
1269 void OneStep_sub1 (amrex::Real cur_time);
1271 void OneStep_ImplicitPicard(amrex::Real cur_time);
1276 void OneStep_multiJ (amrex::Real cur_time);
1278 void RestrictCurrentFromFineToCoarsePatch (
1279 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
1280 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp,
1282 void AddCurrentFromFineLevelandSumBoundary (
1283 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
1284 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp,
1285 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_buffer,
1287 void StoreCurrent (
int lev);
1288 void RestoreCurrent (
int lev);
1290 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& current,
1294 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& current,
1297 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& current,
1302 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& current,
1306 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
1307 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp,
1311 void RestrictRhoFromFineToCoarsePatch (
1312 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_fp,
1313 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_cp,
1315 void ApplyFilterandSumBoundaryRho (
1316 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_fp,
1317 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_cp,
1322 void AddRhoFromFineLevelandSumBoundary (
1323 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_fp,
1324 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_cp,
1325 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_buffer,
1330 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_fp,
1331 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_cp,
1337 void ReadParameters ();
1341 void BackwardCompatibility ();
1349 GetRestartDMap (
const std::string& chkfile,
const amrex::BoxArray& ba,
int lev)
const;
1351 void InitFromCheckpoint ();
1377 void BuildBufferMasks ();
1380 return current_buffer_masks[lev].
get();
1385 return gather_buffer_masks[lev].
get();
1425 #ifdef WARPX_USE_PSATD
1426 # ifdef WARPX_DIM_RZ
1427 void AllocLevelSpectralSolverRZ (
amrex::Vector<std::unique_ptr<SpectralSolverRZ>>& spectral_solver,
1431 const std::array<amrex::Real,3>&
dx);
1433 void AllocLevelSpectralSolver (
amrex::Vector<std::unique_ptr<SpectralSolver>>& spectral_solver,
1437 const std::array<amrex::Real,3>&
dx,
1438 bool pml_flag=
false);
1453 std::unique_ptr<MultiParticleContainer>
mypc;
1457 bool do_fluid_species =
false;
1458 std::unique_ptr<MultiFluidContainer>
myfl;
1582 int do_silver_mueller = 0;
1585 int pml_has_particles = 0;
1586 int do_pml_j_damping = 0;
1587 int do_pml_in_domain = 0;
1588 bool do_similar_dm_pml =
true;
1594 #if (defined WARPX_DIM_RZ) && (defined WARPX_USE_PSATD)
1602 amrex::Real moving_window_x = std::numeric_limits<amrex::Real>::max();
1605 int warpx_do_continuous_injection = 0;
1606 int num_injected_species = -1;
1625 int load_balance_with_sfc = 0;
1630 amrex::Real load_balance_knapsack_factor = amrex::Real(1.24);
1636 amrex::Real load_balance_efficiency_ratio_threshold = amrex::Real(1.1);
1644 amrex::Real costs_heuristic_cells_wt = amrex::Real(0);
1650 amrex::Real costs_heuristic_particles_wt = amrex::Real(0);
1658 bool use_hybrid_QED =
false;
1660 int max_step = std::numeric_limits<int>::max();
1661 amrex::Real stop_time = std::numeric_limits<amrex::Real>::max();
1663 int regrid_int = -1;
1665 amrex::Real
cfl = amrex::Real(0.999);
1670 bool write_diagnostics_on_restart =
false;
1675 bool use_single_read =
true;
1676 bool use_single_write =
true;
1677 int mffile_nstreams = 4;
1678 int field_io_nfiles = 1024;
1679 int particle_io_nfiles = 1024;
1686 bool is_synchronized =
true;
1689 static constexpr
bool sync_nodal_points =
true;
1695 int slice_plot_int = -1;
1705 bool fft_periodic_single_box =
false;
1729 return *m_field_factory[lev];
1734 bool m_exit_loop_due_to_interrupt_signal =
false;
1739 bool checkStopSimulation (amrex::Real cur_time);
1746 void checkEarlyUnusedParams ();
1756 void HandleParticlesAtBoundaries (
int step, amrex::Real cur_time,
int num_moved);
1765 void ExplicitFillBoundaryEBUpdateAux ();
1769 #ifdef WARPX_USE_PSATD
1783 void PSATDForwardTransformEB (
1784 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& E_fp,
1785 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& B_fp,
1786 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& E_cp,
1787 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& B_cp);
1802 void PSATDBackwardTransformEB (
1803 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& E_fp,
1804 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& B_fp,
1805 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& E_cp,
1806 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& B_cp);
1820 void PSATDBackwardTransformEBavg (
1821 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& E_avg_fp,
1822 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& B_avg_fp,
1823 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& E_avg_cp,
1824 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& B_avg_cp);
1837 void PSATDForwardTransformJ (
1838 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
1839 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp,
1840 bool apply_kspace_filter=
true);
1850 void PSATDBackwardTransformJ (
1851 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
1852 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp);
1865 void PSATDForwardTransformRho (
1866 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_fp,
1867 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_cp,
1868 int icomp,
int dcomp,
bool apply_kspace_filter=
true);
1873 void PSATDMoveRhoNewToRhoOld ();
1878 void PSATDMoveJNewToJOld ();
1883 void PSATDForwardTransformF ();
1888 void PSATDBackwardTransformF ();
1893 void PSATDForwardTransformG ();
1898 void PSATDBackwardTransformG ();
1903 void PSATDCurrentCorrection ();
1908 void PSATDVayDeposition ();
1913 void PSATDPushSpectralFields ();
1920 void PSATDScaleAverageFields (amrex::Real scale_factor);
1925 void PSATDEraseAverageFields ();
1927 # ifdef WARPX_DIM_RZ
PatchType
Definition: WarpXAlgorithmSelection.H:59
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:35
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: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:33
Definition: SpectralSolverRZ.H:22
std::unique_ptr< ParticleBoundaryBuffer > m_particle_boundary_buffer
particle buffer for scraped particles on the boundaries
Definition: WarpX.H:1714
static int self_fields_max_iters
Definition: WarpX.H:903
static int field_centering_nox
Order of finite centering of fields (from staggered grid to nodal grid), along x.
Definition: WarpX.H:259
amrex::Vector< std::unique_ptr< amrex::LayoutData< amrex::Real > > > costs
Definition: WarpX.H:1623
static short current_deposition_algo
Integer that corresponds to the current deposition algorithm (Esirkepov, direct, Vay,...
Definition: WarpX.H:153
int maxlevel_extEMfield_init
Definition: WarpX.H:149
amrex::Vector< std::unique_ptr< amrex::MultiFab > > G_fp
Definition: WarpX.H:1470
amrex::Gpu::DeviceVector< amrex::Real > device_field_centering_stencil_coeffs_y
Definition: WarpX.H:1064
static int moving_window_dir
Definition: WarpX.H:919
amrex::Gpu::DeviceVector< amrex::Real > device_current_centering_stencil_coeffs_x
Definition: WarpX.H:1068
static bool do_dive_cleaning
Definition: WarpX.H:247
static amrex::Real zmax_plasma_to_compute_max_step
Definition: WarpX.H:317
bool DoFluidSpecies() const
Definition: WarpX.H:510
amrex::Vector< int > getnsubsteps() const
Definition: WarpX.H:841
static bool do_multi_J
Definition: WarpX.H:341
std::unique_ptr< MacroscopicProperties > m_macroscopic_properties
Definition: WarpX.H:1612
MultiDiagnostics & GetMultiDiags()
Definition: WarpX.H:127
bool DoPML() const
Definition: WarpX.H:509
static short rho_in_time
Definition: WarpX.H:209
amrex::Vector< std::unique_ptr< amrex::FabFactory< amrex::FArrayBox > > > m_field_factory
Definition: WarpX.H:1724
bool getis_synchronized() const
Definition: WarpX.H:855
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_cp
Definition: WarpX.H:1550
amrex::Vector< std::unique_ptr< amrex::MultiFab > > m_distance_to_eb
Definition: WarpX.H:1538
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_slice
Definition: WarpX.H:1702
MultiFluidContainer & GetFluidContainer()
Definition: WarpX.H:123
static short psatd_solution_type
Definition: WarpX.H:204
amrex::Vector< std::unique_ptr< amrex::iMultiFab > > gather_buffer_masks
Definition: WarpX.H:1560
void updateStopTime(const amrex::Real new_stop_time)
Definition: WarpX.H:860
amrex::Vector< int > mirror_z_npoints
Definition: WarpX.H:539
static amrex::Real zmin_domain_boost_step_0
Definition: WarpX.H:324
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_slice
Definition: WarpX.H:1701
static bool do_compute_max_step_from_zmax
Definition: WarpX.H:321
static short evolve_scheme
Integer that corresponds to the evolve scheme (explicit, implicit_picard, semi_implicit_picard)
Definition: WarpX.H:163
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:336
SpectralSolverRZ & get_spectral_solver_fp(int lev)
Definition: WarpX.H:1177
static int n_field_gather_buffer
Definition: WarpX.H:350
static int do_multi_J_n_depositions
Definition: WarpX.H:342
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:1544
amrex::Vector< amrex::Real > t_new
Definition: WarpX.H:1448
static bool do_single_precision_comms
perform field communications in single precision
Definition: WarpX.H:225
amrex::IntVect slice_cr_ratio
Definition: WarpX.H:1697
static amrex::Vector< ParticleBoundaryType > particle_boundary_lo
Definition: WarpX.H:194
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_store
Definition: WarpX.H:1541
void CheckKnownIssues()
Checks for known numerical issues involving different WarpX modules.
guardCellManager guard_cells
Definition: WarpX.H:1691
static bool do_shared_mem_charge_deposition
used shared memory algorithm for charge deposition
Definition: WarpX.H:228
static int em_solver_medium
Integer that corresponds to electromagnetic Maxwell solver (vacuum - 0, macroscopic - 1)
Definition: WarpX.H:175
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:313
static bool use_fdtd_nci_corr
Definition: WarpX.H:282
static bool verboncoeur_axis_correction
Definition: WarpX.H:296
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:920
static bool do_shared_mem_current_deposition
use shared memory algorithm for current deposition
Definition: WarpX.H:231
amrex::Vector< amrex::IntVect > do_pml_Hi
Definition: WarpX.H:1592
std::string GetAuthors() const
If an authors' string is specified in the inputfile, this method returns that string....
Definition: WarpX.H:143
void setistep(int lev, int ii)
Definition: WarpX.H:845
static bool fft_do_time_averaging
Definition: WarpX.H:921
static short particle_pusher_algo
Integer that corresponds to the particle push algorithm (Boris, Vay, Higuera-Cary)
Definition: WarpX.H:159
amrex::Vector< std::unique_ptr< PML > > pml
Definition: WarpX.H:1593
amrex::RealVect fine_tag_lo
Definition: WarpX.H:1681
std::string restart_chkfile
Definition: WarpX.H:1667
static WarpX * m_instance
Definition: WarpX.H:1253
amrex::Vector< std::unique_ptr< amrex::MultiFab > > rho_cp
Definition: WarpX.H:1549
static bool do_dynamic_scheduling
Definition: WarpX.H:329
std::unique_ptr< amrex::Parser > ref_patch_parser
User-defined parser to define refinement patches.
Definition: WarpX.H:1684
amrex::Gpu::DeviceVector< amrex::Real > device_field_centering_stencil_coeffs_z
Definition: WarpX.H:1065
static int self_fields_verbosity
Definition: WarpX.H:904
amrex::Real stopTime() const
Definition: WarpX.H:859
amrex::Vector< std::unique_ptr< PML_RZ > > pml_rz
Definition: WarpX.H:1595
static std::map< std::string, amrex::MultiFab * > multifab_map
Definition: WarpX.H:455
std::unique_ptr< MultiFluidContainer > myfl
Definition: WarpX.H:1458
amrex::Gpu::DeviceVector< amrex::Real > device_field_centering_stencil_coeffs_x
Definition: WarpX.H:1063
std::unique_ptr< HybridPICModel > m_hybrid_pic_model
Definition: WarpX.H:1615
amrex::Vector< amrex::Real > getdt() const
Definition: WarpX.H:851
static int noz
Order of the particle shape factors (splines) along z.
Definition: WarpX.H:256
amrex::Gpu::DeviceVector< amrex::Real > device_current_centering_stencil_coeffs_z
Definition: WarpX.H:1070
amrex::Vector< amrex::Real > gett_new() const
Definition: WarpX.H:848
static int num_mirrors
Definition: WarpX.H:536
amrex::Vector< std::unique_ptr< amrex::MultiFab > > phi_fp
Definition: WarpX.H:1472
ParticleBoundaryBuffer & GetParticleBoundaryBuffer()
Definition: WarpX.H:131
void WriteUsedInputsFile() const
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_n
Definition: WarpX.H:1482
bool do_pml_divb_cleaning
Definition: WarpX.H:1590
amrex::Vector< int > getistep() const
Definition: WarpX.H:843
static int current_centering_noy
Order of finite centering of currents (from nodal grid to staggered grid), along y.
Definition: WarpX.H:268
static amrex::Vector< FieldBoundaryType > field_boundary_lo
Definition: WarpX.H:184
amrex::Gpu::DeviceVector< amrex::Real > device_current_centering_stencil_coeffs_y
Definition: WarpX.H:1069
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_avg_cp
Definition: WarpX.H:1553
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:1638
static amrex::Real self_fields_required_precision
Definition: WarpX.H:901
static amrex::IntVect sort_bin_size
Definition: WarpX.H:333
amrex::IntVect m_rho_nodal_flag
Definition: WarpX.H:361
static std::map< std::string, amrex::iMultiFab * > imultifab_map
Definition: WarpX.H:456
utils::parser::IntervalsParser load_balance_intervals
Definition: WarpX.H:1620
amrex::Vector< std::array< std::unique_ptr< amrex::iMultiFab >, 3 > > m_flag_ext_face
Definition: WarpX.H:1514
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_fp
Definition: WarpX.H:1473
amrex::IntVect getngEB() const
Definition: WarpX.H:934
utils::parser::IntervalsParser override_sync_intervals
Definition: WarpX.H:1653
utils::parser::IntervalsParser get_load_balance_intervals() const
returns the load balance interval
Definition: WarpX.H:665
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > m_face_areas
EB: Areas of the mesh faces.
Definition: WarpX.H:1499
amrex::Real gett_old(int lev) const
Definition: WarpX.H:847
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_cax
Definition: WarpX.H:1558
static int do_moving_window
Definition: WarpX.H:906
int maxStep() const
Definition: WarpX.H:857
static int nox
Order of the particle shape factors (splines) along x.
Definition: WarpX.H:252
int getnsubsteps(int lev) const
Definition: WarpX.H:842
WarpX(WarpX const &)=delete
static amrex::Real quantum_xi_c2
Definition: WarpX.H:641
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_slice
Definition: WarpX.H:1703
amrex::Vector< std::array< std::unique_ptr< amrex::iMultiFab >, 3 > > m_flag_info_face
Definition: WarpX.H:1507
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_fp_vay
Definition: WarpX.H:1474
void updateMaxStep(const int new_max_step)
Definition: WarpX.H:858
HybridPICModel & GetHybridPICModel()
Definition: WarpX.H:125
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_cp
Definition: WarpX.H:1552
static bool serialize_initial_conditions
If true, the initial conditions from random number generators are serialized (useful for reproducible...
Definition: WarpX.H:306
const amrex::iMultiFab * getGatherBufferMasks(int lev) const
Definition: WarpX.H:1383
amrex::Vector< std::unique_ptr< SpectralSolverRZ > > spectral_solver_fp
Definition: WarpX.H:1928
static amrex::IntVect m_fill_guards_fields
Whether to fill guard cells when computing inverse FFTs of fields.
Definition: WarpX.H:240
static short grid_type
Definition: WarpX.H:358
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > vector_potential_grad_buf_b_stag
Definition: WarpX.H:1490
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_aux
Definition: WarpX.H:1465
static int current_centering_nox
Order of finite centering of currents (from nodal grid to staggered grid), along x.
Definition: WarpX.H:266
static bool use_filter_compensation
If true, a compensation step is added to the bilinear filtering of charge and currents.
Definition: WarpX.H:303
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > vector_potential_grad_buf_e_stag
Definition: WarpX.H:1489
amrex::Vector< std::array< std::unique_ptr< amrex::LayoutData< FaceInfoBox > >, 3 > > m_borrowing
Definition: WarpX.H:1522
static short charge_deposition_algo
Integer that corresponds to the charge deposition algorithm (only standard deposition)
Definition: WarpX.H:155
amrex::Real gett_new(int lev) const
Definition: WarpX.H:849
amrex::Vector< amrex::Real > dt
Definition: WarpX.H:1450
amrex::Vector< std::unique_ptr< amrex::MultiFab > > rho_slice
Definition: WarpX.H:1700
amrex::Vector< std::unique_ptr< amrex::MultiFab > > F_cp
Definition: WarpX.H:1547
amrex::RealVect fine_tag_hi
Definition: WarpX.H:1682
amrex::IntVect get_ng_fieldgather() const
Definition: WarpX.H:939
amrex::IntVect get_ng_depos_rho() const
Definition: WarpX.H:938
static int poisson_solver_id
Definition: WarpX.H:898
static int start_moving_window_step
Definition: WarpX.H:907
amrex::Vector< int > istep
Definition: WarpX.H:1445
static int electrostatic_solver_id
Definition: WarpX.H:897
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:1077
amrex::Vector< std::unique_ptr< amrex::MultiFab > > G_slice
Definition: WarpX.H:1699
static int n_current_deposition_buffer
Definition: WarpX.H:354
amrex::Vector< std::unique_ptr< amrex::MultiFab > > F_fp
Definition: WarpX.H:1469
int Verbose() const
Definition: WarpX.H:110
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_cax
Definition: WarpX.H:1557
amrex::Vector< std::unique_ptr< amrex::MultiFab > > charge_buf
Definition: WarpX.H:1564
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > m_edge_lengths
EB: Lengths of the mesh edges.
Definition: WarpX.H:1497
const amrex::iMultiFab * getCurrentBufferMasks(int lev) const
Definition: WarpX.H:1379
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_avg_fp
Definition: WarpX.H:1477
amrex::Vector< int > injected_plasma_species
Definition: WarpX.H:1607
static bool do_device_synchronize
Definition: WarpX.H:344
static int max_picard_iterations
The maximum number of Picard iterations to do each time step.
Definition: WarpX.H:165
static bool use_kspace_filter
If true, the bilinear filtering of charge and currents is done in Fourier space.
Definition: WarpX.H:301
int getistep(int lev) const
Definition: WarpX.H:844
std::unique_ptr< MultiDiagnostics > multi_diags
Definition: WarpX.H:1454
static int noy
Order of the particle shape factors (splines) along y.
Definition: WarpX.H:254
amrex::Vector< int > nsubsteps
Definition: WarpX.H:1446
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:263
void sett_new(int lev, amrex::Real time)
Definition: WarpX.H:850
static amrex::Real picard_iteration_tolerance
The tolerance for the Picard iteration convergence.
Definition: WarpX.H:167
amrex::IntVect getngF() const
Definition: WarpX.H:935
static amrex::Real beta_boost
Beta value corresponding to the Lorentz factor of the boosted frame of the simulation.
Definition: WarpX.H:311
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_fp_external
Definition: WarpX.H:1493
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:249
std::unique_ptr< MultiParticleContainer > mypc
Definition: WarpX.H:1453
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_buf
Definition: WarpX.H:1563
static bool use_filter
If true, a bilinear filter is used to smooth charge and currents.
Definition: WarpX.H:299
static amrex::IntVect m_fill_guards_current
Whether to fill guard cells when computing inverse FFTs of currents.
Definition: WarpX.H:243
void LoadExternalFieldsFromFile(int lev)
Load field values from a user-specified openPMD file, for the fields Ex, Ey, Ez, Bx,...
MacroscopicProperties & GetMacroscopicProperties()
Definition: WarpX.H:124
MagnetostaticSolver::VectorPoissonBoundaryHandler m_vector_poisson_boundary_handler
Definition: WarpX.H:976
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > vector_potential_fp_nodal
Definition: WarpX.H:1488
ElectrostaticSolver::PoissonBoundaryHandler m_poisson_boundary_handler
Definition: WarpX.H:951
static amrex::IntVect shared_tilesize
tileSize to use for shared current deposition operations
Definition: WarpX.H:237
amrex::Vector< std::unique_ptr< FiniteDifferenceSolver > > m_fdtd_solver_fp
Definition: WarpX.H:1937
amrex::Vector< amrex::Real > gett_old() const
Definition: WarpX.H:846
static int current_centering_noz
Order of finite centering of currents (from nodal grid to staggered grid), along z.
Definition: WarpX.H:270
static bool safe_guard_cells
Definition: WarpX.H:345
amrex::IntVect getngUpdateAux() const
Definition: WarpX.H:936
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_cp
Definition: WarpX.H:1551
amrex::Vector< std::unique_ptr< amrex::MultiFab > > rho_fp
Definition: WarpX.H:1471
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_n
Definition: WarpX.H:1481
static amrex::Vector< FieldBoundaryType > field_boundary_hi
Definition: WarpX.H:189
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_fp
Definition: WarpX.H:1476
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_save
Definition: WarpX.H:1483
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > ECTRhofield
Definition: WarpX.H:1531
amrex::Vector< amrex::Real > t_old
Definition: WarpX.H:1449
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:338
static bool refine_plasma
Definition: WarpX.H:330
amrex::FabFactory< amrex::FArrayBox > const & fieldFactory(int lev) const noexcept
Definition: WarpX.H:1727
static int macroscopic_solver_algo
Definition: WarpX.H:179
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_aux
Definition: WarpX.H:1466
static int ncomps
Definition: WarpX.H:278
static int moving_window_active(int const step)
Definition: WarpX.H:914
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_save
Definition: WarpX.H:1484
static bool galerkin_interpolation
Definition: WarpX.H:292
amrex::Vector< std::unique_ptr< NCIGodfreyFilter > > nci_godfrey_filter_bxbyez
Definition: WarpX.H:528
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > m_area_mod
Definition: WarpX.H:1518
static amrex::IntVect filter_npass_each_dir
Definition: WarpX.H:525
amrex::IntVect get_numprocs() const
Definition: WarpX.H:948
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Venl
Definition: WarpX.H:1535
static short electromagnetic_solver_id
Integer that corresponds to the type of Maxwell solver (Yee, CKC, PSATD, ECT)
Definition: WarpX.H:161
amrex::Real v_particle_pml
Definition: WarpX.H:1597
amrex::IntVect get_ng_depos_J() const
Definition: WarpX.H:937
BilinearFilter bilinear_filter
Definition: WarpX.H:526
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_avg_fp
Definition: WarpX.H:1478
static int field_centering_noy
Order of finite centering of fields (from staggered grid to nodal grid), along y.
Definition: WarpX.H:261
amrex::Real getdt(int lev) const
Definition: WarpX.H:852
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_fp_external
Definition: WarpX.H:1494
HybridPICModel * get_pointer_HybridPICModel() const
Definition: WarpX.H:126
amrex::Vector< std::unique_ptr< NCIGodfreyFilter > > nci_godfrey_filter_exeybz
Definition: WarpX.H:527
static bool do_current_centering
Definition: WarpX.H:214
amrex::Vector< amrex::Real > mirror_z
Definition: WarpX.H:537
amrex::Vector< std::unique_ptr< amrex::MultiFab > > F_slice
Definition: WarpX.H:1698
int getdo_moving_window() const
Definition: WarpX.H:853
static bool do_subcycling
Definition: WarpX.H:340
static int n_rz_azimuthal_modes
Number of modes for the RZ multi-mode version.
Definition: WarpX.H:273
static short J_in_time
Definition: WarpX.H:208
std::unique_ptr< ExternalFieldParams > m_p_ext_field_params
Definition: WarpX.H:1600
static amrex::Real gamma_boost
Lorentz factor of the boosted frame in which a boosted-frame simulation is run.
Definition: WarpX.H:309
static short field_gathering_algo
Integer that corresponds to the field gathering algorithm (energy-conserving, momentum-conserving)
Definition: WarpX.H:157
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_avg_cp
Definition: WarpX.H:1554
static int shared_mem_current_tpb
number of threads to use per block in shared deposition
Definition: WarpX.H:234
static short load_balance_costs_update_algo
Definition: WarpX.H:173
amrex::Vector< std::unique_ptr< FiniteDifferenceSolver > > m_fdtd_solver_cp
Definition: WarpX.H:1938
void computeMaxStepBoostAccelerator()
amrex::Vector< amrex::Real > mirror_z_width
Definition: WarpX.H:538
std::unique_ptr< MultiReducedDiags > reduced_diags
object with all reduced diagnostics, similar to MultiParticleContainer for species.
Definition: WarpX.H:542
amrex::Vector< std::unique_ptr< amrex::iMultiFab > > current_buffer_masks
Definition: WarpX.H:1559
std::string m_authors
Author of an input file / simulation setup.
Definition: WarpX.H:1443
int slice_max_grid_size
Definition: WarpX.H:1694
amrex::Vector< std::unique_ptr< amrex::MultiFab > > G_cp
Definition: WarpX.H:1548
static bool require_picard_convergence
Flags whether the Picard iterations are required to converge.
Definition: WarpX.H:169
static amrex::Real self_fields_absolute_tolerance
Definition: WarpX.H:902
amrex::Vector< std::unique_ptr< AcceleratorLattice > > m_accelerator_lattice
Definition: WarpX.H:1717
static amrex::Vector< ParticleBoundaryType > particle_boundary_hi
Definition: WarpX.H:199
std::optional< amrex::Real > m_const_dt
Definition: WarpX.H:1609
FiniteDifferenceSolver * get_pointer_fdtd_solver_fp(int lev)
Definition: WarpX.H:1180
amrex::RealBox slice_realbox
Definition: WarpX.H:1696
amrex::Vector< amrex::IntVect > do_pml_Lo
Definition: WarpX.H:1591
amrex::Vector< std::unique_ptr< SpectralSolverRZ > > spectral_solver_cp
Definition: WarpX.H:1929
amrex::Real getmoving_window_x() const
Definition: WarpX.H:854
bool do_pml_dive_cleaning
Definition: WarpX.H:1589
const PML_RZ * getPMLRZ()
Definition: WarpX.H:513
static bool compute_max_step_from_btd
If true, the code will compute max_step from the back transformed diagnostics.
Definition: WarpX.H:327
bool current_correction
If true, a correction is applied to the current in Fourier space,.
Definition: WarpX.H:218
static int end_moving_window_step
Definition: WarpX.H:908
static utils::parser::IntervalsParser sort_intervals
Definition: WarpX.H:332
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_fp
Definition: WarpX.H:1475
Definition: WarpXParticleContainer.H:111
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:20
This class is a parser for multiple slices of the form x,y,z,... where x, y and z are slices of the f...
Definition: IntervalsParser.H:103
void computeVectorPotential(amrex::Vector< amrex::Array< amrex::MultiFab *, 3 > > const &curr, amrex::Vector< amrex::Array< amrex::MultiFab *, 3 > > &A, amrex::Real const relative_tolerance, amrex::Real absolute_tolerance, int const max_iters, int const verbosity, amrex::Vector< amrex::Geometry > const &geom, amrex::Vector< amrex::DistributionMapping > const &dmap, amrex::Vector< amrex::BoxArray > const &grids, T_BoundaryHandler const boundary_handler, bool const do_single_precision_comms=false, std::optional< amrex::Vector< amrex::IntVect > > rel_ref_ratio=std::nullopt, [[maybe_unused]] T_PostACalculationFunctor post_A_calculation=std::nullopt, [[maybe_unused]] std::optional< amrex::Real const > current_time=std::nullopt, [[maybe_unused]] std::optional< amrex::Vector< T_FArrayBoxFactory const * > > eb_farray_box_factory=std::nullopt)
Definition: VectorPoissonSolver.H:86
void computePhi(amrex::Vector< amrex::MultiFab * > const &rho, amrex::Vector< amrex::MultiFab * > &phi, std::array< amrex::Real, 3 > const beta, amrex::Real const relative_tolerance, amrex::Real absolute_tolerance, int const max_iters, int const verbosity, amrex::Vector< amrex::Geometry > const &geom, amrex::Vector< amrex::DistributionMapping > const &dmap, amrex::Vector< amrex::BoxArray > const &grids, T_BoundaryHandler const boundary_handler, [[maybe_unused]] bool is_solver_multigrid, 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:98
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