44 int ic,
int jc,
int kc,
const amrex::Real Wc[AMREX_SPACEDIM][2],
48 using namespace amrex::literals;
50#if (defined WARPX_DIM_3D)
52 for (
int iic = 0; iic < 2; ++iic) {
53 for (
int kk = 0; kk < 2; ++kk) {
54 for (
int jj=0; jj< 2; ++jj) {
55 for (
int ii = 0; ii < 2; ++ii) {
56 int const icstart = ic + iic;
57 amrex::Real
const sign = (ii%2)*2._rt - 1._rt;
58 int const wccomp =
static_cast<int>(iic%2);
59 int const w1comp =
static_cast<int>(jj%2);
60 int const w2comp =
static_cast<int>(kk%2);
61 normal[0] += sign * phi(icstart + ii, j + jj, k + kk) * dxi[0] * Wc[0][wccomp] * W[1][w1comp] * W[2][w2comp];
66 for (
int iic = 0; iic < 2; ++iic) {
67 for (
int kk = 0; kk < 2; ++kk) {
68 for (
int ii=0; ii< 2; ++ii) {
69 for (
int jj = 0; jj < 2; ++jj) {
70 int const jcstart = jc + iic;
71 amrex::Real
const sign = (jj%2)*2._rt - 1._rt;
72 int const wccomp =
static_cast<int>(iic%2);
73 int const w1comp =
static_cast<int>(ii%2);
74 int const w2comp =
static_cast<int>(kk%2);
75 normal[1] += sign * phi(i + ii, jcstart + jj, k + kk) * dxi[1] * W[0][w1comp] * Wc[1][wccomp] * W[2][w2comp];
80 for (
int iic = 0; iic < 2; ++iic) {
81 for (
int jj = 0; jj < 2; ++jj) {
82 for (
int ii=0; ii< 2; ++ii) {
83 for (
int kk = 0; kk < 2; ++kk) {
84 int const kcstart = kc + iic;
85 amrex::Real
const sign = (kk%2)*2._rt - 1._rt;
86 int const wccomp =
static_cast<int>(iic%2);
87 int const w1comp =
static_cast<int>(ii%2);
88 int const w2comp =
static_cast<int>(jj%2);
89 normal[2] += sign * phi(i + ii, j + jj, kcstart + kk) * dxi[2] * W[0][w1comp] * W[1][w2comp] * Wc[2][wccomp];
95#elif defined(WARPX_DIM_XZ) || defined(WARPX_DIM_RZ)
97 for (
int iic = 0; iic < 2; ++iic) {
98 for (
int jj=0; jj< 2; ++jj) {
99 for (
int ii = 0; ii < 2; ++ii) {
100 int const icstart = ic + iic;
101 amrex::Real
const sign = (ii%2)*2._rt - 1._rt;
102 int const wccomp =
static_cast<int>(iic%2);
103 int const w1comp =
static_cast<int>(jj%2);
104 normal[0] += sign * phi(icstart + ii, j + jj, k) * dxi[0] * Wc[0][wccomp] * W[1][w1comp];
108 for (
int iic = 0; iic < 2; ++iic) {
109 for (
int ii=0; ii< 2; ++ii) {
110 for (
int jj = 0; jj < 2; ++jj) {
111 int const jcstart = jc + iic;
112 amrex::Real
const sign = (jj%2)*2._rt - 1._rt;
113 int const wccomp =
static_cast<int>(iic%2);
114 int const w1comp =
static_cast<int>(ii%2);
115 normal[1] += sign * phi(i + ii, jcstart + jj, k) * dxi[1] * W[0][w1comp] * Wc[1][wccomp];