Block-Structured AMR Software Framework
 
Loading...
Searching...
No Matches
AMReX_MLPoisson_2D_K.H
Go to the documentation of this file.
1#ifndef AMREX_MLPOISSON_2D_K_H_
2#define AMREX_MLPOISSON_2D_K_H_
3#include <AMReX_Config.H>
4
5#if (AMREX_SPACEDIM == 2)
6namespace amrex {
7#else
8namespace amrex::TwoD {
9#endif
10
11template <typename T>
13void mlpoisson_adotx (int i, int j, Array4<T> const& y,
14 Array4<T const> const& x,
15 T dhx, T dhy) noexcept
16{
17 y(i,j,0) = dhx * (x(i-1,j,0) - T(2.)*x(i,j,0) + x(i+1,j,0))
18 + dhy * (x(i,j-1,0) - T(2.)*x(i,j,0) + x(i,j+1,0));
19}
20
21template <typename T>
23void mlpoisson_adotx_os (int i, int j, Array4<T> const& y,
24 Array4<T const> const& x,
25 Array4<int const> const& osm,
26 T dhx, T dhy) noexcept
27{
28 if (osm(i,j,0) == 0) {
29 y(i,j,0) = T(0.0);
30 } else {
31 y(i,j,0) = dhx * (x(i-1,j,0) - T(2.)*x(i,j,0) + x(i+1,j,0))
32 + dhy * (x(i,j-1,0) - T(2.)*x(i,j,0) + x(i,j+1,0));
33 }
34}
35
36template <typename T>
38void mlpoisson_adotx_m (int i, int j, Array4<T> const& y,
39 Array4<T const> const& x,
40 T dhx, T dhy, T dx, T probxlo) noexcept
41{
42 T rel = probxlo + i*dx;
43 T rer = probxlo +(i+1)*dx;
44 T rc = probxlo + (i+T(0.5))*dx;
45 y(i,j,0) = dhx * (rel*x(i-1,j,0) - (rel+rer)*x(i,j,0) + rer*x(i+1,j,0))
46 + dhy * rc *(x(i,j-1,0) - T(2.)*x(i,j,0) + x(i,j+1,0));
47}
48
49template <typename T>
51void mlpoisson_flux_x (Box const& box, Array4<T> const& fx,
52 Array4<T const> const& sol, T dxinv) noexcept
53{
54 const auto lo = amrex::lbound(box);
55 const auto hi = amrex::ubound(box);
56
57 for (int j = lo.y; j <= hi.y; ++j) {
59 for (int i = lo.x; i <= hi.x; ++i) {
60 fx(i,j,0) = dxinv*(sol(i,j,0)-sol(i-1,j,0));
61 }
62 }
63}
64
65template <typename T>
67void mlpoisson_flux_x_m (Box const& box, Array4<T> const& fx,
68 Array4<T const> const& sol, T dxinv,
69 T dx, T probxlo) noexcept
70{
71 const auto lo = amrex::lbound(box);
72 const auto hi = amrex::ubound(box);
73
74 for (int j = lo.y; j <= hi.y; ++j) {
76 for (int i = lo.x; i <= hi.x; ++i) {
77 T re = probxlo + i*dx;
78 fx(i,j,0) = dxinv*re*(sol(i,j,0)-sol(i-1,j,0));
79 }
80 }
81}
82
83template <typename T>
85void mlpoisson_flux_xface (Box const& box, Array4<T> const& fx,
86 Array4<T const> const& sol, T dxinv, int xlen) noexcept
87{
88 const auto lo = amrex::lbound(box);
89 const auto hi = amrex::ubound(box);
90
91 for (int j = lo.y; j <= hi.y; ++j) {
92 int i = lo.x;
93 fx(i,j,0) = dxinv*(sol(i,j,0)-sol(i-1,j,0));
94 i += xlen;
95 fx(i,j,0) = dxinv*(sol(i,j,0)-sol(i-1,j,0));
96 }
97}
98
99template <typename T>
101void mlpoisson_flux_xface_m (Box const& box, Array4<T> const& fx,
102 Array4<T const> const& sol, T dxinv, int xlen,
103 T dx, T probxlo) noexcept
104{
105 const auto lo = amrex::lbound(box);
106 const auto hi = amrex::ubound(box);
107
108 for (int j = lo.y; j <= hi.y; ++j) {
109 int i = lo.x;
110 T re = probxlo + i*dx;
111 fx(i,j,0) = dxinv*re*(sol(i,j,0)-sol(i-1,j,0));
112 i += xlen;
113 re = probxlo + i*dx;
114 fx(i,j,0) = dxinv*re*(sol(i,j,0)-sol(i-1,j,0));
115 }
116}
117
118template <typename T>
120void mlpoisson_flux_y (Box const& box, Array4<T> const& fy,
121 Array4<T const> const& sol, T dyinv) noexcept
122{
123 const auto lo = amrex::lbound(box);
124 const auto hi = amrex::ubound(box);
125
126 for (int j = lo.y; j <= hi.y; ++j) {
128 for (int i = lo.x; i <= hi.x; ++i) {
129 fy(i,j,0) = dyinv*(sol(i,j,0)-sol(i,j-1,0));
130 }
131 }
132}
133
134template <typename T>
136void mlpoisson_flux_y_m (Box const& box, Array4<T> const& fy,
137 Array4<T const> const& sol, T dyinv,
138 T dx, T probxlo) noexcept
139{
140 const auto lo = amrex::lbound(box);
141 const auto hi = amrex::ubound(box);
142
143 for (int j = lo.y; j <= hi.y; ++j) {
145 for (int i = lo.x; i <= hi.x; ++i) {
146 T rc = probxlo + (i+T(0.5))*dx;
147 fy(i,j,0) = dyinv*rc*(sol(i,j,0)-sol(i,j-1,0));
148 }
149 }
150}
151
152template <typename T>
154void mlpoisson_flux_yface (Box const& box, Array4<T> const& fy,
155 Array4<T const> const& sol, T dyinv, int ylen) noexcept
156{
157 const auto lo = amrex::lbound(box);
158 const auto hi = amrex::ubound(box);
159
160 int j = lo.y;
162 for (int i = lo.x; i <= hi.x; ++i) {
163 fy(i,j,0) = dyinv*(sol(i,j,0)-sol(i,j-1,0));
164 }
165 j += ylen;
167 for (int i = lo.x; i <= hi.x; ++i) {
168 fy(i,j,0) = dyinv*(sol(i,j,0)-sol(i,j-1,0));
169 }
170}
171
172template <typename T>
174void mlpoisson_flux_yface_m (Box const& box, Array4<T> const& fy,
175 Array4<T const> const& sol, T dyinv, int ylen,
176 T dx, T probxlo) noexcept
177{
178 const auto lo = amrex::lbound(box);
179 const auto hi = amrex::ubound(box);
180
181 int j = lo.y;
183 for (int i = lo.x; i <= hi.x; ++i) {
184 T rc = probxlo + (i+T(0.5))*dx;
185 fy(i,j,0) = dyinv*rc*(sol(i,j,0)-sol(i,j-1,0));
186 }
187 j += ylen;
189 for (int i = lo.x; i <= hi.x; ++i) {
190 T rc = probxlo + (i+T(0.5))*dx;
191 fy(i,j,0) = dyinv*rc*(sol(i,j,0)-sol(i,j-1,0));
192 }
193}
194
195template <typename T>
197void mlpoisson_gsrb (int i, int j, int, Array4<T> const& phi, Array4<T const> const& rhs,
198 T dhx, T dhy,
199 Array4<T const> const& f0, Array4<int const> const& m0,
200 Array4<T const> const& f1, Array4<int const> const& m1,
201 Array4<T const> const& f2, Array4<int const> const& m2,
202 Array4<T const> const& f3, Array4<int const> const& m3,
203 Box const& vbox, int redblack) noexcept
204{
205 const auto vlo = amrex::lbound(vbox);
206 const auto vhi = amrex::ubound(vbox);
207
208 T gamma = T(-2.0)*(dhx+dhy);
209
210 if ((i+j+redblack)%2 == 0) {
211 T cf0 = (i == vlo.x && m0(vlo.x-1,j,0) > 0)
212 ? f0(vlo.x,j,0) : T(0.0);
213 T cf1 = (j == vlo.y && m1(i,vlo.y-1,0) > 0)
214 ? f1(i,vlo.y,0) : T(0.0);
215 T cf2 = (i == vhi.x && m2(vhi.x+1,j,0) > 0)
216 ? f2(vhi.x,j,0) : T(0.0);
217 T cf3 = (j == vhi.y && m3(i,vhi.y+1,0) > 0)
218 ? f3(i,vhi.y,0) : T(0.0);
219
220 T g_m_d = gamma + dhx*(cf0+cf2) + dhy*(cf1+cf3);
221
222 T res = rhs(i,j,0) - gamma*phi(i,j,0)
223 - dhx*(phi(i-1,j,0) + phi(i+1,j,0))
224 - dhy*(phi(i,j-1,0) + phi(i,j+1,0));
225
226 phi(i,j,0) = phi(i,j,0) + res /g_m_d;
227 }
228}
229
230template <typename T>
232void mlpoisson_gsrb_os (int i, int j, int, Array4<T> const& phi, Array4<T const> const& rhs,
233 Array4<int const> const& osm, T dhx, T dhy,
234 Array4<T const> const& f0, Array4<int const> const& m0,
235 Array4<T const> const& f1, Array4<int const> const& m1,
236 Array4<T const> const& f2, Array4<int const> const& m2,
237 Array4<T const> const& f3, Array4<int const> const& m3,
238 Box const& vbox, int redblack) noexcept
239{
240 const auto vlo = amrex::lbound(vbox);
241 const auto vhi = amrex::ubound(vbox);
242
243 T gamma = T(-2.0)*(dhx+dhy);
244
245 if ((i+j+redblack)%2 == 0) {
246 if (osm(i,j,0) == 0) {
247 phi(i,j,0) = T(0.0);
248 } else {
249 T cf0 = (i == vlo.x && m0(vlo.x-1,j,0) > 0)
250 ? f0(vlo.x,j,0) : T(0.0);
251 T cf1 = (j == vlo.y && m1(i,vlo.y-1,0) > 0)
252 ? f1(i,vlo.y,0) : T(0.0);
253 T cf2 = (i == vhi.x && m2(vhi.x+1,j,0) > 0)
254 ? f2(vhi.x,j,0) : T(0.0);
255 T cf3 = (j == vhi.y && m3(i,vhi.y+1,0) > 0)
256 ? f3(i,vhi.y,0) : T(0.0);
257
258 T g_m_d = gamma + dhx*(cf0+cf2) + dhy*(cf1+cf3);
259
260 T res = rhs(i,j,0) - gamma*phi(i,j,0)
261 - dhx*(phi(i-1,j,0) + phi(i+1,j,0))
262 - dhy*(phi(i,j-1,0) + phi(i,j+1,0));
263
264 phi(i,j,0) = phi(i,j,0) + res /g_m_d;
265 }
266 }
267}
268
269template <typename T>
271void mlpoisson_gsrb_m (int i, int j, int, Array4<T> const& phi, Array4<T const> const& rhs,
272 T dhx, T dhy,
273 Array4<T const> const& f0, Array4<int const> const& m0,
274 Array4<T const> const& f1, Array4<int const> const& m1,
275 Array4<T const> const& f2, Array4<int const> const& m2,
276 Array4<T const> const& f3, Array4<int const> const& m3,
277 Box const& vbox, int redblack, T dx, T probxlo) noexcept
278{
279 const auto vlo = amrex::lbound(vbox);
280 const auto vhi = amrex::ubound(vbox);
281
282 if ((i+j+redblack)%2 == 0) {
283 T cf0 = (i == vlo.x && m0(vlo.x-1,j,0) > 0)
284 ? f0(vlo.x,j,0) : T(0.0);
285 T cf1 = (j == vlo.y && m1(i,vlo.y-1,0) > 0)
286 ? f1(i,vlo.y,0) : T(0.0);
287 T cf2 = (i == vhi.x && m2(vhi.x+1,j,0) > 0)
288 ? f2(vhi.x,j,0) : T(0.0);
289 T cf3 = (j == vhi.y && m3(i,vhi.y+1,0) > 0)
290 ? f3(i,vhi.y,0) : T(0.0);
291
292 T rel = probxlo + i*dx;
293 T rer = probxlo +(i+1)*dx;
294 T rc = probxlo + (i+T(0.5))*dx;
295
296 T gamma = -dhx*(rel+rer) - T(2.0)*dhy*rc;
297
298 T g_m_d = gamma + dhx*(rel*cf0+rer*cf2) + dhy*rc*(cf1+cf3);
299
300 T res = rhs(i,j,0) - gamma*phi(i,j,0)
301 - dhx*(rel*phi(i-1,j,0) + rer*phi(i+1,j,0))
302 - dhy*rc *(phi(i,j-1,0) + phi(i,j+1,0));
303
304 phi(i,j,0) = phi(i,j,0) + res /g_m_d;
305 }
306}
307
308template <typename T>
310void mlpoisson_jacobi (int i, int j, int, Array4<T> const& phi, Array4<T const> const& rhs,
311 Array4<T const> const& Ax, T dhx, T dhy,
312 Array4<T const> const& f0, Array4<int const> const& m0,
313 Array4<T const> const& f1, Array4<int const> const& m1,
314 Array4<T const> const& f2, Array4<int const> const& m2,
315 Array4<T const> const& f3, Array4<int const> const& m3,
316 Box const& vbox) noexcept
317{
318 const auto vlo = amrex::lbound(vbox);
319 const auto vhi = amrex::ubound(vbox);
320
321 T gamma = T(-2.0)*(dhx+dhy);
322
323 T cf0 = (i == vlo.x && m0(vlo.x-1,j,0) > 0)
324 ? f0(vlo.x,j,0) : T(0.0);
325 T cf1 = (j == vlo.y && m1(i,vlo.y-1,0) > 0)
326 ? f1(i,vlo.y,0) : T(0.0);
327 T cf2 = (i == vhi.x && m2(vhi.x+1,j,0) > 0)
328 ? f2(vhi.x,j,0) : T(0.0);
329 T cf3 = (j == vhi.y && m3(i,vhi.y+1,0) > 0)
330 ? f3(i,vhi.y,0) : T(0.0);
331
332 T g_m_d = gamma + dhx*(cf0+cf2) + dhy*(cf1+cf3);
333
334 phi(i,j,0) += T(2.0/3.0) * (rhs(i,j,0) - Ax(i,j,0)) / g_m_d;
335}
336
337template <typename T>
339void mlpoisson_jacobi_os (int i, int j, int, Array4<T> const& phi, Array4<T const> const& rhs,
340 Array4<T const> const& Ax, Array4<int const> const& osm,
341 T dhx, T dhy,
342 Array4<T const> const& f0, Array4<int const> const& m0,
343 Array4<T const> const& f1, Array4<int const> const& m1,
344 Array4<T const> const& f2, Array4<int const> const& m2,
345 Array4<T const> const& f3, Array4<int const> const& m3,
346 Box const& vbox) noexcept
347{
348 const auto vlo = amrex::lbound(vbox);
349 const auto vhi = amrex::ubound(vbox);
350
351 T gamma = T(-2.0)*(dhx+dhy);
352
353 if (osm(i,j,0) == 0) {
354 phi(i,j,0) = T(0.0);
355 } else {
356 T cf0 = (i == vlo.x && m0(vlo.x-1,j,0) > 0)
357 ? f0(vlo.x,j,0) : T(0.0);
358 T cf1 = (j == vlo.y && m1(i,vlo.y-1,0) > 0)
359 ? f1(i,vlo.y,0) : T(0.0);
360 T cf2 = (i == vhi.x && m2(vhi.x+1,j,0) > 0)
361 ? f2(vhi.x,j,0) : T(0.0);
362 T cf3 = (j == vhi.y && m3(i,vhi.y+1,0) > 0)
363 ? f3(i,vhi.y,0) : T(0.0);
364
365 T g_m_d = gamma + dhx*(cf0+cf2) + dhy*(cf1+cf3);
366
367 phi(i,j,0) += T(2.0/3.0) * (rhs(i,j,0) - Ax(i,j,0)) / g_m_d;
368 }
369}
370
371template <typename T>
373void mlpoisson_jacobi_m (int i, int j, int, Array4<T> const& phi, Array4<T const> const& rhs,
374 Array4<T const> const& Ax, T dhx, T dhy,
375 Array4<T const> const& f0, Array4<int const> const& m0,
376 Array4<T const> const& f1, Array4<int const> const& m1,
377 Array4<T const> const& f2, Array4<int const> const& m2,
378 Array4<T const> const& f3, Array4<int const> const& m3,
379 Box const& vbox, T dx, T probxlo) noexcept
380{
381 const auto vlo = amrex::lbound(vbox);
382 const auto vhi = amrex::ubound(vbox);
383
384 T cf0 = (i == vlo.x && m0(vlo.x-1,j,0) > 0)
385 ? f0(vlo.x,j,0) : T(0.0);
386 T cf1 = (j == vlo.y && m1(i,vlo.y-1,0) > 0)
387 ? f1(i,vlo.y,0) : T(0.0);
388 T cf2 = (i == vhi.x && m2(vhi.x+1,j,0) > 0)
389 ? f2(vhi.x,j,0) : T(0.0);
390 T cf3 = (j == vhi.y && m3(i,vhi.y+1,0) > 0)
391 ? f3(i,vhi.y,0) : T(0.0);
392
393 T rel = probxlo + i*dx;
394 T rer = probxlo +(i+1)*dx;
395 T rc = probxlo + (i+T(0.5))*dx;
396
397 T gamma = -dhx*(rel+rer) - T(2.0)*dhy*rc;
398
399 T g_m_d = gamma + dhx*(rel*cf0+rer*cf2) + dhy*rc*(cf1+cf3);
400
401 phi(i,j,0) += T(2.0/3.0) * (rhs(i,j,0) - Ax(i,j,0)) / g_m_d;
402}
403
404template <typename T>
406void mlpoisson_normalize (int i, int j, int, Array4<T> const& x,
407 T dhx, T dhy, T dx, T probxlo) noexcept
408{
409 T rel = probxlo + i*dx;
410 T rer = probxlo +(i+1)*dx;
411 T rc = probxlo + (i+T(0.5))*dx;
412 x(i,j,0) /= (-dhx*(rel+rer) - dhy*rc*T(2.0));
413}
414
415}
416
417#endif
#define AMREX_PRAGMA_SIMD
Definition AMReX_Extension.H:80
#define AMREX_FORCE_INLINE
Definition AMReX_Extension.H:119
#define AMREX_GPU_HOST_DEVICE
Definition AMReX_GpuQualifiers.H:20
Definition AMReX_MLALap_2D_K.H:5
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void mlpoisson_jacobi(int i, int j, int, Array4< T > const &phi, Array4< T const > const &rhs, Array4< T const > const &Ax, T dhx, T dhy, Array4< T const > const &f0, Array4< int const > const &m0, Array4< T const > const &f1, Array4< int const > const &m1, Array4< T const > const &f2, Array4< int const > const &m2, Array4< T const > const &f3, Array4< int const > const &m3, Box const &vbox) noexcept
Definition AMReX_MLPoisson_2D_K.H:310
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void mlpoisson_flux_xface_m(Box const &box, Array4< T > const &fx, Array4< T const > const &sol, T dxinv, int xlen, T dx, T probxlo) noexcept
Definition AMReX_MLPoisson_2D_K.H:101
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void mlpoisson_flux_yface(Box const &box, Array4< T > const &fy, Array4< T const > const &sol, T dyinv, int ylen) noexcept
Definition AMReX_MLPoisson_2D_K.H:154
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void mlpoisson_jacobi_os(int i, int j, int, Array4< T > const &phi, Array4< T const > const &rhs, Array4< T const > const &Ax, Array4< int const > const &osm, T dhx, T dhy, Array4< T const > const &f0, Array4< int const > const &m0, Array4< T const > const &f1, Array4< int const > const &m1, Array4< T const > const &f2, Array4< int const > const &m2, Array4< T const > const &f3, Array4< int const > const &m3, Box const &vbox) noexcept
Definition AMReX_MLPoisson_2D_K.H:339
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void mlpoisson_adotx(int i, int j, Array4< T > const &y, Array4< T const > const &x, T dhx, T dhy) noexcept
Definition AMReX_MLPoisson_2D_K.H:13
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void mlpoisson_flux_yface_m(Box const &box, Array4< T > const &fy, Array4< T const > const &sol, T dyinv, int ylen, T dx, T probxlo) noexcept
Definition AMReX_MLPoisson_2D_K.H:174
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void mlpoisson_adotx_os(int i, int j, Array4< T > const &y, Array4< T const > const &x, Array4< int const > const &osm, T dhx, T dhy) noexcept
Definition AMReX_MLPoisson_2D_K.H:23
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void mlpoisson_flux_y(Box const &box, Array4< T > const &fy, Array4< T const > const &sol, T dyinv) noexcept
Definition AMReX_MLPoisson_2D_K.H:120
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void mlpoisson_normalize(int i, int j, int, Array4< T > const &x, T dhx, T dhy, T dx, T probxlo) noexcept
Definition AMReX_MLPoisson_2D_K.H:406
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void mlpoisson_flux_xface(Box const &box, Array4< T > const &fx, Array4< T const > const &sol, T dxinv, int xlen) noexcept
Definition AMReX_MLPoisson_2D_K.H:85
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void mlpoisson_flux_y_m(Box const &box, Array4< T > const &fy, Array4< T const > const &sol, T dyinv, T dx, T probxlo) noexcept
Definition AMReX_MLPoisson_2D_K.H:136
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void mlpoisson_gsrb(int i, int j, int, Array4< T > const &phi, Array4< T const > const &rhs, T dhx, T dhy, Array4< T const > const &f0, Array4< int const > const &m0, Array4< T const > const &f1, Array4< int const > const &m1, Array4< T const > const &f2, Array4< int const > const &m2, Array4< T const > const &f3, Array4< int const > const &m3, Box const &vbox, int redblack) noexcept
Definition AMReX_MLPoisson_2D_K.H:197
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void mlpoisson_flux_x_m(Box const &box, Array4< T > const &fx, Array4< T const > const &sol, T dxinv, T dx, T probxlo) noexcept
Definition AMReX_MLPoisson_2D_K.H:67
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void mlpoisson_gsrb_os(int i, int j, int, Array4< T > const &phi, Array4< T const > const &rhs, Array4< int const > const &osm, T dhx, T dhy, Array4< T const > const &f0, Array4< int const > const &m0, Array4< T const > const &f1, Array4< int const > const &m1, Array4< T const > const &f2, Array4< int const > const &m2, Array4< T const > const &f3, Array4< int const > const &m3, Box const &vbox, int redblack) noexcept
Definition AMReX_MLPoisson_2D_K.H:232
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void mlpoisson_gsrb_m(int i, int j, int, Array4< T > const &phi, Array4< T const > const &rhs, T dhx, T dhy, Array4< T const > const &f0, Array4< int const > const &m0, Array4< T const > const &f1, Array4< int const > const &m1, Array4< T const > const &f2, Array4< int const > const &m2, Array4< T const > const &f3, Array4< int const > const &m3, Box const &vbox, int redblack, T dx, T probxlo) noexcept
Definition AMReX_MLPoisson_2D_K.H:271
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void mlpoisson_jacobi_m(int i, int j, int, Array4< T > const &phi, Array4< T const > const &rhs, Array4< T const > const &Ax, T dhx, T dhy, Array4< T const > const &f0, Array4< int const > const &m0, Array4< T const > const &f1, Array4< int const > const &m1, Array4< T const > const &f2, Array4< int const > const &m2, Array4< T const > const &f3, Array4< int const > const &m3, Box const &vbox, T dx, T probxlo) noexcept
Definition AMReX_MLPoisson_2D_K.H:373
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void mlpoisson_adotx_m(int i, int j, Array4< T > const &y, Array4< T const > const &x, T dhx, T dhy, T dx, T probxlo) noexcept
Definition AMReX_MLPoisson_2D_K.H:38
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void mlpoisson_flux_x(Box const &box, Array4< T > const &fx, Array4< T const > const &sol, T dxinv) noexcept
Definition AMReX_MLPoisson_2D_K.H:51
Definition AMReX_Amr.cpp:49
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE Dim3 ubound(Array4< T > const &a) noexcept
Definition AMReX_Array4.H:315
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE Dim3 lbound(Array4< T > const &a) noexcept
Definition AMReX_Array4.H:308
Definition AMReX_Array4.H:61