@@ -195,7 +195,8 @@ AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
195
195
void cut_face_2d (Real& areafrac, Real& centx, Real& centy,
196
196
Real& Sx2, Real& Sy2, Real& Sxy,
197
197
Real axm, Real axp, Real aym, Real ayp,
198
- Real bcx, Real bcy) noexcept
198
+ Real bcx, Real bcy,
199
+ Real dxval, Real dyval) noexcept
199
200
{
200
201
#ifdef AMREX_USE_FLOAT
201
202
constexpr Real sml = 1 .e -5_rt;
@@ -204,9 +205,9 @@ void cut_face_2d (Real& areafrac, Real& centx, Real& centy,
204
205
constexpr Real sml = 1 .e -14 ;
205
206
constexpr Real tiny = 1 .e -15 ;
206
207
#endif
207
- Real apnorm = std::hypot (axm-axp, aym-ayp);
208
- Real nx = (axm-axp) * (1 .0_rt/apnorm); // pointing to the wall
209
- Real ny = (aym-ayp) * (1 .0_rt/apnorm);
208
+ Real apnorm = std::hypot (( axm-axp)*dyval,( aym-ayp)*dxval );
209
+ Real nx = dyval * (axm-axp) * (1 .0_rt/apnorm); // pointing to the wall
210
+ Real ny = dxval * (aym-ayp) * (1 .0_rt/apnorm);
210
211
211
212
Real nxabs = std::abs (nx);
212
213
Real nyabs = std::abs (ny);
@@ -264,9 +265,9 @@ void cut_face_2d (Real& areafrac, Real& centx, Real& centy,
264
265
Real dx2 = dx * (x_ym + x_yp);
265
266
Real dx3 = dx * (x_ym*x_ym + x_ym*x_yp + x_yp*x_yp);
266
267
Real dx4 = dx * (x_ym + x_yp) * (x_ym*x_ym + x_yp*x_yp);
267
- Real af1 = 0 .5_rt*(axm+axp) + aa*0 .5_rt*dx2;
268
- centx = 0 .125_rt*(axp-axm) + aa*(1 .0_rt/6 ._rt )*dx3;
269
- Sx2 = (1 .0_rt/24 ._rt )*(axm+axp) + aa*(1 .0_rt/12 ._rt )*dx4;
268
+ Real af1 = 0 .5_rt*(axm+axp) + aa*0 .5_rt*dx2*dxval/dyval ;
269
+ centx = 0 .125_rt*(axp-axm) + aa*(1 .0_rt/6 ._rt )*dx3*dxval/dyval ;
270
+ Sx2 = (1 .0_rt/24 ._rt )*(axm+axp) + aa*(1 .0_rt/12 ._rt )*dx4*dxval/dyval ;
270
271
271
272
Real signy = (ny > 0 .0_rt) ? 1 .0_rt : -1 .0_rt;
272
273
Real y_xm = (-0 .5_rt + axm)*signy;
@@ -276,13 +277,13 @@ void cut_face_2d (Real& areafrac, Real& centx, Real& centy,
276
277
Real dy2 = dy * (y_xm + y_xp);
277
278
Real dy3 = dy * (y_xm*y_xm + y_xm*y_xp + y_xp*y_xp);
278
279
Real dy4 = dy * (y_xm + y_xp) * (y_xm*y_xm + y_xp*y_xp);
279
- Real af2 = 0 .5_rt*(aym+ayp) + aa*0 .5_rt*dy2;
280
- centy = (1 .0_rt/8 ._rt )*(ayp-aym) + aa*(1 .0_rt/6 ._rt )*dy3;
281
- Sy2 = (1 .0_rt/24 ._rt )*(aym+ayp) + aa*(1 .0_rt/12 ._rt )*dy4;
280
+ Real af2 = 0 .5_rt*(aym+ayp) + aa*0 .5_rt*dy2*dyval/dxval ;
281
+ centy = (1 .0_rt/8 ._rt )*(ayp-aym) + aa*(1 .0_rt/6 ._rt )*dy3*dyval/dxval ;
282
+ Sy2 = (1 .0_rt/24 ._rt )*(aym+ayp) + aa*(1 .0_rt/12 ._rt )*dy4*dyval/dxval ;
282
283
283
284
Real S_b = (nxabs < nyabs)
284
- ? (Sx2 - (1 .0_rt/24 ._rt ) - signx*(1 .0_rt/6 ._rt )*(x_ym*x_ym*x_ym+x_yp*x_yp*x_yp)) / ny
285
- : (Sy2 - (1 .0_rt/24 ._rt ) - signy*(1 .0_rt/6 ._rt )*(y_xm*y_xm*y_xm+y_xp*y_xp*y_xp)) / nx;
285
+ ? (Sx2 - (1 .0_rt/24 ._rt ) - signx*(1 .0_rt/6 ._rt )*(x_ym*x_ym*x_ym+x_yp*x_yp*x_yp)) / ny * dxval/dyval
286
+ : (Sy2 - (1 .0_rt/24 ._rt ) - signy*(1 .0_rt/6 ._rt )*(y_xm*y_xm*y_xm+y_xp*y_xp*y_xp)) / nx * dyval/dxval ;
286
287
Sxy = (nxabs < nyabs)
287
288
? -signy*(1 .0_rt/16 ._rt )*dy2 + 0 .5_rt*nx*S_b
288
289
: -signx*(1 .0_rt/16 ._rt )*dx2 + 0 .5_rt*ny*S_b;
@@ -482,7 +483,7 @@ int build_faces (Box const& bx, Array4<EBCellFlag> const& cell,
482
483
bcz = 0 .5_rt*bcz - 0 .5_rt;
483
484
cut_face_2d (apx (i,j,k),fcx (i,j,k,0 ),fcx (i,j,k,1 ), // NOLINT(readability-suspicious-call-argument)
484
485
m2x (i,j,k,0 ),m2x (i,j,k,1 ),m2x (i,j,k,2 ),
485
- lzm,lzp,lym,lyp,bcy,bcz);
486
+ lzm,lzp,lym,lyp,bcy,bcz,dx[ 1 ],dx[ 2 ] );
486
487
}
487
488
488
489
if (apx (i,j,k) == 0 .0_rt) {
@@ -590,7 +591,7 @@ int build_faces (Box const& bx, Array4<EBCellFlag> const& cell,
590
591
bcz = 0 .5_rt*bcz - 0 .5_rt;
591
592
cut_face_2d (apy (i,j,k),fcy (i,j,k,0 ),fcy (i,j,k,1 ), // NOLINT(readability-suspicious-call-argument)
592
593
m2y (i,j,k,0 ),m2y (i,j,k,1 ),m2y (i,j,k,2 ),
593
- lzm,lzp,lxm,lxp,bcx,bcz);
594
+ lzm,lzp,lxm,lxp,bcx,bcz,dx[ 0 ],dx[ 2 ] );
594
595
}
595
596
596
597
if (apy (i,j,k) == 0 .0_rt) {
@@ -698,7 +699,7 @@ int build_faces (Box const& bx, Array4<EBCellFlag> const& cell,
698
699
bcy = 0 .5_rt*bcy - 0 .5_rt;
699
700
cut_face_2d (apz (i,j,k),fcz (i,j,k,0 ),fcz (i,j,k,1 ), // NOLINT(readability-suspicious-call-argument)
700
701
m2z (i,j,k,0 ),m2z (i,j,k,1 ),m2z (i,j,k,2 ),
701
- lym,lyp,lxm,lxp,bcx,bcy);
702
+ lym,lyp,lxm,lxp,bcx,bcy,dx[ 0 ],dx[ 1 ] );
702
703
}
703
704
704
705
if (apz (i,j,k) == 0 .0_rt) {
0 commit comments