Block-Structured AMR Software Framework
 
Loading...
Searching...
No Matches
AMReX_MLABecLap_2D_K.H
Go to the documentation of this file.
1#ifndef AMREX_MLABECLAP_2D_K_H_
2#define AMREX_MLABECLAP_2D_K_H_
3#include <AMReX_Config.H>
4
5namespace amrex {
6
7template <typename T>
9void mlabeclap_adotx (int i, int j, int, int n, Array4<T> const& y,
10 Array4<T const> const& x,
11 Array4<T const> const& a,
12 Array4<T const> const& bX,
13 Array4<T const> const& bY,
14 GpuArray<T,AMREX_SPACEDIM> const& dxinv,
15 T alpha, T beta) noexcept
16{
17 const T dhx = beta*dxinv[0]*dxinv[0];
18 const T dhy = beta*dxinv[1]*dxinv[1];
19 y(i,j,0,n) = alpha*a(i,j,0)*x(i,j,0,n)
20 - dhx * (bX(i+1,j,0,n)*(x(i+1,j,0,n) - x(i ,j,0,n))
21 - bX(i ,j,0,n)*(x(i ,j,0,n) - x(i-1,j,0,n)))
22 - dhy * (bY(i,j+1,0,n)*(x(i,j+1,0,n) - x(i,j ,0,n))
23 - bY(i,j ,0,n)*(x(i,j ,0,n) - x(i,j-1,0,n)));
24}
25
26template <typename T>
28void mlabeclap_adotx_os (int i, int j, int, int n, Array4<T> const& y,
29 Array4<T const> const& x,
30 Array4<T const> const& a,
31 Array4<T const> const& bX,
32 Array4<T const> const& bY,
33 Array4<int const> const& osm,
34 GpuArray<T,AMREX_SPACEDIM> const& dxinv,
35 T alpha, T beta) noexcept
36{
37 const T dhx = beta*dxinv[0]*dxinv[0];
38 const T dhy = beta*dxinv[1]*dxinv[1];
39 if (osm(i,j,0) == 0) {
40 y(i,j,0,n) = T(0.0);
41 } else {
42 y(i,j,0,n) = alpha*a(i,j,0)*x(i,j,0,n)
43 - dhx * (bX(i+1,j,0,n)*(x(i+1,j,0,n) - x(i ,j,0,n))
44 - bX(i ,j,0,n)*(x(i ,j,0,n) - x(i-1,j,0,n)))
45 - dhy * (bY(i,j+1,0,n)*(x(i,j+1,0,n) - x(i,j ,0,n))
46 - bY(i,j ,0,n)*(x(i,j ,0,n) - x(i,j-1,0,n)));
47 }
48}
49
50template <typename T>
52void mlabeclap_normalize (int i, int j, int, int n, Array4<T> const& x,
53 Array4<T const> const& a,
54 Array4<T const> const& bX,
55 Array4<T const> const& bY,
56 GpuArray<T,AMREX_SPACEDIM> const& dxinv,
57 T alpha, T beta) noexcept
58{
59 const T dhx = beta*dxinv[0]*dxinv[0];
60 const T dhy = beta*dxinv[1]*dxinv[1];
61 x(i,j,0,n) /= alpha*a(i,j,0)
62 + dhx*(bX(i,j,0,n)+bX(i+1,j,0,n))
63 + dhy*(bY(i,j,0,n)+bY(i,j+1,0,n));
64}
65
66template <typename T>
68void mlabeclap_flux_x (Box const& box, Array4<T> const& fx, Array4<T const> const& sol,
69 Array4<T const> const& bx, T fac, int ncomp) noexcept
70{
71 const auto lo = amrex::lbound(box);
72 const auto hi = amrex::ubound(box);
73
74 for (int n = 0; n < ncomp; ++n) {
75 for (int j = lo.y; j <= hi.y; ++j) {
77 for (int i = lo.x; i <= hi.x; ++i) {
78 fx(i,j,0,n) = -fac*bx(i,j,0,n)*(sol(i,j,0,n)-sol(i-1,j,0,n));
79 }
80 }
81 }
82}
83
84template <typename T>
86void mlabeclap_flux_xface (Box const& box, Array4<T> const& fx, Array4<T const> const& sol,
87 Array4<T const> const& bx, T fac, int xlen, int ncomp) noexcept
88{
89 const auto lo = amrex::lbound(box);
90 const auto hi = amrex::ubound(box);
91
92 for (int n = 0; n < ncomp; ++n) {
93 for (int j = lo.y; j <= hi.y; ++j) {
94 int i = lo.x;
95 fx(i,j,0,n) = -fac*bx(i,j,0,n)*(sol(i,j,0,n)-sol(i-1,j,0,n));
96 i += xlen;
97 fx(i,j,0,n) = -fac*bx(i,j,0,n)*(sol(i,j,0,n)-sol(i-1,j,0,n));
98 }
99 }
100}
101
102template <typename T>
104void mlabeclap_flux_y (Box const& box, Array4<T> const& fy, Array4<T const> const& sol,
105 Array4<T const> const& by, T fac, int ncomp) noexcept
106{
107 const auto lo = amrex::lbound(box);
108 const auto hi = amrex::ubound(box);
109
110 for (int n = 0; n < ncomp; ++n) {
111 for (int j = lo.y; j <= hi.y; ++j) {
113 for (int i = lo.x; i <= hi.x; ++i) {
114 fy(i,j,0,n) = -fac*by(i,j,0,n)*(sol(i,j,0,n)-sol(i,j-1,0,n));
115 }
116 }
117 }
118}
119
120template <typename T>
122void mlabeclap_flux_yface (Box const& box, Array4<T> const& fy, Array4<T const> const& sol,
123 Array4<T const> const& by, T fac, int ylen, int ncomp) noexcept
124{
125 const auto lo = amrex::lbound(box);
126 const auto hi = amrex::ubound(box);
127
128 for (int n = 0; n < ncomp; ++n) {
129 int j = lo.y;
131 for (int i = lo.x; i <= hi.x; ++i) {
132 fy(i,j,0,n) = -fac*by(i,j,0,n)*(sol(i,j,0,n)-sol(i,j-1,0,n));
133 }
134 j += ylen;
136 for (int i = lo.x; i <= hi.x; ++i) {
137 fy(i,j,0,n) = -fac*by(i,j,0,n)*(sol(i,j,0,n)-sol(i,j-1,0,n));
138 }
139 }
140}
141
142template <typename T>
144void abec_gsrb (int i, int j, int, int n, Array4<T> const& phi, Array4<T const> const& rhs,
145 T alpha, Array4<T const> const& a,
146 T dhx, T dhy,
147 Array4<T const> const& bX, Array4<T const> const& bY,
148 Array4<int const> const& m0, Array4<int const> const& m2,
149 Array4<int const> const& m1, Array4<int const> const& m3,
150 Array4<T const> const& f0, Array4<T const> const& f2,
151 Array4<T const> const& f1, Array4<T const> const& f3,
152 Box const& vbox, int redblack) noexcept
153{
154 if ((i+j+redblack)%2 == 0) {
155 const auto vlo = amrex::lbound(vbox);
156 const auto vhi = amrex::ubound(vbox);
157
158 T cf0 = (i == vlo.x && m0(vlo.x-1,j,0) > 0)
159 ? f0(vlo.x,j,0,n) : T(0.0);
160 T cf1 = (j == vlo.y && m1(i,vlo.y-1,0) > 0)
161 ? f1(i,vlo.y,0,n) : T(0.0);
162 T cf2 = (i == vhi.x && m2(vhi.x+1,j,0) > 0)
163 ? f2(vhi.x,j,0,n) : T(0.0);
164 T cf3 = (j == vhi.y && m3(i,vhi.y+1,0) > 0)
165 ? f3(i,vhi.y,0,n) : T(0.0);
166
167 T delta = dhx*(bX(i,j,0,n)*cf0 + bX(i+1,j,0,n)*cf2)
168 + dhy*(bY(i,j,0,n)*cf1 + bY(i,j+1,0,n)*cf3);
169
170 T gamma = alpha*a(i,j,0)
171 + dhx*( bX(i,j,0,n) + bX(i+1,j,0,n) )
172 + dhy*( bY(i,j,0,n) + bY(i,j+1,0,n) );
173
174 T rho = dhx*(bX(i ,j ,0,n)*phi(i-1,j ,0,n)
175 + bX(i+1,j ,0,n)*phi(i+1,j ,0,n))
176 +dhy*(bY(i ,j ,0,n)*phi(i ,j-1,0,n)
177 + bY(i ,j+1,0,n)*phi(i ,j+1,0,n));
178
179 phi(i,j,0,n) = (rhs(i,j,0,n) + rho - phi(i,j,0,n)*delta)
180 / (gamma - delta);
181 }
182}
183
184template <typename T>
186void abec_gsrb_os (int i, int j, int, int n, Array4<T> const& phi, Array4<T const> const& rhs,
187 T alpha, Array4<T const> const& a,
188 T dhx, T dhy,
189 Array4<T const> const& bX, Array4<T const> const& bY,
190 Array4<int const> const& m0, Array4<int const> const& m2,
191 Array4<int const> const& m1, Array4<int const> const& m3,
192 Array4<T const> const& f0, Array4<T const> const& f2,
193 Array4<T const> const& f1, Array4<T const> const& f3,
194 Array4<int const> const& osm,
195 Box const& vbox, int redblack) noexcept
196{
197 if ((i+j+redblack)%2 == 0) {
198 if (osm(i,j,0) == 0) {
199 phi(i,j,0,n) = T(0.0);
200 } else {
201 const auto vlo = amrex::lbound(vbox);
202 const auto vhi = amrex::ubound(vbox);
203
204 T cf0 = (i == vlo.x && m0(vlo.x-1,j,0) > 0)
205 ? f0(vlo.x,j,0,n) : T(0.0);
206 T cf1 = (j == vlo.y && m1(i,vlo.y-1,0) > 0)
207 ? f1(i,vlo.y,0,n) : T(0.0);
208 T cf2 = (i == vhi.x && m2(vhi.x+1,j,0) > 0)
209 ? f2(vhi.x,j,0,n) : T(0.0);
210 T cf3 = (j == vhi.y && m3(i,vhi.y+1,0) > 0)
211 ? f3(i,vhi.y,0,n) : T(0.0);
212
213 T delta = dhx*(bX(i,j,0,n)*cf0 + bX(i+1,j,0,n)*cf2)
214 + dhy*(bY(i,j,0,n)*cf1 + bY(i,j+1,0,n)*cf3);
215
216 T gamma = alpha*a(i,j,0)
217 + dhx*( bX(i,j,0,n) + bX(i+1,j,0,n) )
218 + dhy*( bY(i,j,0,n) + bY(i,j+1,0,n) );
219
220 T rho = dhx*(bX(i ,j ,0,n)*phi(i-1,j ,0,n)
221 + bX(i+1,j ,0,n)*phi(i+1,j ,0,n))
222 +dhy*(bY(i ,j ,0,n)*phi(i ,j-1,0,n)
223 + bY(i ,j+1,0,n)*phi(i ,j+1,0,n));
224
225 phi(i,j,0,n) = (rhs(i,j,0,n) + rho - phi(i,j,0,n)*delta)
226 / (gamma - delta);
227 }
228 }
229}
230
231template <typename T>
233void abec_jacobi (int i, int j, int, int n, Array4<T> const& phi,
234 Array4<T const> const& rhs, Array4< T const> const& Ax,
235 T alpha, Array4<T const> const& a,
236 T dhx, T dhy,
237 Array4<T const> const& bX, Array4<T const> const& bY,
238 Array4<int const> const& m0, Array4<int const> const& m2,
239 Array4<int const> const& m1, Array4<int const> const& m3,
240 Array4<T const> const& f0, Array4<T const> const& f2,
241 Array4<T const> const& f1, Array4<T const> const& f3,
242 Box const& vbox) noexcept
243{
244 const auto vlo = amrex::lbound(vbox);
245 const auto vhi = amrex::ubound(vbox);
246
247 T cf0 = (i == vlo.x && m0(vlo.x-1,j,0) > 0)
248 ? f0(vlo.x,j,0,n) : T(0.0);
249 T cf1 = (j == vlo.y && m1(i,vlo.y-1,0) > 0)
250 ? f1(i,vlo.y,0,n) : T(0.0);
251 T cf2 = (i == vhi.x && m2(vhi.x+1,j,0) > 0)
252 ? f2(vhi.x,j,0,n) : T(0.0);
253 T cf3 = (j == vhi.y && m3(i,vhi.y+1,0) > 0)
254 ? f3(i,vhi.y,0,n) : T(0.0);
255
256 T delta = dhx*(bX(i,j,0,n)*cf0 + bX(i+1,j,0,n)*cf2)
257 + dhy*(bY(i,j,0,n)*cf1 + bY(i,j+1,0,n)*cf3);
258
259 T gamma = alpha*a(i,j,0)
260 + dhx*( bX(i,j,0,n) + bX(i+1,j,0,n) )
261 + dhy*( bY(i,j,0,n) + bY(i,j+1,0,n) );
262
263 phi(i,j,0,n) += T(2.0/3.0) * (rhs(i,j,0,n) - Ax(i,j,0,n)) / (gamma - delta);
264}
265
266template <typename T>
268void abec_jacobi_os (int i, int j, int, int n, Array4<T> const& phi,
269 Array4<T const> const& rhs, Array4<T const> const& Ax,
270 T alpha, Array4<T const> const& a,
271 T dhx, T dhy,
272 Array4<T const> const& bX, Array4<T const> const& bY,
273 Array4<int const> const& m0, Array4<int const> const& m2,
274 Array4<int const> const& m1, Array4<int const> const& m3,
275 Array4<T const> const& f0, Array4<T const> const& f2,
276 Array4<T const> const& f1, Array4<T const> const& f3,
277 Array4<int const> const& osm,
278 Box const& vbox) noexcept
279{
280 if (osm(i,j,0) == 0) {
281 phi(i,j,0,n) = T(0.0);
282 } else {
283 const auto vlo = amrex::lbound(vbox);
284 const auto vhi = amrex::ubound(vbox);
285
286 T cf0 = (i == vlo.x && m0(vlo.x-1,j,0) > 0)
287 ? f0(vlo.x,j,0,n) : T(0.0);
288 T cf1 = (j == vlo.y && m1(i,vlo.y-1,0) > 0)
289 ? f1(i,vlo.y,0,n) : T(0.0);
290 T cf2 = (i == vhi.x && m2(vhi.x+1,j,0) > 0)
291 ? f2(vhi.x,j,0,n) : T(0.0);
292 T cf3 = (j == vhi.y && m3(i,vhi.y+1,0) > 0)
293 ? f3(i,vhi.y,0,n) : T(0.0);
294
295 T delta = dhx*(bX(i,j,0,n)*cf0 + bX(i+1,j,0,n)*cf2)
296 + dhy*(bY(i,j,0,n)*cf1 + bY(i,j+1,0,n)*cf3);
297
298 T gamma = alpha*a(i,j,0)
299 + dhx*( bX(i,j,0,n) + bX(i+1,j,0,n) )
300 + dhy*( bY(i,j,0,n) + bY(i,j+1,0,n) );
301
302 phi(i,j,0,n) += T(2.0/3.0) * (rhs(i,j,0,n) - Ax(i,j,0,n)) / (gamma - delta);
303 }
304}
305
306template <typename T>
309 Box const& box, Array4<T> const& phi, Array4<T const> const& rhs,
310 T alpha, Array4<T const> const& a,
311 T dhx, T dhy,
312 Array4<T const> const& bX, Array4<T const> const& bY,
313 Array4<int const> const& m0, Array4<int const> const& m2,
314 Array4<int const> const& m1, Array4<int const> const& m3,
315 Array4<T const> const& f0, Array4<T const> const& f2,
316 Array4<T const> const& f1, Array4<T const> const& f3,
317 Box const& vbox, int redblack, int nc) noexcept
318{
319
320 const auto lo = amrex::lbound(box);
321 const auto hi = amrex::ubound(box);
322 const auto vlo = amrex::lbound(vbox);
323 const auto vhi = amrex::ubound(vbox);
324
325 // idir is the direction in which we will do the tridiagonal solve --
326 // it should be the direction in which the mesh spacing is much larger
327 // than in the other directions
328 // int idir = 1;
329
330 // This should be moved outside the kernel!
331 if (dhy <= dhx) { amrex::Abort("dhy is supposed to be much larger than dhx"); }
332
333 int ilen = hi.y - lo.y + 1;
334
335 // This should be moved outside the kernel!
336 if (ilen > 32) { amrex::Abort("abec_gsrb_with_line_solve is hard-wired to be no longer than 32"); }
337
338 Array1D<T,0,31> a_ls;
339 Array1D<T,0,31> b_ls;
340 Array1D<T,0,31> c_ls;
341 Array1D<T,0,31> r_ls;
342 Array1D<T,0,31> u_ls;
343 Array1D<T,0,31> gam;
344
345 for (int n = 0; n < nc; ++n) {
347 for (int i = lo.x; i <= hi.x; ++i) {
348 if ((i+redblack)%2 == 0) {
349 for (int j = lo.y; j <= hi.y; ++j) {
350 T gamma = alpha*a(i,j,0)
351 + dhx*(bX(i,j,0,n)+bX(i+1,j,0,n))
352 + dhy*(bY(i,j,0,n)+bY(i,j+1,0,n));
353
354 T cf0 = (i == vlo.x && m0(vlo.x-1,j,0) > 0)
355 ? f0(vlo.x,j,0,n) : T(0.0);
356 T cf1 = (j == vlo.y && m1(i,vlo.y-1,0) > 0)
357 ? f1(i,vlo.y,0,n) : T(0.0);
358 T cf2 = (i == vhi.x && m2(vhi.x+1,j,0) > 0)
359 ? f2(vhi.x,j,0,n) : T(0.0);
360 T cf3 = (j == vhi.y && m3(i,vhi.y+1,0) > 0)
361 ? f3(i,vhi.y,0,n) : T(0.0);
362
363 T g_m_d = gamma
364 - (dhx*(bX(i,j,0,n)*cf0 + bX(i+1,j,0,n)*cf2)
365 + dhy*(bY(i,j,0,n)*cf1 + bY(i,j+1,0,n)*cf3));
366
367 T rho = dhx*( bX(i ,j,0,n)*phi(i-1,j,0,n)
368 + bX(i+1,j,0,n)*phi(i+1,j,0,n) );
369
370 // We have already accounted for this external boundary in the coefficient of phi(i,j,k,n)
371 if (i == vlo.x && m0(vlo.x-1,j,0) > 0) {
372 rho -= dhx*bX(i ,j,0,n)*phi(i-1,j,0,n);
373 }
374 if (i == vhi.x && m3(vhi.x+1,j,0) > 0) {
375 rho -= dhx*bX(i+1,j,0,n)*phi(i+1,j,0,n);
376 }
377
378 a_ls(j-lo.y) = -dhy*bY(i,j,0,n);
379 b_ls(j-lo.y) = g_m_d;
380 c_ls(j-lo.y) = -dhy*bY(i,j+1,0,n);
381 u_ls(j-lo.y) = T(0.);
382 r_ls(j-lo.y) = rhs(i,j,0,n) + rho;
383
384 if (j == lo.y) {
385 a_ls(j-lo.y) = T(0.);
386 if (!(m1(i,vlo.y-1,0) > 0)) { r_ls(j-lo.y) += dhy*bY(i,j,0,n)*phi(i,j-1,0,n); }
387 }
388 if (j == hi.y) {
389 c_ls(j-lo.y) = T(0.);
390 if (!(m3(i,vhi.y+1,0) > 0)) { r_ls(j-lo.y) += dhy*bY(i,j+1,0,n)*phi(i,j+1,0,n); }
391 }
392 }
393// This is the tridiagonal solve
394 {
395 T bet = b_ls(0);
396 u_ls(0) = r_ls(0) / bet;
397
398 for (int jj = 1; jj <= ilen-1; jj++) {
399 gam(jj) = c_ls(jj-1) / bet;
400 bet = b_ls(jj) - a_ls(jj)*gam(jj);
401 if (bet == 0) { amrex::Abort(">>>TRIDIAG FAILED"); }
402 u_ls(jj) = (r_ls(jj)-a_ls(jj)*u_ls(jj-1)) / bet;
403 }
404
405 for (int jj = ilen-2; jj >= 0; jj--) {
406 u_ls(jj) = u_ls(jj) - gam(jj+1)*u_ls(jj+1);
407 }
408 }
409
410 for (int j = lo.y; j <= hi.y; ++j) {
411 phi(i,j,0,n) = u_ls(j-lo.y);
412 }
413 }
414 }
415 }
416}
417
418template <typename T>
420void overset_rescale_bcoef_x (Box const& box, Array4<T> const& bX, Array4<int const> const& osm,
421 int ncomp, T osfac) noexcept
422{
423 const auto lo = amrex::lbound(box);
424 const auto hi = amrex::ubound(box);
425 for (int n = 0; n < ncomp; ++n) {
426 for (int j = lo.y; j <= hi.y; ++j) {
427 for (int i = lo.x; i <= hi.x; ++i) {
428 if ((osm(i-1,j,0)+osm(i,j,0)) == 1) {
429 bX(i,j,0,n) *= osfac;
430 }
431 }}
432 }
433}
434
435template <typename T>
437void overset_rescale_bcoef_y (Box const& box, Array4<T> const& bY, Array4<int const> const& osm,
438 int ncomp, T osfac) noexcept
439{
440 const auto lo = amrex::lbound(box);
441 const auto hi = amrex::ubound(box);
442 for (int n = 0; n < ncomp; ++n) {
443 for (int j = lo.y; j <= hi.y; ++j) {
444 for (int i = lo.x; i <= hi.x; ++i) {
445 if ((osm(i,j-1,0)+osm(i,j,0)) == 1) {
446 bY(i,j,0,n) *= osfac;
447 }
448 }}
449 }
450}
451
452}
453#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_Amr.cpp:49
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void overset_rescale_bcoef_x(Box const &box, Array4< T > const &bX, Array4< int const > const &osm, int ncomp, T osfac) noexcept
Definition AMReX_MLABecLap_1D_K.H:239
BoxND< AMREX_SPACEDIM > Box
Definition AMReX_BaseFwd.H:27
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void mlabeclap_adotx_os(int i, int, int, int n, Array4< T > const &y, Array4< T const > const &x, Array4< T const > const &a, Array4< T const > const &bX, Array4< int const > const &osm, GpuArray< T, AMREX_SPACEDIM > const &dxinv, T alpha, T beta) noexcept
Definition AMReX_MLABecLap_1D_K.H:24
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void mlabeclap_flux_x(Box const &box, Array4< T > const &fx, Array4< T const > const &sol, Array4< T const > const &bx, T fac, int ncomp) noexcept
Definition AMReX_MLABecLap_1D_K.H:56
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void mlabeclap_flux_y(Box const &box, Array4< T > const &fy, Array4< T const > const &sol, Array4< T const > const &by, T fac, int ncomp) noexcept
Definition AMReX_MLABecLap_2D_K.H:104
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void abec_gsrb_os(int i, int, int, int n, Array4< T > const &phi, Array4< T const > const &rhs, T alpha, Array4< T const > const &a, T dhx, Array4< T const > const &bX, Array4< int const > const &m0, Array4< int const > const &m1, Array4< T const > const &f0, Array4< T const > const &f1, Array4< int const > const &osm, Box const &vbox, int redblack) noexcept
Definition AMReX_MLABecLap_1D_K.H:121
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
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void overset_rescale_bcoef_y(Box const &box, Array4< T > const &bY, Array4< int const > const &osm, int ncomp, T osfac) noexcept
Definition AMReX_MLABecLap_2D_K.H:437
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void abec_jacobi(int i, int, int, int n, Array4< T > const &phi, Array4< T const > const &rhs, Array4< T const > const &Ax, T alpha, Array4< T const > const &a, T dhx, Array4< T const > const &bX, Array4< int const > const &m0, Array4< int const > const &m1, Array4< T const > const &f0, Array4< T const > const &f1, Box const &vbox) noexcept
Definition AMReX_MLABecLap_1D_K.H:160
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void abec_gsrb(int i, int, int, int n, Array4< T > const &phi, Array4< T const > const &rhs, T alpha, Array4< T const > const &a, T dhx, Array4< T const > const &bX, Array4< int const > const &m0, Array4< int const > const &m1, Array4< T const > const &f0, Array4< T const > const &f1, Box const &vbox, int redblack) noexcept
Definition AMReX_MLABecLap_1D_K.H:87
AMREX_FORCE_INLINE void abec_gsrb_with_line_solve(Box const &, Array4< T > const &, Array4< T const > const &, T, Array4< T const > const &, T, Array4< T const > const &, Array4< int const > const &, Array4< int const > const &, Array4< T const > const &, Array4< T const > const &, Box const &, int, int) noexcept
Definition AMReX_MLABecLap_1D_K.H:223
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void mlabeclap_flux_yface(Box const &box, Array4< T > const &fy, Array4< T const > const &sol, Array4< T const > const &by, T fac, int ylen, int ncomp) noexcept
Definition AMReX_MLABecLap_2D_K.H:122
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void mlabeclap_normalize(int i, int, int, int n, Array4< T > const &x, Array4< T const > const &a, Array4< T const > const &bX, GpuArray< T, AMREX_SPACEDIM > const &dxinv, T alpha, T beta) noexcept
Definition AMReX_MLABecLap_1D_K.H:44
void Abort(const std::string &msg)
Print out message to cerr and exit via abort().
Definition AMReX.cpp:225
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void abec_jacobi_os(int i, int, int, int n, Array4< T > const &phi, Array4< T const > const &rhs, Array4< T const > const &Ax, T alpha, Array4< T const > const &a, T dhx, Array4< T const > const &bX, Array4< int const > const &m0, Array4< int const > const &m1, Array4< T const > const &f0, Array4< T const > const &f1, Array4< int const > const &osm, Box const &vbox) noexcept
Definition AMReX_MLABecLap_1D_K.H:189
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void mlabeclap_flux_xface(Box const &box, Array4< T > const &fx, Array4< T const > const &sol, Array4< T const > const &bx, T fac, int xlen, int ncomp) noexcept
Definition AMReX_MLABecLap_1D_K.H:72
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void mlabeclap_adotx(int i, int, int, int n, Array4< T > const &y, Array4< T const > const &x, Array4< T const > const &a, Array4< T const > const &bX, GpuArray< T, AMREX_SPACEDIM > const &dxinv, T alpha, T beta) noexcept
Definition AMReX_MLABecLap_1D_K.H:9
Definition AMReX_Array.H:161
Definition AMReX_Array4.H:61
Definition AMReX_Array.H:34