WarpX
Loading...
Searching...
No Matches
PEC_Insulator Class Reference

#include <PEC_Insulator.H>

Public Member Functions

 PEC_Insulator ()
 
void ApplyPEC_InsulatortoEfield (std::array< amrex::MultiFab *, 3 > Efield, amrex::Array< FieldBoundaryType, 3 > const &field_boundary_lo, amrex::Array< FieldBoundaryType, 3 > const &field_boundary_hi, amrex::IntVect const &ng_fieldgather, amrex::Geometry const &geom, int lev, PatchType patch_type, amrex::Vector< amrex::IntVect > const &ref_ratios, amrex::Real time, bool split_pml_field=false)
 Apply either the PEC or insulator boundary condition on the boundary and in the guard cells. In the PEC, the nodal fields (in a Yee mesh) are made even relative to the boundary, the non-nodal fields are made odd. In the insulator, the tangential fields are set to the value if specified, otherwise unchanged, and the normal fields extrapolated from the valid cells.
 
void ApplyPEC_InsulatortoBfield (std::array< amrex::MultiFab *, 3 > Bfield, amrex::Array< FieldBoundaryType, 3 > const &field_boundary_lo, amrex::Array< FieldBoundaryType, 3 > const &field_boundary_hi, amrex::IntVect const &ng_fieldgather, amrex::Geometry const &geom, int lev, PatchType patch_type, amrex::Vector< amrex::IntVect > const &ref_ratios, amrex::Real time)
 Apply either the PEC or insulator boundary condition on the boundary and in the guard cells. In the PEC, the nodal fields (in a Yee mesh) are made even relative to the boundary, the non-nodal fields are made odd. In the insulator, the tangential fields are set to the value if specified, otherwise unchanged, and the normal fields extrapolated from the valid cells.
 
void ApplyPEC_InsulatortoField (std::array< amrex::MultiFab *, 3 > field, amrex::Array< FieldBoundaryType, 3 > const &field_boundary_lo, amrex::Array< FieldBoundaryType, 3 > const &field_boundary_hi, amrex::IntVect const &ng_fieldgather, amrex::Geometry const &geom, int lev, PatchType patch_type, amrex::Vector< amrex::IntVect > const &ref_ratios, amrex::Real time, bool split_pml_field, bool E_like, bool set_F_x_lo, bool set_F_x_hi, std::unique_ptr< amrex::Parser > const &a_Fy_x_lo, std::unique_ptr< amrex::Parser > const &a_Fz_x_lo, std::unique_ptr< amrex::Parser > const &a_Fy_x_hi, std::unique_ptr< amrex::Parser > const &a_Fz_x_hi)
 The work routine applying the boundary condition.
 

Private Member Functions

bool ReadTangentialFieldParser (amrex::ParmParse const &pp_insulator, std::unique_ptr< amrex::Parser > &parser, std::string const &input_name, std::string const &coord1, std::string const &coord2)
 

Private Attributes

std::vector< std::unique_ptr< amrex::Parser > > m_insulator_area_lo
 
std::vector< std::unique_ptr< amrex::Parser > > m_insulator_area_hi
 
bool m_set_B_x_lo = false
 
bool m_set_B_x_hi = false
 
std::unique_ptr< amrex::Parserm_By_x_lo
 
std::unique_ptr< amrex::Parserm_Bz_x_lo
 
std::unique_ptr< amrex::Parserm_By_x_hi
 
std::unique_ptr< amrex::Parserm_Bz_x_hi
 
bool m_set_B_z_lo = false
 
bool m_set_B_z_hi = false
 
std::unique_ptr< amrex::Parserm_Bx_z_lo
 
std::unique_ptr< amrex::Parserm_By_z_lo
 
std::unique_ptr< amrex::Parserm_Bx_z_hi
 
std::unique_ptr< amrex::Parserm_By_z_hi
 
bool m_set_E_x_lo = false
 
bool m_set_E_x_hi = false
 
std::unique_ptr< amrex::Parserm_Ey_x_lo
 
std::unique_ptr< amrex::Parserm_Ez_x_lo
 
std::unique_ptr< amrex::Parserm_Ey_x_hi
 
std::unique_ptr< amrex::Parserm_Ez_x_hi
 
bool m_set_E_z_lo = false
 
bool m_set_E_z_hi = false
 
std::unique_ptr< amrex::Parserm_Ex_z_lo
 
std::unique_ptr< amrex::Parserm_Ey_z_lo
 
std::unique_ptr< amrex::Parserm_Ex_z_hi
 
std::unique_ptr< amrex::Parserm_Ey_z_hi
 

Constructor & Destructor Documentation

◆ PEC_Insulator()

PEC_Insulator::PEC_Insulator ( )

Member Function Documentation

◆ ApplyPEC_InsulatortoBfield()

void PEC_Insulator::ApplyPEC_InsulatortoBfield ( std::array< amrex::MultiFab *, 3 > Bfield,
amrex::Array< FieldBoundaryType, 3 > const & field_boundary_lo,
amrex::Array< FieldBoundaryType, 3 > const & field_boundary_hi,
amrex::IntVect const & ng_fieldgather,
amrex::Geometry const & geom,
int lev,
PatchType patch_type,
amrex::Vector< amrex::IntVect > const & ref_ratios,
amrex::Real time )

Apply either the PEC or insulator boundary condition on the boundary and in the guard cells. In the PEC, the nodal fields (in a Yee mesh) are made even relative to the boundary, the non-nodal fields are made odd. In the insulator, the tangential fields are set to the value if specified, otherwise unchanged, and the normal fields extrapolated from the valid cells.

Parameters
[in,out]Bfield
[in]field_boundary_lolower field boundary conditions
[in]field_boundary_hiupper field boundary conditions
[in]ng_fieldgathernumber of guard cells used by field gather
[in]geomgeometry object of level "lev"
[in]levlevel of the Multifab
[in]patch_typecoarse or fine
[in]ref_ratiosvector containing the refinement ratios of the refinement levels
[in]timecurrent time of the simulation

◆ ApplyPEC_InsulatortoEfield()

void PEC_Insulator::ApplyPEC_InsulatortoEfield ( std::array< amrex::MultiFab *, 3 > Efield,
amrex::Array< FieldBoundaryType, 3 > const & field_boundary_lo,
amrex::Array< FieldBoundaryType, 3 > const & field_boundary_hi,
amrex::IntVect const & ng_fieldgather,
amrex::Geometry const & geom,
int lev,
PatchType patch_type,
amrex::Vector< amrex::IntVect > const & ref_ratios,
amrex::Real time,
bool split_pml_field = false )

Apply either the PEC or insulator boundary condition on the boundary and in the guard cells. In the PEC, the nodal fields (in a Yee mesh) are made even relative to the boundary, the non-nodal fields are made odd. In the insulator, the tangential fields are set to the value if specified, otherwise unchanged, and the normal fields extrapolated from the valid cells.

Parameters
[in,out]Efield
[in]field_boundary_lolower field boundary conditions
[in]field_boundary_hiupper field boundary conditions
[in]ng_fieldgathernumber of guard cells used by field gather
[in]geomgeometry object of level "lev"
[in]levlevel of the Multifab
[in]patch_typecoarse or fine
[in]ref_ratiosvector containing the refinement ratios of the refinement levels
[in]timecurrent time of the simulation
[in]split_pml_fieldwhether pml the multifab is the regular Efield or split pml field

◆ ApplyPEC_InsulatortoField()

void PEC_Insulator::ApplyPEC_InsulatortoField ( std::array< amrex::MultiFab *, 3 > field,
amrex::Array< FieldBoundaryType, 3 > const & field_boundary_lo,
amrex::Array< FieldBoundaryType, 3 > const & field_boundary_hi,
amrex::IntVect const & ng_fieldgather,
amrex::Geometry const & geom,
int lev,
PatchType patch_type,
amrex::Vector< amrex::IntVect > const & ref_ratios,
amrex::Real time,
bool split_pml_field,
bool E_like,
bool set_F_x_lo,
bool set_F_x_hi,
std::unique_ptr< amrex::Parser > const & a_Fy_x_lo,
std::unique_ptr< amrex::Parser > const & a_Fz_x_lo,
std::unique_ptr< amrex::Parser > const & a_Fy_x_hi,
std::unique_ptr< amrex::Parser > const & a_Fz_x_hi )

The work routine applying the boundary condition.

Parameters
[in,out]field
[in]field_boundary_lolower field boundary conditions
[in]field_boundary_hiupper field boundary conditions
[in]ng_fieldgathernumber of guard cells used by field gather
[in]geomgeometry object of level "lev"
[in]levlevel of the Multifab
[in]patch_typecoarse or fine
[in]ref_ratiosvector containing the refinement ratios of the refinement levels
[in]timecurrent time of the simulation
[in]split_pml_fieldwhether pml the multifab is the regular Efield or split pml field
[in]E_likewhether the field is E like or B like
[in]set_F_x_lowhether the tangential field at the boundary was specified
[in]set_F_x_hiwhether the tangential field at the boundary was specified
[in]a_Fy_x_lothe parser for the tangential field at the boundary
[in]a_Fz_x_lothe parser for the tangential field at the boundary
[in]a_Fy_x_hithe parser for the tangential field at the boundary
[in]a_Fz_x_hithe parser for the tangential field at the boundary \param[in] set_F_z_lo whether the tangential field at the boundary was specified \param[in] set_F_z_hi whether the tangential field at the boundary was specified \param[in] a_Fx_z_lo the parser for the tangential field at the boundary \param[in] a_Fy_z_lo the parser for the tangential field at the boundary \param[in] a_Fx_z_hi the parser for the tangential field at the boundary \param[in] a_Fy_z_hi the parser for the tangential field at the boundary

◆ ReadTangentialFieldParser()

bool PEC_Insulator::ReadTangentialFieldParser ( amrex::ParmParse const & pp_insulator,
std::unique_ptr< amrex::Parser > & parser,
std::string const & input_name,
std::string const & coord1,
std::string const & coord2 )
private

Member Data Documentation

◆ m_Bx_z_hi

std::unique_ptr<amrex::Parser> PEC_Insulator::m_Bx_z_hi
private

◆ m_Bx_z_lo

std::unique_ptr<amrex::Parser> PEC_Insulator::m_Bx_z_lo
private

◆ m_By_x_hi

std::unique_ptr<amrex::Parser> PEC_Insulator::m_By_x_hi
private

◆ m_By_x_lo

std::unique_ptr<amrex::Parser> PEC_Insulator::m_By_x_lo
private

◆ m_By_z_hi

std::unique_ptr<amrex::Parser> PEC_Insulator::m_By_z_hi
private

◆ m_By_z_lo

std::unique_ptr<amrex::Parser> PEC_Insulator::m_By_z_lo
private

◆ m_Bz_x_hi

std::unique_ptr<amrex::Parser> PEC_Insulator::m_Bz_x_hi
private

◆ m_Bz_x_lo

std::unique_ptr<amrex::Parser> PEC_Insulator::m_Bz_x_lo
private

◆ m_Ex_z_hi

std::unique_ptr<amrex::Parser> PEC_Insulator::m_Ex_z_hi
private

◆ m_Ex_z_lo

std::unique_ptr<amrex::Parser> PEC_Insulator::m_Ex_z_lo
private

◆ m_Ey_x_hi

std::unique_ptr<amrex::Parser> PEC_Insulator::m_Ey_x_hi
private

◆ m_Ey_x_lo

std::unique_ptr<amrex::Parser> PEC_Insulator::m_Ey_x_lo
private

◆ m_Ey_z_hi

std::unique_ptr<amrex::Parser> PEC_Insulator::m_Ey_z_hi
private

◆ m_Ey_z_lo

std::unique_ptr<amrex::Parser> PEC_Insulator::m_Ey_z_lo
private

◆ m_Ez_x_hi

std::unique_ptr<amrex::Parser> PEC_Insulator::m_Ez_x_hi
private

◆ m_Ez_x_lo

std::unique_ptr<amrex::Parser> PEC_Insulator::m_Ez_x_lo
private

◆ m_insulator_area_hi

std::vector<std::unique_ptr<amrex::Parser> > PEC_Insulator::m_insulator_area_hi
private

◆ m_insulator_area_lo

std::vector<std::unique_ptr<amrex::Parser> > PEC_Insulator::m_insulator_area_lo
private

◆ m_set_B_x_hi

bool PEC_Insulator::m_set_B_x_hi = false
private

◆ m_set_B_x_lo

bool PEC_Insulator::m_set_B_x_lo = false
private

◆ m_set_B_z_hi

bool PEC_Insulator::m_set_B_z_hi = false
private

◆ m_set_B_z_lo

bool PEC_Insulator::m_set_B_z_lo = false
private

◆ m_set_E_x_hi

bool PEC_Insulator::m_set_E_x_hi = false
private

◆ m_set_E_x_lo

bool PEC_Insulator::m_set_E_x_lo = false
private

◆ m_set_E_z_hi

bool PEC_Insulator::m_set_E_z_hi = false
private

◆ m_set_E_z_lo

bool PEC_Insulator::m_set_E_z_lo = false
private

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