| 1222 | } |
| 1223 | |
| 1224 | void ca_derdivb(const Box& bx, FArrayBox& derfab, int /*dcomp*/, int /*ncomp*/, |
| 1225 | const FArrayBox& datfab, const Geometry& geom, |
| 1226 | Real /*time*/, const int* /*bcrec*/, int /*level*/) |
| 1227 | { |
| 1228 | |
| 1229 | auto const dat = datfab.array(); |
| 1230 | auto const der = derfab.array(); |
| 1231 | |
| 1232 | auto dx = geom.CellSizeArray(); |
| 1233 | |
| 1234 | amrex::ParallelFor(bx, |
| 1235 | [=] AMREX_GPU_DEVICE (int i, int j, int k) noexcept |
| 1236 | { |
| 1237 | Real dBx = dat(i+1,j,k,0) - dat(i,j,k,0); |
| 1238 | der(i,j,k,0) = dBx / dx[0]; |
| 1239 | |
| 1240 | #if AMREX_SPACEDIM >= 2 |
| 1241 | Real dBy = dat(i,j+1,k,1) - dat(i,j,k,1); |
| 1242 | der(i,j,k,0) += dBy / dx[1]; |
| 1243 | #endif |
| 1244 | |
| 1245 | #if AMREX_SPACEDIM == 3 |
| 1246 | Real dBz = dat(i,j,k+1,2) - dat(i,j,k,2); |
| 1247 | der(i,j,k,0) += dBz / dx[2]; |
| 1248 | #endif |
| 1249 | }); |
| 1250 | } |
| 1251 | |
| 1252 | #endif |
| 1253 |
nothing calls this directly
no outgoing calls
no test coverage detected