WarpX
Public Member Functions | Static Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
PML Class Reference

#include <PML.H>

Public Member Functions

 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, short grid_type, int do_moving_window, int pml_has_particles, int do_pml_in_domain, int psatd_solution_type, int J_in_time, int rho_in_time, bool do_pml_dive_cleaning, bool do_pml_divb_cleaning, const amrex::IntVect &fill_guards_fields, const amrex::IntVect &fill_guards_current, int max_guard_EB, amrex::Real v_sigma_sb, amrex::IntVect do_pml_Lo=amrex::IntVect::TheUnitVector(), amrex::IntVect do_pml_Hi=amrex::IntVect::TheUnitVector())
 
void ComputePMLFactors (amrex::Real dt)
 
std::array< amrex::MultiFab *, 3 > GetE_fp ()
 
std::array< amrex::MultiFab *, 3 > GetB_fp ()
 
std::array< amrex::MultiFab *, 3 > Getj_fp ()
 
std::array< amrex::MultiFab *, 3 > GetE_cp ()
 
std::array< amrex::MultiFab *, 3 > GetB_cp ()
 
std::array< amrex::MultiFab *, 3 > Getj_cp ()
 
std::array< amrex::MultiFab *, 3 > Get_edge_lengths ()
 
std::array< amrex::MultiFab *, 3 > Get_face_areas ()
 
amrex::MultiFabGetF_fp ()
 
amrex::MultiFabGetF_cp ()
 
amrex::MultiFabGetG_fp ()
 
amrex::MultiFabGetG_cp ()
 
const MultiSigmaBoxGetMultiSigmaBox_fp () const
 
const MultiSigmaBoxGetMultiSigmaBox_cp () const
 
void PushPSATD (int lev)
 
void CopyJtoPMLs (const std::array< amrex::MultiFab *, 3 > &j_fp, const std::array< amrex::MultiFab *, 3 > &j_cp)
 
void Exchange (const std::array< amrex::MultiFab *, 3 > &mf_pml, const std::array< amrex::MultiFab *, 3 > &mf, const PatchType &patch_type, int do_pml_in_domain)
 
void CopyJtoPMLs (PatchType patch_type, const std::array< amrex::MultiFab *, 3 > &jp)
 
void ExchangeF (amrex::MultiFab *F_fp, amrex::MultiFab *F_cp, int do_pml_in_domain)
 
void ExchangeF (PatchType patch_type, amrex::MultiFab *Fp, int do_pml_in_domain)
 
void ExchangeG (amrex::MultiFab *G_fp, amrex::MultiFab *G_cp, int do_pml_in_domain)
 
void ExchangeG (PatchType patch_type, amrex::MultiFab *Gp, int do_pml_in_domain)
 
void FillBoundaryE (PatchType patch_type, std::optional< bool > nodal_sync=std::nullopt)
 
void FillBoundaryB (PatchType patch_type, std::optional< bool > nodal_sync=std::nullopt)
 
void FillBoundaryF (PatchType patch_type, std::optional< bool > nodal_sync=std::nullopt)
 
void FillBoundaryG (PatchType patch_type, std::optional< bool > nodal_sync=std::nullopt)
 
bool ok () const
 
void CheckPoint (const std::string &dir) const
 
void Restart (const std::string &dir)
 

Static Public Member Functions

static void Exchange (amrex::MultiFab &pml, amrex::MultiFab &reg, const amrex::Geometry &geom, int do_pml_in_domain)
 

Private Member Functions

amrex::FabFactory< amrex::FArrayBox > const & fieldFactory () const noexcept
 

Static Private Member Functions

static amrex::BoxArray MakeBoxArray (bool single_box_domain, const amrex::Box &regular_domain, const amrex::Geometry &geom, const amrex::BoxArray &grid_ba, const amrex::IntVect &ncell, int do_pml_in_domain, const amrex::IntVect &do_pml_Lo, const amrex::IntVect &do_pml_Hi)
 
static amrex::BoxArray MakeBoxArray_single (const amrex::Box &regular_domain, const amrex::BoxArray &grid_ba, const amrex::IntVect &ncell, const amrex::IntVect &do_pml_Lo, const amrex::IntVect &do_pml_Hi)
 
static amrex::BoxArray MakeBoxArray_multiple (const amrex::Geometry &geom, const amrex::BoxArray &grid_ba, const amrex::IntVect &ncell, int do_pml_in_domain, const amrex::IntVect &do_pml_Lo, const amrex::IntVect &do_pml_Hi)
 
static void CopyToPML (amrex::MultiFab &pml, amrex::MultiFab &reg, const amrex::Geometry &geom)
 

Private Attributes

bool m_ok
 
bool m_dive_cleaning
 
bool m_divb_cleaning
 
const amrex::IntVect m_fill_guards_fields
 
const amrex::IntVect m_fill_guards_current
 
const amrex::Geometrym_geom
 
const amrex::Geometrym_cgeom
 
std::array< std::unique_ptr< amrex::MultiFab >, 3 > pml_E_fp
 
std::array< std::unique_ptr< amrex::MultiFab >, 3 > pml_B_fp
 
std::array< std::unique_ptr< amrex::MultiFab >, 3 > pml_j_fp
 
std::array< std::unique_ptr< amrex::MultiFab >, 3 > pml_edge_lengths
 
std::array< std::unique_ptr< amrex::MultiFab >, 3 > pml_E_cp
 
std::array< std::unique_ptr< amrex::MultiFab >, 3 > pml_B_cp
 
std::array< std::unique_ptr< amrex::MultiFab >, 3 > pml_j_cp
 
std::unique_ptr< amrex::MultiFabpml_F_fp
 
std::unique_ptr< amrex::MultiFabpml_F_cp
 
std::unique_ptr< amrex::MultiFabpml_G_fp
 
std::unique_ptr< amrex::MultiFabpml_G_cp
 
std::unique_ptr< MultiSigmaBoxsigba_fp
 
std::unique_ptr< MultiSigmaBoxsigba_cp
 
std::unique_ptr< SpectralSolverspectral_solver_fp
 
std::unique_ptr< SpectralSolverspectral_solver_cp
 
std::unique_ptr< amrex::FabFactory< amrex::FArrayBox > > pml_field_factory
 

Constructor & Destructor Documentation

◆ PML()

PML::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,
short  grid_type,
int  do_moving_window,
int  pml_has_particles,
int  do_pml_in_domain,
int  psatd_solution_type,
int  J_in_time,
int  rho_in_time,
bool  do_pml_dive_cleaning,
bool  do_pml_divb_cleaning,
const amrex::IntVect fill_guards_fields,
const amrex::IntVect fill_guards_current,
int  max_guard_EB,
amrex::Real  v_sigma_sb,
amrex::IntVect  do_pml_Lo = amrex::IntVect::TheUnitVector(),
amrex::IntVect  do_pml_Hi = amrex::IntVect::TheUnitVector() 
)

Member Function Documentation

◆ CheckPoint()

void PML::CheckPoint ( const std::string &  dir) const

◆ ComputePMLFactors()

void PML::ComputePMLFactors ( amrex::Real  dt)

◆ CopyJtoPMLs() [1/2]

void PML::CopyJtoPMLs ( const std::array< amrex::MultiFab *, 3 > &  j_fp,
const std::array< amrex::MultiFab *, 3 > &  j_cp 
)

◆ CopyJtoPMLs() [2/2]

void PML::CopyJtoPMLs ( PatchType  patch_type,
const std::array< amrex::MultiFab *, 3 > &  jp 
)

◆ CopyToPML()

void PML::CopyToPML ( amrex::MultiFab pml,
amrex::MultiFab reg,
const amrex::Geometry geom 
)
staticprivate

◆ Exchange() [1/2]

void PML::Exchange ( amrex::MultiFab pml,
amrex::MultiFab reg,
const amrex::Geometry geom,
int  do_pml_in_domain 
)
static

◆ Exchange() [2/2]

void PML::Exchange ( const std::array< amrex::MultiFab *, 3 > &  mf_pml,
const std::array< amrex::MultiFab *, 3 > &  mf,
const PatchType patch_type,
int  do_pml_in_domain 
)

◆ ExchangeF() [1/2]

void PML::ExchangeF ( amrex::MultiFab F_fp,
amrex::MultiFab F_cp,
int  do_pml_in_domain 
)

◆ ExchangeF() [2/2]

void PML::ExchangeF ( PatchType  patch_type,
amrex::MultiFab Fp,
int  do_pml_in_domain 
)

◆ ExchangeG() [1/2]

void PML::ExchangeG ( amrex::MultiFab G_fp,
amrex::MultiFab G_cp,
int  do_pml_in_domain 
)

◆ ExchangeG() [2/2]

void PML::ExchangeG ( PatchType  patch_type,
amrex::MultiFab Gp,
int  do_pml_in_domain 
)

◆ fieldFactory()

amrex::FabFactory<amrex::FArrayBox> const& PML::fieldFactory ( ) const
inlineprivatenoexcept

◆ FillBoundaryB()

void PML::FillBoundaryB ( PatchType  patch_type,
std::optional< bool >  nodal_sync = std::nullopt 
)

◆ FillBoundaryE()

void PML::FillBoundaryE ( PatchType  patch_type,
std::optional< bool >  nodal_sync = std::nullopt 
)

◆ FillBoundaryF()

void PML::FillBoundaryF ( PatchType  patch_type,
std::optional< bool >  nodal_sync = std::nullopt 
)

◆ FillBoundaryG()

void PML::FillBoundaryG ( PatchType  patch_type,
std::optional< bool >  nodal_sync = std::nullopt 
)

◆ Get_edge_lengths()

std::array< MultiFab *, 3 > PML::Get_edge_lengths ( )

◆ Get_face_areas()

std::array<amrex::MultiFab*,3> PML::Get_face_areas ( )

◆ GetB_cp()

std::array< MultiFab *, 3 > PML::GetB_cp ( )

◆ GetB_fp()

std::array< MultiFab *, 3 > PML::GetB_fp ( )

◆ GetE_cp()

std::array< MultiFab *, 3 > PML::GetE_cp ( )

◆ GetE_fp()

std::array< MultiFab *, 3 > PML::GetE_fp ( )

◆ GetF_cp()

MultiFab * PML::GetF_cp ( )

◆ GetF_fp()

MultiFab * PML::GetF_fp ( )

◆ GetG_cp()

MultiFab * PML::GetG_cp ( )

◆ GetG_fp()

MultiFab * PML::GetG_fp ( )

◆ Getj_cp()

std::array< MultiFab *, 3 > PML::Getj_cp ( )

◆ Getj_fp()

std::array< MultiFab *, 3 > PML::Getj_fp ( )

◆ GetMultiSigmaBox_cp()

const MultiSigmaBox& PML::GetMultiSigmaBox_cp ( ) const
inline

◆ GetMultiSigmaBox_fp()

const MultiSigmaBox& PML::GetMultiSigmaBox_fp ( ) const
inline

◆ MakeBoxArray()

BoxArray PML::MakeBoxArray ( bool  single_box_domain,
const amrex::Box regular_domain,
const amrex::Geometry geom,
const amrex::BoxArray grid_ba,
const amrex::IntVect ncell,
int  do_pml_in_domain,
const amrex::IntVect do_pml_Lo,
const amrex::IntVect do_pml_Hi 
)
staticprivate

◆ MakeBoxArray_multiple()

BoxArray PML::MakeBoxArray_multiple ( const amrex::Geometry geom,
const amrex::BoxArray grid_ba,
const amrex::IntVect ncell,
int  do_pml_in_domain,
const amrex::IntVect do_pml_Lo,
const amrex::IntVect do_pml_Hi 
)
staticprivate

◆ MakeBoxArray_single()

BoxArray PML::MakeBoxArray_single ( const amrex::Box regular_domain,
const amrex::BoxArray grid_ba,
const amrex::IntVect ncell,
const amrex::IntVect do_pml_Lo,
const amrex::IntVect do_pml_Hi 
)
staticprivate

◆ ok()

bool PML::ok ( ) const
inline

◆ PushPSATD()

void PML::PushPSATD ( int  lev)

◆ Restart()

void PML::Restart ( const std::string &  dir)

Member Data Documentation

◆ m_cgeom

const amrex::Geometry* PML::m_cgeom
private

◆ m_divb_cleaning

bool PML::m_divb_cleaning
private

◆ m_dive_cleaning

bool PML::m_dive_cleaning
private

◆ m_fill_guards_current

const amrex::IntVect PML::m_fill_guards_current
private

◆ m_fill_guards_fields

const amrex::IntVect PML::m_fill_guards_fields
private

◆ m_geom

const amrex::Geometry* PML::m_geom
private

◆ m_ok

bool PML::m_ok
private

◆ pml_B_cp

std::array<std::unique_ptr<amrex::MultiFab>,3> PML::pml_B_cp
private

◆ pml_B_fp

std::array<std::unique_ptr<amrex::MultiFab>,3> PML::pml_B_fp
private

◆ pml_E_cp

std::array<std::unique_ptr<amrex::MultiFab>,3> PML::pml_E_cp
private

◆ pml_E_fp

std::array<std::unique_ptr<amrex::MultiFab>,3> PML::pml_E_fp
private

◆ pml_edge_lengths

std::array<std::unique_ptr<amrex::MultiFab>,3> PML::pml_edge_lengths
private

◆ pml_F_cp

std::unique_ptr<amrex::MultiFab> PML::pml_F_cp
private

◆ pml_F_fp

std::unique_ptr<amrex::MultiFab> PML::pml_F_fp
private

◆ pml_field_factory

std::unique_ptr<amrex::FabFactory<amrex::FArrayBox> > PML::pml_field_factory
private

◆ pml_G_cp

std::unique_ptr<amrex::MultiFab> PML::pml_G_cp
private

◆ pml_G_fp

std::unique_ptr<amrex::MultiFab> PML::pml_G_fp
private

◆ pml_j_cp

std::array<std::unique_ptr<amrex::MultiFab>,3> PML::pml_j_cp
private

◆ pml_j_fp

std::array<std::unique_ptr<amrex::MultiFab>,3> PML::pml_j_fp
private

◆ sigba_cp

std::unique_ptr<MultiSigmaBox> PML::sigba_cp
private

◆ sigba_fp

std::unique_ptr<MultiSigmaBox> PML::sigba_fp
private

◆ spectral_solver_cp

std::unique_ptr<SpectralSolver> PML::spectral_solver_cp
private

◆ spectral_solver_fp

std::unique_ptr<SpectralSolver> PML::spectral_solver_fp
private

The documentation for this class was generated from the following files: