26 #ifdef WARPX_USE_PSATD
42 #include "Utils/export.H"
47 #include <AMReX_Config.H>
87 static WarpX& GetInstance ();
89 static void ResetInstance ();
111 static std::string PicsarVersion ();
117 void Evolve (
int numsteps = -1);
127 int num_shift,
int dir,
int lev,
bool update_cost_flag,
128 amrex::Real external_field=0.0,
bool useparser =
false,
225 bool update_with_rho =
false;
381 static void AllocInitMultiFab (
382 std::unique_ptr<amrex::MultiFab>& mf,
388 const std::string&
name,
389 std::optional<const amrex::Real> initial_value = {});
406 static void AllocInitMultiFab (
407 std::unique_ptr<amrex::iMultiFab>& mf,
413 const std::string&
name,
414 std::optional<const int> initial_value = {});
427 static void AliasInitMultiFab (
428 std::unique_ptr<amrex::MultiFab>& mf,
433 const std::string&
name,
434 std::optional<const amrex::Real> initial_value);
442 std::array<const amrex::MultiFab* const, 3>
445 Bfield_aux[lev][0].get(),
446 Bfield_aux[lev][1].get(),
447 Bfield_aux[lev][2].get()
450 std::array<const amrex::MultiFab* const, 3>
453 Efield_aux[lev][0].get(),
454 Efield_aux[lev][1].get(),
455 Efield_aux[lev][2].get()
505 bool DoPML ()
const {
return do_pml;}
507 #if (defined WARPX_DIM_RZ) && (defined WARPX_USE_PSATD)
512 std::vector<bool> getPMLdirections()
const;
516 void setLoadBalanceEfficiency (
int lev, amrex::Real efficiency);
518 amrex::Real getLoadBalanceEfficiency (
int lev);
525 amrex::Real time_of_last_gal_shift = 0;
539 void applyMirrors(amrex::Real time);
551 void PrintDtDxDyDz ();
566 int MoveWindow (
int step,
bool move_j);
573 void ShiftGalileanBoundary ();
579 void UpdateInjectionPosition (amrex::Real
dt);
582 void EvolveE ( amrex::Real
dt);
583 void EvolveE (
int lev, amrex::Real
dt);
584 void EvolveB ( amrex::Real
dt,
DtType dt_type);
585 void EvolveB (
int lev, amrex::Real
dt,
DtType dt_type);
586 void EvolveF ( amrex::Real
dt,
DtType dt_type);
587 void EvolveF (
int lev, amrex::Real
dt,
DtType dt_type);
588 void EvolveG ( amrex::Real
dt,
DtType dt_type);
589 void EvolveG (
int lev, amrex::Real
dt,
DtType dt_type);
591 void EvolveE (
int lev,
PatchType patch_type, amrex::Real
dt);
595 void MacroscopicEvolveE ( amrex::Real
dt);
596 void MacroscopicEvolveE (
int lev, amrex::Real
dt);
597 void MacroscopicEvolveE (
int lev,
PatchType patch_type, amrex::Real
dt);
604 void HybridPICEvolveFields ();
613 void HybridPICDepositInitialRhoAndJ ();
626 void Hybrid_QED_Push (
int lev, amrex::Real
dt);
634 void Hybrid_QED_Push (
int lev,
PatchType patch_type, amrex::Real
dt);
649 return load_balance_intervals;
659 void DampFieldsInGuards (
int lev,
660 const std::array<std::unique_ptr<amrex::MultiFab>,3>& Efield,
661 const std::array<std::unique_ptr<amrex::MultiFab>,3>& Bfield);
670 void DampFieldsInGuards (
int lev, std::unique_ptr<amrex::MultiFab>& mf);
699 void ApplyEfieldBoundary (
int lev,
PatchType patch_type);
700 void ApplyBfieldBoundary (
int lev,
PatchType patch_type,
DtType dt_type);
710 void ApplyElectronPressureBoundary (
int lev,
PatchType patch_type);
713 void DampPML (
int lev);
714 void DampPML (
int lev,
PatchType patch_type);
715 void DampPML_Cartesian (
int lev,
PatchType patch_type);
718 void DampJPML (
int lev);
719 void DampJPML (
int lev,
PatchType patch_type);
722 bool isAnyBoundaryPML();
727 void NodalSyncPML ();
732 void NodalSyncPML (
int lev);
737 void NodalSyncPML (
int lev,
PatchType patch_type);
739 PML* GetPML (
int lev);
740 #if (defined WARPX_DIM_RZ) && (defined WARPX_USE_PSATD)
741 PML_RZ* GetPML_RZ (
int lev);
745 void doFieldIonization ();
749 void doFieldIonization (
int lev);
757 void doQEDEvents (
int lev);
760 void PushParticlesandDepose (
int lev, amrex::Real cur_time,
DtType a_dt_type=
DtType::Full,
bool skip_current=
false);
761 void PushParticlesandDepose ( amrex::Real cur_time,
bool skip_current=
false);
765 void UpdateAuxilaryData ();
766 void UpdateAuxilaryDataStagToNodal ();
767 void UpdateAuxilaryDataSameType ();
803 void SyncCurrentAndRho ();
818 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
819 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp,
820 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_buffer);
825 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_fp,
826 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_cp,
827 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_buffer);
835 amrex::Real
gett_old (
int lev)
const {
return t_old[lev];}
837 amrex::Real
gett_new (
int lev)
const {
return t_new[lev];}
838 void sett_new (
int lev, amrex::Real time) {t_new[lev] = time;}
840 amrex::Real
getdt (
int lev)
const {
return dt.at(lev);}
848 void updateStopTime (
const amrex::Real new_stop_time) {stop_time = new_stop_time;}
858 static std::array<amrex::Real,3> CellSize (
int lev);
869 static std::array<amrex::Real,3> LowerCorner (
const amrex::Box& bx,
int lev, amrex::Real time_shift_delta);
878 static std::array<amrex::Real,3> UpperCorner (
const amrex::Box& bx,
int lev, amrex::Real time_shift_delta);
902 bool const step_before_end = (step < end_moving_window_step) || (end_moving_window_step < 0);
903 bool const step_after_start = (step >= start_moving_window_step);
904 return do_moving_window && step_before_end && step_after_start;
912 const std::array<const amrex::MultiFab* const, 3>& B,
913 const std::array<amrex::Real,3>&
dx);
916 const std::array<const amrex::MultiFab* const, 3>& B,
938 void ComputeSpaceChargeField (
bool reset_fields);
939 void AddBoundaryField ();
941 void AddSpaceChargeFieldLabFrame ();
944 std::array<amrex::Real, 3>
beta = {{0,0,0}},
945 amrex::Real required_precision=amrex::Real(1.e-11),
946 amrex::Real absolute_tolerance=amrex::Real(0.0),
950 void setPhiBC (
amrex::Vector<std::unique_ptr<amrex::MultiFab> >& phi )
const;
952 void computeE (
amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>, 3> >& E,
954 std::array<amrex::Real, 3>
beta = {{0,0,0}} )
const;
955 void computeB (
amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>, 3> >& B,
957 std::array<amrex::Real, 3>
beta = {{0,0,0}} )
const;
958 void computePhiTriDiagonal (
const amrex::Vector<std::unique_ptr<amrex::MultiFab> >& rho,
959 amrex::Vector<std::unique_ptr<amrex::MultiFab> >& phi)
const;
963 void ComputeMagnetostaticField ();
964 void AddMagnetostaticFieldLabFrame ();
967 amrex::Real required_precision=amrex::Real(1.e-11),
968 amrex::Real absolute_tolerance=amrex::Real(0.0),
970 int verbosity=2)
const;
1000 std::array< std::unique_ptr<amrex::MultiFab>, 3 >
const& edge_lengths,
1001 std::array< std::unique_ptr<amrex::MultiFab>, 3 >
const& face_areas,
1007 std::string F_name, std::string F_component);
1026 void ApplyFilterandSumBoundaryRho (
int lev,
int glev,
amrex::MultiFab& rho,
int icomp,
int ncomp);
1123 static void MakeWarpX ();
1129 void HandleSignals ();
1146 void OneStep_nosub (amrex::Real t);
1147 void OneStep_sub1 (amrex::Real t);
1152 void OneStep_multiJ (amrex::Real t);
1154 void RestrictCurrentFromFineToCoarsePatch (
1155 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
1156 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp,
1158 void AddCurrentFromFineLevelandSumBoundary (
1159 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
1160 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp,
1161 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_buffer,
1163 void StoreCurrent (
int lev);
1164 void RestoreCurrent (
int lev);
1166 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& current,
1170 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& current,
1173 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& current,
1178 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& current,
1182 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
1183 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp,
1187 void RestrictRhoFromFineToCoarsePatch (
1188 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_fp,
1189 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_cp,
1191 void ApplyFilterandSumBoundaryRho (
1192 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_fp,
1193 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_cp,
1198 void AddRhoFromFineLevelandSumBoundary (
1199 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_fp,
1200 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_cp,
1201 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_buffer,
1206 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_fp,
1207 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_cp,
1213 void ReadParameters ();
1217 void BackwardCompatibility ();
1225 GetRestartDMap (
const std::string& chkfile,
const amrex::BoxArray& ba,
int lev)
const;
1227 void InitFromCheckpoint ();
1253 void BuildBufferMasks ();
1259 return current_buffer_masks[lev].
get();
1262 return gather_buffer_masks[lev].
get();
1302 #ifdef WARPX_USE_PSATD
1303 # ifdef WARPX_DIM_RZ
1304 void AllocLevelSpectralSolverRZ (
amrex::Vector<std::unique_ptr<SpectralSolverRZ>>& spectral_solver,
1308 const std::array<amrex::Real,3>&
dx);
1310 void AllocLevelSpectralSolver (
amrex::Vector<std::unique_ptr<SpectralSolver>>& spectral_solver,
1314 const std::array<amrex::Real,3>&
dx,
1315 bool pml_flag=
false);
1327 std::unique_ptr<MultiParticleContainer>
mypc;
1432 int do_silver_mueller = 0;
1435 int pml_has_particles = 0;
1436 int do_pml_j_damping = 0;
1437 int do_pml_in_domain = 0;
1444 #if (defined WARPX_DIM_RZ) && (defined WARPX_USE_PSATD)
1449 amrex::Real moving_window_x = std::numeric_limits<amrex::Real>::max();
1452 int warpx_do_continuous_injection = 0;
1453 int num_injected_species = -1;
1472 int load_balance_with_sfc = 0;
1477 amrex::Real load_balance_knapsack_factor = amrex::Real(1.24);
1483 amrex::Real load_balance_efficiency_ratio_threshold = amrex::Real(1.1);
1491 amrex::Real costs_heuristic_cells_wt = amrex::Real(0);
1497 amrex::Real costs_heuristic_particles_wt = amrex::Real(0);
1505 bool use_hybrid_QED = 0;
1507 int max_step = std::numeric_limits<int>::max();
1508 amrex::Real stop_time = std::numeric_limits<amrex::Real>::max();
1510 int regrid_int = -1;
1512 amrex::Real
cfl = amrex::Real(0.999);
1517 bool write_diagonstics_on_restart =
false;
1522 bool use_single_read =
true;
1523 bool use_single_write =
true;
1524 int mffile_nstreams = 4;
1525 int field_io_nfiles = 1024;
1526 int particle_io_nfiles = 1024;
1531 bool is_synchronized =
true;
1534 static constexpr
bool sync_nodal_points =
true;
1540 int slice_plot_int = -1;
1550 bool fft_periodic_single_box =
false;
1572 return *m_field_factory[lev];
1590 static void ComputeEdgeLengths (std::array< std::unique_ptr<amrex::MultiFab>, 3 >& edge_lengths,
1596 static void ComputeFaceAreas (std::array< std::unique_ptr<amrex::MultiFab>, 3 >& face_areas,
1602 static void ScaleEdges (std::array< std::unique_ptr<amrex::MultiFab>, 3 >& edge_lengths,
1603 const std::array<amrex::Real,3>&
cell_size);
1607 static void ScaleAreas (std::array< std::unique_ptr<amrex::MultiFab>, 3 >& face_areas,
1608 const std::array<amrex::Real,3>&
cell_size);
1622 void ComputeDistanceToEB ();
1631 void ComputeFaceExtensions();
1635 void InitBorrowing();
1639 void ShrinkBorrowing();
1643 void ComputeOneWayExtensions();
1647 void ComputeEightWaysExtensions();
1656 void ApplyBCKCorrection(
int idim);
1662 void PSATDSubtractCurrentPartialSumsAvg ();
1669 #ifdef WARPX_USE_PSATD
1683 void PSATDForwardTransformEB (
1684 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& E_fp,
1685 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& B_fp,
1686 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& E_cp,
1687 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& B_cp);
1702 void PSATDBackwardTransformEB (
1703 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& E_fp,
1704 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& B_fp,
1705 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& E_cp,
1706 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& B_cp);
1720 void PSATDBackwardTransformEBavg (
1721 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& E_avg_fp,
1722 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& B_avg_fp,
1723 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& E_avg_cp,
1724 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& B_avg_cp);
1737 void PSATDForwardTransformJ (
1738 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
1739 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp,
1740 bool apply_kspace_filter=
true);
1750 void PSATDBackwardTransformJ (
1751 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
1752 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp);
1765 void PSATDForwardTransformRho (
1766 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_fp,
1767 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_cp,
1768 int icomp,
int dcomp,
bool apply_kspace_filter=
true);
1773 void PSATDMoveRhoNewToRhoOld ();
1778 void PSATDMoveJNewToJOld ();
1783 void PSATDForwardTransformF ();
1788 void PSATDBackwardTransformF ();
1793 void PSATDForwardTransformG ();
1798 void PSATDBackwardTransformG ();
1803 void PSATDCurrentCorrection ();
1808 void PSATDVayDeposition ();
1813 void PSATDPushSpectralFields ();
1820 void PSATDScaleAverageFields (amrex::Real scale_factor);
1825 void PSATDEraseAverageFields ();
1827 # ifdef WARPX_DIM_RZ
1837 # ifdef WARPX_DIM_RZ
PatchType
Definition: WarpX.H:75
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: MultiParticleContainer.H:65
void FillBoundaryE()
Definition: PML.cpp:1241
void PushPSATD(int lev)
Definition: PML.cpp:1382
void FillBoundaryG()
Definition: PML.cpp:1311
void FillBoundaryB()
Definition: PML.cpp:1265
std::unique_ptr< SpectralSolver > spectral_solver_cp
Definition: PML.H:244
std::unique_ptr< SpectralSolver > spectral_solver_fp
Definition: PML.H:243
void FillBoundaryF()
Definition: PML.cpp:1289
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:1559
static int self_fields_max_iters
Definition: WarpX.H:890
const amrex::MultiFab & getrho_fp(int lev)
Definition: WarpX.H:495
static int field_centering_nox
Order of finite centering of fields (from staggered grid to nodal grid), along x.
Definition: WarpX.H:262
amrex::Vector< std::unique_ptr< amrex::LayoutData< amrex::Real > > > costs
Definition: WarpX.H:1470
static short current_deposition_algo
Integer that corresponds to the current deposition algorithm (Esirkepov, direct, Vay)
Definition: WarpX.H:164
amrex::Vector< std::unique_ptr< amrex::MultiFab > > G_fp
Definition: WarpX.H:1340
amrex::Gpu::DeviceVector< amrex::Real > device_field_centering_stencil_coeffs_y
Definition: WarpX.H:1040
static int moving_window_dir
Definition: WarpX.H:906
amrex::Gpu::DeviceVector< amrex::Real > device_current_centering_stencil_coeffs_x
Definition: WarpX.H:1044
static bool do_dive_cleaning
Definition: WarpX.H:250
static amrex::Real zmax_plasma_to_compute_max_step
Definition: WarpX.H:320
amrex::MultiFab * get_pointer_edge_lengths(int lev, int direction) const
Definition: WarpX.H:479
amrex::MultiFab * get_pointer_Efield_fp(int lev, int direction) const
Definition: WarpX.H:462
const amrex::MultiFab & getEfield_fp(int lev, int direction)
Definition: WarpX.H:493
amrex::Vector< int > getnsubsteps() const
Definition: WarpX.H:829
static bool do_multi_J
Definition: WarpX.H:344
std::unique_ptr< MacroscopicProperties > m_macroscopic_properties
Definition: WarpX.H:1459
MultiDiagnostics & GetMultiDiags()
Definition: WarpX.H:122
bool DoPML() const
Definition: WarpX.H:505
const amrex::MultiFab & getcurrent_cp(int lev, int direction)
Definition: WarpX.H:485
static short rho_in_time
Definition: WarpX.H:212
amrex::Vector< std::unique_ptr< amrex::FabFactory< amrex::FArrayBox > > > m_field_factory
Definition: WarpX.H:1569
bool getis_synchronized() const
Definition: WarpX.H:843
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_cp
Definition: WarpX.H:1414
amrex::Vector< std::unique_ptr< amrex::MultiFab > > m_distance_to_eb
Definition: WarpX.H:1402
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_slice
Definition: WarpX.H:1547
static short psatd_solution_type
Definition: WarpX.H:207
amrex::Vector< std::unique_ptr< amrex::iMultiFab > > gather_buffer_masks
Definition: WarpX.H:1424
void updateStopTime(const amrex::Real new_stop_time)
Definition: WarpX.H:848
std::array< const amrex::MultiFab *const, 3 > get_array_Efield_aux(const int lev) const
Definition: WarpX.H:451
amrex::Vector< int > mirror_z_npoints
Definition: WarpX.H:534
static amrex::Real zmin_domain_boost_step_0
Definition: WarpX.H:327
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_slice
Definition: WarpX.H:1546
static bool do_compute_max_step_from_zmax
Definition: WarpX.H:324
static amrex::Vector< int > field_boundary_lo
Definition: WarpX.H:187
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:339
SpectralSolverRZ & get_spectral_solver_fp(int lev)
Definition: WarpX.H:1842
static int n_field_gather_buffer
Definition: WarpX.H:353
static int do_multi_J_n_depositions
Definition: WarpX.H:345
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:1408
amrex::Vector< amrex::Real > t_new
Definition: WarpX.H:1322
static bool do_single_precision_comms
perform field communications in single precision
Definition: WarpX.H:228
amrex::IntVect slice_cr_ratio
Definition: WarpX.H:1542
static amrex::Vector< ParticleBoundaryType > particle_boundary_lo
Definition: WarpX.H:197
static amrex::Vector< amrex::Real > B_external_grid
Initial magnetic field on the grid.
Definition: WarpX.H:137
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_store
Definition: WarpX.H:1405
void CheckKnownIssues()
Checks for known numerical issues involving different WarpX modules.
guardCellManager guard_cells
Definition: WarpX.H:1536
static bool do_shared_mem_charge_deposition
used shared memory algorithm for charge deposition
Definition: WarpX.H:231
static int em_solver_medium
Integer that corresponds to electromagnetic Maxwell solver (vacuum - 0, macroscopic - 1)
Definition: WarpX.H:178
MultiParticleContainer & GetPartContainer()
Definition: WarpX.H:119
static amrex::Vector< int > boost_direction
Direction of the Lorentz transform that defines the boosted frame of the simulation.
Definition: WarpX.H:316
static bool use_fdtd_nci_corr
Definition: WarpX.H:285
static bool verboncoeur_axis_correction
Definition: WarpX.H:299
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:907
static bool do_shared_mem_current_deposition
use shared memory algorithm for current deposition
Definition: WarpX.H:234
amrex::Vector< amrex::IntVect > do_pml_Hi
Definition: WarpX.H:1442
void setistep(int lev, int ii)
Definition: WarpX.H:833
amrex::MultiFab * get_pointer_vector_potential_fp(int lev, int direction) const
Definition: WarpX.H:470
static bool fft_do_time_averaging
Definition: WarpX.H:908
static short particle_pusher_algo
Integer that corresponds to the particle push algorithm (Boris, Vay, Higuera-Cary)
Definition: WarpX.H:170
amrex::Vector< std::unique_ptr< PML > > pml
Definition: WarpX.H:1443
amrex::RealVect fine_tag_lo
Definition: WarpX.H:1528
std::string restart_chkfile
Definition: WarpX.H:1514
static WarpX * m_instance
Definition: WarpX.H:1126
const amrex::MultiFab & getG_fp(int lev)
Definition: WarpX.H:498
amrex::Vector< std::unique_ptr< amrex::MultiFab > > rho_cp
Definition: WarpX.H:1413
amrex::MultiFab * get_pointer_G_fp(int lev) const
Definition: WarpX.H:468
static bool do_dynamic_scheduling
Definition: WarpX.H:332
const amrex::MultiFab & getBfield_cp(int lev, int direction)
Definition: WarpX.H:487
static std::string E_ext_grid_s
Initialization type for external electric field on the grid.
Definition: WarpX.H:142
amrex::Gpu::DeviceVector< amrex::Real > device_field_centering_stencil_coeffs_z
Definition: WarpX.H:1041
amrex::MultiFab * get_pointer_phi_fp(int lev) const
Definition: WarpX.H:469
static int self_fields_verbosity
Definition: WarpX.H:891
amrex::Real stopTime() const
Definition: WarpX.H:847
std::unique_ptr< amrex::Parser > Byfield_parser
User-defined parser to initialize y-component of the magnetic field on the grid.
Definition: WarpX.H:152
amrex::Vector< std::unique_ptr< PML_RZ > > pml_rz
Definition: WarpX.H:1445
const amrex::MultiFab & getphi_fp(int lev)
Definition: WarpX.H:496
static std::map< std::string, amrex::MultiFab * > multifab_map
Definition: WarpX.H:439
amrex::Gpu::DeviceVector< amrex::Real > device_field_centering_stencil_coeffs_x
Definition: WarpX.H:1039
amrex::MultiFab * get_pointer_current_fp(int lev, int direction) const
Definition: WarpX.H:464
std::unique_ptr< HybridPICModel > m_hybrid_pic_model
Definition: WarpX.H:1462
amrex::MultiFab * get_pointer_current_cp(int lev, int direction) const
Definition: WarpX.H:474
amrex::Vector< amrex::Real > getdt() const
Definition: WarpX.H:839
static int noz
Order of the particle shape factors (splines) along z.
Definition: WarpX.H:259
amrex::Gpu::DeviceVector< amrex::Real > device_current_centering_stencil_coeffs_z
Definition: WarpX.H:1046
amrex::Vector< amrex::Real > gett_new() const
Definition: WarpX.H:836
const amrex::MultiFab & getBfield_avg_cp(int lev, int direction)
Definition: WarpX.H:503
static int num_mirrors
Definition: WarpX.H:531
amrex::MultiFab * get_pointer_face_areas(int lev, int direction) const
Definition: WarpX.H:480
amrex::Vector< std::unique_ptr< amrex::MultiFab > > phi_fp
Definition: WarpX.H:1342
ParticleBoundaryBuffer & GetParticleBoundaryBuffer()
Definition: WarpX.H:124
void WriteUsedInputsFile() const
bool do_pml_divb_cleaning
Definition: WarpX.H:1440
amrex::Vector< int > getistep() const
Definition: WarpX.H:831
static int current_centering_noy
Order of finite centering of currents (from nodal grid to staggered grid), along y.
Definition: WarpX.H:271
amrex::Gpu::DeviceVector< amrex::Real > device_current_centering_stencil_coeffs_y
Definition: WarpX.H:1045
static bool add_external_E_field
Whether to apply the effect of an externally-defined electric field.
Definition: WarpX.H:145
amrex::MultiFab * get_pointer_Efield_aux(int lev, int direction) const
Definition: WarpX.H:459
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_avg_cp
Definition: WarpX.H:1417
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:488
amrex::Vector< amrex::Real > load_balance_efficiency
Definition: WarpX.H:1485
static amrex::Real self_fields_required_precision
Definition: WarpX.H:888
static amrex::IntVect sort_bin_size
Definition: WarpX.H:336
amrex::IntVect m_rho_nodal_flag
Definition: WarpX.H:364
static std::map< std::string, amrex::iMultiFab * > imultifab_map
Definition: WarpX.H:440
utils::parser::IntervalsParser load_balance_intervals
Definition: WarpX.H:1467
amrex::Vector< std::array< std::unique_ptr< amrex::iMultiFab >, 3 > > m_flag_ext_face
Definition: WarpX.H:1378
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_fp
Definition: WarpX.H:1343
amrex::IntVect getngEB() const
Definition: WarpX.H:921
utils::parser::IntervalsParser override_sync_intervals
Definition: WarpX.H:1500
std::unique_ptr< amrex::Parser > Bxfield_parser
User-defined parser to initialize x-component of the magnetic field on the grid.
Definition: WarpX.H:150
utils::parser::IntervalsParser get_load_balance_intervals() const
returns the load balance interval
Definition: WarpX.H:647
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > m_face_areas
EB: Areas of the mesh faces.
Definition: WarpX.H:1363
amrex::Real gett_old(int lev) const
Definition: WarpX.H:835
std::unique_ptr< amrex::Parser > Exfield_parser
User-defined parser to initialize x-component of the electric field on the grid.
Definition: WarpX.H:156
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_cax
Definition: WarpX.H:1422
amrex::MultiFab * get_pointer_F_cp(int lev) const
Definition: WarpX.H:476
const amrex::MultiFab & getF_fp(int lev)
Definition: WarpX.H:497
static int do_moving_window
Definition: WarpX.H:893
amrex::MultiFab * get_pointer_Efield_cp(int lev, int direction) const
Definition: WarpX.H:472
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:845
static int nox
Order of the particle shape factors (splines) along x.
Definition: WarpX.H:255
int getnsubsteps(int lev) const
Definition: WarpX.H:830
WarpX(WarpX const &)=delete
static amrex::Real quantum_xi_c2
Definition: WarpX.H:636
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_slice
Definition: WarpX.H:1548
amrex::Vector< std::array< std::unique_ptr< amrex::iMultiFab >, 3 > > m_flag_info_face
Definition: WarpX.H:1371
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_fp_vay
Definition: WarpX.H:1344
void updateMaxStep(const int new_max_step)
Definition: WarpX.H:846
HybridPICModel & GetHybridPICModel()
Definition: WarpX.H:121
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_cp
Definition: WarpX.H:1416
static bool serialize_initial_conditions
If true, the initial conditions from random number generators are serialized (useful for reproducible...
Definition: WarpX.H:309
const amrex::iMultiFab * getGatherBufferMasks(int lev) const
Definition: WarpX.H:1261
std::unique_ptr< amrex::Parser > Bzfield_parser
User-defined parser to initialize z-component of the magnetic field on the grid.
Definition: WarpX.H:154
amrex::Vector< std::unique_ptr< SpectralSolverRZ > > spectral_solver_fp
Definition: WarpX.H:1828
static amrex::IntVect m_fill_guards_fields
Whether to fill guard cells when computing inverse FFTs of fields.
Definition: WarpX.H:243
static short grid_type
Definition: WarpX.H:361
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > vector_potential_grad_buf_b_stag
Definition: WarpX.H:1354
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_aux
Definition: WarpX.H:1335
const amrex::MultiFab & getEfield_cp(int lev, int direction)
Definition: WarpX.H:486
static int current_centering_nox
Order of finite centering of currents (from nodal grid to staggered grid), along x.
Definition: WarpX.H:269
amrex::MultiFab * get_pointer_Bfield_aux(int lev, int direction) const
Definition: WarpX.H:460
static bool use_filter_compensation
If true, a compensation step is added to the bilinear filtering of charge and currents.
Definition: WarpX.H:306
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > vector_potential_grad_buf_e_stag
Definition: WarpX.H:1353
amrex::Vector< std::array< std::unique_ptr< amrex::LayoutData< FaceInfoBox > >, 3 > > m_borrowing
Definition: WarpX.H:1386
static bool add_external_B_field
Whether to apply the effect of an externally-defined magnetic field.
Definition: WarpX.H:147
static short charge_deposition_algo
Integer that corresponds to the charge deposition algorithm (only standard deposition)
Definition: WarpX.H:166
amrex::Real gett_new(int lev) const
Definition: WarpX.H:837
amrex::Vector< amrex::Real > dt
Definition: WarpX.H:1324
amrex::Vector< std::unique_ptr< amrex::MultiFab > > rho_slice
Definition: WarpX.H:1545
amrex::Vector< std::unique_ptr< amrex::MultiFab > > F_cp
Definition: WarpX.H:1411
amrex::RealVect fine_tag_hi
Definition: WarpX.H:1529
amrex::IntVect get_ng_fieldgather() const
Definition: WarpX.H:926
amrex::IntVect get_ng_depos_rho() const
Definition: WarpX.H:925
static int start_moving_window_step
Definition: WarpX.H:894
amrex::Vector< int > istep
Definition: WarpX.H:1319
static int electrostatic_solver_id
Definition: WarpX.H:885
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:1053
amrex::Vector< std::unique_ptr< amrex::MultiFab > > G_slice
Definition: WarpX.H:1544
static int n_current_deposition_buffer
Definition: WarpX.H:357
amrex::Vector< std::unique_ptr< amrex::MultiFab > > F_fp
Definition: WarpX.H:1339
static amrex::Vector< int > field_boundary_hi
Definition: WarpX.H:192
int Verbose() const
Definition: WarpX.H:113
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_cax
Definition: WarpX.H:1421
amrex::Vector< std::unique_ptr< amrex::MultiFab > > charge_buf
Definition: WarpX.H:1428
std::array< const amrex::MultiFab *const, 3 > get_array_Bfield_aux(const int lev) const
Definition: WarpX.H:443
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > m_edge_lengths
EB: Lengths of the mesh edges.
Definition: WarpX.H:1361
const amrex::iMultiFab * getCurrentBufferMasks(int lev) const
Definition: WarpX.H:1258
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_avg_fp
Definition: WarpX.H:1347
amrex::Vector< int > injected_plasma_species
Definition: WarpX.H:1454
static bool do_device_synchronize
Definition: WarpX.H:347
static bool use_kspace_filter
If true, the bilinear filtering of charge and currents is done in Fourier space.
Definition: WarpX.H:304
amrex::MultiFab * get_pointer_F_fp(int lev) const
Definition: WarpX.H:467
int getistep(int lev) const
Definition: WarpX.H:832
std::unique_ptr< MultiDiagnostics > multi_diags
Definition: WarpX.H:1328
std::unique_ptr< amrex::Parser > Ezfield_parser
User-defined parser to initialize z-component of the electric field on the grid.
Definition: WarpX.H:160
static int noy
Order of the particle shape factors (splines) along y.
Definition: WarpX.H:257
void EvolveEM(int numsteps)
amrex::Vector< int > nsubsteps
Definition: WarpX.H:1320
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:266
void sett_new(int lev, amrex::Real time)
Definition: WarpX.H:838
amrex::IntVect getngF() const
Definition: WarpX.H:922
static amrex::Real beta_boost
Beta value corresponding to the Lorentz factor of the boosted frame of the simulation.
Definition: WarpX.H:314
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_fp_external
Definition: WarpX.H:1357
amrex::MultiFab * get_pointer_G_cp(int lev) const
Definition: WarpX.H:477
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:252
std::unique_ptr< MultiParticleContainer > mypc
Definition: WarpX.H:1327
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_buf
Definition: WarpX.H:1427
static bool use_filter
If true, a bilinear filter is used to smooth charge and currents.
Definition: WarpX.H:302
amrex::MultiFab * get_pointer_rho_fp(int lev) const
Definition: WarpX.H:466
static amrex::IntVect m_fill_guards_current
Whether to fill guard cells when computing inverse FFTs of currents.
Definition: WarpX.H:246
MacroscopicProperties & GetMacroscopicProperties()
Definition: WarpX.H:120
MagnetostaticSolver::VectorPoissonBoundaryHandler m_vector_poisson_boundary_handler
Definition: WarpX.H:962
const amrex::MultiFab & getG_cp(int lev)
Definition: WarpX.H:490
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > vector_potential_fp_nodal
Definition: WarpX.H:1352
ElectrostaticSolver::PoissonBoundaryHandler m_poisson_boundary_handler
Definition: WarpX.H:937
static amrex::IntVect shared_tilesize
tileSize to use for shared current deposition operations
Definition: WarpX.H:240
static int do_similar_dm_pml
Definition: WarpX.H:1438
amrex::Vector< std::unique_ptr< FiniteDifferenceSolver > > m_fdtd_solver_fp
Definition: WarpX.H:1849
amrex::Vector< amrex::Real > gett_old() const
Definition: WarpX.H:834
static int current_centering_noz
Order of finite centering of currents (from nodal grid to staggered grid), along z.
Definition: WarpX.H:273
static bool safe_guard_cells
Definition: WarpX.H:348
amrex::IntVect getngUpdateAux() const
Definition: WarpX.H:923
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_cp
Definition: WarpX.H:1415
amrex::Vector< std::unique_ptr< amrex::MultiFab > > rho_fp
Definition: WarpX.H:1341
amrex::MultiFab * get_pointer_rho_cp(int lev) const
Definition: WarpX.H:475
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_fp
Definition: WarpX.H:1346
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > ECTRhofield
Definition: WarpX.H:1395
amrex::Vector< amrex::Real > t_old
Definition: WarpX.H:1323
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:341
static bool refine_plasma
Definition: WarpX.H:333
amrex::FabFactory< amrex::FArrayBox > const & fieldFactory(int lev) const noexcept
Definition: WarpX.H:1571
static int macroscopic_solver_algo
Definition: WarpX.H:182
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_aux
Definition: WarpX.H:1336
static int ncomps
Definition: WarpX.H:281
static int moving_window_active(int const step)
Definition: WarpX.H:901
static bool galerkin_interpolation
Definition: WarpX.H:295
amrex::Vector< std::unique_ptr< NCIGodfreyFilter > > nci_godfrey_filter_bxbyez
Definition: WarpX.H:523
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > m_area_mod
Definition: WarpX.H:1382
static amrex::IntVect filter_npass_each_dir
Definition: WarpX.H:520
amrex::IntVect get_numprocs() const
Definition: WarpX.H:935
const amrex::MultiFab & getBfield_fp(int lev, int direction)
Definition: WarpX.H:494
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Venl
Definition: WarpX.H:1399
static short electromagnetic_solver_id
Integer that corresponds to the type of Maxwell solver (Yee, CKC, PSATD, ECT)
Definition: WarpX.H:172
amrex::Real v_particle_pml
Definition: WarpX.H:1447
amrex::IntVect get_ng_depos_J() const
Definition: WarpX.H:924
BilinearFilter bilinear_filter
Definition: WarpX.H:521
amrex::MultiFab * get_pointer_current_fp_nodal(int lev, int direction) const
Definition: WarpX.H:465
const amrex::MultiFab & getEfield_avg_fp(int lev, int direction)
Definition: WarpX.H:500
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_avg_fp
Definition: WarpX.H:1348
const amrex::MultiFab & getBfield_avg_fp(int lev, int direction)
Definition: WarpX.H:501
static int field_centering_noy
Order of finite centering of fields (from staggered grid to nodal grid), along y.
Definition: WarpX.H:264
amrex::Real getdt(int lev) const
Definition: WarpX.H:840
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_fp_external
Definition: WarpX.H:1358
const amrex::MultiFab & getEfield_avg_cp(int lev, int direction)
Definition: WarpX.H:502
amrex::Vector< std::unique_ptr< NCIGodfreyFilter > > nci_godfrey_filter_exeybz
Definition: WarpX.H:522
static bool do_current_centering
Definition: WarpX.H:217
amrex::Vector< amrex::Real > mirror_z
Definition: WarpX.H:532
amrex::Vector< std::unique_ptr< amrex::MultiFab > > F_slice
Definition: WarpX.H:1543
int getdo_moving_window() const
Definition: WarpX.H:841
static bool do_subcycling
Definition: WarpX.H:343
static int n_rz_azimuthal_modes
Number of modes for the RZ multi-mode version.
Definition: WarpX.H:276
static short J_in_time
Definition: WarpX.H:211
static amrex::Real gamma_boost
Lorentz factor of the boosted frame in which a boosted-frame simulation is run.
Definition: WarpX.H:312
static short field_gathering_algo
Integer that corresponds to the field gathering algorithm (energy-conserving, momentum-conserving)
Definition: WarpX.H:168
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_avg_cp
Definition: WarpX.H:1418
static int shared_mem_current_tpb
number of threads to use per block in shared deposition
Definition: WarpX.H:237
static short load_balance_costs_update_algo
Definition: WarpX.H:176
amrex::MultiFab * get_pointer_Bfield_fp(int lev, int direction) const
Definition: WarpX.H:463
amrex::Vector< std::unique_ptr< FiniteDifferenceSolver > > m_fdtd_solver_cp
Definition: WarpX.H:1850
void computeMaxStepBoostAccelerator()
amrex::Vector< amrex::Real > mirror_z_width
Definition: WarpX.H:533
const amrex::MultiFab & getcurrent_fp(int lev, int direction)
Definition: WarpX.H:492
std::unique_ptr< MultiReducedDiags > reduced_diags
object with all reduced diagnotics, similar to MultiParticleContainer for species.
Definition: WarpX.H:537
const amrex::MultiFab & getBfield(int lev, int direction)
Definition: WarpX.H:483
const amrex::MultiFab & getF_cp(int lev)
Definition: WarpX.H:489
amrex::Vector< std::unique_ptr< amrex::iMultiFab > > current_buffer_masks
Definition: WarpX.H:1423
amrex::MultiFab * get_pointer_Bfield_cp(int lev, int direction) const
Definition: WarpX.H:473
int slice_max_grid_size
Definition: WarpX.H:1539
static std::string B_ext_grid_s
Initialization type for external magnetic field on the grid.
Definition: WarpX.H:140
amrex::Vector< std::unique_ptr< amrex::MultiFab > > G_cp
Definition: WarpX.H:1412
const amrex::MultiFab & getEfield(int lev, int direction)
Definition: WarpX.H:482
std::unique_ptr< amrex::Parser > Eyfield_parser
User-defined parser to initialize y-component of the electric field on the grid.
Definition: WarpX.H:158
static amrex::Real self_fields_absolute_tolerance
Definition: WarpX.H:889
amrex::Vector< std::unique_ptr< AcceleratorLattice > > m_accelerator_lattice
Definition: WarpX.H:1562
static amrex::Vector< ParticleBoundaryType > particle_boundary_hi
Definition: WarpX.H:202
std::optional< amrex::Real > m_const_dt
Definition: WarpX.H:1456
FiniteDifferenceSolver * get_pointer_fdtd_solver_fp(int lev)
Definition: WarpX.H:1846
amrex::RealBox slice_realbox
Definition: WarpX.H:1541
amrex::Vector< amrex::IntVect > do_pml_Lo
Definition: WarpX.H:1441
amrex::Vector< std::unique_ptr< SpectralSolverRZ > > spectral_solver_cp
Definition: WarpX.H:1829
amrex::Real getmoving_window_x() const
Definition: WarpX.H:842
static amrex::Vector< amrex::Real > E_external_grid
Initial electric field on the grid.
Definition: WarpX.H:135
bool do_pml_dive_cleaning
Definition: WarpX.H:1439
static std::string authors
Author of an input file / simulation setup.
Definition: WarpX.H:132
const PML_RZ * getPMLRZ()
Definition: WarpX.H:508
static bool compute_max_step_from_btd
If true, the code will compute max_step from the back transformed diagnostics.
Definition: WarpX.H:330
bool current_correction
If true, a correction is applied to the current in Fourier space,.
Definition: WarpX.H:221
static int end_moving_window_step
Definition: WarpX.H:895
static utils::parser::IntervalsParser sort_intervals
Definition: WarpX.H:335
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_fp
Definition: WarpX.H:1345
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:440
tuple dx
lab frame
Definition: stencil.py:427
beta
Definition: stencil.py:432
float cfl
Definition: stencil.py:437
string field
Definition: video_yt.py:31