Block-Structured AMR Software Framework
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)
6 namespace amrex {
7 #else
8 namespace amrex::TwoD {
9 #endif
10 
11 template <typename T>
13 void 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 
21 template <typename T>
23 void 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 
36 template <typename T>
38 void 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 
49 template <typename T>
51 void 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 
65 template <typename T>
67 void 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 
83 template <typename T>
85 void 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 
99 template <typename T>
101 void 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 
118 template <typename T>
120 void 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 
134 template <typename T>
136 void 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 
152 template <typename T>
154 void 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 
172 template <typename T>
174 void 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 
195 template <typename T>
197 void 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 
230 template <typename T>
232 void 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 
269 template <typename T>
271 void 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 
308 template <typename T>
310 void 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 
337 template <typename T>
339 void 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 
371 template <typename T>
373 void 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 
404 template <typename T>
406 void 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