WarpX
Loading...
Searching...
No Matches
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, 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())
 
void ComputePMLFactors (amrex::Real dt)
 
const MultiSigmaBoxGetMultiSigmaBox_fp () const
 
const MultiSigmaBoxGetMultiSigmaBox_cp () const
 
void PushPSATD (ablastr::fields::MultiFabRegister &fields, int lev)
 
void CopyJtoPMLs (ablastr::fields::MultiFabRegister &fields, int lev)
 
void Exchange (ablastr::fields::VectorField mf_pml, ablastr::fields::VectorField mf, const PatchType &patch_type, int do_pml_in_domain)
 
void Exchange (amrex::MultiFab *mf_pml, amrex::MultiFab *mf, const PatchType &patch_type, int do_pml_in_domain)
 
void CopyJtoPMLs (ablastr::fields::MultiFabRegister &fields, PatchType patch_type, int lev)
 
void FillBoundary (ablastr::fields::VectorField mf_pml, PatchType patch_type, std::optional< bool > nodal_sync=std::nullopt)
 
void FillBoundary (amrex::MultiFab &mf_pml, PatchType patch_type, std::optional< bool > nodal_sync=std::nullopt)
 
bool ok () const
 
void CheckPoint (ablastr::fields::MultiFabRegister &fields, const std::string &dir) const
 
void Restart (ablastr::fields::MultiFabRegister &fields, 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)
 

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
 
amrex::IntVect m_fill_guards_fields
 
amrex::IntVect m_fill_guards_current
 
const amrex::Geometrym_geom
 
const amrex::Geometrym_cgeom
 
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,
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() )

Member Function Documentation

◆ CheckPoint()

void PML::CheckPoint ( ablastr::fields::MultiFabRegister & fields,
const std::string & dir ) const

◆ ComputePMLFactors()

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

◆ CopyJtoPMLs() [1/2]

void PML::CopyJtoPMLs ( ablastr::fields::MultiFabRegister & fields,
int lev )

◆ CopyJtoPMLs() [2/2]

void PML::CopyJtoPMLs ( ablastr::fields::MultiFabRegister & fields,
PatchType patch_type,
int lev )

◆ CopyToPML()

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

◆ Exchange() [1/3]

void PML::Exchange ( ablastr::fields::VectorField mf_pml,
ablastr::fields::VectorField mf,
const PatchType & patch_type,
int do_pml_in_domain )

◆ Exchange() [2/3]

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

◆ Exchange() [3/3]

void PML::Exchange ( amrex::MultiFab * mf_pml,
amrex::MultiFab * mf,
const PatchType & patch_type,
int do_pml_in_domain )

◆ FillBoundary() [1/2]

void PML::FillBoundary ( ablastr::fields::VectorField mf_pml,
PatchType patch_type,
std::optional< bool > nodal_sync = std::nullopt )

◆ FillBoundary() [2/2]

void PML::FillBoundary ( amrex::MultiFab & mf_pml,
PatchType patch_type,
std::optional< bool > nodal_sync = std::nullopt )

◆ GetMultiSigmaBox_cp()

const MultiSigmaBox & PML::GetMultiSigmaBox_cp ( ) const
inlinenodiscard

◆ GetMultiSigmaBox_fp()

const MultiSigmaBox & PML::GetMultiSigmaBox_fp ( ) const
inlinenodiscard

◆ 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
inlinenodiscard

◆ PushPSATD()

void PML::PushPSATD ( ablastr::fields::MultiFabRegister & fields,
int lev )

◆ Restart()

void PML::Restart ( ablastr::fields::MultiFabRegister & fields,
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

amrex::IntVect PML::m_fill_guards_current
private

◆ m_fill_guards_fields

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_field_factory

std::unique_ptr<amrex::FabFactory<amrex::FArrayBox> > PML::pml_field_factory
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: