23#include <AMReX_Config.H>
42 [[nodiscard]]
int lo()
const {
return m_lo; }
43 [[nodiscard]]
int hi()
const {
return m_hi; }
98 const
amrex::FabInfo& ,
int ) const final
145 amrex::Real dt,
int nox_fft,
int noy_fft,
int noz_fft,
147 int do_moving_window,
int pml_has_particles,
int do_pml_in_domain,
150 bool do_pml_dive_cleaning,
bool do_pml_divb_cleaning,
174 [[nodiscard]] std::array< std::unique_ptr<amrex::iMultiFab>, 3 >
const &
GetEBUpdateEFlag ()
const
188 int do_pml_in_domain);
192 int do_pml_in_domain);
203 [[nodiscard]]
bool ok ()
const {
return m_ok; }
void PushPMLPSATDSinglePatch(const int lev, SpectralSolver &solver, ablastr::fields::VectorField &pml_E, ablastr::fields::VectorField &pml_B, ablastr::fields::ScalarField pml_F, ablastr::fields::ScalarField pml_G, const amrex::IntVect &fill_guards)
Definition PML.cpp:1338
TimeDependencyJ
Definition WarpXAlgorithmSelection.H:107
PSATDSolutionType
Definition WarpXAlgorithmSelection.H:101
TimeDependencyRho
Definition WarpXAlgorithmSelection.H:113
amrex::Real dt_E
Definition PML.H:135
MultiSigmaBox(const amrex::BoxArray &ba, const amrex::DistributionMapping &dm, const amrex::BoxArray *grid_ba, const amrex::Real *dx, const amrex::IntVect &ncell, const amrex::IntVect &delta, const amrex::Box ®ular_domain, amrex::Real v_sigma_sb)
Definition PML.cpp:649
void ComputePMLFactorsE(const amrex::Real *dx, amrex::Real dt)
Definition PML.cpp:674
void ComputePMLFactorsB(const amrex::Real *dx, amrex::Real dt)
Definition PML.cpp:658
amrex::Real dt_B
Definition PML.H:134
const amrex::Geometry * m_geom
Definition PML.H:219
void ComputePMLFactors(amrex::Real dt)
Definition PML.cpp:1064
std::array< std::unique_ptr< amrex::iMultiFab >, 3 > const & GetEBUpdateEFlag() const
Definition PML.H:174
std::unique_ptr< amrex::FabFactory< amrex::FArrayBox > > pml_field_factory
Definition PML.H:235
const MultiSigmaBox & GetMultiSigmaBox_cp() const
Definition PML.H:166
static void CopyToPML(amrex::MultiFab &pml, amrex::MultiFab ®, const amrex::Geometry &geom)
Definition PML.cpp:1219
std::unique_ptr< MultiSigmaBox > sigba_fp
Definition PML.H:222
const MultiSigmaBox & GetMultiSigmaBox_fp() const
Definition PML.H:161
void CopyJtoPMLs(ablastr::fields::MultiFabRegister &fields, int lev)
Definition PML.cpp:1109
std::array< std::unique_ptr< amrex::iMultiFab >, 3 > m_eb_update_E
Definition PML.H:227
const amrex::Geometry * m_cgeom
Definition PML.H:220
bool ok() const
Definition PML.H:203
void PushPSATD(ablastr::fields::MultiFabRegister &fields, int lev)
Definition PML.cpp:1319
void Exchange(ablastr::fields::VectorField mf_pml, ablastr::fields::VectorField mf, const PatchType &patch_type, int do_pml_in_domain)
Definition PML.cpp:1118
bool m_divb_cleaning
Definition PML.H:214
bool m_ok
Definition PML.H:211
bool m_dive_cleaning
Definition PML.H:213
amrex::IntVect m_fill_guards_fields
Definition PML.H:216
void CheckPoint(ablastr::fields::MultiFabRegister &fields, const std::string &dir) const
Definition PML.cpp:1252
std::unique_ptr< MultiSigmaBox > sigba_cp
Definition PML.H:223
PML(int lev, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm, bool do_similar_dm_pml, const amrex::Geometry *geom, const amrex::Geometry *cgeom, int ncell, int delta, amrex::IntVect ref_ratio, amrex::Real dt, int nox_fft, int noy_fft, int noz_fft, ablastr::utils::enums::GridType grid_type, int do_moving_window, int pml_has_particles, int do_pml_in_domain, PSATDSolutionType psatd_solution_type, TimeDependencyJ time_dependency_J, TimeDependencyRho time_dependency_rho, bool do_pml_dive_cleaning, bool do_pml_divb_cleaning, const amrex::IntVect &fill_guards_fields, const amrex::IntVect &fill_guards_current, bool eb_enabled, int max_guard_EB, amrex::Real v_sigma_sb, ablastr::fields::MultiFabRegister &fields, amrex::IntVect do_pml_Lo=amrex::IntVect::TheUnitVector(), amrex::IntVect do_pml_Hi=amrex::IntVect::TheUnitVector())
Definition PML.cpp:689
void Restart(ablastr::fields::MultiFabRegister &fields, const std::string &dir)
Definition PML.cpp:1285
amrex::IntVect m_fill_guards_current
Definition PML.H:217
std::unique_ptr< SpectralSolver > spectral_solver_cp
Definition PML.H:231
std::unique_ptr< SpectralSolver > spectral_solver_fp
Definition PML.H:230
const amrex::BoxArray * m_grids
Definition PML.H:115
SigmaBox * create(const amrex::Box &box, int, const amrex::FabInfo &, int) const final
Definition PML.H:97
amrex::IntVect m_delta
Definition PML.H:118
SigmaBoxFactory(SigmaBoxFactory &&) noexcept=default
amrex::IntVect m_ncell
Definition PML.H:117
amrex::Box m_regdomain
Definition PML.H:119
SigmaBoxFactory(const SigmaBoxFactory &)=default
SigmaBoxFactory * clone() const final
Definition PML.H:109
SigmaBoxFactory(const amrex::BoxArray *grid_ba, const amrex::Real *dx, const amrex::IntVect &ncell, const amrex::IntVect &delta, const amrex::Box ®ular_domain, const amrex::Real v_sigma_sb)
Definition PML.H:84
amrex::Real m_v_sigma_sb
Definition PML.H:120
void destroy(SigmaBox *fab) const final
Definition PML.H:103
~SigmaBoxFactory() override=default
const amrex::Real * m_dx
Definition PML.H:116
Top-level class for the electromagnetic spectral solver.
Definition SpectralSolver.H:37
__host__ static __device__ constexpr IntVectND< dim > TheUnitVector() noexcept
void FillBoundary(bool cross=false)
PODVector< T, ArenaAllocator< T > > DeviceVector
Definition EffectivePotentialPoissonSolver.H:63
std::array< amrex::MultiFab *, 3 > VectorField
Definition MultiFabRegister.H:201
amrex::MultiFab * ScalarField
Definition MultiFabRegister.H:190
GridType
Definition Enums.H:23
PatchType
Definition Enums.H:30
SigmaVect sigma_star_cumsum_fac
Definition PML.H:75
void define_multiple(const amrex::Box &box, const amrex::BoxArray &grids, const amrex::IntVect &ncell, const amrex::Array< amrex::Real, 3 > &fac, amrex::Real v_sigma)
Definition PML.cpp:382
void define_single(const amrex::Box ®domain, const amrex::IntVect &ncell, const amrex::Array< amrex::Real, 3 > &fac, amrex::Real v_sigma)
Definition PML.cpp:339
SigmaVect sigma_star
Definition PML.H:70
SigmaVect sigma_star_fac
Definition PML.H:74
std::array< Sigma, 3 > SigmaVect
Definition PML.H:64
SigmaVect sigma_cumsum
Definition PML.H:69
SigmaVect sigma_star_cumsum
Definition PML.H:71
void ComputePMLFactorsB(const amrex::Real *dx, amrex::Real dt)
Definition PML.cpp:582
void value_type
Definition PML.H:66
SigmaVect sigma_cumsum_fac
Definition PML.H:73
SigmaVect sigma_fac
Definition PML.H:72
SigmaBox(const amrex::Box &box, const amrex::BoxArray &grids, const amrex::Real *dx, const amrex::IntVect &ncell, const amrex::IntVect &delta, const amrex::Box ®domain, amrex::Real v_sigma)
Definition PML.cpp:289
void ComputePMLFactorsE(const amrex::Real *dx, amrex::Real dt)
Definition PML.cpp:616
SigmaVect sigma
Definition PML.H:68
amrex::Real v_sigma
Definition PML.H:76
int m_lo
Definition PML.H:44
int lo() const
Definition PML.H:42
int hi() const
Definition PML.H:43
int m_hi
Definition PML.H:44
Definition MultiFabRegister.H:275