Skip to content

Commit 61f2c49

Browse files
author
Christian McCombs
committed
added updated Dy and Dz
1 parent 7b11731 commit 61f2c49

File tree

1 file changed

+41
-48
lines changed

1 file changed

+41
-48
lines changed

Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianCustomCoefAlgorithm.H

+41-48
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ struct CartesianCustomCoefAlgorithm {
4646
stencil_coefs_z.resize(2);
4747
stencil_coefs_z[0] = 1._rt*inv_dz;
4848
stencil_coefs_z[1] = 1._rt*inv_dz;
49-
5049
}
5150

5251
/**
@@ -120,20 +119,11 @@ struct CartesianCustomCoefAlgorithm {
120119

121120
using namespace amrex;
122121
#if defined WARPX_DIM_3D
123-
Real const alphay = coefs_y[1];
124-
Real const betayz = coefs_y[2];
125-
Real const betayx = coefs_y[3];
126-
Real const gammay = coefs_y[4];
127-
amrex::ignore_unused(n_coefs_y);
128-
return alphay * (F(i ,j+1,k ,ncomp) - F(i ,j ,k ,ncomp))
129-
+ betayx * (F(i+1,j+1,k ,ncomp) - F(i+1,j ,k ,ncomp)
130-
+ F(i-1,j+1,k ,ncomp) - F(i-1,j ,k ,ncomp))
131-
+ betayz * (F(i ,j+1,k+1,ncomp) - F(i ,j ,k+1,ncomp)
132-
+ F(i ,j+1,k-1,ncomp) - F(i ,j ,k-1,ncomp))
133-
+ gammay * (F(i+1,j+1,k+1,ncomp) - F(i+1,j ,k+1,ncomp)
134-
+ F(i-1,j+1,k+1,ncomp) - F(i-1,j ,k+1,ncomp)
135-
+ F(i+1,j+1,k-1,ncomp) - F(i+1,j ,k-1,ncomp)
136-
+ F(i-1,j+1,k-1,ncomp) - F(i-1,j ,k-1,ncomp));
122+
amrex::Real derivative = 0;
123+
for (int l=0; l<n_coefs_y/2; l++) {
124+
derivative += coefs_y[l] * (F(i,j+1+l,k,ncomp) - F(i,j-l,k,ncomp));
125+
}
126+
return derivative;
137127
#elif (defined WARPX_DIM_XZ || WARPX_DIM_1D_Z)
138128
amrex::ignore_unused(F, coefs_y, n_coefs_y,
139129
i, j, k, ncomp);
@@ -155,9 +145,11 @@ struct CartesianCustomCoefAlgorithm {
155145

156146
using namespace amrex;
157147
#if defined WARPX_DIM_3D
158-
amrex::Real const inv_dy = coefs_y[0];
159-
amrex::ignore_unused(n_coefs_y);
160-
return inv_dy*( F(i,j,k,ncomp) - F(i,j-1,k,ncomp) );
148+
amrex::Real derivative = 0;
149+
for (int l=n_coefs_y/2; l<n_coefs_y; l++) {
150+
derivative += coefs_y[l] * (F(i,j+l,k,ncomp) - F(i,j-l-1,k,ncomp));
151+
}
152+
return derivative;
161153
#elif (defined WARPX_DIM_XZ || WARPX_DIM_1D_Z)
162154
amrex::ignore_unused(F, coefs_y, n_coefs_y,
163155
i, j, k, ncomp);
@@ -177,33 +169,24 @@ struct CartesianCustomCoefAlgorithm {
177169
int const i, int const j, int const k, int const ncomp=0 ) {
178170

179171
using namespace amrex;
180-
181-
amrex::ignore_unused(n_coefs_z);
182-
183-
Real const alphaz = coefs_z[1];
184-
#if (defined WARPX_DIM_3D || WARPX_DIM_XZ)
185-
Real const betazx = coefs_z[2];
186-
#endif
187-
#if defined WARPX_DIM_3D
188-
Real const betazy = coefs_z[3];
189-
Real const gammaz = coefs_z[4];
190-
#endif
191172
#if defined WARPX_DIM_3D
192-
return alphaz * (F(i ,j ,k+1,ncomp) - F(i ,j ,k ,ncomp))
193-
+ betazx * (F(i+1,j ,k+1,ncomp) - F(i+1,j ,k ,ncomp)
194-
+ F(i-1,j ,k+1,ncomp) - F(i-1,j ,k ,ncomp))
195-
+ betazy * (F(i ,j+1,k+1,ncomp) - F(i ,j+1,k ,ncomp)
196-
+ F(i ,j-1,k+1,ncomp) - F(i ,j-1,k ,ncomp))
197-
+ gammaz * (F(i+1,j+1,k+1,ncomp) - F(i+1,j+1,k ,ncomp)
198-
+ F(i-1,j+1,k+1,ncomp) - F(i-1,j+1,k ,ncomp)
199-
+ F(i+1,j-1,k+1,ncomp) - F(i+1,j-1,k ,ncomp)
200-
+ F(i-1,j-1,k+1,ncomp) - F(i-1,j-1,k ,ncomp));
173+
amrex::Real derivative = 0;
174+
for (int l=0; l<n_coefs_z/2; l++) {
175+
derivative += coefs_z[l] * (F(i,j,k+1+l,ncomp) - F(i,j,k-l,ncomp));
176+
}
177+
return derivative;
201178
#elif (defined WARPX_DIM_XZ)
202-
return alphaz * (F(i ,j+1,k ,ncomp) - F(i ,j ,k ,ncomp))
203-
+ betazx * (F(i+1,j+1,k ,ncomp) - F(i+1,j ,k ,ncomp)
204-
+ F(i-1,j+1,k ,ncomp) - F(i-1,j ,k ,ncomp));
179+
amrex::Real derivative = 0;
180+
for (int l=0; l<n_coefs_z/2; l++) {
181+
derivative += coefs_z[l] * (F(i,j+1+l,k,ncomp) - F(i,j-l,k,ncomp));
182+
}
183+
return derivative;
205184
#elif (defined WARPX_DIM_1D_Z)
206-
return alphaz * (F(i+1 ,j,k ,ncomp) - F(i ,j ,k ,ncomp));
185+
amrex::Real derivative = 0;
186+
for (int l=0; l<n_coefs_z/2; l++) {
187+
derivative += coefs_z[l] * (F(i+1+l,j,k,ncomp) - F(i-l,j,k,ncomp));
188+
}
189+
return derivative;
207190
#endif
208191
}
209192

@@ -213,19 +196,29 @@ struct CartesianCustomCoefAlgorithm {
213196
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
214197
static amrex::Real DownwardDz (
215198
T_Field const& F,
216-
amrex::Real const * const coefs_z, int const /*n_coefs_z*/,
199+
amrex::Real const * const coefs_z, int const n_coefs_z,
217200
int const i, int const j, int const k, int const ncomp=0) {
218201

219-
amrex::Real const inv_dz = coefs_z[0];
220202
#if defined WARPX_DIM_3D
221-
return inv_dz*( F(i,j,k,ncomp) - F(i,j,k-1,ncomp) );
203+
amrex::Real derivative = 0;
204+
for (int l=n_coefs_z/2; l<n_coefs_z; l++) {
205+
derivative += coefs_z[l] * (F(i,j,k+l,ncomp) - F(i,j,k-l-1,ncomp));
206+
}
207+
return derivative;
222208
#elif (defined WARPX_DIM_XZ)
223-
return inv_dz*( F(i,j,k,ncomp) - F(i,j-1,k,ncomp) );
209+
amrex::Real derivative = 0;
210+
for (int l=n_coefs_z/2; l<n_coefs_z; l++) {
211+
derivative += coefs_z[l] * (F(i,j+l,k,ncomp) - F(i,j-l-1,k,ncomp));
212+
}
213+
return derivative;
224214
#elif (defined WARPX_DIM_1D_Z)
225-
return inv_dz*( F(i,j,k,ncomp) - F(i-1,j,k,ncomp) );
215+
amrex::Real derivative = 0;
216+
for (int l=n_coefs_z/2; l<n_coefs_z; l++) {
217+
derivative += coefs_z[l] * (F(i+l,j,k,ncomp) - F(i-l-1,j,k,ncomp));
218+
}
219+
return derivative;
226220
#endif
227221
}
228-
229222
};
230223

231224
#endif // WARPX_FINITE_DIFFERENCE_ALGORITHM_CARTESIAN_CUSTOM_COEF_H_

0 commit comments

Comments
 (0)