25 #ifdef WARPX_USE_PSATD 45 #include <AMReX_Config.H> 84 static WarpX& GetInstance ();
85 static void ResetInstance ();
91 static std::string PicsarVersion ();
97 void Evolve (
int numsteps = -1);
106 int num_shift,
int dir,
const int lev,
bool update_cost_flag,
107 amrex::Real external_field=0.0,
bool useparser =
false,
110 static void GotoNextLine (std::istream& is);
219 bool update_with_rho =
false;
374 static void AllocInitMultiFab (
375 std::unique_ptr<amrex::MultiFab>& mf,
380 const std::string&
name,
381 std::optional<const amrex::Real> initial_value = {});
397 static void AllocInitMultiFab (
398 std::unique_ptr<amrex::iMultiFab>& mf,
403 const std::string& name,
404 std::optional<const int> initial_value = {});
416 static void AliasInitMultiFab (
417 std::unique_ptr<amrex::MultiFab>& mf,
421 const std::string& name,
422 std::optional<const amrex::Real> initial_value);
436 static void AddToMultiFabMap(
const std::string& name,
const std::unique_ptr<amrex::MultiFab>& mf) {
437 multifab_map[
name] = mf.get();
446 static void AddToMultiFabMap(
const std::string& name,
const std::unique_ptr<amrex::iMultiFab>& mf) {
447 imultifab_map[
name] = mf.get();
450 std::array<const amrex::MultiFab* const, 3>
453 Bfield_aux[lev][0].get(),
454 Bfield_aux[lev][1].get(),
455 Bfield_aux[lev][2].get()
458 std::array<const amrex::MultiFab* const, 3>
461 Efield_aux[lev][0].get(),
462 Efield_aux[lev][1].get(),
463 Efield_aux[lev][2].get()
513 bool DoPML ()
const {
return do_pml;}
515 #if (defined WARPX_DIM_RZ) && (defined WARPX_USE_PSATD) 520 std::vector<bool> getPMLdirections()
const;
528 m_instance->load_balance_efficiency[lev] = efficiency;
539 return m_instance->load_balance_efficiency[lev];
551 amrex::Real time_of_last_gal_shift = 0;
565 void applyMirrors(amrex::Real time);
571 void PrintMainPICparameters ();
574 void WriteUsedInputsFile ()
const;
577 void PrintDtDxDyDz ();
584 void ComputeMaxStep ();
586 void computeMaxStepBoostAccelerator();
592 int MoveWindow (
const int step,
bool move_j);
599 void ShiftGalileanBoundary ();
600 void UpdatePlasmaInjectionPosition (amrex::Real
dt);
602 void EvolveE ( amrex::Real
dt);
603 void EvolveE (
int lev, amrex::Real
dt);
604 void EvolveB ( amrex::Real
dt,
DtType dt_type);
605 void EvolveB (
int lev, amrex::Real
dt,
DtType dt_type);
606 void EvolveF ( amrex::Real
dt,
DtType dt_type);
607 void EvolveF (
int lev, amrex::Real
dt,
DtType dt_type);
608 void EvolveG ( amrex::Real
dt,
DtType dt_type);
609 void EvolveG (
int lev, amrex::Real
dt,
DtType dt_type);
611 void EvolveE (
int lev,
PatchType patch_type, amrex::Real
dt);
615 void MacroscopicEvolveE ( amrex::Real
dt);
616 void MacroscopicEvolveE (
int lev, amrex::Real
dt);
617 void MacroscopicEvolveE (
int lev,
PatchType patch_type, amrex::Real
dt);
630 void Hybrid_QED_Push (
int lev, amrex::Real
dt);
638 void Hybrid_QED_Push (
int lev,
PatchType patch_type, amrex::Real
dt);
653 return load_balance_intervals;
663 void DampFieldsInGuards (
const int lev,
664 const std::array<std::unique_ptr<amrex::MultiFab>,3>& Efield,
665 const std::array<std::unique_ptr<amrex::MultiFab>,3>& Bfield);
674 void DampFieldsInGuards (
const int lev, std::unique_ptr<amrex::MultiFab>& mf);
703 void ApplyEfieldBoundary (
const int lev,
PatchType patch_type);
704 void ApplyBfieldBoundary (
const int lev,
PatchType patch_type,
DtType dt_type);
707 void DampPML (
const int lev);
708 void DampPML (
const int lev,
PatchType patch_type);
709 void DampPML_Cartesian (
const int lev,
PatchType patch_type);
712 void DampJPML (
int lev);
713 void DampJPML (
int lev,
PatchType patch_type);
716 bool isAnyBoundaryPML();
721 void NodalSyncPML ();
726 void NodalSyncPML (
int lev);
731 void NodalSyncPML (
int lev,
PatchType patch_type);
733 PML* GetPML (
int lev);
734 #if (defined WARPX_DIM_RZ) && (defined WARPX_USE_PSATD) 735 PML_RZ* GetPML_RZ (
int lev);
739 void doFieldIonization ();
743 void doFieldIonization (
int lev);
751 void doQEDEvents (
int lev);
754 void PushParticlesandDepose (
int lev, amrex::Real cur_time,
DtType a_dt_type=
DtType::Full,
bool skip_current=
false);
755 void PushParticlesandDepose ( amrex::Real cur_time,
bool skip_current=
false);
759 void UpdateAuxilaryData ();
760 void UpdateAuxilaryDataStagToNodal ();
761 void UpdateAuxilaryDataSameType ();
796 void SyncCurrentAndRho ();
810 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
811 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp);
816 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_fp,
817 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_cp);
825 amrex::Real
gett_old (
int lev)
const {
return t_old[lev];}
827 amrex::Real
gett_new (
int lev)
const {
return t_new[lev];}
828 void sett_new (
int lev, amrex::Real time) {t_new[lev] = time;}
830 amrex::Real
getdt (
int lev)
const {
return dt[lev];}
839 void updateStopTime (
const amrex::Real new_stop_time) {stop_time = new_stop_time;}
849 static std::array<amrex::Real,3> CellSize (
int lev);
860 static std::array<amrex::Real,3> LowerCorner (
const amrex::Box& bx,
const int lev,
const amrex::Real time_shift_delta);
869 static std::array<amrex::Real,3> UpperCorner (
const amrex::Box& bx,
const int lev,
const amrex::Real time_shift_delta);
893 bool const step_before_end = (step < end_moving_window_step) || (end_moving_window_step < 0);
894 bool const step_after_start = (step >= start_moving_window_step);
895 return do_moving_window && step_before_end && step_after_start;
903 const std::array<const amrex::MultiFab* const, 3>& B,
904 const std::array<amrex::Real,3>&
dx);
907 const std::array<const amrex::MultiFab* const, 3>& B,
929 void ComputeSpaceChargeField (
bool const reset_fields);
930 void AddBoundaryField ();
932 void AddSpaceChargeFieldLabFrame ();
935 std::array<amrex::Real, 3>
const beta = {{0,0,0}},
936 amrex::Real
const required_precision=amrex::Real(1.e-11),
937 amrex::Real absolute_tolerance=amrex::Real(0.0),
938 const int max_iters=200,
941 void setPhiBC (
amrex::Vector<std::unique_ptr<amrex::MultiFab> >& phi )
const;
943 void computeE (
amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>, 3> >& E,
945 std::array<amrex::Real, 3>
const beta = {{0,0,0}} )
const;
946 void computeB (
amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>, 3> >& B,
948 std::array<amrex::Real, 3>
const beta = {{0,0,0}} )
const;
949 void computePhiTriDiagonal (
const amrex::Vector<std::unique_ptr<amrex::MultiFab> >& rho,
950 amrex::Vector<std::unique_ptr<amrex::MultiFab> >& phi)
const;
954 void ComputeMagnetostaticField ();
955 void AddMagnetostaticFieldLabFrame ();
958 amrex::Real
const required_precision=amrex::Real(1.e-11),
959 amrex::Real absolute_tolerance=amrex::Real(0.0),
960 const int max_iters=200,
961 const int verbosity=2)
const;
986 void InitializeExternalFieldsOnGridUsingParser (
991 std::array< std::unique_ptr<amrex::MultiFab>, 3 >
const& edge_lengths,
992 std::array< std::unique_ptr<amrex::MultiFab>, 3 >
const& face_areas,
996 void ReadExternalFieldFromFile (
998 std::string F_name, std::string F_component);
1008 void InitializeEBGridData(
int lev);
1017 void ApplyFilterandSumBoundaryRho (
int lev,
int glev,
amrex::MultiFab& rho,
int icomp,
int ncomp);
1041 virtual void ErrorEst (
int lev,
amrex::TagBoxArray& tags, amrex::Real time,
int )
final;
1073 void InitLevelData (
int lev, amrex::Real time);
1082 virtual void MakeNewLevelFromScratch (
int lev, amrex::Real time,
const amrex::BoxArray& ba,
1088 virtual void MakeNewLevelFromCoarse (
int , amrex::Real ,
const amrex::BoxArray& ,
1094 virtual void RemakeLevel (
int lev, amrex::Real time,
const amrex::BoxArray& ba,
1098 virtual void ClearLevel (
int lev)
final;
1106 static void CheckSignals ();
1108 void HandleSignals ();
1113 void EvolveEM(
int numsteps);
1123 void AddExternalFields ();
1125 void OneStep_nosub (amrex::Real t);
1126 void OneStep_sub1 (amrex::Real t);
1131 void OneStep_multiJ (
const amrex::Real t);
1133 void RestrictCurrentFromFineToCoarsePatch (
1134 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
1135 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp,
1137 void AddCurrentFromFineLevelandSumBoundary (
1138 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
1139 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp,
1141 void StoreCurrent (
const int lev);
1142 void RestoreCurrent (
const int lev);
1144 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& current,
1148 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& current,
1151 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& current,
1156 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& current,
1160 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
1161 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp,
1165 void RestrictRhoFromFineToCoarsePatch (
1166 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_fp,
1167 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_cp,
1169 void ApplyFilterandSumBoundaryRho (
1170 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_fp,
1171 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_cp,
1176 void AddRhoFromFineLevelandSumBoundary (
1177 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_fp,
1178 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_cp,
1183 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_fp,
1184 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_cp,
1190 void ReadParameters ();
1194 void BackwardCompatibility ();
1196 void InitFromScratch ();
1202 GetRestartDMap (
const std::string& chkfile,
const amrex::BoxArray& ba,
int lev)
const;
1204 void InitFromCheckpoint ();
1205 void PostRestart ();
1212 void InitDiagnostics ();
1214 void InitNCICorrector ();
1220 void CheckGuardCells();
1231 void CheckKnownIssues();
1234 void PerformanceHints ();
1236 void BuildBufferMasks ();
1242 return current_buffer_masks[lev].
get();
1245 return gather_buffer_masks[lev].
get();
1275 const int centering_nox,
1276 const int centering_noy,
1277 const int centering_noz,
1278 const short a_grid_type);
1285 #ifdef WARPX_USE_PSATD 1286 # ifdef WARPX_DIM_RZ 1287 void AllocLevelSpectralSolverRZ (
amrex::Vector<std::unique_ptr<SpectralSolverRZ>>& spectral_solver,
1291 const std::array<amrex::Real,3>&
dx);
1293 void AllocLevelSpectralSolver (
amrex::Vector<std::unique_ptr<SpectralSolver>>& spectral_solver,
1297 const std::array<amrex::Real,3>& dx,
1298 const bool pml_flag=
false);
1310 std::unique_ptr<MultiParticleContainer>
mypc;
1415 int do_silver_mueller = 0;
1418 int pml_has_particles = 0;
1419 int do_pml_j_damping = 0;
1420 int do_pml_in_domain = 0;
1427 #if (defined WARPX_DIM_RZ) && (defined WARPX_USE_PSATD) 1432 amrex::Real moving_window_x = std::numeric_limits<amrex::Real>::max();
1433 amrex::Real current_injection_position = 0;
1436 int warpx_do_continuous_injection = 0;
1437 int num_injected_species = -1;
1453 int load_balance_with_sfc = 0;
1458 amrex::Real load_balance_knapsack_factor = amrex::Real(1.24);
1464 amrex::Real load_balance_efficiency_ratio_threshold = amrex::Real(1.1);
1472 amrex::Real costs_heuristic_cells_wt = amrex::Real(0);
1478 amrex::Real costs_heuristic_particles_wt = amrex::Real(0);
1486 bool use_hybrid_QED = 0;
1488 int max_step = std::numeric_limits<int>::max();
1489 amrex::Real stop_time = std::numeric_limits<amrex::Real>::max();
1491 int regrid_int = -1;
1493 amrex::Real
cfl = amrex::Real(0.999);
1500 bool use_single_read =
true;
1501 bool use_single_write =
true;
1502 int mffile_nstreams = 4;
1503 int field_io_nfiles = 1024;
1504 int particle_io_nfiles = 1024;
1509 bool is_synchronized =
true;
1512 const bool sync_nodal_points =
true;
1518 int slice_plot_int = -1;
1528 bool fft_periodic_single_box =
false;
1550 return *m_field_factory[lev];
1568 static void ComputeEdgeLengths (std::array< std::unique_ptr<amrex::MultiFab>, 3 >& edge_lengths,
1574 static void ComputeFaceAreas (std::array< std::unique_ptr<amrex::MultiFab>, 3 >& face_areas,
1580 static void ScaleEdges (std::array< std::unique_ptr<amrex::MultiFab>, 3 >& edge_lengths,
1581 const std::array<amrex::Real,3>&
cell_size);
1585 static void ScaleAreas (std::array< std::unique_ptr<amrex::MultiFab>, 3 >& face_areas,
1586 const std::array<amrex::Real,3>& cell_size);
1600 void ComputeDistanceToEB ();
1609 void ComputeFaceExtensions();
1613 void InitBorrowing();
1617 void ShrinkBorrowing();
1621 void ComputeOneWayExtensions();
1625 void ComputeEightWaysExtensions();
1634 void ApplyBCKCorrection(
const int idim);
1640 void PSATDSubtractCurrentPartialSumsAvg ();
1643 void ScrapeParticles ();
1647 #ifdef WARPX_USE_PSATD 1661 void PSATDForwardTransformEB (
1662 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& E_fp,
1663 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& B_fp,
1664 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& E_cp,
1665 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& B_cp);
1680 void PSATDBackwardTransformEB (
1681 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& E_fp,
1682 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& B_fp,
1683 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& E_cp,
1684 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& B_cp);
1698 void PSATDBackwardTransformEBavg (
1699 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& E_avg_fp,
1700 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& B_avg_fp,
1701 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& E_avg_cp,
1702 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& B_avg_cp);
1715 void PSATDForwardTransformJ (
1716 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
1717 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp,
1718 const bool apply_kspace_filter=
true);
1728 void PSATDBackwardTransformJ (
1729 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_fp,
1730 const amrex::Vector<std::array<std::unique_ptr<amrex::MultiFab>,3>>& J_cp);
1743 void PSATDForwardTransformRho (
1744 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_fp,
1745 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>& charge_cp,
1746 const int icomp,
const int dcomp,
const bool apply_kspace_filter=
true);
1751 void PSATDMoveRhoNewToRhoOld ();
1756 void PSATDMoveJNewToJOld ();
1761 void PSATDForwardTransformF ();
1766 void PSATDBackwardTransformF ();
1771 void PSATDForwardTransformG ();
1776 void PSATDBackwardTransformG ();
1781 void PSATDCurrentCorrection ();
1786 void PSATDVayDeposition ();
1791 void PSATDPushSpectralFields ();
1798 void PSATDScaleAverageFields (
const amrex::Real scale_factor);
1803 void PSATDEraseAverageFields ();
1805 # ifdef WARPX_DIM_RZ 1815 # ifdef WARPX_DIM_RZ
const amrex::MultiFab & getG_cp(int lev)
Definition: WarpX.H:498
static std::string str_Bz_ext_grid_function
String storing parser function to initialize z-component of the magnetic field on the grid...
Definition: WarpX.H:135
amrex::Gpu::DeviceVector< amrex::Real > device_current_centering_stencil_coeffs_y
Definition: WarpX.H:1036
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_fp
Definition: WarpX.H:1326
static bool fft_do_time_averaging
Definition: WarpX.H:899
amrex::MultiFab * get_pointer_current_fp_nodal(int lev, int direction) const
Definition: WarpX.H:473
static int moving_window_dir
Definition: WarpX.H:897
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_fp
Definition: WarpX.H:1329
amrex::Vector< std::unique_ptr< NCIGodfreyFilter > > nci_godfrey_filter_bxbyez
Definition: WarpX.H:549
amrex::Vector< amrex::Real > getdt() const
Definition: WarpX.H:829
static short rho_in_time
Definition: WarpX.H:206
amrex::Vector< int > getistep() const
Definition: WarpX.H:821
amrex::FabFactory< amrex::FArrayBox > const & fieldFactory(int lev) const noexcept
Definition: WarpX.H:1549
DtType
Definition: WarpXDtType.H:10
amrex::Vector< std::unique_ptr< SpectralSolverRZ > > spectral_solver_cp
Definition: WarpX.H:1807
static bool add_external_E_field
Whether to apply the effect of an externally-defined electric field.
Definition: WarpX.H:126
static bool do_shared_mem_current_deposition
use shared memory algorithm for current deposition
Definition: WarpX.H:228
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_avg_cp
Definition: WarpX.H:1400
static bool refine_plasma
Definition: WarpX.H:327
amrex::RealVect fine_tag_hi
Definition: WarpX.H:1507
static std::map< std::string, amrex::iMultiFab * > imultifab_map
Definition: WarpX.H:428
static int do_moving_window
Definition: WarpX.H:884
bool do_pml_dive_cleaning
Definition: WarpX.H:1422
This class contains the macroscopic properties of the medium needed to evaluate macroscopic Maxwell e...
Definition: MacroscopicProperties.H:30
static bool compute_max_step_from_btd
If true, the code will compute max_step from the back transformed diagnostics.
Definition: WarpX.H:324
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_avg_fp
Definition: WarpX.H:1331
amrex::Vector< amrex::IntVect > do_pml_Hi
Definition: WarpX.H:1425
amrex::IntVect m_rho_nodal_flag
Definition: WarpX.H:358
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:335
static amrex::Vector< int > field_boundary_lo
Definition: WarpX.H:181
void PushPSATD(const int lev)
Definition: PML.cpp:1383
static amrex::Real self_fields_required_precision
Definition: WarpX.H:879
const amrex::MultiFab & getrho_fp(int lev)
Definition: WarpX.H:503
amrex::Vector< int > injected_plasma_species
Definition: WarpX.H:1438
std::unique_ptr< SpectralSolver > spectral_solver_cp
Definition: PML.H:244
static WarpX * m_instance
Definition: WarpX.H:1103
static amrex::Vector< int > boost_direction
Direction of the Lorentz transform that defines the boosted frame of the simulation.
Definition: WarpX.H:310
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_store
Definition: WarpX.H:1388
amrex::Vector< std::array< std::unique_ptr< amrex::iMultiFab >, 3 > > m_flag_info_face
Definition: WarpX.H:1354
amrex::Vector< std::array< std::unique_ptr< amrex::LayoutData< FaceInfoBox > >, 3 > > m_borrowing
Definition: WarpX.H:1369
amrex::Real gett_new(int lev) const
Definition: WarpX.H:827
int maxStep() const
Definition: WarpX.H:836
static short electromagnetic_solver_id
Integer that corresponds to the type of Maxwell solver (Yee, CKC, PSATD, ECT)
Definition: WarpX.H:166
void ComputePMLFactors(amrex::Real dt)
Definition: PML.cpp:991
amrex::Vector< std::unique_ptr< amrex::MultiFab > > F_cp
Definition: WarpX.H:1394
MultiParticleContainer & GetPartContainer()
Definition: WarpX.H:99
void sett_new(int lev, amrex::Real time)
Definition: WarpX.H:828
const amrex::MultiFab & getBfield_cp(int lev, int direction)
Definition: WarpX.H:495
std::unique_ptr< amrex::Parser > Bxfield_parser
User-defined parser to initialize x-component of the magnetic field on the grid.
Definition: WarpX.H:144
Definition: AcceleratorLattice.H:20
Definition: ParticleBoundaryBuffer.H:19
const amrex::MultiFab & getG_fp(int lev)
Definition: WarpX.H:506
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > vector_potential_fp_nodal
Definition: WarpX.H:1335
amrex::Vector< std::unique_ptr< AcceleratorLattice > > m_accelerator_lattice
Definition: WarpX.H:1540
const amrex::MultiFab & getEfield_fp(int lev, int direction)
Definition: WarpX.H:501
std::unique_ptr< MultiDiagnostics > multi_diags
Definition: WarpX.H:1311
void setLoadBalanceEfficiency(const int lev, const amrex::Real efficiency)
Definition: WarpX.H:524
static int n_field_gather_buffer
Definition: WarpX.H:347
std::unique_ptr< MultiParticleContainer > mypc
Definition: WarpX.H:1310
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:95
float cfl
Definition: yt3d_mpi.py:41
static bool do_current_centering
Definition: WarpX.H:211
static int noy
Order of the particle shape factors (splines) along y.
Definition: WarpX.H:251
amrex::Vector< std::array< std::unique_ptr< amrex::iMultiFab >, 3 > > m_flag_ext_face
Definition: WarpX.H:1361
amrex::MultiFab * get_pointer_edge_lengths(int lev, int direction) const
Definition: WarpX.H:487
const AcceleratorLattice & get_accelerator_lattice(int lev)
Definition: WarpX.H:1044
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_avg_cp
Definition: WarpX.H:1401
static bool verboncoeur_axis_correction
Definition: WarpX.H:293
const amrex::MultiFab & getEfield(int lev, int direction)
Definition: WarpX.H:490
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_fp_nodal
Definition: WarpX.H:1391
amrex::Vector< std::unique_ptr< amrex::iMultiFab > > gather_buffer_masks
Definition: WarpX.H:1407
static short current_deposition_algo
Integer that corresponds to the current deposition algorithm (Esirkepov, direct, Vay) ...
Definition: WarpX.H:158
utils::parser::IntervalsParser get_load_balance_intervals() const
returns the load balance interval
Definition: WarpX.H:651
std::unique_ptr< MultiReducedDiags > reduced_diags
object with all reduced diagnotics, similar to MultiParticleContainer for species.
Definition: WarpX.H:563
std::unique_ptr< amrex::Parser > Bzfield_parser
User-defined parser to initialize z-component of the magnetic field on the grid.
Definition: WarpX.H:148
bool current_correction
If true, a correction is applied to the current in Fourier space,.
Definition: WarpX.H:215
static short charge_deposition_algo
Integer that corresponds to the charge deposition algorithm (only standard deposition) ...
Definition: WarpX.H:160
amrex::Vector< std::unique_ptr< amrex::MultiFab > > rho_cp
Definition: WarpX.H:1396
amrex::MultiFab * get_pointer_rho_fp(int lev) const
Definition: WarpX.H:474
static amrex::Real moving_window_v
Definition: WarpX.H:898
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_cp
Definition: WarpX.H:1399
amrex::MultiFab * get_pointer_Efield_aux(int lev, int direction) const
Definition: WarpX.H:467
void FillBoundaryE()
Definition: PML.cpp:1242
MultiDiagnostics & GetMultiDiags()
Definition: WarpX.H:101
bool getis_synchronized() const
Definition: WarpX.H:834
SpectralSolverRZ & get_spectral_solver_fp(int lev)
Definition: WarpX.H:1820
static int electrostatic_solver_id
Definition: WarpX.H:876
const amrex::IntVect get_ng_depos_J() const
Definition: WarpX.H:915
amrex::MultiFab * get_pointer_Efield_cp(int lev, int direction) const
Definition: WarpX.H:480
Definition: MultiParticleContainer.H:64
static void AddToMultiFabMap(const std::string &name, const std::unique_ptr< amrex::MultiFab > &mf)
Add the MultiFab to the map of MultiFabs.
Definition: WarpX.H:436
bool DoPML() const
Definition: WarpX.H:513
static int current_centering_nox
Order of finite centering of currents (from nodal grid to staggered grid), along x.
Definition: WarpX.H:263
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_buf
Definition: WarpX.H:1410
amrex::RealBox slice_realbox
Definition: WarpX.H:1519
amrex::Vector< std::unique_ptr< amrex::MultiFab > > charge_buf
Definition: WarpX.H:1411
void updateStopTime(const amrex::Real new_stop_time)
Definition: WarpX.H:839
amrex::MultiFab * get_pointer_Bfield_fp(int lev, int direction) const
Definition: WarpX.H:471
amrex::Vector< std::unique_ptr< amrex::LayoutData< amrex::Real > > > costs
Definition: WarpX.H:1451
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > vector_potential_grad_buf_b_stag
Definition: WarpX.H:1337
const amrex::MultiFab & getF_fp(int lev)
Definition: WarpX.H:505
static int em_solver_medium
Integer that corresponds to electromagnetic Maxwell solver (vacuum - 0, macroscopic - 1) ...
Definition: WarpX.H:172
const amrex::MultiFab & getrho_cp(int lev)
Definition: WarpX.H:496
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > m_area_mod
Definition: WarpX.H:1365
static bool do_device_synchronize
Definition: WarpX.H:341
static std::string str_Ez_ext_grid_function
String storing parser function to initialize z-component of the electric field on the grid...
Definition: WarpX.H:141
static bool do_shared_mem_charge_deposition
used shared memory algorithm for charge deposition
Definition: WarpX.H:225
amrex::Vector< int > istep
Definition: WarpX.H:1302
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_aux
Definition: WarpX.H:1318
amrex::MultiFab * get_pointer_rho_cp(int lev) const
Definition: WarpX.H:483
std::unique_ptr< amrex::Parser > Byfield_parser
User-defined parser to initialize y-component of the magnetic field on the grid.
Definition: WarpX.H:146
static int num_mirrors
Definition: WarpX.H:557
amrex::Vector< std::unique_ptr< amrex::iMultiFab > > current_buffer_masks
Definition: WarpX.H:1406
static amrex::Vector< ParticleBoundaryType > particle_boundary_hi
Definition: WarpX.H:196
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_avg_fp
Definition: WarpX.H:1330
Definition: ElectrostaticSolver.H:35
amrex::MultiFab * get_pointer_face_areas(int lev, int direction) const
Definition: WarpX.H:488
void updateMaxStep(const int new_max_step)
Definition: WarpX.H:837
const amrex::iMultiFab * getGatherBufferMasks(int lev) const
Definition: WarpX.H:1244
amrex::Vector< std::unique_ptr< amrex::MultiFab > > F_fp
Definition: WarpX.H:1322
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_slice
Definition: WarpX.H:1526
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_fp_vay
Definition: WarpX.H:1327
amrex::Vector< int > mirror_z_npoints
Definition: WarpX.H:560
void FillBoundaryF()
Definition: PML.cpp:1290
amrex::Vector< amrex::Real > gett_old() const
Definition: WarpX.H:824
amrex::Real getdt(int lev) const
Definition: WarpX.H:830
amrex::Real getLoadBalanceEfficiency(const int lev)
Definition: WarpX.H:535
static int do_multi_J_n_depositions
Definition: WarpX.H:339
direction
Definition: AnyFFT.H:74
BilinearFilter bilinear_filter
Definition: WarpX.H:547
static int n_current_deposition_buffer
Definition: WarpX.H:351
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_cp
Definition: WarpX.H:1397
amrex::Vector< std::unique_ptr< amrex::MultiFab > > m_distance_to_eb
Definition: WarpX.H:1385
static bool use_fdtd_nci_corr
Definition: WarpX.H:279
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > vector_potential_grad_buf_e_stag
Definition: WarpX.H:1336
static int start_moving_window_step
Definition: WarpX.H:885
const FArrayBox & get(const MFIter &mfi) const noexcept
static int moving_window_active(int const step)
Definition: WarpX.H:892
static amrex::Real gamma_boost
Lorentz factor of the boosted frame in which a boosted-frame simulation is run.
Definition: WarpX.H:306
cell_size
Definition: compute_domain.py:37
amrex::Vector< amrex::Real > t_new
Definition: WarpX.H:1305
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:133
amrex::MultiFab * get_pointer_phi_fp(int lev) const
Definition: WarpX.H:477
amrex::Vector< std::unique_ptr< amrex::MultiFab > > G_slice
Definition: WarpX.H:1522
static short psatd_solution_type
Definition: WarpX.H:201
std::optional< amrex::Real > m_const_dt
Definition: WarpX.H:1440
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_slice
Definition: WarpX.H:1525
static utils::parser::IntervalsParser sort_intervals
Definition: WarpX.H:329
int getnsubsteps(int lev) const
Definition: WarpX.H:820
utils::parser::IntervalsParser load_balance_intervals
Definition: WarpX.H:1448
static amrex::Vector< amrex::Real > E_external_grid
Initial electric field on the grid.
Definition: WarpX.H:116
amrex::Vector< amrex::IntVect > do_pml_Lo
Definition: WarpX.H:1424
void FillBoundaryG()
Definition: PML.cpp:1312
amrex::Vector< std::unique_ptr< amrex::MultiFab > > G_cp
Definition: WarpX.H:1395
std::array< const amrex::MultiFab *const, 3 > get_array_Efield_aux(const int lev) const
Definition: WarpX.H:459
static amrex::Real beta_boost
Beta value corresponding to the Lorentz factor of the boosted frame of the simulation.
Definition: WarpX.H:308
static bool do_dive_cleaning
Definition: WarpX.H:244
amrex::Vector< amrex::Real > dt
Definition: WarpX.H:1307
std::unique_ptr< amrex::Parser > Exfield_parser
User-defined parser to initialize x-component of the electric field on the grid.
Definition: WarpX.H:150
static bool do_multi_J
Definition: WarpX.H:338
std::array< const amrex::MultiFab *const, 3 > get_array_Bfield_aux(const int lev) const
Definition: WarpX.H:451
amrex::MultiFab * get_pointer_G_fp(int lev) const
Definition: WarpX.H:476
static int field_centering_noz
Order of finite centering of fields (from staggered grid to nodal grid), along z. ...
Definition: WarpX.H:260
amrex::Real stopTime() const
Definition: WarpX.H:838
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:102
const amrex::MultiFab & getBfield_avg_cp(int lev, int direction)
Definition: WarpX.H:511
static std::string E_ext_grid_s
Initialization type for external electric field on the grid.
Definition: WarpX.H:123
amrex::Vector< std::unique_ptr< SpectralSolverRZ > > spectral_solver_fp
Definition: WarpX.H:1806
const amrex::IntVect get_ng_depos_rho() const
Definition: WarpX.H:916
static bool use_filter
If true, a bilinear filter is used to smooth charge and currents.
Definition: WarpX.H:296
int getdo_moving_window() const
Definition: WarpX.H:831
amrex::Gpu::DeviceVector< amrex::Real > device_field_centering_stencil_coeffs_y
Definition: WarpX.H:1031
static int shared_mem_current_tpb
number of threads to use per block in shared deposition
Definition: WarpX.H:231
amrex::Vector< amrex::Real > load_balance_efficiency
Definition: WarpX.H:1466
ii
Definition: check_interp_points_and_weights.py:148
Definition: BilinearFilter.H:16
amrex::Vector< std::unique_ptr< PML > > pml
Definition: WarpX.H:1426
static amrex::Real zmax_plasma_to_compute_max_step
Definition: WarpX.H:314
amrex::Gpu::DeviceVector< amrex::Real > device_field_centering_stencil_coeffs_x
Definition: WarpX.H:1030
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:333
This class contains a vector of all diagnostics in the simulation.
Definition: MultiDiagnostics.H:20
amrex::Vector< std::unique_ptr< amrex::MultiFab > > phi_fp
Definition: WarpX.H:1325
const amrex::MultiFab & getBfield_fp(int lev, int direction)
Definition: WarpX.H:502
amrex::MultiFab * get_pointer_Bfield_cp(int lev, int direction) const
Definition: WarpX.H:481
amrex::MultiFab * get_pointer_G_cp(int lev) const
Definition: WarpX.H:485
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > m_edge_lengths
EB: Lengths of the mesh edges.
Definition: WarpX.H:1344
amrex::MultiFab * get_pointer_current_fp(int lev, int direction) const
Definition: WarpX.H:472
const amrex::MultiFab & getEfield_avg_cp(int lev, int direction)
Definition: WarpX.H:510
static int self_fields_verbosity
Definition: WarpX.H:882
static int field_centering_noy
Order of finite centering of fields (from staggered grid to nodal grid), along y. ...
Definition: WarpX.H:258
const amrex::MultiFab & getBfield(int lev, int direction)
Definition: WarpX.H:491
const amrex::IntVect get_numprocs() const
Definition: WarpX.H:926
static amrex::IntVect shared_tilesize
tileSize to use for shared current deposition operations
Definition: WarpX.H:234
std::unique_ptr< MacroscopicProperties > m_macroscopic_properties
Definition: WarpX.H:1443
static amrex::Real quantum_xi_c2
Definition: WarpX.H:640
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_cp
Definition: WarpX.H:1398
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > m_face_areas
EB: Areas of the mesh faces.
Definition: WarpX.H:1346
const amrex::IntVect getngUpdateAux() const
Definition: WarpX.H:914
amrex::RealVect fine_tag_lo
Definition: WarpX.H:1506
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_cax
Definition: WarpX.H:1404
static int n_rz_azimuthal_modes
Number of modes for the RZ multi-mode version.
Definition: WarpX.H:270
static short field_gathering_algo
Integer that corresponds to the field gathering algorithm (energy-conserving, momentum-conserving) ...
Definition: WarpX.H:162
void FillBoundaryB()
Definition: PML.cpp:1266
static void AddToMultiFabMap(const std::string &name, const std::unique_ptr< amrex::iMultiFab > &mf)
Add the iMultiFab to the map of MultiFabs.
Definition: WarpX.H:446
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > current_slice
Definition: WarpX.H:1524
ParticleBoundaryBuffer & GetParticleBoundaryBuffer()
Definition: WarpX.H:103
const amrex::IntVect getngF() const
Definition: WarpX.H:913
static bool do_compute_max_step_from_zmax
Definition: WarpX.H:318
static std::string str_Bx_ext_grid_function
String storing parser function to initialize x-component of the magnetic field on the grid...
Definition: WarpX.H:131
std::unique_ptr< ParticleBoundaryBuffer > m_particle_boundary_buffer
particle buffer for scraped particles on the boundaries
Definition: WarpX.H:1537
const amrex::MultiFab & getEfield_avg_fp(int lev, int direction)
Definition: WarpX.H:508
amrex::Gpu::DeviceVector< amrex::Real > device_current_centering_stencil_coeffs_z
Definition: WarpX.H:1037
string name
Definition: stencil.py:452
static int ncomps
Definition: WarpX.H:275
int getistep(int lev) const
Definition: WarpX.H:822
bool do_pml_divb_cleaning
Definition: WarpX.H:1423
amrex::Gpu::DeviceVector< amrex::Real > device_current_centering_stencil_coeffs_x
Definition: WarpX.H:1035
std::unique_ptr< amrex::Parser > Eyfield_parser
User-defined parser to initialize y-component of the electric field on the grid.
Definition: WarpX.H:152
static bool use_kspace_filter
If true, the bilinear filtering of charge and currents is done in Fourier space.
Definition: WarpX.H:298
static bool use_filter_compensation
If true, a compensation step is added to the bilinear filtering of charge and currents.
Definition: WarpX.H:300
static bool do_divb_cleaning
Solve additional Maxwell equation for G in order to control errors in magnetic Gauss' law...
Definition: WarpX.H:246
amrex::Vector< std::unique_ptr< NCIGodfreyFilter > > nci_godfrey_filter_exeybz
Definition: WarpX.H:548
amrex::Vector< int > getnsubsteps() const
Definition: WarpX.H:819
amrex::Gpu::DeviceVector< amrex::Real > device_field_centering_stencil_coeffs_z
Definition: WarpX.H:1032
const amrex::MultiFab & getF_cp(int lev)
Definition: WarpX.H:497
const amrex::IntVect get_ng_fieldgather() const
Definition: WarpX.H:917
static short load_balance_costs_update_algo
Definition: WarpX.H:170
static bool do_single_precision_comms
perform field communications in single precision
Definition: WarpX.H:222
amrex::MultiFab * get_pointer_current_cp(int lev, int direction) const
Definition: WarpX.H:482
static bool do_subcycling
Definition: WarpX.H:337
amrex::MultiFab * get_pointer_Efield_fp(int lev, int direction) const
Definition: WarpX.H:470
static amrex::IntVect m_fill_guards_fields
Whether to fill guard cells when computing inverse FFTs of fields.
Definition: WarpX.H:237
const amrex::MultiFab & getBfield_avg_fp(int lev, int direction)
Definition: WarpX.H:509
static amrex::Real self_fields_absolute_tolerance
Definition: WarpX.H:880
Definition: MagnetostaticSolver.H:21
std::unique_ptr< SpectralSolver > spectral_solver_fp
Definition: PML.H:243
static short grid_type
Definition: WarpX.H:355
static std::string str_Ex_ext_grid_function
String storing parser function to initialize x-component of the electric field on the grid...
Definition: WarpX.H:137
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > ECTRhofield
Definition: WarpX.H:1378
amrex::Vector< amrex::Real > t_old
Definition: WarpX.H:1306
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_cax
Definition: WarpX.H:1405
int dx
Definition: stencil.py:436
amrex::Vector< std::unique_ptr< PML_RZ > > pml_rz
Definition: WarpX.H:1428
static bool add_external_B_field
Whether to apply the effect of an externally-defined magnetic field.
Definition: WarpX.H:128
static int current_centering_noy
Order of finite centering of currents (from nodal grid to staggered grid), along y.
Definition: WarpX.H:265
amrex::Vector< int > nsubsteps
Definition: WarpX.H:1303
int dt
Definition: stencil.py:440
static int end_moving_window_step
Definition: WarpX.H:886
MagnetostaticSolver::VectorPoissonBoundaryHandler m_vector_poisson_boundary_handler
Definition: WarpX.H:953
static amrex::Real zmin_domain_boost_step_0
Definition: WarpX.H:321
static amrex::IntVect filter_npass_each_dir
Definition: WarpX.H:546
static bool galerkin_interpolation
Definition: WarpX.H:289
static std::string str_Ey_ext_grid_function
String storing parser function to initialize y-component of the electric field on the grid...
Definition: WarpX.H:139
static int field_centering_nox
Order of finite centering of fields (from staggered grid to nodal grid), along x. ...
Definition: WarpX.H:256
amrex::IntVect slice_cr_ratio
Definition: WarpX.H:1520
amrex::Real getcurrent_injection_position() const
Definition: WarpX.H:833
amrex::MultiFab * get_pointer_Bfield_aux(int lev, int direction) const
Definition: WarpX.H:468
static int current_centering_noz
Order of finite centering of currents (from nodal grid to staggered grid), along z.
Definition: WarpX.H:267
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_fp_external
Definition: WarpX.H:1341
static int nox
Order of the particle shape factors (splines) along x.
Definition: WarpX.H:249
static amrex::Vector< amrex::Real > B_external_grid
Initial magnetic field on the grid.
Definition: WarpX.H:118
amrex::Real getmoving_window_x() const
Definition: WarpX.H:832
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Venl
Definition: WarpX.H:1382
static std::map< std::string, amrex::MultiFab * > multifab_map
Definition: WarpX.H:427
const amrex::MultiFab & getphi_fp(int lev)
Definition: WarpX.H:504
static bool serialize_initial_conditions
If true, the initial conditions from random number generators are serialized (useful for reproducible...
Definition: WarpX.H:303
MacroscopicProperties & GetMacroscopicProperties()
Definition: WarpX.H:100
amrex::Vector< std::unique_ptr< amrex::MultiFab > > G_fp
Definition: WarpX.H:1323
static std::string B_ext_grid_s
Initialization type for external magnetic field on the grid.
Definition: WarpX.H:121
amrex::Vector< std::unique_ptr< FiniteDifferenceSolver > > m_fdtd_solver_fp
Definition: WarpX.H:1824
static std::string str_By_ext_grid_function
String storing parser function to initialize y-component of the magnetic field on the grid...
Definition: WarpX.H:133
static amrex::Vector< ParticleBoundaryType > particle_boundary_lo
Definition: WarpX.H:191
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Bfield_aux
Definition: WarpX.H:1319
PatchType
Definition: WarpX.H:71
std::string restart_chkfile
Definition: WarpX.H:1495
int slice_max_grid_size
Definition: WarpX.H:1517
static amrex::IntVect m_fill_guards_current
Whether to fill guard cells when computing inverse FFTs of currents.
Definition: WarpX.H:240
amrex::Vector< amrex::Real > mirror_z
Definition: WarpX.H:558
int Verbose() const
Definition: WarpX.H:93
static bool do_dynamic_scheduling
Definition: WarpX.H:326
static int macroscopic_solver_algo
Definition: WarpX.H:176
utils::parser::IntervalsParser override_sync_intervals
Definition: WarpX.H:1481
ElectrostaticSolver::PoissonBoundaryHandler m_poisson_boundary_handler
Definition: WarpX.H:928
amrex::Vector< std::unique_ptr< amrex::MultiFab > > F_slice
Definition: WarpX.H:1521
static std::string authors
Author of an input file / simulation setup.
Definition: WarpX.H:113
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_fp
Definition: WarpX.H:1328
static amrex::Vector< int > field_boundary_hi
Definition: WarpX.H:186
string field
Definition: video_yt.py:31
static bool safe_guard_cells
Definition: WarpX.H:342
Definition: SpectralSolverRZ.H:21
amrex::Vector< std::unique_ptr< amrex::MultiFab > > rho_slice
Definition: WarpX.H:1523
const amrex::IntVect getngEB() const
Definition: WarpX.H:912
const PML_RZ * getPMLRZ()
Definition: WarpX.H:516
static short particle_pusher_algo
Integer that corresponds to the particle push algorithm (Boris, Vay, Higuera-Cary) ...
Definition: WarpX.H:164
const amrex::MultiFab & getcurrent_fp(int lev, int direction)
Definition: WarpX.H:500
static int self_fields_max_iters
Definition: WarpX.H:881
amrex::Vector< std::unique_ptr< FiniteDifferenceSolver > > m_fdtd_solver_cp
Definition: WarpX.H:1825
amrex::Vector< std::unique_ptr< amrex::FabFactory< amrex::FArrayBox > > > m_field_factory
Definition: WarpX.H:1547
amrex::MultiFab * get_pointer_vector_potential_fp(int lev, int direction) const
Definition: WarpX.H:478
amrex::Real v_particle_pml
Definition: WarpX.H:1430
guardCellManager guard_cells
Definition: WarpX.H:1514
amrex::MultiFab * get_pointer_F_cp(int lev) const
Definition: WarpX.H:484
amrex::Real gett_old(int lev) const
Definition: WarpX.H:825
amrex::Vector< amrex::Real > mirror_z_width
Definition: WarpX.H:559
amrex::Vector< std::array< std::unique_ptr< amrex::MultiFab >, 3 > > Efield_fp_external
Definition: WarpX.H:1340
amrex::Vector< amrex::Real > gett_new() const
Definition: WarpX.H:826
std::unique_ptr< amrex::Parser > Ezfield_parser
User-defined parser to initialize z-component of the electric field on the grid.
Definition: WarpX.H:154
static int noz
Order of the particle shape factors (splines) along z.
Definition: WarpX.H:253
const amrex::MultiFab & getcurrent_cp(int lev, int direction)
Definition: WarpX.H:493
const amrex::MultiFab & getEfield_cp(int lev, int direction)
Definition: WarpX.H:494
void setistep(int lev, int ii)
Definition: WarpX.H:823
const amrex::iMultiFab * getCurrentBufferMasks(int lev) const
Definition: WarpX.H:1241
amrex::Vector< std::unique_ptr< amrex::MultiFab > > rho_fp
Definition: WarpX.H:1324
This class computes and stores the number of guard cells needed for the allocation of the MultiFabs a...
Definition: GuardCellManager.H:20
Definition: WarpXParticleContainer.H:102
static amrex::IntVect sort_bin_size
Definition: WarpX.H:330
static int do_similar_dm_pml
Definition: WarpX.H:1421
amrex::MultiFab * get_pointer_F_fp(int lev) const
Definition: WarpX.H:475
static short J_in_time
Definition: WarpX.H:205
Top-level class for the electromagnetic spectral solver.
Definition: SpectralSolver.H:32