|
| AMREX_GPU_DEVICE AMREX_FORCE_INLINE bool | PEC::is_boundary_PEC (amrex::GpuArray< int, 3 > const &fboundary, int dir) |
| | Determines if the field boundary condition stored in fboundary in direction, dir, is PEC. More...
|
| |
| AMREX_GPU_DEVICE AMREX_FORCE_INLINE bool | PEC::is_boundary_reflecting (amrex::GpuArray< ParticleBoundaryType, 3 > const &pboundary, int dir) |
| | Determines if the particle boundary condition stored in pboundary in direction, dir, is reflecting. More...
|
| |
| AMREX_GPU_DEVICE AMREX_FORCE_INLINE int | PEC::get_cell_count_to_boundary (const amrex::IntVect &dom_lo, const amrex::IntVect &dom_hi, const amrex::IntVect &ijk_vec, const amrex::IntVect &is_nodal, const int idim, const int iside) |
| | Calculates the number of grid points the given index is pass the domain boundary i.e. a value of +1 means the current cell is outside of the simulation domain by 1 cell. Note that the high side domain boundary is between cell dom_hi and dom_hi+1 for cell centered grids and on cell dom_hi+1 for nodal grid. This is why (dom_hi[idim] + is_nodal[idim]) is used below. More...
|
| |
| AMREX_GPU_DEVICE AMREX_FORCE_INLINE void | PEC::SetEfieldOnPEC (const int icomp, const amrex::IntVect &dom_lo, const amrex::IntVect &dom_hi, const amrex::IntVect &ijk_vec, const int n, amrex::Array4< amrex::Real > const &Efield, const amrex::IntVect &is_nodal, amrex::GpuArray< int, 3 > const &fbndry_lo, amrex::GpuArray< int, 3 > const &fbndry_hi) |
| | Sets the electric field value tangential to the PEC boundary to zero. The tangential Efield components in the guard cells outside the domain boundary are set equal and opposite to the field in the valid cells at their mirrored locations. The normal Efield components in the guard cells are set equal to the field in the valid cells at their mirrored locations. The number or depth of guard cells updated is equal to the shape factor of particles in each dimension. For corner cells with mixed boundaries, the mirror location could be outside valid region, while still ensuring PEC condition is maintained across the PEC boundary, and the necessary sign change is accounted for depending on if the component, icomp, is tangential or normal to the PEC boundary. More...
|
| |
| AMREX_GPU_DEVICE AMREX_FORCE_INLINE void | PEC::SetBfieldOnPEC (const int icomp, const amrex::IntVect &dom_lo, const amrex::IntVect &dom_hi, const amrex::IntVect &ijk_vec, const int n, amrex::Array4< amrex::Real > const &Bfield, const amrex::IntVect &is_nodal, amrex::GpuArray< int, 3 > const &fbndry_lo, amrex::GpuArray< int, 3 > const &fbndry_hi) |
| | Sets the magnetic field value normal to the PEC boundary to zero. The tangential (and normal) field value of the guard cells outside the domain boundary are set equal (and opposite) to the respective field components in the valid cells at their mirrored locations. The number or depth of guard cells updated is equal to the shape factor of particles in each dimension. More...
|
| |
| AMREX_GPU_DEVICE AMREX_FORCE_INLINE void | PEC::SetRhofieldFromPEC (const amrex::IntVect &dom_lo, const amrex::IntVect &dom_hi, const amrex::IntVect &nguard, const amrex::IntVect &ijk_vec, const int n, amrex::Array4< amrex::Real > const &rho, const amrex::IntVect &is_nodal, amrex::GpuArray< int, 3 > const &fbndry_lo, amrex::GpuArray< int, 3 > const &fbndry_hi, amrex::GpuArray< ParticleBoundaryType, 3 > const &pbndry_lo, amrex::GpuArray< ParticleBoundaryType, 3 > const &pbndry_hi) |
| | Sets the rho field value in cells close to a PEC boundary. The charge density deposited in the guard cells are either reflected back into the simulation domain (if a reflecting particle boundary is used), or the opposite charge density is deposited back in the domain to capture the effect of an image charge. More...
|
| |
| AMREX_GPU_DEVICE AMREX_FORCE_INLINE void | PEC::SetRhofieldOnPEC (const amrex::IntVect &dom_lo, const amrex::IntVect &dom_hi, const amrex::IntVect &ijk_vec, const int n, amrex::Array4< amrex::Real > const &rho, const amrex::IntVect &is_nodal, amrex::GpuArray< int, 3 > const &fbndry_lo, amrex::GpuArray< int, 3 > const &fbndry_hi) |
| | Sets the rho field value in guard cells next to a PEC boundary. The charge density on the PEC boundary is set to 0 while values in the guard cells are set equal and opposite to their mirror location inside the domain - representing image charges. More...
|
| |
| AMREX_GPU_DEVICE AMREX_FORCE_INLINE void | PEC::SetJfieldFromPEC (const int icomp, const amrex::IntVect &dom_lo, const amrex::IntVect &dom_hi, const amrex::IntVect &nguard, const amrex::IntVect &ijk_vec, amrex::Array4< amrex::Real > const &Jfield, const amrex::IntVect &is_nodal, amrex::GpuArray< int, 3 > const &fbndry_lo, amrex::GpuArray< int, 3 > const &fbndry_hi, amrex::GpuArray< ParticleBoundaryType, 3 > const &pbndry_lo, amrex::GpuArray< ParticleBoundaryType, 3 > const &pbndry_hi) |
| | Sets the J field value in cells close to a PEC boundary. The current density deposited in the guard cells are either reflected back into the simulation domain (if a reflecting particle boundary is used), or the opposite current density is deposited back in the domain to capture the effect of an image charge. More...
|
| |
| AMREX_GPU_DEVICE AMREX_FORCE_INLINE void | PEC::SetJfieldOnPEC (const int icomp, const amrex::IntVect &dom_lo, const amrex::IntVect &dom_hi, const amrex::IntVect &ijk_vec, amrex::Array4< amrex::Real > const &Jfield, const amrex::IntVect &is_nodal, amrex::GpuArray< int, 3 > const &fbndry_lo, amrex::GpuArray< int, 3 > const &fbndry_hi) |
| | Sets the J field value in guard cells next to a PEC boundary. The current density on the PEC boundary is set to 0 while values in the guard cells are set equal (and opposite) to their mirror location inside the domain - representing image charges - in the normal (tangential) direction. More...
|
| |
| bool | PEC::isAnyBoundaryPEC () |
| |
| void | PEC::ApplyPECtoEfield (std::array< amrex::MultiFab *, 3 > Efield, const int lev, PatchType patch_type, const bool split_pml_field=false) |
| | Sets the tangential electric field at the PEC boundary to zero. The guard cell values are set equal and opposite to the valid cell field value at the respective mirror locations. More...
|
| |
| void | PEC::ApplyPECtoBfield (std::array< amrex::MultiFab *, 3 > Bfield, const int lev, PatchType patch_type) |
| | Sets the normal component of the magnetic field at the PEC boundary to zero. The guard cell values are set equal and opposite to the valid cell field value at the respective mirror locations. More...
|
| |
| void | PEC::ApplyPECtoRhofield (amrex::MultiFab *rho, const int lev, PatchType patch_type) |
| | Reflects charge density deposited over the PEC boundary back into the simulation domain. More...
|
| |
| void | PEC::ApplyPECtoJfield (amrex::MultiFab *Jx, amrex::MultiFab *Jy, amrex::MultiFab *Jz, const int lev, PatchType patch_type) |
| | Reflects current density deposited over the PEC boundary back into the simulation domain. More...
|
| |