1#ifndef AMREX_HABEC_2D_H_
2#define AMREX_HABEC_2D_H_
3#include <AMReX_Config.H>
18 sten[1] = -(sb / (dx[0]*dx[0])) *
b[0](i,j,k);
19 sten[2] = -(sb / (dx[0]*dx[0])) *
b[0](i+1,j,k);
20 sten[0] = -(sten[1] + sten[2]);
21 if (sa != Real(0.0)) {
22 sten[0] += sa * a(i,j,k);
28 if (msk[cdir](i-1,j,k) > 0) {
31 sten[0] += bf1 *
b[0](i,j,k);
33 sten[2] += bf2 *
b[0](i,j,k);
40 if (msk[cdir](i+1,j,k) > 0) {
43 sten[0] += bf1 *
b[0](i+1,j,k);
44 sten[1] += bf2 *
b[0](i+1,j,k);
50template <
typename Int>
62 if (!osm || osm(i,j,k) != 0) {
63 sten[1] = -(sb / (dx[0]*dx[0])) *
b[0](i,j,k);
64 sten[2] = -(sb / (dx[0]*dx[0])) *
b[0](i+1,j,k);
65 sten[0] = -(sten[1] + sten[2]);
66 if (sa != Real(0.0)) {
67 sten[0] += sa * a(i,j,k);
71 if (cell_id(i-1,j,k) < 0) {
75 sten[0] += bf1 *
b[0](i,j,k);
77 sten[2] += bf2 *
b[0](i,j,k);
81 if (cell_id(i+1,j,k) < 0) {
85 sten[0] += bf1 *
b[0](i+1,j,k);
86 sten[1] += bf2 *
b[0](i+1,j,k);
91 for (
int m = 1; m < 2*AMREX_SPACEDIM+1; ++m) {
96 diaginv(i,j,k) = Real(1.0) / sten[0];
98 for (
int m = 1; m < 2*AMREX_SPACEDIM+1; ++m) {
99 sten[m] *= diaginv(i,j,k);
103 for (
int m = 0; m < 2*AMREX_SPACEDIM+1; ++m) {
104 ncols(i,j,k) += (sten[m] != Real(0.0));
108template <
typename Int>
113 sten[0] = cell_id(i ,j ,0);
114 sten[1] = cell_id(i-1,j ,0);
115 sten[2] = cell_id(i+1,j ,0);
#define AMREX_FORCE_INLINE
Definition AMReX_Extension.H:119
#define AMREX_GPU_HOST_DEVICE
Definition AMReX_GpuQualifiers.H:20
Encapsulation of the Orientation of the Faces of a Box.
Definition AMReX_Orientation.H:29
@ low
Definition AMReX_Orientation.H:34
@ high
Definition AMReX_Orientation.H:34
__host__ __device__ void comp_bf(Real &bf1, Real &bf2, Real sb, Real h, int bct, Real bcl, int bho)
Definition AMReX_Habec_K.H:11
Definition AMReX_Amr.cpp:49
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void habec_cols(GpuArray< Int, 2 *3+1 > &sten, int i, int j, int, Array4< Int const > const &cell_id)
Definition AMReX_Habec_1D_K.H:110
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void habec_mat(GpuArray< Real, 2 *3+1 > &sten, int i, int j, int k, Dim3 const &boxlo, Dim3 const &boxhi, Real sa, Array4< Real const > const &a, Real sb, GpuArray< Real, 3 > const &dx, GpuArray< Array4< Real const >, 3 > const &b, GpuArray< int, 3 *2 > const &bctype, GpuArray< Real, 3 *2 > const &bcl, int bho, GpuArray< Array4< int const >, 3 *2 > const &msk, Array4< Real > const &diaginv)
Definition AMReX_Habec_1D_K.H:8
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void habec_ijmat(GpuArray< Real, 2 *3+1 > &sten, Array4< Int > const &ncols, Array4< Real > const &diaginv, int i, int j, int k, Array4< Int const > const &cell_id, Real sa, Array4< Real const > const &a, Real sb, GpuArray< Real, 3 > const &dx, GpuArray< Array4< Real const >, 3 > const &b, GpuArray< int, 3 *2 > const &bctype, GpuArray< Real, 3 *2 > const &bcl, int bho, Array4< int const > const &osm)
Definition AMReX_Habec_1D_K.H:52
Definition AMReX_Array4.H:61
Definition AMReX_Dim3.H:12
int x
Definition AMReX_Dim3.H:12
Definition AMReX_Array.H:34