|
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 | ZeroParallelFieldInConductor (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) |
| Zeros the parallel fields on the boundary When the E field is being set, the field is zeroed everywhere, in both insulator and conductor. When the B field id being set, the field is zeroed only in the conductor. | |
| void | ZeroParallelScalarInConductor (amrex::MultiFab *scalar, amrex::Array< FieldBoundaryType, 3 > const &field_boundary_lo, amrex::Array< FieldBoundaryType, 3 > const &field_boundary_hi, amrex::Geometry const &geom, int lev, PatchType patch_type, amrex::Vector< amrex::IntVect > const &ref_ratios) |
| Zeros the scalar on the boundary When the E field is being set, the scalar is zeroed everywhere, in both insulator and conductor. When the B field id being set, the scalar is zeroed only in the conductor. | |
| 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 only_zero_parallel_field, amrex::Vector< int > const &set_Fx_lo, amrex::Vector< int > const &set_Fy_lo, amrex::Vector< int > const &set_Fz_lo, amrex::Vector< int > const &set_Fx_hi, amrex::Vector< int > const &set_Fy_hi, amrex::Vector< int > const &set_Fz_hi, amrex::Vector< amrex::ParserExecutor< 3 > > const &Fx_parsers_lo, amrex::Vector< amrex::ParserExecutor< 3 > > const &Fy_parsers_lo, amrex::Vector< amrex::ParserExecutor< 3 > > const &Fz_parsers_lo, amrex::Vector< amrex::ParserExecutor< 3 > > const &Fx_parsers_hi, amrex::Vector< amrex::ParserExecutor< 3 > > const &Fy_parsers_hi, amrex::Vector< amrex::ParserExecutor< 3 > > const &Fz_parsers_hi) |
| The work routine applying the boundary condition. | |
| int | IsESet (int idim, int iside) const |
| int | IsBSet (int idim, int iside) const |
| int | IsESet (int idim, int iside, int ifield) const |
| int | IsBSet (int idim, int iside, int ifield) const |
| 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 | only_zero_parallel_field, | ||
| amrex::Vector< int > const & | set_Fx_lo, | ||
| amrex::Vector< int > const & | set_Fy_lo, | ||
| amrex::Vector< int > const & | set_Fz_lo, | ||
| amrex::Vector< int > const & | set_Fx_hi, | ||
| amrex::Vector< int > const & | set_Fy_hi, | ||
| amrex::Vector< int > const & | set_Fz_hi, | ||
| amrex::Vector< amrex::ParserExecutor< 3 > > const & | Fx_parsers_lo, | ||
| amrex::Vector< amrex::ParserExecutor< 3 > > const & | Fy_parsers_lo, | ||
| amrex::Vector< amrex::ParserExecutor< 3 > > const & | Fz_parsers_lo, | ||
| amrex::Vector< amrex::ParserExecutor< 3 > > const & | Fx_parsers_hi, | ||
| amrex::Vector< amrex::ParserExecutor< 3 > > const & | Fy_parsers_hi, | ||
| amrex::Vector< amrex::ParserExecutor< 3 > > const & | Fz_parsers_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] | only_zero_parallel_field | only zero the parallel field on the boundary |
| [in] | set_Fx_lo | the flags for the x-field at the lower boundaries |
| [in] | set_Fy_lo | the flags for the y-field at the lower boundaries |
| [in] | set_Fz_lo | the flags for the z-field at the lower boundaries |
| [in] | set_Fx_hi | the flags for the x-field at the upper boundaries |
| [in] | set_Fy_hi | the flags for the y-field at the upper boundaries |
| [in] | set_Fz_hi | the flags for the z-field at the upper boundaries |
| [in] | Fx_parsers_lo | the parsers for the x-field at the lower boundaries |
| [in] | Fy_parsers_lo | the parsers for the y-field at the lower boundaries |
| [in] | Fz_parsers_lo | the parsers for the z-field at the lower boundaries |
| [in] | Fx_parsers_hi | the parsers for the x-field at the upper boundaries |
| [in] | Fy_parsers_hi | the parsers for the y-field at the upper boundaries |
| [in] | Fz_parsers_hi | the parsers for the z-field at the upper boundaries |
|
inline |
| int PEC_Insulator::IsBSet | ( | int | idim, |
| int | iside, | ||
| int | ifield ) const |
|
inline |
| int PEC_Insulator::IsESet | ( | int | idim, |
| int | iside, | ||
| int | ifield ) const |
| void PEC_Insulator::ZeroParallelFieldInConductor | ( | 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 ) |
Zeros the parallel fields on the boundary When the E field is being set, the field is zeroed everywhere, in both insulator and conductor. When the B field id being set, the field is zeroed only in the conductor.
| [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 |
| void PEC_Insulator::ZeroParallelScalarInConductor | ( | amrex::MultiFab * | scalar, |
| amrex::Array< FieldBoundaryType, 3 > const & | field_boundary_lo, | ||
| amrex::Array< FieldBoundaryType, 3 > const & | field_boundary_hi, | ||
| amrex::Geometry const & | geom, | ||
| int | lev, | ||
| PatchType | patch_type, | ||
| amrex::Vector< amrex::IntVect > const & | ref_ratios ) |
Zeros the scalar on the boundary When the E field is being set, the scalar is zeroed everywhere, in both insulator and conductor. When the B field id being set, the scalar is zeroed only in the conductor.
| [in,out] | scalar | |
| [in] | field_boundary_lo | lower field boundary conditions |
| [in] | field_boundary_hi | upper field boundary conditions |
| [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 |
|
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 |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |