8 #ifndef WARPX_PML_KERNELS_H_
9 #define WARPX_PML_KERNELS_H_
20 const amrex::Real*
const sigma_fac_x,
21 const amrex::Real*
const sigma_fac_y,
22 const amrex::Real*
const sigma_fac_z,
23 const amrex::Real*
const sigma_star_fac_x,
24 const amrex::Real*
const sigma_star_fac_y,
25 const amrex::Real*
const sigma_star_fac_z,
26 int xlo,
int ylo,
int zlo,
27 const bool dive_cleaning)
29 #if defined(WARPX_DIM_1D_Z)
31 sigma_star_fac_x, sigma_star_fac_y, sigma_star_fac_z, xlo, ylo, zlo, dive_cleaning);
32 amrex::Abort(
"PML not implemented in Cartesian 1D geometry");
35 #if defined(WARPX_DIM_XZ) || defined(WARPX_DIM_RZ)
40 const int sx = Ex_stag[0];
41 const int sz = Ex_stag[1];
60 #elif defined(WARPX_DIM_3D)
63 const int sx = Ex_stag[0];
64 const int sy = Ex_stag[1];
65 const int sz = Ex_stag[2];
97 const amrex::Real*
const sigma_fac_x,
98 const amrex::Real*
const sigma_fac_y,
99 const amrex::Real*
const sigma_fac_z,
100 const amrex::Real*
const sigma_star_fac_x,
101 const amrex::Real*
const sigma_star_fac_y,
102 const amrex::Real*
const sigma_star_fac_z,
103 int xlo,
int ylo,
int zlo,
104 const bool dive_cleaning)
106 #if defined(WARPX_DIM_1D_Z)
108 sigma_star_fac_x, sigma_star_fac_y, sigma_star_fac_z, xlo, ylo, zlo, dive_cleaning);
109 amrex::Abort(
"PML not implemented in Cartesian 1D geometry");
112 #if defined(WARPX_DIM_XZ) || defined(WARPX_DIM_RZ)
117 const int sx = Ey_stag[0];
118 const int sz = Ey_stag[1];
134 #elif defined(WARPX_DIM_3D)
137 const int sx = Ey_stag[0];
138 const int sy = Ey_stag[1];
139 const int sz = Ey_stag[2];
171 const amrex::Real*
const sigma_fac_x,
172 const amrex::Real*
const sigma_fac_y,
173 const amrex::Real*
const sigma_fac_z,
174 const amrex::Real*
const sigma_star_fac_x,
175 const amrex::Real*
const sigma_star_fac_y,
176 const amrex::Real*
const sigma_star_fac_z,
177 int xlo,
int ylo,
int zlo,
178 const bool dive_cleaning)
180 #if defined(WARPX_DIM_1D_Z)
182 sigma_star_fac_x, sigma_star_fac_y, sigma_star_fac_z, xlo, ylo, zlo, dive_cleaning);
183 amrex::Abort(
"PML not implemented in Cartesian 1D geometry");
186 #if defined(WARPX_DIM_XZ) || defined(WARPX_DIM_RZ)
191 const int sx = Ez_stag[0];
192 const int sz = Ez_stag[1];
211 #elif defined(WARPX_DIM_3D)
214 const int sx = Ez_stag[0];
215 const int sy = Ez_stag[1];
216 const int sz = Ez_stag[2];
248 const amrex::Real*
const sigma_fac_x,
249 const amrex::Real*
const sigma_fac_y,
250 const amrex::Real*
const sigma_fac_z,
251 const amrex::Real*
const sigma_star_fac_x,
252 const amrex::Real*
const sigma_star_fac_y,
253 const amrex::Real*
const sigma_star_fac_z,
254 int xlo,
int ylo,
int zlo,
255 const bool divb_cleaning)
257 #if defined(WARPX_DIM_1D_Z)
259 sigma_star_fac_x, sigma_star_fac_y, sigma_star_fac_z, xlo, ylo, zlo, divb_cleaning);
260 amrex::Abort(
"PML not implemented in Cartesian 1D geometry");
263 #if defined(WARPX_DIM_XZ) || defined(WARPX_DIM_RZ)
268 const int sx = Bx_stag[0];
269 const int sz = Bx_stag[1];
288 #elif defined(WARPX_DIM_3D)
291 const int sx = Bx_stag[0];
292 const int sy = Bx_stag[1];
293 const int sz = Bx_stag[2];
325 const amrex::Real*
const sigma_fac_x,
326 const amrex::Real*
const sigma_fac_y,
327 const amrex::Real*
const sigma_fac_z,
328 const amrex::Real*
const sigma_star_fac_x,
329 const amrex::Real*
const sigma_star_fac_y,
330 const amrex::Real*
const sigma_star_fac_z,
331 int xlo,
int ylo,
int zlo,
332 const bool divb_cleaning)
334 #if defined(WARPX_DIM_1D_Z)
336 sigma_star_fac_x, sigma_star_fac_y, sigma_star_fac_z, xlo, ylo, zlo, divb_cleaning);
337 amrex::Abort(
"PML not implemented in Cartesian 1D geometry");
340 #if defined(WARPX_DIM_XZ) || defined(WARPX_DIM_RZ)
345 const int sx = By_stag[0];
346 const int sz = By_stag[1];
362 #elif defined(WARPX_DIM_3D)
365 const int sx = By_stag[0];
366 const int sy = By_stag[1];
367 const int sz = By_stag[2];
399 const amrex::Real*
const sigma_fac_x,
400 const amrex::Real*
const sigma_fac_y,
401 const amrex::Real*
const sigma_fac_z,
402 const amrex::Real*
const sigma_star_fac_x,
403 const amrex::Real*
const sigma_star_fac_y,
404 const amrex::Real*
const sigma_star_fac_z,
405 int xlo,
int ylo,
int zlo,
406 const bool divb_cleaning)
408 #if defined(WARPX_DIM_1D_Z)
410 sigma_star_fac_x, sigma_star_fac_y, sigma_star_fac_z, xlo, ylo, zlo, divb_cleaning);
411 amrex::Abort(
"PML not implemented in Cartesian 1D geometry");
414 #if defined(WARPX_DIM_XZ) || defined(WARPX_DIM_RZ)
419 const int sx = Bz_stag[0];
420 const int sz = Bz_stag[1];
439 #elif defined(WARPX_DIM_3D)
442 const int sx = Bz_stag[0];
443 const int sy = Bz_stag[1];
444 const int sz = Bz_stag[2];
476 const amrex::Real*
const sigma_fac_x,
477 const amrex::Real*
const sigma_fac_y,
478 const amrex::Real*
const sigma_fac_z,
479 const amrex::Real*
const sigma_star_fac_x,
480 const amrex::Real*
const sigma_star_fac_y,
481 const amrex::Real*
const sigma_star_fac_z,
482 int xlo,
int ylo,
int zlo)
484 #if defined(WARPX_DIM_1D_Z)
486 sigma_star_fac_x, sigma_star_fac_y, sigma_star_fac_z, xlo, ylo, zlo);
487 amrex::Abort(
"PML not implemented in Cartesian 1D geometry");
490 #if defined(WARPX_DIM_XZ) || defined(WARPX_DIM_RZ)
495 const int sx = arr_stag[0];
496 const int sz = arr_stag[1];
512 #elif defined(WARPX_DIM_3D)
515 const int sx = arr_stag[0];
516 const int sy = arr_stag[1];
517 const int sz = arr_stag[2];
#define AMREX_FORCE_INLINE
#define AMREX_GPU_HOST_DEVICE
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void warpx_damp_pml_ex(int i, int j, int k, amrex::Array4< amrex::Real > const &Ex, const amrex::IntVect &Ex_stag, const amrex::Real *const sigma_fac_x, const amrex::Real *const sigma_fac_y, const amrex::Real *const sigma_fac_z, const amrex::Real *const sigma_star_fac_x, const amrex::Real *const sigma_star_fac_y, const amrex::Real *const sigma_star_fac_z, int xlo, int ylo, int zlo, const bool dive_cleaning)
Definition: WarpX_PML_kernels.H:18
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void warpx_damp_pml_scalar(int i, int j, int k, amrex::Array4< amrex::Real > const &arr, const amrex::IntVect &arr_stag, const amrex::Real *const sigma_fac_x, const amrex::Real *const sigma_fac_y, const amrex::Real *const sigma_fac_z, const amrex::Real *const sigma_star_fac_x, const amrex::Real *const sigma_star_fac_y, const amrex::Real *const sigma_star_fac_z, int xlo, int ylo, int zlo)
Definition: WarpX_PML_kernels.H:474
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void warpx_damp_pml_ey(int i, int j, int k, amrex::Array4< amrex::Real > const &Ey, const amrex::IntVect &Ey_stag, const amrex::Real *const sigma_fac_x, const amrex::Real *const sigma_fac_y, const amrex::Real *const sigma_fac_z, const amrex::Real *const sigma_star_fac_x, const amrex::Real *const sigma_star_fac_y, const amrex::Real *const sigma_star_fac_z, int xlo, int ylo, int zlo, const bool dive_cleaning)
Definition: WarpX_PML_kernels.H:95
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void warpx_damp_pml_bz(int i, int j, int k, amrex::Array4< amrex::Real > const &Bz, const amrex::IntVect &Bz_stag, const amrex::Real *const sigma_fac_x, const amrex::Real *const sigma_fac_y, const amrex::Real *const sigma_fac_z, const amrex::Real *const sigma_star_fac_x, const amrex::Real *const sigma_star_fac_y, const amrex::Real *const sigma_star_fac_z, int xlo, int ylo, int zlo, const bool divb_cleaning)
Definition: WarpX_PML_kernels.H:397
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void warpx_damp_pml_by(int i, int j, int k, amrex::Array4< amrex::Real > const &By, const amrex::IntVect &By_stag, const amrex::Real *const sigma_fac_x, const amrex::Real *const sigma_fac_y, const amrex::Real *const sigma_fac_z, const amrex::Real *const sigma_star_fac_x, const amrex::Real *const sigma_star_fac_y, const amrex::Real *const sigma_star_fac_z, int xlo, int ylo, int zlo, const bool divb_cleaning)
Definition: WarpX_PML_kernels.H:323
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void warpx_damp_pml_bx(int i, int j, int k, amrex::Array4< amrex::Real > const &Bx, const amrex::IntVect &Bx_stag, const amrex::Real *const sigma_fac_x, const amrex::Real *const sigma_fac_y, const amrex::Real *const sigma_fac_z, const amrex::Real *const sigma_star_fac_x, const amrex::Real *const sigma_star_fac_y, const amrex::Real *const sigma_star_fac_z, int xlo, int ylo, int zlo, const bool divb_cleaning)
Definition: WarpX_PML_kernels.H:246
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void warpx_damp_pml_ez(int i, int j, int k, amrex::Array4< amrex::Real > const &Ez, const amrex::IntVect &Ez_stag, const amrex::Real *const sigma_fac_x, const amrex::Real *const sigma_fac_y, const amrex::Real *const sigma_fac_z, const amrex::Real *const sigma_star_fac_x, const amrex::Real *const sigma_star_fac_y, const amrex::Real *const sigma_star_fac_z, int xlo, int ylo, int zlo, const bool dive_cleaning)
Definition: WarpX_PML_kernels.H:169
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void ignore_unused(const Ts &...)
void Abort(const std::string &msg)
i
Definition: check_interp_points_and_weights.py:174
@ zz
Definition: PMLComponent.H:18
@ xz
Definition: PMLComponent.H:16
@ z
Definition: PMLComponent.H:19
@ yy
Definition: PMLComponent.H:17
@ zx
Definition: PMLComponent.H:18
@ zy
Definition: PMLComponent.H:18
@ yz
Definition: PMLComponent.H:17
@ x
Definition: PMLComponent.H:19
@ y
Definition: PMLComponent.H:19
@ xx
Definition: PMLComponent.H:16
@ yx
Definition: PMLComponent.H:17
@ xy
Definition: PMLComponent.H:16