12 #include <AMReX_FArrayBox.H> 14 AMREX_GPU_HOST_DEVICE AMREX_INLINE
16 amrex::Array4<amrex::Real>
const& Ex,
17 amrex::Array4<amrex::Real const>
const& jx,
18 amrex::Real
const *
const sigjy,
19 amrex::Real
const *
const sigjz,
23 #if (AMREX_SPACEDIM == 3) 24 amrex::Real alpha_xy, alpha_xz;
25 if (sigjy[k-ylo]+sigjz[l-zlo] == 0){
30 alpha_xy = sigjy[k-ylo]/(sigjy[k-ylo]+sigjz[l-zlo]);
31 alpha_xz = sigjz[l-zlo]/(sigjy[k-ylo]+sigjz[l-zlo]);
33 Ex(j,k,l,0) = Ex(j,k,l,0) - mu_c2_dt * alpha_xy * jx(j,k,l);
34 Ex(j,k,l,1) = Ex(j,k,l,1) - mu_c2_dt * alpha_xz * jx(j,k,l);
36 Ex(j,k,l,1) = Ex(j,k,l,1) - mu_c2_dt * jx(j,k,l);
37 amrex::ignore_unused(sigjy, sigjz, ylo, zlo);
41 AMREX_GPU_HOST_DEVICE AMREX_INLINE
43 amrex::Array4<amrex::Real>
const& Ey,
44 amrex::Array4<amrex::Real const>
const& jy,
45 amrex::Real
const *
const sigjx,
46 amrex::Real
const *
const sigjz,
50 #if (AMREX_SPACEDIM == 3) 51 amrex::Real alpha_yx, alpha_yz;
52 if (sigjx[j-xlo]+sigjz[l-zlo] == 0){
57 alpha_yx = sigjx[j-xlo]/(sigjx[j-xlo]+sigjz[l-zlo]);
58 alpha_yz = sigjz[l-zlo]/(sigjx[j-xlo]+sigjz[l-zlo]);
60 Ey(j,k,l,0) = Ey(j,k,l,0) - mu_c2_dt * alpha_yx * jy(j,k,l);
61 Ey(j,k,l,1) = Ey(j,k,l,1) - mu_c2_dt * alpha_yz * jy(j,k,l);
63 Ey(j,k,l,0) = Ey(j,k,l,0) - 0.5 * mu_c2_dt * jy(j,k,l);
64 Ey(j,k,l,1) = Ey(j,k,l,1) - 0.5 * mu_c2_dt * jy(j,k,l);
65 amrex::ignore_unused(sigjx, sigjz, xlo, zlo);
69 AMREX_GPU_HOST_DEVICE AMREX_INLINE
71 amrex::Array4<amrex::Real>
const& Ez,
72 amrex::Array4<amrex::Real const>
const& jz,
73 amrex::Real
const *
const sigjx,
74 amrex::Real
const *
const sigjy,
78 #if (AMREX_SPACEDIM == 3) 79 amrex::Real alpha_zx, alpha_zy;
80 if (sigjx[j-xlo]+sigjy[k-ylo]==0){
85 alpha_zx = sigjx[j-xlo]/(sigjx[j-xlo]+sigjy[k-ylo]);
86 alpha_zy = sigjy[k-ylo]/(sigjx[j-xlo]+sigjy[k-ylo]);
88 Ez(j,k,l,0) = Ez(j,k,l,0) - mu_c2_dt * alpha_zx * jz(j,k,l);
89 Ez(j,k,l,1) = Ez(j,k,l,1) - mu_c2_dt * alpha_zy * jz(j,k,l);
91 Ez(j,k,l,0) = Ez(j,k,l,0) - mu_c2_dt * jz(j,k,l);
92 amrex::ignore_unused(sigjx, sigjy, xlo, ylo);
96 AMREX_GPU_HOST_DEVICE AMREX_INLINE
98 amrex::Array4<amrex::Real>
const& jx,
99 amrex::Real
const*
const sigsjx,
100 amrex::Real
const*
const sigjy,
101 amrex::Real
const*
const sigjz,
102 int xlo,
int ylo,
int zlo)
104 #if (AMREX_SPACEDIM == 3) 105 jx(j,k,l) = jx(j,k,l) * sigsjx[j-xlo] * sigjy[k-ylo] * sigjz[l-zlo];
107 jx(j,k,l) = jx(j,k,l) * sigsjx[j-xlo] * sigjz[k-zlo];
108 amrex::ignore_unused(sigjy, ylo);
112 AMREX_GPU_HOST_DEVICE AMREX_INLINE
114 amrex::Array4<amrex::Real>
const& jy,
115 amrex::Real
const *
const sigjx,
116 amrex::Real
const *
const sigsjy,
117 amrex::Real
const *
const sigjz,
118 int xlo,
int ylo,
int zlo)
120 #if (AMREX_SPACEDIM == 3) 121 jy(j,k,l) = jy(j,k,l) * sigjx[j-xlo] * sigsjy[k-ylo] * sigjz[l-zlo];
123 jy(j,k,l) = jy(j,k,l) * sigjx[j-xlo] * sigjz[k-zlo];
124 amrex::ignore_unused(sigsjy, ylo);
128 AMREX_GPU_HOST_DEVICE AMREX_INLINE
130 amrex::Array4<amrex::Real>
const& jz,
131 amrex::Real
const *
const sigjx,
132 amrex::Real
const *
const sigjy,
133 amrex::Real
const *
const sigsjz,
134 int xlo,
int ylo,
int zlo)
136 #if (AMREX_SPACEDIM == 3) 137 jz(j,k,l) = jz(j,k,l) * sigjx[j-xlo] * sigjy[k-ylo] * sigsjz[l-zlo];
139 jz(j,k,l) = jz(j,k,l) * sigjx[j-xlo] * sigsjz[k-zlo];
140 amrex::ignore_unused(sigjy, ylo);
AMREX_GPU_HOST_DEVICE AMREX_INLINE void damp_jz_pml(int j, int k, int l, amrex::Array4< amrex::Real > const &jz, amrex::Real const *const sigjx, amrex::Real const *const sigjy, amrex::Real const *const sigsjz, int xlo, int ylo, int zlo)
Definition: PML_current.H:129
AMREX_GPU_HOST_DEVICE AMREX_INLINE void push_ez_pml_current(int j, int k, int l, amrex::Array4< amrex::Real > const &Ez, amrex::Array4< amrex::Real const > const &jz, amrex::Real const *const sigjx, amrex::Real const *const sigjy, int xlo, int ylo, amrex::Real mu_c2_dt)
Definition: PML_current.H:70
AMREX_GPU_HOST_DEVICE AMREX_INLINE void damp_jy_pml(int j, int k, int l, amrex::Array4< amrex::Real > const &jy, amrex::Real const *const sigjx, amrex::Real const *const sigsjy, amrex::Real const *const sigjz, int xlo, int ylo, int zlo)
Definition: PML_current.H:113
AMREX_GPU_HOST_DEVICE AMREX_INLINE void push_ex_pml_current(int j, int k, int l, amrex::Array4< amrex::Real > const &Ex, amrex::Array4< amrex::Real const > const &jx, amrex::Real const *const sigjy, amrex::Real const *const sigjz, int ylo, int zlo, amrex::Real mu_c2_dt)
Definition: PML_current.H:15
AMREX_GPU_HOST_DEVICE AMREX_INLINE void damp_jx_pml(int j, int k, int l, amrex::Array4< amrex::Real > const &jx, amrex::Real const *const sigsjx, amrex::Real const *const sigjy, amrex::Real const *const sigjz, int xlo, int ylo, int zlo)
Definition: PML_current.H:97
AMREX_GPU_HOST_DEVICE AMREX_INLINE void push_ey_pml_current(int j, int k, int l, amrex::Array4< amrex::Real > const &Ey, amrex::Array4< amrex::Real const > const &jy, amrex::Real const *const sigjx, amrex::Real const *const sigjz, int xlo, int zlo, amrex::Real mu_c2_dt)
Definition: PML_current.H:42