38 if ( !bca ) {
return bcr[n]; }
40 int lo[AMREX_SPACEDIM];
41 int hi[AMREX_SPACEDIM];
42 for (
int dir = 0; dir < AMREX_SPACEDIM; dir++) {
43 int index[] = {i,j,k};
45 for (
int dim = 0; dim < AMREX_SPACEDIM; dim++){
46 if (index[dim] < m_domain.
smallEnd(dim)) { index[dim] = m_domain.
smallEnd(dim); }
47 if (index[dim] > m_domain.
bigEnd(dim)) { index[dim] = m_domain.
bigEnd(dim); }
48 if (dim == dir) { index[dim] = m_domain.
smallEnd(dim)-1; }
50 lo[dir] = bca.
contains(index[0], index[1], index[2]) ?
51 bca(index[0], index[1], index[2], n) : 0;
54 index[dir] = m_domain.
bigEnd(dir)+1;
55 hi[dir] = bca.
contains(index[0], index[1], index[2]) ?
56 bca(index[0], index[1], index[2], n) : 0;
81 using namespace amrex;
90 if (iv[edge_dir] == domlo)
92 iv[edge_dir] = domlo-1;
93 Real s_ext = s(iv[0],iv[1],iv[2],n);
99 Real vel_n = s(iv[0],iv[1],iv[2],edge_dir);
101 bool is_vel_in_dir = (n == edge_dir);
103 if ( (bclo == BCType::ext_dir) ||
104 (bclo == BCType::direction_dependent && vel_n >=
amrex::Real(0.0)) )
113 else if (bclo == BCType::reflect_odd)
118 else if ( bclo == BCType::foextrap || bclo == BCType::hoextrap ||
119 bclo == BCType::reflect_even ||
120 (bclo == BCType::direction_dependent && vel_n <
amrex::Real(0.0)))
145 using namespace amrex;
154 if (iv[edge_dir] == domhi+1)
156 iv[edge_dir] = domhi+1;
157 Real s_ext = s(iv[0],iv[1],iv[2],n);
163 Real vel_n = s(iv[0],iv[1],iv[2],edge_dir);
165 bool is_vel_in_dir = (n == edge_dir);
167 if ( (bchi == BCType::ext_dir) ||
168 (bchi == BCType::direction_dependent && vel_n <=
amrex::Real(0.0)) )
177 else if (bchi == BCType::reflect_odd)
182 else if ( bchi == BCType::foextrap || bchi == BCType::hoextrap ||
183 bchi == BCType::reflect_even ||
184 (bchi == BCType::direction_dependent && vel_n >
amrex::Real(0.0)))
211 using namespace amrex;
219 if (iv[edge_dir] == domlo)
221 iv[edge_dir] = domlo-1;
222 Real s_ext = s(iv[0],iv[1],iv[2],n);
224 bool is_vel_in_dir = is_velocity && (n == edge_dir);
228 if (bclo == BCType::direction_dependent && macvel >=
amrex::Real(0.0))
233 else if (bclo == BCType::ext_dir)
245 else if (bclo == BCType::reflect_odd)
250 else if ( bclo == BCType::foextrap || bclo == BCType::hoextrap ||
251 bclo == BCType::reflect_even ||
252 (bclo == BCType::direction_dependent && macvel <
amrex::Real(0.0)))
279 using namespace amrex;
287 if (iv[edge_dir] == domhi+1)
289 iv[edge_dir] = domhi+1;
290 Real s_ext = s(iv[0],iv[1],iv[2],n);
292 bool is_vel_in_dir = is_velocity && (n == edge_dir);
296 if (bchi == BCType::direction_dependent && macvel <=
amrex::Real(0.0))
301 else if (bchi == BCType::ext_dir)
313 else if (bchi == BCType::reflect_odd)
318 else if ( bchi == BCType::foextrap || bchi == BCType::hoextrap ||
319 bchi == BCType::reflect_even ||
320 (bchi == BCType::direction_dependent && macvel >
amrex::Real(0.0)))
#define AMREX_FORCE_INLINE
#define AMREX_GPU_HOST_DEVICE
__host__ __device__ const IntVectND< dim > & bigEnd() const &noexcept
__host__ __device__ const IntVectND< dim > & smallEnd() const &noexcept
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void SetEdgeBCsHi(int edge_dir, int i, int j, int k, int n, const amrex::Array4< const amrex::Real > &s, amrex::Real &lo, amrex::Real &hi, amrex::Real macvel, int bchi, int domhi, bool is_velocity)
Boundary condition effects.
Definition hydro_bcs_K.H:272
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void SetExtrapVelBCsLo(int edge_dir, int i, int j, int k, int n, const amrex::Array4< const amrex::Real > &s, amrex::Real &lo, amrex::Real &hi, int bclo, int domlo)
Boundary condition effects.
Definition hydro_bcs_K.H:76
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void SetExtrapVelBCsHi(int edge_dir, int i, int j, int k, int n, const amrex::Array4< const amrex::Real > &s, amrex::Real &lo, amrex::Real &hi, int bchi, int domhi)
Boundary condition effects.
Definition hydro_bcs_K.H:140
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void SetEdgeBCsLo(int edge_dir, int i, int j, int k, int n, const amrex::Array4< const amrex::Real > &s, amrex::Real &lo, amrex::Real &hi, amrex::Real macvel, int bclo, int domlo, bool is_velocity)
Boundary condition effects.
Definition hydro_bcs_K.H:204
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::BCRec getBC(const int i, const int j, const int k, const int n, const amrex::Box &m_domain, const amrex::BCRec *bcr, amrex::Array4< int const > const &bca)
Definition hydro_bcs_K.H:34
__host__ __device__ constexpr bool contains(idx... i) const noexcept