|
WarpX
|
#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::Parser > | m_By_x_lo |
| std::unique_ptr< amrex::Parser > | m_Bz_x_lo |
| std::unique_ptr< amrex::Parser > | m_By_x_hi |
| std::unique_ptr< amrex::Parser > | m_Bz_x_hi |
| bool | m_set_B_z_lo = false |
| bool | m_set_B_z_hi = false |
| std::unique_ptr< amrex::Parser > | m_Bx_z_lo |
| std::unique_ptr< amrex::Parser > | m_By_z_lo |
| std::unique_ptr< amrex::Parser > | m_Bx_z_hi |
| std::unique_ptr< amrex::Parser > | m_By_z_hi |
| bool | m_set_E_x_lo = false |
| bool | m_set_E_x_hi = false |
| std::unique_ptr< amrex::Parser > | m_Ey_x_lo |
| std::unique_ptr< amrex::Parser > | m_Ez_x_lo |
| std::unique_ptr< amrex::Parser > | m_Ey_x_hi |
| std::unique_ptr< amrex::Parser > | m_Ez_x_hi |
| bool | m_set_E_z_lo = false |
| bool | m_set_E_z_hi = false |
| std::unique_ptr< amrex::Parser > | m_Ex_z_lo |
| std::unique_ptr< amrex::Parser > | m_Ey_z_lo |
| std::unique_ptr< amrex::Parser > | m_Ex_z_hi |
| std::unique_ptr< amrex::Parser > | m_Ey_z_hi |
| PEC_Insulator::PEC_Insulator | ( | ) |
| 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.
| [in,out] | Bfield | |
| [in] | field_boundary_lo | lower field boundary conditions |
| [in] | field_boundary_hi | upper field boundary conditions |
| [in] | ng_fieldgather | number of guard cells used by field gather |
| [in] | geom | geometry object of level "lev" |
| [in] | lev | level of the Multifab |
| [in] | patch_type | coarse or fine |
| [in] | ref_ratios | vector containing the refinement ratios of the refinement levels |
| [in] | time | current time of the simulation |
| 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.
| [in,out] | Efield | |
| [in] | field_boundary_lo | lower field boundary conditions |
| [in] | field_boundary_hi | upper field boundary conditions |
| [in] | ng_fieldgather | number of guard cells used by field gather |
| [in] | geom | geometry object of level "lev" |
| [in] | lev | level of the Multifab |
| [in] | patch_type | coarse or fine |
| [in] | ref_ratios | vector containing the refinement ratios of the refinement levels |
| [in] | time | current time of the simulation |
| [in] | split_pml_field | whether pml the multifab is the regular Efield or split pml field |
| 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.
| [in,out] | field | |
| [in] | field_boundary_lo | lower field boundary conditions |
| [in] | field_boundary_hi | upper field boundary conditions |
| [in] | ng_fieldgather | number of guard cells used by field gather |
| [in] | geom | geometry object of level "lev" |
| [in] | lev | level of the Multifab |
| [in] | patch_type | coarse or fine |
| [in] | ref_ratios | vector containing the refinement ratios of the refinement levels |
| [in] | time | current time of the simulation |
| [in] | split_pml_field | whether pml the multifab is the regular Efield or split pml field |
| [in] | E_like | whether the field is E like or B like |
| [in] | set_F_x_lo | whether the tangential field at the boundary was specified |
| [in] | set_F_x_hi | whether the tangential field at the boundary was specified |
| [in] | a_Fy_x_lo | the parser for the tangential field at the boundary |
| [in] | a_Fz_x_lo | the parser for the tangential field at the boundary |
| [in] | a_Fy_x_hi | the parser for the tangential field at the boundary |
| [in] | a_Fz_x_hi | the 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 |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |