diff --git a/amrex-hydro/Doxygen/html/hydro__bcs__K_8H.html b/amrex-hydro/Doxygen/html/hydro__bcs__K_8H.html index 3067982..66da6a5 100644 --- a/amrex-hydro/Doxygen/html/hydro__bcs__K_8H.html +++ b/amrex-hydro/Doxygen/html/hydro__bcs__K_8H.html @@ -159,12 +159,12 @@ Functions AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::BCRec HydroBC::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)   -AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void HydroBC::SetXEdgeBCs (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, int bchi, int domhi, bool is_velocity) - Boundary condition effects. More...
-  -AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void HydroBC::SetYEdgeBCs (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, int bchi, int domhi, bool is_velocity) - Boundary condition effects. More...
-  +AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void HydroBC::SetXEdgeBCs (int i, int j, int k, int n, const amrex::Array4< const amrex::Real > &s, amrex::Real &lo, amrex::Real &hi, amrex::Real velm, amrex::Real velp, int bclo, int domlo, int bchi, int domhi, bool is_velocity) + Boundary condition effects. More...
+  +AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void HydroBC::SetYEdgeBCs (int i, int j, int k, int n, const amrex::Array4< const amrex::Real > &s, amrex::Real &lo, amrex::Real &hi, amrex::Real velm, amrex::Real velp, int bclo, int domlo, int bchi, int domhi, bool is_velocity) + Boundary condition effects. More...

Detailed Description

This header file contains the inlined host device functions required for the boundary condition routines for Godunov and MOL. It also contains function declarations for controlling host functions.

diff --git a/amrex-hydro/Doxygen/html/hydro__bcs__K_8H.js b/amrex-hydro/Doxygen/html/hydro__bcs__K_8H.js index da7d606..ed7fb8b 100644 --- a/amrex-hydro/Doxygen/html/hydro__bcs__K_8H.js +++ b/amrex-hydro/Doxygen/html/hydro__bcs__K_8H.js @@ -1,6 +1,6 @@ var hydro__bcs__K_8H = [ [ "getBC", "hydro__bcs__K_8H.html#ae4805c1bf4cec4012693733f3fa44f7b", null ], - [ "SetXEdgeBCs", "hydro__bcs__K_8H.html#a45d3b23f98379c982fee1b1b72ae2d6a", null ], - [ "SetYEdgeBCs", "hydro__bcs__K_8H.html#ab483be498f1f0c98923a5e6cde92841a", null ] + [ "SetXEdgeBCs", "hydro__bcs__K_8H.html#a96c8149b6212b7eee7a68dd1da6c663b", null ], + [ "SetYEdgeBCs", "hydro__bcs__K_8H.html#a4b03a900994953e6e007f229046f652c", null ] ]; \ No newline at end of file diff --git a/amrex-hydro/Doxygen/html/hydro__bcs__K_8H_source.html b/amrex-hydro/Doxygen/html/hydro__bcs__K_8H_source.html index de438a0..9d4ed6c 100644 --- a/amrex-hydro/Doxygen/html/hydro__bcs__K_8H_source.html +++ b/amrex-hydro/Doxygen/html/hydro__bcs__K_8H_source.html @@ -172,195 +172,251 @@
74  */
75 
76 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
-
77 void SetXEdgeBCs( int i, int j, int k, int n,
+
77 void SetXEdgeBCs( int i, int j, int k, int n,
78  const amrex::Array4<const amrex::Real> &s,
79  amrex::Real &lo, amrex::Real &hi,
-
80  int bclo, int domlo,
-
81  int bchi, int domhi,
-
82  bool is_velocity )
-
83 {
-
84 
+
80  amrex::Real velm, amrex::Real velp,
+
81  int bclo, int domlo,
+
82  int bchi, int domhi,
+
83  bool is_velocity )
+
84 {
85  using namespace amrex;
86 
87  // This function is for setting BCs ON domain faces only.
-
88  AMREX_ASSERT( domlo <= i && i <= domhi+1 );
-
89 
-
90  if (i == domlo)
-
91  {
-
92  if (bclo == BCType::ext_dir)
-
93  {
-
94  lo = s(domlo-1, j, k, n);
-
95  // For turbulent inflow, there are times when the inflow face
-
96  // may have a predicted outflowing velocity. Here, we preserve
-
97  // the normal component of the Dirichlet BC, but allow the
-
98  // tangential components to transport values from the interior.
-
99  if ( n==XVEL && is_velocity ) hi=lo;
-
100  }
-
101  else if ( bclo == BCType::foextrap || bclo == BCType::hoextrap ||
-
102  bclo == BCType::reflect_even )
-
103  {
-
104  lo = hi;
-
105  }
-
106  else if (bclo == BCType::reflect_odd)
-
107  {
-
108  hi = 0.;
-
109  lo = hi;
-
110  }
-
111  }
-
112  else if (i == domhi+1)
-
113  {
-
114  if (bchi == BCType::ext_dir)
-
115  {
-
116  hi = s(domhi+1, j, k, n);
-
117  if ( n==XVEL && is_velocity ) lo = hi;
-
118  }
-
119  else if ( bchi == BCType::foextrap || bchi == BCType::hoextrap ||
-
120  bchi == BCType::reflect_even )
+
88  // NOTE: this is called in two ways:
+
89  // 1) in the extrapolation of velocity components only --
+
90  // in this case velm and velp may be predicted
+
91  // 2) for all components in the construction of edge states
+
92  // in this case velm and velp are identical and equal to
+
93  // the MAC velocity on the current edge
+
94  AMREX_ASSERT( domlo <= i && i <= domhi+1 );
+
95 
+
96  if (i == domlo)
+
97  {
+
98  if ( (bclo == BCType::direction_dependent) && is_velocity &&
+
99  (n == XVEL) && (s(domlo-1,j,k,n) >= 0.0) )
+
100  {
+
101  lo = s(domlo-1, j, k, n);
+
102  hi = s(domlo-1, j, k, n);
+
103  }
+
104  else if ( (bclo == BCType::ext_dir) ||
+
105  (bclo == BCType::direction_dependent && velp >= 0.0) )
+
106  {
+
107  lo = s(domlo-1, j, k, n);
+
108  // For turbulent inflow, there are times when the inflow face
+
109  // may have a predicted outflowing velocity. Here, we preserve
+
110  // the normal component of the Dirichlet BC, but allow the
+
111  // tangential components to transport values from the interior.
+
112  if ( n==XVEL && is_velocity ) hi=lo;
+
113  }
+
114  else if ( bclo == BCType::foextrap || bclo == BCType::hoextrap ||
+
115  bclo == BCType::reflect_even ||
+
116  (bclo == BCType::direction_dependent && velp < 0.0))
+
117  {
+
118  lo = hi;
+
119  }
+
120  else if (bclo == BCType::reflect_odd)
121  {
-
122  hi = lo;
-
123  }
-
124  else if (bchi == BCType::reflect_odd)
-
125  {
-
126  lo = 0.;
-
127  hi = lo;
-
128  }
-
129  }
-
130  else
-
131  return;
-
132 }
-
133 
-
134 /*
-
135  * \fn SetYEdgeBCs
-
136  */
-
137 /**
-
138  * \brief Boundary condition effects
-
139  *
-
140  * For a detailed discussion see the AMReX-Hydro Guide section EBMOL.
-
141  */
-
142 
-
143 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
-
144 void SetYEdgeBCs ( int i, int j, int k, int n,
-
145  const amrex::Array4<const amrex::Real> &s,
-
146  amrex::Real &lo, amrex::Real &hi,
-
147  int bclo, int domlo,
-
148  int bchi, int domhi,
-
149  bool is_velocity )
-
150 {
-
151  using namespace amrex;
-
152 
-
153  // This function is for setting BCs ON domain faces only.
-
154  AMREX_ASSERT( domlo <= j && j <= domhi+1 );
+
122  hi = Real(0.);
+
123  lo = Real(0.);
+
124  }
+
125  }
+
126  else if (i == domhi+1)
+
127  {
+
128  if ( (bchi == BCType::direction_dependent) && is_velocity &&
+
129  (n == XVEL) && (s(domhi+1,j,k,n) <= 0.0) )
+
130  {
+
131  hi = s(domhi+1, j, k, n);
+
132  lo = s(domhi+1, j, k, n);
+
133  }
+
134  else if ( (bchi == BCType::ext_dir) ||
+
135  (bchi == BCType::direction_dependent && velm <= 0.0) )
+
136  {
+
137  hi = s(domhi+1, j, k, n);
+
138  if ( n==XVEL && is_velocity ) lo = hi;
+
139  }
+
140  else if ( bchi == BCType::foextrap || bchi == BCType::hoextrap ||
+
141  bchi == BCType::reflect_even ||
+
142  (bchi == BCType::direction_dependent && velm > 0.0))
+
143  {
+
144  hi = lo;
+
145  }
+
146  else if (bchi == BCType::reflect_odd)
+
147  {
+
148  lo = Real(0.);
+
149  hi = Real(0.);
+
150  }
+
151  }
+
152  else
+
153  return;
+
154 }
155 
-
156  if (j == domlo)
-
157  {
-
158  if (bclo == BCType::ext_dir)
-
159  {
-
160  lo = s(i, domlo-1, k, n);
-
161  if ( n==YVEL && is_velocity ) hi=lo;
-
162  }
-
163  else if ( bclo == BCType::foextrap || bclo == BCType::hoextrap ||
-
164  bclo == BCType::reflect_even )
-
165  {
-
166  lo = hi;
-
167  }
-
168  else if (bclo == BCType::reflect_odd)
-
169  {
-
170  hi = 0.;
-
171  lo = hi;
-
172  }
-
173  }
-
174  else if (j == domhi+1)
-
175  {
-
176  if (bchi == BCType::ext_dir)
-
177  {
-
178  hi = s(i, domhi+1, k, n);
-
179  if ( n==YVEL && is_velocity ) lo=hi;
-
180  }
-
181  else if ( bchi == BCType::foextrap || bchi == BCType::hoextrap ||
-
182  bchi == BCType::reflect_even )
+
156 /*
+
157  * \fn SetYEdgeBCs
+
158  */
+
159 /**
+
160  * \brief Boundary condition effects
+
161  *
+
162  * For a detailed discussion see the AMReX-Hydro Guide section EBMOL.
+
163  */
+
164 
+
165 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
+
166 void SetYEdgeBCs (int i, int j, int k, int n,
+
167  const amrex::Array4<const amrex::Real> &s,
+
168  amrex::Real &lo, amrex::Real &hi,
+
169  amrex::Real velm, amrex::Real velp,
+
170  int bclo, int domlo,
+
171  int bchi, int domhi,
+
172  bool is_velocity )
+
173 {
+
174  using namespace amrex;
+
175 
+
176  // This function is for setting BCs ON domain faces only.
+
177  AMREX_ASSERT( domlo <= j && j <= domhi+1 );
+
178 
+
179  if (j == domlo)
+
180  {
+
181  if ( (bclo == BCType::direction_dependent) && is_velocity &&
+
182  (n == YVEL) && (s(i,domlo-1,k,n) >= 0.0) )
183  {
-
184  hi = lo;
-
185  }
-
186  else if(bchi == BCType::reflect_odd)
-
187  {
-
188  lo = 0.;
-
189  hi = lo;
-
190  }
-
191  }
-
192  else
-
193  return;
-
194 }
-
195 
-
196 
-
197 // //
-
198 // =============================== 3D ONLY =============================== //
-
199 // //
-
200 #if (AMREX_SPACEDIM==3)
-
201 
-
202 /**
-
203  *
-
204  * \brief Boundary condition effects
-
205  *
-
206  * For a detailed discussion see the AMReX-Hydro Guide.
-
207  * For 3D only.
-
208  */
-
209 
-
210 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
-
211 void SetZEdgeBCs ( int i, int j, int k, int n,
-
212  const amrex::Array4<const amrex::Real> &s,
-
213  amrex::Real &lo, amrex::Real &hi,
-
214  int bclo, int domlo,
-
215  int bchi, int domhi,
-
216  bool is_velocity )
-
217 {
-
218  using namespace amrex;
-
219 
-
220  // This function is for setting BCs ON domain faces only.
-
221  AMREX_ASSERT( domlo <= k && k <= domhi+1 );
-
222 
-
223  if (k == domlo)
-
224  {
-
225  if (bclo == BCType::ext_dir)
+
184  lo = s(i, domlo-1, k, n);
+
185  hi = s(i, domlo-1, k, n);
+
186  }
+
187  else if ( (bclo == BCType::ext_dir) ||
+
188  (bclo == BCType::direction_dependent && velp >= 0.0) )
+
189  {
+
190  lo = s(i, domlo-1, k, n);
+
191  if ( n==YVEL && is_velocity ) hi=lo;
+
192  }
+
193  else if ( bclo == BCType::foextrap || bclo == BCType::hoextrap ||
+
194  bclo == BCType::reflect_even ||
+
195  (bclo == BCType::direction_dependent && velp < 0.0))
+
196  {
+
197  lo = hi;
+
198  }
+
199  else if (bclo == BCType::reflect_odd)
+
200  {
+
201  hi = Real(0.);
+
202  lo = Real(0.);
+
203  }
+
204  }
+
205  else if (j == domhi+1)
+
206  {
+
207  if ( (bchi == BCType::direction_dependent) && is_velocity &&
+
208  (n == YVEL) && (s(i,domhi+1,k,n) <= 0.0) )
+
209  {
+
210  hi = s(i, domhi+1, k, n);
+
211  lo = s(i, domhi+1, k, n);
+
212  }
+
213  else if ( (bchi == BCType::ext_dir) ||
+
214  (bchi == BCType::direction_dependent && velm <= 0.0) )
+
215  {
+
216  hi = s(i, domhi+1, k, n);
+
217  if ( n==YVEL && is_velocity ) lo=hi;
+
218  }
+
219  else if ( bchi == BCType::foextrap || bchi == BCType::hoextrap ||
+
220  bchi == BCType::reflect_even ||
+
221  (bchi == BCType::direction_dependent && velm > 0.0))
+
222  {
+
223  hi = lo;
+
224  }
+
225  else if (bchi == BCType::reflect_odd)
226  {
-
227  lo = s(i, j, domlo-1, n);
-
228  if ( n==ZVEL && is_velocity ) hi=lo;
+
227  lo = Real(0.);
+
228  hi = Real(0.);
229  }
-
230  else if ( bclo == BCType::foextrap || bclo == BCType::hoextrap ||
-
231  bclo == BCType::reflect_even )
-
232  {
-
233  lo = hi;
-
234  }
-
235  else if(bclo == BCType::reflect_odd)
-
236  {
-
237  hi = 0.;
-
238  lo = hi;
-
239  }
-
240  }
-
241  else if (k == domhi+1)
-
242  {
-
243  if (bchi == BCType::ext_dir)
-
244  {
-
245  hi = s(i,j,domhi+1, n);
-
246  if ( n==ZVEL && is_velocity ) lo=hi;
-
247  }
-
248  else if ( bchi == BCType::foextrap || bchi == BCType::hoextrap ||
-
249  bchi == BCType::reflect_even )
-
250  {
-
251  hi = lo;
-
252  }
-
253  else if(bchi == BCType::reflect_odd)
-
254  {
-
255  lo = 0.;
-
256  hi = lo;
-
257  }
-
258  }
-
259  else
-
260  return;
-
261 }
-
262 #endif
-
263 } // namespace
-
264 #endif
-
265 /** @}*/
+
230  }
+
231  else
+
232  return;
+
233 }
+
234 
+
235 
+
236 // //
+
237 // =============================== 3D ONLY =============================== //
+
238 // //
+
239 #if (AMREX_SPACEDIM==3)
+
240 
+
241 /**
+
242  *
+
243  * \brief Boundary condition effects
+
244  *
+
245  * For a detailed discussion see the AMReX-Hydro Guide.
+
246  * For 3D only.
+
247  */
+
248 
+
249 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
+
250 void SetZEdgeBCs (int i, int j, int k, int n,
+
251  const amrex::Array4<const amrex::Real> &s,
+
252  amrex::Real &lo, amrex::Real &hi,
+
253  amrex::Real velm, amrex::Real velp,
+
254  int bclo, int domlo,
+
255  int bchi, int domhi,
+
256  bool is_velocity )
+
257 {
+
258  using namespace amrex;
+
259 
+
260  // This function is for setting BCs ON domain faces only.
+
261  AMREX_ASSERT( domlo <= k && k <= domhi+1 );
+
262 
+
263  if (k == domlo)
+
264  {
+
265  if ( (bclo == BCType::direction_dependent) && is_velocity &&
+
266  (n == ZVEL) && (s(i,j,domlo-1,n) >= 0.0) )
+
267  {
+
268  lo = s(i, j, domlo-1, n);
+
269  hi = s(i, j, domlo-1, n);
+
270  }
+
271  else if ( (bclo == BCType::ext_dir) ||
+
272  (bclo == BCType::direction_dependent && velp >= 0.0) )
+
273  {
+
274  lo = s(i, j, domlo-1, n);
+
275  if ( n==ZVEL && is_velocity ) hi=lo;
+
276  }
+
277  else if ( bclo == BCType::foextrap || bclo == BCType::hoextrap ||
+
278  bclo == BCType::reflect_even ||
+
279  (bclo == BCType::direction_dependent && velp < 0.0))
+
280  {
+
281  lo = hi;
+
282  }
+
283  else if(bclo == BCType::reflect_odd)
+
284  {
+
285  hi = Real(0.);
+
286  lo = Real(0.);
+
287  }
+
288  }
+
289  else if (k == domhi+1)
+
290  {
+
291  if ( (bchi == BCType::direction_dependent) && is_velocity &&
+
292  (n == ZVEL) && (s(i,j,domhi+1,n) <= 0.0) )
+
293  {
+
294  hi = s(i, j, domhi+1, n);
+
295  lo = s(i, j, domhi+1, n);
+
296  }
+
297  else if ( (bchi == BCType::ext_dir) ||
+
298  (bchi == BCType::direction_dependent && velm <= 0.0) )
+
299  {
+
300  hi = s(i, j, domhi+1, n);
+
301  if ( n==ZVEL && is_velocity ) lo=hi;
+
302  }
+
303  else if ( bchi == BCType::foextrap || bchi == BCType::hoextrap ||
+
304  bchi == BCType::reflect_even ||
+
305  (bchi == BCType::direction_dependent && velm > 0.0))
+
306  {
+
307  hi = lo;
+
308  }
+
309  else if(bchi == BCType::reflect_odd)
+
310  {
+
311  lo = Real(0.);
+
312  hi = Real(0.);
+
313  }
+
314  }
+
315  else
+
316  return;
+
317 }
+
318 #endif
+
319 } // namespace
+
320 #endif
+
321 /** @}*/
@@ -377,8 +433,8 @@
#define ZVEL
Definition: hydro_constants.H:30
-
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void SetXEdgeBCs(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, int bchi, int domhi, bool is_velocity)
Boundary condition effects.
Definition: hydro_bcs_K.H:77
-
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void SetYEdgeBCs(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, int bchi, int domhi, bool is_velocity)
Boundary condition effects.
Definition: hydro_bcs_K.H:144
+
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void SetYEdgeBCs(int i, int j, int k, int n, const amrex::Array4< const amrex::Real > &s, amrex::Real &lo, amrex::Real &hi, amrex::Real velm, amrex::Real velp, int bclo, int domlo, int bchi, int domhi, bool is_velocity)
Boundary condition effects.
Definition: hydro_bcs_K.H:166
+
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void SetXEdgeBCs(int i, int j, int k, int n, const amrex::Array4< const amrex::Real > &s, amrex::Real &lo, amrex::Real &hi, amrex::Real velm, amrex::Real velp, int bclo, int domlo, int bchi, int domhi, bool is_velocity)
Boundary condition effects.
Definition: hydro_bcs_K.H:77
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
diff --git a/amrex-hydro/Doxygen/html/hydro__compute__edgestate__and__flux_8cpp.html b/amrex-hydro/Doxygen/html/hydro__compute__edgestate__and__flux_8cpp.html index 5d64870..e6ed851 100644 --- a/amrex-hydro/Doxygen/html/hydro__compute__edgestate__and__flux_8cpp.html +++ b/amrex-hydro/Doxygen/html/hydro__compute__edgestate__and__flux_8cpp.html @@ -105,15 +105,16 @@
- - - - - - - - + + + + + + + + + diff --git a/amrex-hydro/Doxygen/html/hydro__compute__edgestate__and__flux_8cpp__incl.map b/amrex-hydro/Doxygen/html/hydro__compute__edgestate__and__flux_8cpp__incl.map index 810bc23..b55c9f9 100644 --- a/amrex-hydro/Doxygen/html/hydro__compute__edgestate__and__flux_8cpp__incl.map +++ b/amrex-hydro/Doxygen/html/hydro__compute__edgestate__and__flux_8cpp__incl.map @@ -1,14 +1,15 @@ - - - - - - - - + + + + + + + + - - - + + + + diff --git a/amrex-hydro/Doxygen/html/hydro__compute__edgestate__and__flux_8cpp__incl.md5 b/amrex-hydro/Doxygen/html/hydro__compute__edgestate__and__flux_8cpp__incl.md5 index 50087ec..f1e912b 100644 --- a/amrex-hydro/Doxygen/html/hydro__compute__edgestate__and__flux_8cpp__incl.md5 +++ b/amrex-hydro/Doxygen/html/hydro__compute__edgestate__and__flux_8cpp__incl.md5 @@ -1 +1 @@ -6e86b685232013ff9f822517c1fc2986 \ No newline at end of file +adfa03beb0cbc5be504ace230bd7cd35 \ No newline at end of file diff --git a/amrex-hydro/Doxygen/html/hydro__compute__edgestate__and__flux_8cpp__incl.png b/amrex-hydro/Doxygen/html/hydro__compute__edgestate__and__flux_8cpp__incl.png index 979d654..536c3ec 100644 Binary files a/amrex-hydro/Doxygen/html/hydro__compute__edgestate__and__flux_8cpp__incl.png and b/amrex-hydro/Doxygen/html/hydro__compute__edgestate__and__flux_8cpp__incl.png differ diff --git a/amrex-hydro/Doxygen/html/hydro__constants_8H.html b/amrex-hydro/Doxygen/html/hydro__constants_8H.html index 32a0a6f..937e8f1 100644 --- a/amrex-hydro/Doxygen/html/hydro__constants_8H.html +++ b/amrex-hydro/Doxygen/html/hydro__constants_8H.html @@ -116,38 +116,38 @@
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/amrex-hydro/Doxygen/html/hydro__constants_8H__dep__incl.map b/amrex-hydro/Doxygen/html/hydro__constants_8H__dep__incl.map index eb8c569..033fb86 100644 --- a/amrex-hydro/Doxygen/html/hydro__constants_8H__dep__incl.map +++ b/amrex-hydro/Doxygen/html/hydro__constants_8H__dep__incl.map @@ -1,34 +1,34 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/amrex-hydro/Doxygen/html/hydro__constants_8H__dep__incl.md5 b/amrex-hydro/Doxygen/html/hydro__constants_8H__dep__incl.md5 index 3816f70..c93253f 100644 --- a/amrex-hydro/Doxygen/html/hydro__constants_8H__dep__incl.md5 +++ b/amrex-hydro/Doxygen/html/hydro__constants_8H__dep__incl.md5 @@ -1 +1 @@ -f2d3730bc641bab595749c115fe80fe4 \ No newline at end of file +2528291cb4e57103be8b18106e07c938 \ No newline at end of file diff --git a/amrex-hydro/Doxygen/html/hydro__constants_8H__dep__incl.png b/amrex-hydro/Doxygen/html/hydro__constants_8H__dep__incl.png index 91da0aa..37e5c9d 100644 Binary files a/amrex-hydro/Doxygen/html/hydro__constants_8H__dep__incl.png and b/amrex-hydro/Doxygen/html/hydro__constants_8H__dep__incl.png differ diff --git a/amrex-hydro/Doxygen/html/hydro__ebgodunov__bcs__K_8H.html b/amrex-hydro/Doxygen/html/hydro__ebgodunov__bcs__K_8H.html index 48d54a5..76e844f 100644 --- a/amrex-hydro/Doxygen/html/hydro__ebgodunov__bcs__K_8H.html +++ b/amrex-hydro/Doxygen/html/hydro__ebgodunov__bcs__K_8H.html @@ -141,10 +141,10 @@ - - - - + + + +

Functions

AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void EBGodunovBC::SetXBCs (const int i, const int j, const int k, const int n, const amrex::Array4< const amrex::Real > &s, amrex::Real &lo, amrex::Real &hi, const int bclo, const int bchi, const int domlo, const int domhi, const bool is_velocity)
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void EBGodunovBC::SetYBCs (const int i, const int j, const int k, const int n, const amrex::Array4< const amrex::Real > &s, amrex::Real &lo, amrex::Real &hi, const int bclo, const int bchi, const int domlo, const int domhi, const bool is_velocity)
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void EBGodunovBC::SetXBCs (const int i, const int j, const int k, const int n, const amrex::Array4< const amrex::Real > &s, amrex::Real &lo, amrex::Real &hi, amrex::Real velm, amrex::Real velp, const int bclo, const int bchi, const int domlo, const int domhi, const bool is_velocity)
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void EBGodunovBC::SetYBCs (const int i, const int j, const int k, const int n, const amrex::Array4< const amrex::Real > &s, amrex::Real &lo, amrex::Real &hi, amrex::Real velm, amrex::Real velp, const int bclo, const int bchi, const int domlo, const int domhi, const bool is_velocity)
 
diff --git a/amrex-hydro/Doxygen/html/hydro__ebgodunov__bcs__K_8H.js b/amrex-hydro/Doxygen/html/hydro__ebgodunov__bcs__K_8H.js index 9f005b0..23d79b2 100644 --- a/amrex-hydro/Doxygen/html/hydro__ebgodunov__bcs__K_8H.js +++ b/amrex-hydro/Doxygen/html/hydro__ebgodunov__bcs__K_8H.js @@ -1,5 +1,5 @@ var hydro__ebgodunov__bcs__K_8H = [ - [ "SetXBCs", "hydro__ebgodunov__bcs__K_8H.html#a201fb4a4c48f82f653fd5fb61090bcef", null ], - [ "SetYBCs", "hydro__ebgodunov__bcs__K_8H.html#abe925055f42491bbd794bdb3678ea1d4", null ] + [ "SetXBCs", "hydro__ebgodunov__bcs__K_8H.html#a95fe61ec1acf2cf81ce6b99cceac75e3", null ], + [ "SetYBCs", "hydro__ebgodunov__bcs__K_8H.html#a0e325c26f3ab1fe5a4b6d8ccc67280a5", null ] ]; \ No newline at end of file diff --git a/amrex-hydro/Doxygen/html/hydro__ebgodunov__bcs__K_8H_source.html b/amrex-hydro/Doxygen/html/hydro__ebgodunov__bcs__K_8H_source.html index f504c8c..792f0ee 100644 --- a/amrex-hydro/Doxygen/html/hydro__ebgodunov__bcs__K_8H_source.html +++ b/amrex-hydro/Doxygen/html/hydro__ebgodunov__bcs__K_8H_source.html @@ -121,10 +121,10 @@
23 namespace EBGodunovBC {
24 
25 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
-
26 void SetXBCs (const int i, const int j, const int k, const int n,
+
26 void SetXBCs (const int i, const int j, const int k, const int n,
27  const amrex::Array4<const amrex::Real> &s,
-
28  amrex::Real &lo,
-
29  amrex::Real &hi,
+
28  amrex::Real &lo, amrex::Real &hi,
+
29  amrex::Real velm, amrex::Real velp,
30  const int bclo, const int bchi,
31  const int domlo, const int domhi,
32  const bool is_velocity )
@@ -135,248 +135,296 @@
37  // Low X
38  if (i <= domlo)
39  {
-
40  if (bclo==BCType::ext_dir)
-
41  {
-
42  lo = s(domlo-1,j,k,n);
-
43  // For turbulent inflow, there are times when the inflow face
-
44  // may have a predicted outflowing velocity. Here, we preserve
-
45  // the normal component of the Dirichlet BC, but allow the
-
46  // tangential components to transport values from the interior.
-
47  if( n == XVEL && is_velocity ) hi=lo;
-
48  }
-
49  else if (bclo == BCType::foextrap || bclo == BCType::hoextrap)
-
50  {
-
51  lo = hi;
-
52  } else if (bclo == BCType::reflect_even)
-
53  {
-
54  lo = hi;
-
55 
-
56  if ( i<domlo)
-
57  Abort("EBGodunovBC::SetXBCs not yet fully implemented for reflect_even BC. See comments in EBGodunovBC::SetXBCs.");
-
58  //
-
59  // Note that this is only relevant for 3D, as only 3D ever needs to
-
60  // set the BC beyond the domain face.
-
61  // This is potentially tricky because the code re-uses some of the
-
62  // space holding the holding the states passed in here; it puts the
-
63  // upwinded intermediate edge state in Imx (which supplies hi)
-
64  // With GPU, I think it's undertermined which Imx(i+..) you'll get here,
-
65  // could be from PLM, could be the upwinded edgestate.
-
66  // Question is whether every thread in the stream has to finish a kernel
-
67  // before the next kernel is launched.
-
68  // lo = hi_arr(2*domlo-i ,j,k,n);
-
69  // hi = lo_arr(2*domlo-i-1,j,k,n);
-
70  }
-
71  else if (bclo == BCType::reflect_odd)
-
72  {
-
73  if ( i==domlo ) {
-
74  hi = 0.;
-
75  lo = 0.;
-
76  } else {
-
77  Abort("EBGodunovBC::SetXBCs not yet fully implemented for reflect_odd BC. See comments in EBGodunovBC::SetXBCs.");
-
78  // lo = -hi_arr(2*domlo-i ,j,k,n);
-
79  // hi = -lo_arr(2*domlo-i-1,j,k,n);
-
80  }
-
81  }
-
82  }
-
83  // High X
-
84  else if (i > domhi)
-
85  {
-
86  if (bchi==BCType::ext_dir)
-
87  {
-
88  hi = s(domhi+1,j,k,n) ;
-
89  if( n ==XVEL && is_velocity ) lo=hi;
-
90  }
-
91  else if (bchi == BCType::foextrap || bchi == BCType::hoextrap )
-
92  {
-
93  hi = lo;
-
94  }
-
95  else if (bchi == BCType::reflect_even)
+
40  if ( (bclo == BCType::direction_dependent) && is_velocity &&
+
41  (n == XVEL) && (s(domlo-1,j,k,n) >= 0.0) )
+
42  {
+
43  lo = s(domlo-1, j, k, n);
+
44  hi = s(domlo-1, j, k, n);
+
45  }
+
46  else if ( bclo == BCType::ext_dir ||
+
47  (bclo == BCType::direction_dependent && velp >= 0.0) )
+
48  {
+
49  lo = s(domlo-1,j,k,n);
+
50  // For turbulent inflow, there are times when the inflow face
+
51  // may have a predicted outflowing velocity. Here, we preserve
+
52  // the normal component of the Dirichlet BC, but allow the
+
53  // tangential components to transport values from the interior.
+
54  if( n == XVEL && is_velocity ) hi=lo;
+
55  }
+
56  else if ( bclo == BCType::foextrap || bclo == BCType::hoextrap ||
+
57  (bclo == BCType::direction_dependent && velp < 0.0) )
+
58  {
+
59  lo = hi;
+
60  } else if (bclo == BCType::reflect_even)
+
61  {
+
62  lo = hi;
+
63 
+
64  if ( i<domlo)
+
65  Abort("EBGodunovBC::SetXBCs not yet fully implemented for reflect_even BC. See comments in EBGodunovBC::SetXBCs.");
+
66  //
+
67  // Note that this is only relevant for 3D, as only 3D ever needs to
+
68  // set the BC beyond the domain face.
+
69  // This is potentially tricky because the code re-uses some of the
+
70  // space holding the holding the states passed in here; it puts the
+
71  // upwinded intermediate edge state in Imx (which supplies hi)
+
72  // With GPU, I think it's undertermined which Imx(i+..) you'll get here,
+
73  // could be from PLM, could be the upwinded edgestate.
+
74  // Question is whether every thread in the stream has to finish a kernel
+
75  // before the next kernel is launched.
+
76  // lo = hi_arr(2*domlo-i ,j,k,n);
+
77  // hi = lo_arr(2*domlo-i-1,j,k,n);
+
78  }
+
79  else if (bclo == BCType::reflect_odd)
+
80  {
+
81  if ( i==domlo ) {
+
82  hi = Real(0.);
+
83  lo = Real(0.);
+
84  } else {
+
85  Abort("EBGodunovBC::SetXBCs not yet fully implemented for reflect_odd BC. See comments in EBGodunovBC::SetXBCs.");
+
86  // lo = -hi_arr(2*domlo-i ,j,k,n);
+
87  // hi = -lo_arr(2*domlo-i-1,j,k,n);
+
88  }
+
89  }
+
90  }
+
91  // High X
+
92  else if (i > domhi)
+
93  {
+
94  if ( (bchi == BCType::direction_dependent) && is_velocity &&
+
95  (n == XVEL) && (s(domhi+1,j,k,n) <= 0.0) )
96  {
-
97  hi = lo;
-
98 
-
99  if ( i>domhi+1 )
-
100  Abort("EBGodunovBC::SetXBCs not yet fully implemented for reflect_even BC. See comments in EBGodunovBC::SetXBCs.");
-
101  // hi = lo_arr(2*(domhi+1)-i-1,j,k,n);
-
102  // lo = hi_arr(2*(domhi+1)-i ,j,k,n);
-
103  }
-
104  else if (bchi == BCType::reflect_odd)
-
105  {
-
106  if ( i==domhi+1 ) {
-
107  hi = 0.;
-
108  lo = 0.;
-
109  } else {
-
110  Abort("EBGodunovBC::SetXBCs not yet fully implemented for reflect_odd BC. See comments in EBGodunovBC::SetXBCs.");
-
111  // hi = -lo_arr(2*(domhi+1)-i-1,j,k,n);
-
112  // lo = -hi_arr(2*(domhi+1)-i ,j,k,n);
-
113  }
-
114  }
-
115  }
-
116  else
-
117  return;
-
118 }
-
119 
-
120 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
-
121 void SetYBCs (const int i, const int j, const int k, const int n,
-
122  const amrex::Array4<const amrex::Real> &s,
-
123  amrex::Real &lo,
-
124  amrex::Real &hi,
-
125  const int bclo, const int bchi,
-
126  const int domlo, const int domhi,
-
127  const bool is_velocity )
-
128 {
-
129  using namespace amrex;
-
130 
-
131 
-
132  // Low Y
-
133  if (j <= domlo)
-
134  {
-
135  if (bclo==BCType::ext_dir)
-
136  {
-
137  lo = s(i,domlo-1,k,n);
-
138  if ( n == YVEL && is_velocity ) hi = lo;
-
139  }
-
140  else if (bclo == BCType::foextrap || bclo == BCType::hoextrap)
-
141  {
-
142  lo = hi;
-
143  }
-
144  else if (bclo == BCType::reflect_even)
-
145  {
-
146  lo = hi;
+
97  hi = s(domhi+1, j, k, n);
+
98  lo = s(domhi+1, j, k, n);
+
99  }
+
100  else if ( (bchi == BCType::ext_dir) ||
+
101  (bchi == BCType::direction_dependent && velm <= 0.0) )
+
102  {
+
103  hi = s(domhi+1,j,k,n) ;
+
104  if( n ==XVEL && is_velocity ) lo=hi;
+
105  }
+
106  else if ( bchi == BCType::foextrap || bchi == BCType::hoextrap ||
+
107  (bchi== BCType::direction_dependent && velm > 0.0) )
+
108  {
+
109  hi = lo;
+
110  }
+
111  else if (bchi == BCType::reflect_even)
+
112  {
+
113  hi = lo;
+
114 
+
115  if ( i>domhi+1 )
+
116  Abort("EBGodunovBC::SetXBCs not yet fully implemented for reflect_even BC. See comments in EBGodunovBC::SetXBCs.");
+
117  // hi = lo_arr(2*(domhi+1)-i-1,j,k,n);
+
118  // lo = hi_arr(2*(domhi+1)-i ,j,k,n);
+
119  }
+
120  else if (bchi == BCType::reflect_odd)
+
121  {
+
122  if ( i==domhi+1 ) {
+
123  hi = Real(0.);
+
124  lo = Real(0.);
+
125  } else {
+
126  Abort("EBGodunovBC::SetXBCs not yet fully implemented for reflect_odd BC. See comments in EBGodunovBC::SetXBCs.");
+
127  // hi = -lo_arr(2*(domhi+1)-i-1,j,k,n);
+
128  // lo = -hi_arr(2*(domhi+1)-i ,j,k,n);
+
129  }
+
130  }
+
131  }
+
132  else
+
133  return;
+
134 }
+
135 
+
136 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
+
137 void SetYBCs (const int i, const int j, const int k, const int n,
+
138  const amrex::Array4<const amrex::Real> &s,
+
139  amrex::Real &lo, amrex::Real &hi,
+
140  amrex::Real velm, amrex::Real velp,
+
141  const int bclo, const int bchi,
+
142  const int domlo, const int domhi,
+
143  const bool is_velocity )
+
144 {
+
145  using namespace amrex;
+
146 
147 
-
148  if ( j<domlo )
-
149  Abort("EBGodunovBC::SetYBCs not yet fully implemented for reflect_even BC. See comments in EBGodunovBC::SetXBCs.");
-
150  // lo = hi_arr(i,2*domlo-j ,k,n);
-
151  // hi = lo_arr(i,2*domlo-j-1,k,n);
-
152  }
-
153  else if(bclo == BCType::reflect_odd)
-
154  {
-
155  if ( j==domlo ) {
-
156  hi = 0.;
-
157  lo = 0.;
-
158  } else {
-
159  Abort("EBGodunovBC::SetYBCs not yet fully implemented for reflect_odd BC. See comments in EBGodunovBC::SetXBCs.");
-
160  // lo = -hi_arr(i,2*domlo-j ,k,n);
-
161  // hi = -lo_arr(i,2*domlo-j-1,k,n);
-
162  }
-
163  }
-
164  }
-
165  // High Y
-
166  else if (j > domhi)
-
167  {
-
168  if (bchi==BCType::ext_dir)
+
148  // Low Y
+
149  if (j <= domlo)
+
150  {
+
151  if ( (bclo == BCType::direction_dependent) && is_velocity &&
+
152  (n == YVEL) && (s(i,domlo-1,k,n) >= 0.0) )
+
153  {
+
154  lo = s(i, domlo-1, k, n);
+
155  hi = s(i, domlo-1, k, n);
+
156  }
+
157  else if ( bclo == BCType::ext_dir ||
+
158  (bclo == BCType::direction_dependent && velp >= 0.0) )
+
159  {
+
160  lo = s(i,domlo-1,k,n);
+
161  if ( n == YVEL && is_velocity ) hi = lo;
+
162  }
+
163  else if ( bclo == BCType::foextrap || bclo == BCType::hoextrap ||
+
164  (bclo == BCType::direction_dependent && velp < 0.0) )
+
165  {
+
166  lo = hi;
+
167  }
+
168  else if (bclo == BCType::reflect_even)
169  {
-
170  hi = s(i,domhi+1,k,n);
-
171  if( n == YVEL && is_velocity ) lo = hi ;
-
172  }
-
173  else if (bchi == BCType::foextrap || bchi == BCType::hoextrap)
-
174  {
-
175  hi = lo;
+
170  lo = hi;
+
171 
+
172  if ( j<domlo )
+
173  Abort("EBGodunovBC::SetYBCs not yet fully implemented for reflect_even BC. See comments in EBGodunovBC::SetXBCs.");
+
174  // lo = hi_arr(i,2*domlo-j ,k,n);
+
175  // hi = lo_arr(i,2*domlo-j-1,k,n);
176  }
-
177  else if (bchi == BCType::reflect_even)
+
177  else if(bclo == BCType::reflect_odd)
178  {
-
179  hi = lo;
-
180 
-
181  if ( j>domhi+1)
-
182  Abort("EBGodunovBC::SetYBCs not yet fully implemented for reflect_even BC. See comments in EBGodunovBC::SetXBCs.");
-
183  // hi = lo_arr(i,2*(domhi+1)-j-1,k,n);
-
184  // lo = hi_arr(i,2*(domhi+1)-j ,k,n);
-
185  }
-
186  else if (bchi == BCType::reflect_odd)
-
187  {
-
188  if ( j==domhi+1 ) {
-
189  hi = 0.;
-
190  lo = 0.;
-
191  } else {
-
192  Abort("EBGodunovBC::SetYBCs not yet fully implemented for reflect_odd BC. See comments in EBGodunovBC::SetXBCs.");
-
193  // hi = -lo_arr(i,2*(domhi+1)-j-1,k,n);
-
194  // lo = -hi_arr(i,2*(domhi+1)-j ,k,n);
-
195  }
-
196  }
-
197  }
-
198  else
-
199  return;
-
200 }
-
201 
-
202 #if (AMREX_SPACEDIM==3)
-
203 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
-
204 void SetZBCs(const int i, const int j, const int k, const int n,
-
205  const amrex::Array4<const amrex::Real> &s,
-
206  amrex::Real &lo,
-
207  amrex::Real &hi,
-
208  const int bclo, const int bchi,
-
209  const int domlo, const int domhi,
-
210  const bool is_velocity)
-
211 {
-
212  using namespace amrex;
-
213 
-
214 
-
215  // Low Z
-
216  if (k <= domlo)
-
217  {
-
218  if (bclo==BCType::ext_dir)
+
179  if ( j==domlo ) {
+
180  hi = Real(0.);
+
181  lo = Real(0.);
+
182  } else {
+
183  Abort("EBGodunovBC::SetYBCs not yet fully implemented for reflect_odd BC. See comments in EBGodunovBC::SetXBCs.");
+
184  // lo = -hi_arr(i,2*domlo-j ,k,n);
+
185  // hi = -lo_arr(i,2*domlo-j-1,k,n);
+
186  }
+
187  }
+
188  }
+
189  // High Y
+
190  else if (j > domhi)
+
191  {
+
192  if ( (bchi == BCType::direction_dependent) && is_velocity &&
+
193  (n == YVEL) && (s(i,domhi+1,k,n) <= 0.0) )
+
194  {
+
195  hi = s(i, domhi+1, k, n);
+
196  lo = s(i, domhi+1, k, n);
+
197  }
+
198  else if ( (bchi == BCType::ext_dir) ||
+
199  (bchi == BCType::direction_dependent && velm <= 0.0) )
+
200  {
+
201  hi = s(i,domhi+1,k,n);
+
202  if( n == YVEL && is_velocity ) lo = hi ;
+
203  }
+
204  else if ( bchi == BCType::foextrap || bchi == BCType::hoextrap ||
+
205  (bchi== BCType::direction_dependent && velm > 0.0) )
+
206  {
+
207  hi = lo;
+
208  }
+
209  else if (bchi == BCType::reflect_even)
+
210  {
+
211  hi = lo;
+
212 
+
213  if ( j>domhi+1)
+
214  Abort("EBGodunovBC::SetYBCs not yet fully implemented for reflect_even BC. See comments in EBGodunovBC::SetXBCs.");
+
215  // hi = lo_arr(i,2*(domhi+1)-j-1,k,n);
+
216  // lo = hi_arr(i,2*(domhi+1)-j ,k,n);
+
217  }
+
218  else if (bchi == BCType::reflect_odd)
219  {
-
220  lo =s(i,j,domlo-1,n);
-
221  if ( n == ZVEL && is_velocity ) hi = lo;
-
222  }
-
223  else if (bclo == BCType::foextrap || bclo == BCType::hoextrap)
-
224  {
-
225  lo = hi;
-
226  }
-
227  else if (bclo == BCType::reflect_even)
-
228  {
-
229  Abort("EBGodunovBC::SetZBCs not yet implemented for reflect_even BC. See comments in EBGodunovBC::SetXBCs.");
-
230  // lo = hi_arr(i,j,2*domlo-k ,n);
-
231  // hi = lo_arr(i,j,2*domlo-k-1,n);
-
232  }
-
233  else if(bclo == BCType::reflect_odd)
-
234  {
-
235  Abort("EBGodunovBC::SetZBCs not yet implemented for reflect_odd BC. See comments in EBGodunovBC::SetXBCs.");
-
236  // if ( k==domlo ) {
-
237  // hi = 0.;
-
238  // lo = 0.;
-
239  // } else {
-
240  // lo = -hi_arr(i,j,2*domlo-k ,n);
-
241  // hi = -lo_arr(i,j,2*domlo-k-1,n);
-
242  // }
-
243  }
-
244  }
-
245  // High Z
-
246  else if (k > domhi)
-
247  {
-
248  if (bchi==BCType::ext_dir)
-
249  {
-
250  hi = s(i,j,domhi+1,n);
-
251  if ( n == ZVEL && is_velocity ) lo = hi ;
-
252  }
-
253  else if (bchi == BCType::foextrap || bchi == BCType::hoextrap)
-
254  {
-
255  hi = lo;
-
256  }
-
257  else if (bchi == BCType::reflect_even)
+
220  if ( j==domhi+1 ) {
+
221  hi = Real(0.);
+
222  lo = Real(0.);
+
223  } else {
+
224  Abort("EBGodunovBC::SetYBCs not yet fully implemented for reflect_odd BC. See comments in EBGodunovBC::SetXBCs.");
+
225  // hi = -lo_arr(i,2*(domhi+1)-j-1,k,n);
+
226  // lo = -hi_arr(i,2*(domhi+1)-j ,k,n);
+
227  }
+
228  }
+
229  }
+
230  else
+
231  return;
+
232 }
+
233 
+
234 #if (AMREX_SPACEDIM==3)
+
235 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
+
236 void SetZBCs (const int i, const int j, const int k, const int n,
+
237  const amrex::Array4<const amrex::Real> &s,
+
238  amrex::Real &lo, amrex::Real &hi,
+
239  amrex::Real velm, amrex::Real velp,
+
240  const int bclo, const int bchi,
+
241  const int domlo, const int domhi,
+
242  const bool is_velocity)
+
243 {
+
244  using namespace amrex;
+
245 
+
246 
+
247  // Low Z
+
248  if (k <= domlo)
+
249  {
+
250  if ( (bclo == BCType::direction_dependent) && is_velocity &&
+
251  (n == ZVEL) && (s(i,j,domlo-1,n) >= 0.0) )
+
252  {
+
253  lo = s(i, j, domlo-1, n);
+
254  hi = s(i, j, domlo-1, n);
+
255  }
+
256  else if ( bclo == BCType::ext_dir ||
+
257  (bclo == BCType::direction_dependent && velp >= 0.0) )
258  {
-
259  Abort("EBGodunovBC::SetZBCs not yet implemented for reflect_even BC. See comments in EBGodunovBC::SetXBCs.");
-
260  // hi = lo_arr(i,j,2*(domhi+1)-k-1,n);
-
261  // lo = hi_arr(i,j,2*(domhi+1)-k ,n);
-
262  }
-
263  else if (bchi == BCType::reflect_odd)
+
259  lo =s(i,j,domlo-1,n);
+
260  if ( n == ZVEL && is_velocity ) hi = lo;
+
261  }
+
262  else if ( bclo == BCType::foextrap || bclo == BCType::hoextrap ||
+
263  (bclo == BCType::direction_dependent && velp < 0.0) )
264  {
-
265  Abort("EBGodunovBC::SetZBCs not yet implemented for reflect_odd BC. See comments in EBGodunovBC::SetXBCs.");
-
266  // if ( k==domhi+1 ) {
-
267  // hi = 0.;
-
268  // lo = 0.;
-
269  // } else {
-
270  // hi = -lo_arr(i,j,2*(domhi+1)-k-1,n);
-
271  // lo = -hi_arr(i,j,2*(domhi+1)-k ,n);
-
272  // }
-
273  }
-
274  }
-
275  else
-
276  return;
-
277 }
-
278 #endif
-
279 }
-
280 #endif
-
281 /** @} */
+
265  lo = hi;
+
266  }
+
267  else if (bclo == BCType::reflect_even)
+
268  {
+
269  Abort("EBGodunovBC::SetZBCs not yet implemented for reflect_even BC. See comments in EBGodunovBC::SetXBCs.");
+
270  // lo = hi_arr(i,j,2*domlo-k ,n);
+
271  // hi = lo_arr(i,j,2*domlo-k-1,n);
+
272  }
+
273  else if(bclo == BCType::reflect_odd)
+
274  {
+
275  Abort("EBGodunovBC::SetZBCs not yet implemented for reflect_odd BC. See comments in EBGodunovBC::SetXBCs.");
+
276  // if ( k==domlo ) {
+
277  // hi = Real(0.);
+
278  // lo = Real(0.);
+
279  // } else {
+
280  // lo = -hi_arr(i,j,2*domlo-k ,n);
+
281  // hi = -lo_arr(i,j,2*domlo-k-1,n);
+
282  // }
+
283  }
+
284  }
+
285  // High Z
+
286  else if (k > domhi)
+
287  {
+
288  if ( (bchi == BCType::direction_dependent) && is_velocity &&
+
289  (n == ZVEL) && (s(i,j,domhi+1,n) <= 0.0) )
+
290  {
+
291  hi = s(i, j, domhi+1, n);
+
292  lo = s(i, j, domhi+1, n);
+
293  }
+
294  else if ( (bchi == BCType::ext_dir) ||
+
295  (bchi == BCType::direction_dependent && velm <= 0.0) )
+
296  {
+
297  hi = s(i,j,domhi+1,n);
+
298  if ( n == ZVEL && is_velocity ) lo = hi ;
+
299  }
+
300  else if ( bchi == BCType::foextrap || bchi == BCType::hoextrap ||
+
301  (bchi== BCType::direction_dependent && velm > 0.0) )
+
302  {
+
303  hi = lo;
+
304  }
+
305  else if (bchi == BCType::reflect_even)
+
306  {
+
307  Abort("EBGodunovBC::SetZBCs not yet implemented for reflect_even BC. See comments in EBGodunovBC::SetXBCs.");
+
308  // hi = lo_arr(i,j,2*(domhi+1)-k-1,n);
+
309  // lo = hi_arr(i,j,2*(domhi+1)-k ,n);
+
310  }
+
311  else if (bchi == BCType::reflect_odd)
+
312  {
+
313  Abort("EBGodunovBC::SetZBCs not yet implemented for reflect_odd BC. See comments in EBGodunovBC::SetXBCs.");
+
314  // if ( k==domhi+1 ) {
+
315  // hi = Real(0.);
+
316  // lo = Real(0.);
+
317  // } else {
+
318  // hi = -lo_arr(i,j,2*(domhi+1)-k-1,n);
+
319  // lo = -hi_arr(i,j,2*(domhi+1)-k ,n);
+
320  // }
+
321  }
+
322  }
+
323  else
+
324  return;
+
325 }
+
326 #endif
+
327 }
+
328 #endif
+
329 /** @} */
AMReX_Array.H
AMReX_BCRec.H
AMReX_BC_TYPES.H
@@ -388,8 +436,8 @@
ZVEL
#define ZVEL
Definition: hydro_constants.H:30
hydro_constants.H
EBGodunovBC
Definition: hydro_ebgodunov_bcs_K.H:23
-
EBGodunovBC::SetXBCs
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void SetXBCs(const int i, const int j, const int k, const int n, const amrex::Array4< const amrex::Real > &s, amrex::Real &lo, amrex::Real &hi, const int bclo, const int bchi, const int domlo, const int domhi, const bool is_velocity)
Definition: hydro_ebgodunov_bcs_K.H:26
-
EBGodunovBC::SetYBCs
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void SetYBCs(const int i, const int j, const int k, const int n, const amrex::Array4< const amrex::Real > &s, amrex::Real &lo, amrex::Real &hi, const int bclo, const int bchi, const int domlo, const int domhi, const bool is_velocity)
Definition: hydro_ebgodunov_bcs_K.H:121
+
EBGodunovBC::SetYBCs
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void SetYBCs(const int i, const int j, const int k, const int n, const amrex::Array4< const amrex::Real > &s, amrex::Real &lo, amrex::Real &hi, amrex::Real velm, amrex::Real velp, const int bclo, const int bchi, const int domlo, const int domhi, const bool is_velocity)
Definition: hydro_ebgodunov_bcs_K.H:137
+
EBGodunovBC::SetXBCs
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void SetXBCs(const int i, const int j, const int k, const int n, const amrex::Array4< const amrex::Real > &s, amrex::Real &lo, amrex::Real &hi, amrex::Real velm, amrex::Real velp, const int bclo, const int bchi, const int domlo, const int domhi, const bool is_velocity)
Definition: hydro_ebgodunov_bcs_K.H:26
amrex
Abort
void Abort(const std::string &msg)
amrex::Array4
diff --git a/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces_8cpp.html b/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces_8cpp.html index 2e24d70..5b15adb 100644 --- a/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces_8cpp.html +++ b/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces_8cpp.html @@ -107,27 +107,27 @@
- - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + +
diff --git a/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces_8cpp__incl.map b/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces_8cpp__incl.map index 5b5eb7d..fe95370 100644 --- a/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces_8cpp__incl.map +++ b/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces_8cpp__incl.map @@ -1,23 +1,23 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + diff --git a/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces_8cpp__incl.md5 b/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces_8cpp__incl.md5 index 26ae113..9b7bd9e 100644 --- a/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces_8cpp__incl.md5 +++ b/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces_8cpp__incl.md5 @@ -1 +1 @@ -3ea9466c18d3d78f2c2ea79f195f9ed5 \ No newline at end of file +e16ae4ca6e5efc8ddbce84c096ce07b2 \ No newline at end of file diff --git a/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces_8cpp__incl.png b/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces_8cpp__incl.png index fc75685..82b3a97 100644 Binary files a/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces_8cpp__incl.png and b/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces_8cpp__incl.png differ diff --git a/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces__2D_8cpp.html b/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces__2D_8cpp.html index ba11454..9c1f196 100644 --- a/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces__2D_8cpp.html +++ b/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces__2D_8cpp.html @@ -107,27 +107,27 @@
- - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + +
diff --git a/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces__2D_8cpp__incl.map b/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces__2D_8cpp__incl.map index 5b1e719..bb7b2ad 100644 --- a/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces__2D_8cpp__incl.map +++ b/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces__2D_8cpp__incl.map @@ -1,23 +1,23 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + diff --git a/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces__2D_8cpp__incl.md5 b/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces__2D_8cpp__incl.md5 index 086d0e7..4322a9c 100644 --- a/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces__2D_8cpp__incl.md5 +++ b/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces__2D_8cpp__incl.md5 @@ -1 +1 @@ -8efbeded9c8d6dcdc7bfcbe0acbd6827 \ No newline at end of file +fb6961af3eb5da22c645b21e59c3fdc8 \ No newline at end of file diff --git a/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces__2D_8cpp__incl.png b/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces__2D_8cpp__incl.png index 511b529..ef43478 100644 Binary files a/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces__2D_8cpp__incl.png and b/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces__2D_8cpp__incl.png differ diff --git a/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces__3D_8cpp.html b/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces__3D_8cpp.html index f74738a..ac032df 100644 --- a/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces__3D_8cpp.html +++ b/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces__3D_8cpp.html @@ -109,30 +109,30 @@
- + - + - - + + - - - - - - - - - - - + + + + + + + + + + + - - + +
diff --git a/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces__3D_8cpp__incl.map b/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces__3D_8cpp__incl.map index 8d5b0a0..908ff43 100644 --- a/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces__3D_8cpp__incl.map +++ b/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces__3D_8cpp__incl.map @@ -1,26 +1,26 @@ - + - + - - + + - - - - - - - - - - - + + + + + + + + + + + - - + + diff --git a/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces__3D_8cpp__incl.md5 b/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces__3D_8cpp__incl.md5 index aade3e6..111d758 100644 --- a/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces__3D_8cpp__incl.md5 +++ b/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces__3D_8cpp__incl.md5 @@ -1 +1 @@ -d8ce362152908ce1431e1aac2b11cb5e \ No newline at end of file +aad50be4e8c8a882c69dbbf848dec6a1 \ No newline at end of file diff --git a/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces__3D_8cpp__incl.png b/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces__3D_8cpp__incl.png index 2395544..7297aca 100644 Binary files a/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces__3D_8cpp__incl.png and b/amrex-hydro/Doxygen/html/hydro__ebgodunov__extrap__vel__to__faces__3D_8cpp__incl.png differ diff --git a/amrex-hydro/Doxygen/html/hydro__ebmol__edge__state__K_8H_source.html b/amrex-hydro/Doxygen/html/hydro__ebmol__edge__state__K_8H_source.html index 8a1bcda..576e92a 100644 --- a/amrex-hydro/Doxygen/html/hydro__ebmol__edge__state__K_8H_source.html +++ b/amrex-hydro/Doxygen/html/hydro__ebmol__edge__state__K_8H_source.html @@ -239,655 +239,661 @@
141 
142  qmns = amrex::max(amrex::min(qmns, cc_qmax), cc_qmin);
143 
-
144  HydroBC::SetXEdgeBCs(i, j, k, 0, q, qmns, qpls, d_bcrec[n].lo(0), domain_ilo, d_bcrec[n].hi(0), domain_ihi, is_velocity);
-
145 
-
146  if ( (i==domain_ilo) && (d_bcrec[n].lo(0) == amrex::BCType::foextrap || d_bcrec[n].lo(0) == amrex::BCType::hoextrap) )
-
147  {
-
148  if ( umac(i,j,k) >= 0. && n==XVEL && is_velocity ) qpls = amrex::min(qpls,amrex::Real(0.0));
-
149  qmns = qpls;
-
150  }
-
151  if ( (i==domain_ihi+1) && (d_bcrec[n].hi(0) == amrex::BCType::foextrap || d_bcrec[n].hi(0) == amrex::BCType::hoextrap) )
-
152  {
-
153  if ( umac(i,j,k) <= 0. && n==XVEL && is_velocity ) qmns = amrex::max(qmns,amrex::Real(0.0));
-
154  qpls = qmns;
-
155  }
-
156 
-
157  if (umac(i,j,k) > small_vel)
-
158  {
-
159  qs = qmns;
-
160  }
-
161  else if (umac(i,j,k) < - small_vel)
-
162  {
-
163  qs = qpls;
-
164  }
-
165  else
-
166  {
-
167  qs = amrex::Real(0.5)*(qmns+qpls);
-
168  }
-
169  }
-
170 
-
171  return qs;
-
172 }
-
173 
-
174 AMREX_GPU_DEVICE AMREX_FORCE_INLINE
-
175 amrex::Real hydro_ebmol_xedge_state ( AMREX_D_DECL(int i, int j, int k), int n,
-
176  amrex::Array4<amrex::Real const> const& q,
-
177  amrex::Array4<amrex::Real const> const& umac,
-
178  AMREX_D_DECL(amrex::Array4<amrex::Real const> const& fcx,
-
179  amrex::Array4<amrex::Real const> const& fcy,
-
180  amrex::Array4<amrex::Real const> const& fcz),
-
181  amrex::Array4<amrex::Real const> const& ccc,
-
182  amrex::Array4<amrex::Real const> const& vfrac,
-
183  amrex::Array4<amrex::EBCellFlag const> const& flag,
-
184  amrex::BCRec const* const d_bcrec,
-
185  amrex::Box const& domain,
-
186  int order, const bool is_velocity) noexcept
-
187 {
-
188 #if (AMREX_SPACEDIM==2)
-
189  const int k = 0;
-
190 #endif
-
191 
-
192  const int domain_ilo = domain.smallEnd(0);
-
193  const int domain_ihi = domain.bigEnd(0);
-
194 
-
195  // local (y,z) of centroid of x-face we are extrapolating to
-
196  amrex::Real yf = fcx(i,j,k,0);
-
197 #if (AMREX_SPACEDIM==3)
-
198  amrex::Real zf = fcx(i,j,k,1);
-
199 #endif
-
200 
-
201  AMREX_D_TERM(amrex::Real xc = ccc(i,j,k,0);, // centroid of cell (i,j,k)
-
202  amrex::Real yc = ccc(i,j,k,1);,
-
203  amrex::Real zc = ccc(i,j,k,2););
-
204 
-
205  AMREX_D_TERM(amrex::Real delta_x = amrex::Real(0.5) + xc;,
-
206  amrex::Real delta_y = yf - yc;,
-
207  amrex::Real delta_z = zf - zc;);
-
208 
-
209  amrex::Real cc_qmax = amrex::max(q(i,j,k,n),q(i-1,j,k,n));
-
210  amrex::Real cc_qmin = amrex::min(q(i,j,k,n),q(i-1,j,k,n));
-
211 
-
212  // Compute slopes of component "n" of q
-
213  const auto& slopes_eb_hi = amrex_lim_slopes_eb(i, j, k, n, q, ccc, vfrac,
-
214  AMREX_D_DECL(fcx,fcy,fcz),
-
215  flag, order);
-
216 
-
217 #if (AMREX_SPACEDIM==3)
-
218  amrex::Real qpls = q(i ,j,k,n) - delta_x * slopes_eb_hi[0]
-
219  + delta_y * slopes_eb_hi[1]
-
220  + delta_z * slopes_eb_hi[2];
-
221 #else
-
222  amrex::Real qpls = q(i ,j,k,n) - delta_x * slopes_eb_hi[0]
-
223  + delta_y * slopes_eb_hi[1];
-
224 #endif
-
225 
-
226  qpls = amrex::max(amrex::min(qpls, cc_qmax), cc_qmin);
-
227 
-
228  AMREX_D_TERM(xc = ccc(i-1,j,k,0);, // centroid of cell (i-1,j,k)
-
229  yc = ccc(i-1,j,k,1);,
-
230  zc = ccc(i-1,j,k,2););
-
231 
-
232  AMREX_D_TERM(delta_x = amrex::Real(0.5) - xc;,
-
233  delta_y = yf - yc;,
-
234  delta_z = zf - zc;);
-
235 
-
236  // Compute slopes of component "n" of q
-
237  const auto& slopes_eb_lo = amrex_lim_slopes_eb(i-1, j, k, n, q, ccc, vfrac,
-
238  AMREX_D_DECL(fcx,fcy,fcz),
-
239  flag, order);
-
240 
-
241 #if (AMREX_SPACEDIM==3)
-
242  amrex::Real qmns = q(i-1,j,k,n) + delta_x * slopes_eb_lo[0]
-
243  + delta_y * slopes_eb_lo[1]
-
244  + delta_z * slopes_eb_lo[2];
-
245 #else
-
246  amrex::Real qmns = q(i-1,j,k,n) + delta_x * slopes_eb_lo[0]
-
247  + delta_y * slopes_eb_lo[1];
-
248 #endif
-
249 
-
250  qmns = amrex::max(amrex::min(qmns, cc_qmax), cc_qmin);
-
251 
-
252  HydroBC::SetXEdgeBCs(i, j, k, 0, q, qmns, qpls, d_bcrec[n].lo(0), domain_ilo, d_bcrec[n].hi(0), domain_ihi, is_velocity);
-
253 
-
254  if ( (i==domain_ilo) && (d_bcrec[n].lo(0) == amrex::BCType::foextrap || d_bcrec[n].lo(0) == amrex::BCType::hoextrap) )
-
255  {
-
256  if ( umac(i,j,k) >= 0. && n==XVEL && is_velocity ) qpls = amrex::min(qpls,amrex::Real(0.0));
-
257  qmns = qpls;
-
258  }
-
259  if ( (i==domain_ihi+1) && (d_bcrec[n].hi(0) == amrex::BCType::foextrap || d_bcrec[n].hi(0) == amrex::BCType::hoextrap) )
-
260  {
-
261  if ( umac(i,j,k) <= 0. && n==XVEL && is_velocity ) qmns = amrex::max(qmns,amrex::Real(0.0));
-
262  qpls = qmns;
-
263  }
-
264 
-
265  amrex::Real qs;
+
144  HydroBC::SetXEdgeBCs(i, j, k, 0, q, qmns, qpls, umac(i,j,k), umac(i,j,k),
+
145  d_bcrec[n].lo(0), domain_ilo, d_bcrec[n].hi(0), domain_ihi, is_velocity);
+
146 
+
147  if ( (i==domain_ilo) && (d_bcrec[n].lo(0) == amrex::BCType::foextrap || d_bcrec[n].lo(0) == amrex::BCType::hoextrap) )
+
148  {
+
149  if ( umac(i,j,k) >= 0. && n==XVEL && is_velocity ) qpls = amrex::min(qpls,amrex::Real(0.0));
+
150  qmns = qpls;
+
151  }
+
152  if ( (i==domain_ihi+1) && (d_bcrec[n].hi(0) == amrex::BCType::foextrap || d_bcrec[n].hi(0) == amrex::BCType::hoextrap) )
+
153  {
+
154  if ( umac(i,j,k) <= 0. && n==XVEL && is_velocity ) qmns = amrex::max(qmns,amrex::Real(0.0));
+
155  qpls = qmns;
+
156  }
+
157 
+
158  if (umac(i,j,k) > small_vel)
+
159  {
+
160  qs = qmns;
+
161  }
+
162  else if (umac(i,j,k) < - small_vel)
+
163  {
+
164  qs = qpls;
+
165  }
+
166  else
+
167  {
+
168  qs = amrex::Real(0.5)*(qmns+qpls);
+
169  }
+
170  }
+
171 
+
172  return qs;
+
173 }
+
174 
+
175 AMREX_GPU_DEVICE AMREX_FORCE_INLINE
+
176 amrex::Real hydro_ebmol_xedge_state ( AMREX_D_DECL(int i, int j, int k), int n,
+
177  amrex::Array4<amrex::Real const> const& q,
+
178  amrex::Array4<amrex::Real const> const& umac,
+
179  AMREX_D_DECL(amrex::Array4<amrex::Real const> const& fcx,
+
180  amrex::Array4<amrex::Real const> const& fcy,
+
181  amrex::Array4<amrex::Real const> const& fcz),
+
182  amrex::Array4<amrex::Real const> const& ccc,
+
183  amrex::Array4<amrex::Real const> const& vfrac,
+
184  amrex::Array4<amrex::EBCellFlag const> const& flag,
+
185  amrex::BCRec const* const d_bcrec,
+
186  amrex::Box const& domain,
+
187  int order, const bool is_velocity) noexcept
+
188 {
+
189 #if (AMREX_SPACEDIM==2)
+
190  const int k = 0;
+
191 #endif
+
192 
+
193  const int domain_ilo = domain.smallEnd(0);
+
194  const int domain_ihi = domain.bigEnd(0);
+
195 
+
196  // local (y,z) of centroid of x-face we are extrapolating to
+
197  amrex::Real yf = fcx(i,j,k,0);
+
198 #if (AMREX_SPACEDIM==3)
+
199  amrex::Real zf = fcx(i,j,k,1);
+
200 #endif
+
201 
+
202  AMREX_D_TERM(amrex::Real xc = ccc(i,j,k,0);, // centroid of cell (i,j,k)
+
203  amrex::Real yc = ccc(i,j,k,1);,
+
204  amrex::Real zc = ccc(i,j,k,2););
+
205 
+
206  AMREX_D_TERM(amrex::Real delta_x = amrex::Real(0.5) + xc;,
+
207  amrex::Real delta_y = yf - yc;,
+
208  amrex::Real delta_z = zf - zc;);
+
209 
+
210  amrex::Real cc_qmax = amrex::max(q(i,j,k,n),q(i-1,j,k,n));
+
211  amrex::Real cc_qmin = amrex::min(q(i,j,k,n),q(i-1,j,k,n));
+
212 
+
213  // Compute slopes of component "n" of q
+
214  const auto& slopes_eb_hi = amrex_lim_slopes_eb(i, j, k, n, q, ccc, vfrac,
+
215  AMREX_D_DECL(fcx,fcy,fcz),
+
216  flag, order);
+
217 
+
218 #if (AMREX_SPACEDIM==3)
+
219  amrex::Real qpls = q(i ,j,k,n) - delta_x * slopes_eb_hi[0]
+
220  + delta_y * slopes_eb_hi[1]
+
221  + delta_z * slopes_eb_hi[2];
+
222 #else
+
223  amrex::Real qpls = q(i ,j,k,n) - delta_x * slopes_eb_hi[0]
+
224  + delta_y * slopes_eb_hi[1];
+
225 #endif
+
226 
+
227  qpls = amrex::max(amrex::min(qpls, cc_qmax), cc_qmin);
+
228 
+
229  AMREX_D_TERM(xc = ccc(i-1,j,k,0);, // centroid of cell (i-1,j,k)
+
230  yc = ccc(i-1,j,k,1);,
+
231  zc = ccc(i-1,j,k,2););
+
232 
+
233  AMREX_D_TERM(delta_x = amrex::Real(0.5) - xc;,
+
234  delta_y = yf - yc;,
+
235  delta_z = zf - zc;);
+
236 
+
237  // Compute slopes of component "n" of q
+
238  const auto& slopes_eb_lo = amrex_lim_slopes_eb(i-1, j, k, n, q, ccc, vfrac,
+
239  AMREX_D_DECL(fcx,fcy,fcz),
+
240  flag, order);
+
241 
+
242 #if (AMREX_SPACEDIM==3)
+
243  amrex::Real qmns = q(i-1,j,k,n) + delta_x * slopes_eb_lo[0]
+
244  + delta_y * slopes_eb_lo[1]
+
245  + delta_z * slopes_eb_lo[2];
+
246 #else
+
247  amrex::Real qmns = q(i-1,j,k,n) + delta_x * slopes_eb_lo[0]
+
248  + delta_y * slopes_eb_lo[1];
+
249 #endif
+
250 
+
251  qmns = amrex::max(amrex::min(qmns, cc_qmax), cc_qmin);
+
252 
+
253  HydroBC::SetXEdgeBCs(i, j, k, 0, q, qmns, qpls, umac(i,j,k), umac(i,j,k),
+
254  d_bcrec[n].lo(0), domain_ilo, d_bcrec[n].hi(0), domain_ihi, is_velocity);
+
255 
+
256  if ( (i==domain_ilo) && (d_bcrec[n].lo(0) == amrex::BCType::foextrap || d_bcrec[n].lo(0) == amrex::BCType::hoextrap) )
+
257  {
+
258  if ( umac(i,j,k) >= 0. && n==XVEL && is_velocity ) qpls = amrex::min(qpls,amrex::Real(0.0));
+
259  qmns = qpls;
+
260  }
+
261  if ( (i==domain_ihi+1) && (d_bcrec[n].hi(0) == amrex::BCType::foextrap || d_bcrec[n].hi(0) == amrex::BCType::hoextrap) )
+
262  {
+
263  if ( umac(i,j,k) <= 0. && n==XVEL && is_velocity ) qmns = amrex::max(qmns,amrex::Real(0.0));
+
264  qpls = qmns;
+
265  }
266 
-
267  if (umac(i,j,k) > small_vel)
-
268  {
-
269  qs = qmns;
-
270  }
-
271  else if (umac(i,j,k) < - small_vel)
-
272  {
-
273  qs = qpls;
-
274  }
-
275  else
-
276  {
-
277  qs = amrex::Real(0.5)*(qmns+qpls);
-
278  }
-
279 
-
280  return qs;
-
281 }
-
282 
-
283 AMREX_GPU_DEVICE AMREX_FORCE_INLINE
-
284 amrex::Real hydro_ebmol_yedge_state_extdir ( AMREX_D_DECL(int i, int j, int k), int n,
-
285  amrex::Array4<amrex::Real const> const& q,
-
286  amrex::Array4<amrex::Real const> const& vmac,
-
287  AMREX_D_DECL(amrex::Array4<amrex::Real const> const& fcx,
-
288  amrex::Array4<amrex::Real const> const& fcy,
-
289  amrex::Array4<amrex::Real const> const& fcz),
-
290  amrex::Array4<amrex::Real const> const& ccc,
-
291  amrex::Array4<amrex::Real const> const& vfrac,
-
292  amrex::Array4<amrex::EBCellFlag const> const& flag,
-
293  amrex::BCRec const* const d_bcrec,
-
294  amrex::Box const& domain,
-
295  int order, const bool is_velocity) noexcept
-
296 {
-
297 
-
298 #if (AMREX_SPACEDIM==2)
-
299  const int k = 0;
-
300 #endif
-
301 
-
302  amrex::Real qs;
-
303  int domlo = domain.smallEnd(1);
-
304  int domhi = domain.bigEnd(1);
-
305  bool extlo = d_bcrec[n].lo(1) == amrex::BCType::ext_dir;
-
306  bool exthi = d_bcrec[n].hi(1) == amrex::BCType::ext_dir;
-
307 
-
308  if ( extlo && j <= domlo)
-
309  {
-
310  qs = q(i,domlo-1,k,n);
-
311  }
-
312  else if (exthi && j >= domhi+1)
-
313  {
-
314  qs = q(i,domhi+1,k,n);
-
315  }
-
316  else
-
317  {
-
318  const int domain_ilo = domain.smallEnd(0);
-
319  const int domain_ihi = domain.bigEnd(0);
-
320  const int domain_jlo = domain.smallEnd(1);
-
321  const int domain_jhi = domain.bigEnd(1);
-
322 #if (AMREX_SPACEDIM == 3)
-
323  const int domain_klo = domain.smallEnd(2);
-
324  const int domain_khi = domain.bigEnd(2);
-
325 #endif
-
326 
-
327  AMREX_D_TERM(bool extdir_or_ho_ilo = (d_bcrec[n].lo(0) == amrex::BCType::ext_dir) ||
-
328  (d_bcrec[n].lo(0) == amrex::BCType::hoextrap);,
-
329  bool extdir_or_ho_jlo = (d_bcrec[n].lo(1) == amrex::BCType::ext_dir) ||
-
330  (d_bcrec[n].lo(1) == amrex::BCType::hoextrap);,
-
331  bool extdir_or_ho_klo = (d_bcrec[n].lo(2) == amrex::BCType::ext_dir) ||
-
332  (d_bcrec[n].lo(2) == amrex::BCType::hoextrap););
-
333 
-
334  AMREX_D_TERM(bool extdir_or_ho_ihi = (d_bcrec[n].hi(0) == amrex::BCType::ext_dir) ||
-
335  (d_bcrec[n].hi(0) == amrex::BCType::hoextrap);,
-
336  bool extdir_or_ho_jhi = (d_bcrec[n].hi(1) == amrex::BCType::ext_dir) ||
-
337  (d_bcrec[n].hi(1) == amrex::BCType::hoextrap);,
-
338  bool extdir_or_ho_khi = (d_bcrec[n].hi(2) == amrex::BCType::ext_dir) ||
-
339  (d_bcrec[n].hi(2) == amrex::BCType::hoextrap););
-
340 
-
341  amrex::Real xf = fcy(i,j,k,0); // local (x,z) of centroid of z-face we are extrapolating to
-
342 #if (AMREX_SPACEDIM==3)
-
343  amrex::Real zf = fcy(i,j,k,1);
-
344 #endif
-
345 
-
346  AMREX_D_TERM(amrex::Real xc = ccc(i,j,k,0);, // centroid of cell (i,j,k)
-
347  amrex::Real yc = ccc(i,j,k,1);,
-
348  amrex::Real zc = ccc(i,j,k,2););
-
349 
-
350  AMREX_D_TERM(amrex::Real delta_x = xf - xc;,
-
351  amrex::Real delta_y = amrex::Real(0.5) + yc;,
-
352  amrex::Real delta_z = zf - zc;);
-
353 
-
354  amrex::Real cc_qmax = amrex::max(q(i,j,k,n),q(i,j-1,k,n));
-
355  amrex::Real cc_qmin = amrex::min(q(i,j,k,n),q(i,j-1,k,n));
-
356 
-
357  // Compute slopes of component "n" of q
-
358  const auto& slopes_eb_hi =
-
359  amrex_lim_slopes_extdir_eb(i, j, k, n, q, ccc, vfrac,
-
360  AMREX_D_DECL(fcx,fcy,fcz), flag,
-
361  AMREX_D_DECL(extdir_or_ho_ilo, extdir_or_ho_jlo, extdir_or_ho_klo),
-
362  AMREX_D_DECL(extdir_or_ho_ihi, extdir_or_ho_jhi, extdir_or_ho_khi),
-
363  AMREX_D_DECL(domain_ilo, domain_jlo, domain_klo),
-
364  AMREX_D_DECL(domain_ihi, domain_jhi, domain_khi),
-
365  order);
-
366 
-
367 #if (AMREX_SPACEDIM==3)
-
368  amrex::Real qpls = q(i ,j,k,n) + delta_x * slopes_eb_hi[0]
-
369  - delta_y * slopes_eb_hi[1]
-
370  + delta_z * slopes_eb_hi[2];
-
371 #else
-
372  amrex::Real qpls = q(i ,j,k,n) + delta_x * slopes_eb_hi[0]
-
373  - delta_y * slopes_eb_hi[1];
-
374 #endif
-
375 
-
376  qpls = amrex::max(amrex::min(qpls, cc_qmax), cc_qmin);
+
267  amrex::Real qs;
+
268 
+
269  if (umac(i,j,k) > small_vel)
+
270  {
+
271  qs = qmns;
+
272  }
+
273  else if (umac(i,j,k) < - small_vel)
+
274  {
+
275  qs = qpls;
+
276  }
+
277  else
+
278  {
+
279  qs = amrex::Real(0.5)*(qmns+qpls);
+
280  }
+
281 
+
282  return qs;
+
283 }
+
284 
+
285 AMREX_GPU_DEVICE AMREX_FORCE_INLINE
+
286 amrex::Real hydro_ebmol_yedge_state_extdir ( AMREX_D_DECL(int i, int j, int k), int n,
+
287  amrex::Array4<amrex::Real const> const& q,
+
288  amrex::Array4<amrex::Real const> const& vmac,
+
289  AMREX_D_DECL(amrex::Array4<amrex::Real const> const& fcx,
+
290  amrex::Array4<amrex::Real const> const& fcy,
+
291  amrex::Array4<amrex::Real const> const& fcz),
+
292  amrex::Array4<amrex::Real const> const& ccc,
+
293  amrex::Array4<amrex::Real const> const& vfrac,
+
294  amrex::Array4<amrex::EBCellFlag const> const& flag,
+
295  amrex::BCRec const* const d_bcrec,
+
296  amrex::Box const& domain,
+
297  int order, const bool is_velocity) noexcept
+
298 {
+
299 
+
300 #if (AMREX_SPACEDIM==2)
+
301  const int k = 0;
+
302 #endif
+
303 
+
304  amrex::Real qs;
+
305  int domlo = domain.smallEnd(1);
+
306  int domhi = domain.bigEnd(1);
+
307  bool extlo = d_bcrec[n].lo(1) == amrex::BCType::ext_dir;
+
308  bool exthi = d_bcrec[n].hi(1) == amrex::BCType::ext_dir;
+
309 
+
310  if ( extlo && j <= domlo)
+
311  {
+
312  qs = q(i,domlo-1,k,n);
+
313  }
+
314  else if (exthi && j >= domhi+1)
+
315  {
+
316  qs = q(i,domhi+1,k,n);
+
317  }
+
318  else
+
319  {
+
320  const int domain_ilo = domain.smallEnd(0);
+
321  const int domain_ihi = domain.bigEnd(0);
+
322  const int domain_jlo = domain.smallEnd(1);
+
323  const int domain_jhi = domain.bigEnd(1);
+
324 #if (AMREX_SPACEDIM == 3)
+
325  const int domain_klo = domain.smallEnd(2);
+
326  const int domain_khi = domain.bigEnd(2);
+
327 #endif
+
328 
+
329  AMREX_D_TERM(bool extdir_or_ho_ilo = (d_bcrec[n].lo(0) == amrex::BCType::ext_dir) ||
+
330  (d_bcrec[n].lo(0) == amrex::BCType::hoextrap);,
+
331  bool extdir_or_ho_jlo = (d_bcrec[n].lo(1) == amrex::BCType::ext_dir) ||
+
332  (d_bcrec[n].lo(1) == amrex::BCType::hoextrap);,
+
333  bool extdir_or_ho_klo = (d_bcrec[n].lo(2) == amrex::BCType::ext_dir) ||
+
334  (d_bcrec[n].lo(2) == amrex::BCType::hoextrap););
+
335 
+
336  AMREX_D_TERM(bool extdir_or_ho_ihi = (d_bcrec[n].hi(0) == amrex::BCType::ext_dir) ||
+
337  (d_bcrec[n].hi(0) == amrex::BCType::hoextrap);,
+
338  bool extdir_or_ho_jhi = (d_bcrec[n].hi(1) == amrex::BCType::ext_dir) ||
+
339  (d_bcrec[n].hi(1) == amrex::BCType::hoextrap);,
+
340  bool extdir_or_ho_khi = (d_bcrec[n].hi(2) == amrex::BCType::ext_dir) ||
+
341  (d_bcrec[n].hi(2) == amrex::BCType::hoextrap););
+
342 
+
343  amrex::Real xf = fcy(i,j,k,0); // local (x,z) of centroid of z-face we are extrapolating to
+
344 #if (AMREX_SPACEDIM==3)
+
345  amrex::Real zf = fcy(i,j,k,1);
+
346 #endif
+
347 
+
348  AMREX_D_TERM(amrex::Real xc = ccc(i,j,k,0);, // centroid of cell (i,j,k)
+
349  amrex::Real yc = ccc(i,j,k,1);,
+
350  amrex::Real zc = ccc(i,j,k,2););
+
351 
+
352  AMREX_D_TERM(amrex::Real delta_x = xf - xc;,
+
353  amrex::Real delta_y = amrex::Real(0.5) + yc;,
+
354  amrex::Real delta_z = zf - zc;);
+
355 
+
356  amrex::Real cc_qmax = amrex::max(q(i,j,k,n),q(i,j-1,k,n));
+
357  amrex::Real cc_qmin = amrex::min(q(i,j,k,n),q(i,j-1,k,n));
+
358 
+
359  // Compute slopes of component "n" of q
+
360  const auto& slopes_eb_hi =
+
361  amrex_lim_slopes_extdir_eb(i, j, k, n, q, ccc, vfrac,
+
362  AMREX_D_DECL(fcx,fcy,fcz), flag,
+
363  AMREX_D_DECL(extdir_or_ho_ilo, extdir_or_ho_jlo, extdir_or_ho_klo),
+
364  AMREX_D_DECL(extdir_or_ho_ihi, extdir_or_ho_jhi, extdir_or_ho_khi),
+
365  AMREX_D_DECL(domain_ilo, domain_jlo, domain_klo),
+
366  AMREX_D_DECL(domain_ihi, domain_jhi, domain_khi),
+
367  order);
+
368 
+
369 #if (AMREX_SPACEDIM==3)
+
370  amrex::Real qpls = q(i ,j,k,n) + delta_x * slopes_eb_hi[0]
+
371  - delta_y * slopes_eb_hi[1]
+
372  + delta_z * slopes_eb_hi[2];
+
373 #else
+
374  amrex::Real qpls = q(i ,j,k,n) + delta_x * slopes_eb_hi[0]
+
375  - delta_y * slopes_eb_hi[1];
+
376 #endif
377 
-
378  AMREX_D_TERM(xc = ccc(i,j-1,k,0);, // centroid of cell (i,j-1,k)
-
379  yc = ccc(i,j-1,k,1);,
-
380  zc = ccc(i,j-1,k,2););
-
381 
-
382  AMREX_D_TERM(delta_x = xf - xc;,
-
383  delta_y = amrex::Real(0.5) - yc;,
-
384  delta_z = zf - zc;);
-
385 
-
386  // Compute slopes of component "n" of q
-
387  const auto& slopes_eb_lo =
-
388  amrex_lim_slopes_extdir_eb(i, j-1, k, n, q, ccc, vfrac,
-
389  AMREX_D_DECL(fcx,fcy,fcz), flag,
-
390  AMREX_D_DECL(extdir_or_ho_ilo, extdir_or_ho_jlo, extdir_or_ho_klo),
-
391  AMREX_D_DECL(extdir_or_ho_ihi, extdir_or_ho_jhi, extdir_or_ho_khi),
-
392  AMREX_D_DECL(domain_ilo, domain_jlo, domain_klo),
-
393  AMREX_D_DECL(domain_ihi, domain_jhi, domain_khi),
-
394  order);
-
395 
-
396 
-
397 #if (AMREX_SPACEDIM==3)
-
398  amrex::Real qmns = q(i,j-1,k,n) + delta_x * slopes_eb_lo[0]
-
399  + delta_y * slopes_eb_lo[1]
-
400  + delta_z * slopes_eb_lo[2];
-
401 #else
-
402  amrex::Real qmns = q(i,j-1,k,n) + delta_x * slopes_eb_lo[0]
-
403  + delta_y * slopes_eb_lo[1];
-
404 #endif
-
405 
-
406  HydroBC::SetYEdgeBCs(i, j, k, n, q, qmns, qpls, d_bcrec[n].lo(1), domain_jlo, d_bcrec[n].hi(1), domain_jhi, is_velocity);
+
378  qpls = amrex::max(amrex::min(qpls, cc_qmax), cc_qmin);
+
379 
+
380  AMREX_D_TERM(xc = ccc(i,j-1,k,0);, // centroid of cell (i,j-1,k)
+
381  yc = ccc(i,j-1,k,1);,
+
382  zc = ccc(i,j-1,k,2););
+
383 
+
384  AMREX_D_TERM(delta_x = xf - xc;,
+
385  delta_y = amrex::Real(0.5) - yc;,
+
386  delta_z = zf - zc;);
+
387 
+
388  // Compute slopes of component "n" of q
+
389  const auto& slopes_eb_lo =
+
390  amrex_lim_slopes_extdir_eb(i, j-1, k, n, q, ccc, vfrac,
+
391  AMREX_D_DECL(fcx,fcy,fcz), flag,
+
392  AMREX_D_DECL(extdir_or_ho_ilo, extdir_or_ho_jlo, extdir_or_ho_klo),
+
393  AMREX_D_DECL(extdir_or_ho_ihi, extdir_or_ho_jhi, extdir_or_ho_khi),
+
394  AMREX_D_DECL(domain_ilo, domain_jlo, domain_klo),
+
395  AMREX_D_DECL(domain_ihi, domain_jhi, domain_khi),
+
396  order);
+
397 
+
398 
+
399 #if (AMREX_SPACEDIM==3)
+
400  amrex::Real qmns = q(i,j-1,k,n) + delta_x * slopes_eb_lo[0]
+
401  + delta_y * slopes_eb_lo[1]
+
402  + delta_z * slopes_eb_lo[2];
+
403 #else
+
404  amrex::Real qmns = q(i,j-1,k,n) + delta_x * slopes_eb_lo[0]
+
405  + delta_y * slopes_eb_lo[1];
+
406 #endif
407 
-
408  if ( (j==domain_jlo) && (d_bcrec[n].lo(1) == amrex::BCType::foextrap || d_bcrec[n].lo(1) == amrex::BCType::hoextrap) )
-
409  {
-
410  if ( vmac(i,j,k) >= 0. && n==YVEL && is_velocity ) qpls = amrex::min(qpls,amrex::Real(0.0));
-
411  qmns = qpls;
-
412  }
-
413  if ( (j==domain_jhi+1) && (d_bcrec[n].hi(1) == amrex::BCType::foextrap || d_bcrec[n].hi(1) == amrex::BCType::hoextrap) )
-
414  {
-
415  if ( vmac(i,j,k) <= 0. && n==YVEL && is_velocity ) qmns = amrex::max(qmns,amrex::Real(0.0));
-
416  qpls = qmns;
-
417  }
-
418 
-
419  qmns = amrex::max(amrex::min(qmns, cc_qmax), cc_qmin);
-
420 
-
421  if (vmac(i,j,k) > small_vel)
-
422  {
-
423  qs = qmns;
-
424  }
-
425  else if (vmac(i,j,k) < - small_vel)
-
426  {
-
427  qs = qpls;
-
428  }
-
429  else
-
430  {
-
431  qs = amrex::Real(0.5)*(qmns+qpls);
-
432  }
-
433  }
-
434 
-
435  return qs;
-
436 }
+
408  HydroBC::SetYEdgeBCs(i, j, k, n, q, qmns, qpls, vmac(i,j,k), vmac(i,j,k),
+
409  d_bcrec[n].lo(1), domain_jlo, d_bcrec[n].hi(1), domain_jhi, is_velocity);
+
410 
+
411  if ( (j==domain_jlo) && (d_bcrec[n].lo(1) == amrex::BCType::foextrap || d_bcrec[n].lo(1) == amrex::BCType::hoextrap) )
+
412  {
+
413  if ( vmac(i,j,k) >= 0. && n==YVEL && is_velocity ) qpls = amrex::min(qpls,amrex::Real(0.0));
+
414  qmns = qpls;
+
415  }
+
416  if ( (j==domain_jhi+1) && (d_bcrec[n].hi(1) == amrex::BCType::foextrap || d_bcrec[n].hi(1) == amrex::BCType::hoextrap) )
+
417  {
+
418  if ( vmac(i,j,k) <= 0. && n==YVEL && is_velocity ) qmns = amrex::max(qmns,amrex::Real(0.0));
+
419  qpls = qmns;
+
420  }
+
421 
+
422  qmns = amrex::max(amrex::min(qmns, cc_qmax), cc_qmin);
+
423 
+
424  if (vmac(i,j,k) > small_vel)
+
425  {
+
426  qs = qmns;
+
427  }
+
428  else if (vmac(i,j,k) < - small_vel)
+
429  {
+
430  qs = qpls;
+
431  }
+
432  else
+
433  {
+
434  qs = amrex::Real(0.5)*(qmns+qpls);
+
435  }
+
436  }
437 
-
438 
-
439 
-
440 AMREX_GPU_DEVICE AMREX_FORCE_INLINE
-
441 amrex::Real hydro_ebmol_yedge_state ( AMREX_D_DECL(int i, int j, int k), int n,
-
442  amrex::Array4<amrex::Real const> const& q,
-
443  amrex::Array4<amrex::Real const> const& vmac,
-
444  AMREX_D_DECL(amrex::Array4<amrex::Real const> const& fcx,
-
445  amrex::Array4<amrex::Real const> const& fcy,
-
446  amrex::Array4<amrex::Real const> const& fcz),
-
447  amrex::Array4<amrex::Real const> const& ccc,
-
448  amrex::Array4<amrex::Real const> const& vfrac,
-
449  amrex::Array4<amrex::EBCellFlag const> const& flag,
-
450  amrex::BCRec const* const d_bcrec,
-
451  amrex::Box const& domain,
-
452  int order, const bool is_velocity) noexcept
-
453 {
-
454 #if (AMREX_SPACEDIM==2)
-
455  const int k = 0;
-
456 #endif
-
457 
-
458  const int domain_jlo = domain.smallEnd(1);
-
459  const int domain_jhi = domain.bigEnd(1);
+
438  return qs;
+
439 }
+
440 
+
441 
+
442 
+
443 AMREX_GPU_DEVICE AMREX_FORCE_INLINE
+
444 amrex::Real hydro_ebmol_yedge_state ( AMREX_D_DECL(int i, int j, int k), int n,
+
445  amrex::Array4<amrex::Real const> const& q,
+
446  amrex::Array4<amrex::Real const> const& vmac,
+
447  AMREX_D_DECL(amrex::Array4<amrex::Real const> const& fcx,
+
448  amrex::Array4<amrex::Real const> const& fcy,
+
449  amrex::Array4<amrex::Real const> const& fcz),
+
450  amrex::Array4<amrex::Real const> const& ccc,
+
451  amrex::Array4<amrex::Real const> const& vfrac,
+
452  amrex::Array4<amrex::EBCellFlag const> const& flag,
+
453  amrex::BCRec const* const d_bcrec,
+
454  amrex::Box const& domain,
+
455  int order, const bool is_velocity) noexcept
+
456 {
+
457 #if (AMREX_SPACEDIM==2)
+
458  const int k = 0;
+
459 #endif
460 
-
461  // local (x,z) of centroid of z-face we are extrapolating to
-
462  amrex::Real xf = fcy(i,j,k,0);
-
463 #if (AMREX_SPACEDIM==3)
-
464  amrex::Real zf = fcy(i,j,k,1);
-
465 #endif
-
466 
-
467  AMREX_D_TERM(amrex::Real xc = ccc(i,j,k,0);, // centroid of cell (i,j,k)
-
468  amrex::Real yc = ccc(i,j,k,1);,
-
469  amrex::Real zc = ccc(i,j,k,2););
-
470 
-
471  AMREX_D_TERM(amrex::Real delta_x = xf - xc;,
-
472  amrex::Real delta_y = amrex::Real(0.5) + yc;,
-
473  amrex::Real delta_z = zf - zc;);
-
474 
-
475  amrex::Real cc_qmax = amrex::max(q(i,j,k,n),q(i,j-1,k,n));
-
476  amrex::Real cc_qmin = amrex::min(q(i,j,k,n),q(i,j-1,k,n));
+
461  const int domain_jlo = domain.smallEnd(1);
+
462  const int domain_jhi = domain.bigEnd(1);
+
463 
+
464  // local (x,z) of centroid of z-face we are extrapolating to
+
465  amrex::Real xf = fcy(i,j,k,0);
+
466 #if (AMREX_SPACEDIM==3)
+
467  amrex::Real zf = fcy(i,j,k,1);
+
468 #endif
+
469 
+
470  AMREX_D_TERM(amrex::Real xc = ccc(i,j,k,0);, // centroid of cell (i,j,k)
+
471  amrex::Real yc = ccc(i,j,k,1);,
+
472  amrex::Real zc = ccc(i,j,k,2););
+
473 
+
474  AMREX_D_TERM(amrex::Real delta_x = xf - xc;,
+
475  amrex::Real delta_y = amrex::Real(0.5) + yc;,
+
476  amrex::Real delta_z = zf - zc;);
477 
-
478  // Compute slopes of component "n" of q
-
479  const auto& slopes_eb_hi = amrex_lim_slopes_eb(i, j, k, n, q, ccc, vfrac,
-
480  AMREX_D_DECL(fcx,fcy,fcz),
-
481  flag, order);
-
482 
-
483 #if (AMREX_SPACEDIM==3)
-
484  amrex::Real qpls = q(i ,j,k,n) + delta_x * slopes_eb_hi[0]
-
485  - delta_y * slopes_eb_hi[1]
-
486  + delta_z * slopes_eb_hi[2];
-
487 #else
-
488  amrex::Real qpls = q(i ,j,k,n) + delta_x * slopes_eb_hi[0]
-
489  - delta_y * slopes_eb_hi[1];
-
490 #endif
-
491 
-
492  qpls = amrex::max(amrex::min(qpls, cc_qmax), cc_qmin);
-
493 
-
494  AMREX_D_TERM(xc = ccc(i,j-1,k,0);, // centroid of cell (i,j-1,k)
-
495  yc = ccc(i,j-1,k,1);,
-
496  zc = ccc(i,j-1,k,2););
-
497 
-
498  AMREX_D_TERM(delta_x = xf - xc;,
-
499  delta_y = amrex::Real(0.5) - yc;,
-
500  delta_z = zf - zc;);
-
501 
-
502  // Compute slopes of component "n" of q
-
503  const auto& slopes_eb_lo = amrex_lim_slopes_eb(i, j-1, k, n, q, ccc, vfrac,
-
504  AMREX_D_DECL(fcx,fcy,fcz),
-
505  flag, order);
-
506 
-
507 #if (AMREX_SPACEDIM==3)
-
508  amrex::Real qmns = q(i,j-1,k,n) + delta_x * slopes_eb_lo[0]
-
509  + delta_y * slopes_eb_lo[1]
-
510  + delta_z * slopes_eb_lo[2];
-
511 #else
-
512  amrex::Real qmns = q(i,j-1,k,n) + delta_x * slopes_eb_lo[0]
-
513  + delta_y * slopes_eb_lo[1];
-
514 #endif
-
515 
-
516  qmns = amrex::max(amrex::min(qmns, cc_qmax), cc_qmin);
-
517 
-
518  HydroBC::SetYEdgeBCs(i, j, k, n, q, qmns, qpls, d_bcrec[n].lo(1), domain_jlo, d_bcrec[n].hi(1), domain_jhi, is_velocity);
-
519 
-
520  if ( (j==domain_jlo) && (d_bcrec[n].lo(1) == amrex::BCType::foextrap || d_bcrec[n].lo(1) == amrex::BCType::hoextrap) )
-
521  {
-
522  if ( vmac(i,j,k) >= 0. && n==YVEL && is_velocity ) qpls = amrex::min(qpls,amrex::Real(0.0));
-
523  qmns = qpls;
-
524  }
-
525  if ( (j==domain_jhi+1) && (d_bcrec[n].hi(1) == amrex::BCType::foextrap || d_bcrec[n].hi(1) == amrex::BCType::hoextrap) )
-
526  {
-
527  if ( vmac(i,j,k) <= 0. && n==YVEL && is_velocity ) qmns = amrex::max(qmns,amrex::Real(0.0));
-
528  qpls = qmns;
-
529  }
-
530 
-
531  amrex::Real qs;
-
532 
-
533  if (vmac(i,j,k) > small_vel)
-
534  {
-
535  qs = qmns;
-
536  }
-
537  else if (vmac(i,j,k) < - small_vel)
+
478  amrex::Real cc_qmax = amrex::max(q(i,j,k,n),q(i,j-1,k,n));
+
479  amrex::Real cc_qmin = amrex::min(q(i,j,k,n),q(i,j-1,k,n));
+
480 
+
481  // Compute slopes of component "n" of q
+
482  const auto& slopes_eb_hi = amrex_lim_slopes_eb(i, j, k, n, q, ccc, vfrac,
+
483  AMREX_D_DECL(fcx,fcy,fcz),
+
484  flag, order);
+
485 
+
486 #if (AMREX_SPACEDIM==3)
+
487  amrex::Real qpls = q(i ,j,k,n) + delta_x * slopes_eb_hi[0]
+
488  - delta_y * slopes_eb_hi[1]
+
489  + delta_z * slopes_eb_hi[2];
+
490 #else
+
491  amrex::Real qpls = q(i ,j,k,n) + delta_x * slopes_eb_hi[0]
+
492  - delta_y * slopes_eb_hi[1];
+
493 #endif
+
494 
+
495  qpls = amrex::max(amrex::min(qpls, cc_qmax), cc_qmin);
+
496 
+
497  AMREX_D_TERM(xc = ccc(i,j-1,k,0);, // centroid of cell (i,j-1,k)
+
498  yc = ccc(i,j-1,k,1);,
+
499  zc = ccc(i,j-1,k,2););
+
500 
+
501  AMREX_D_TERM(delta_x = xf - xc;,
+
502  delta_y = amrex::Real(0.5) - yc;,
+
503  delta_z = zf - zc;);
+
504 
+
505  // Compute slopes of component "n" of q
+
506  const auto& slopes_eb_lo = amrex_lim_slopes_eb(i, j-1, k, n, q, ccc, vfrac,
+
507  AMREX_D_DECL(fcx,fcy,fcz),
+
508  flag, order);
+
509 
+
510 #if (AMREX_SPACEDIM==3)
+
511  amrex::Real qmns = q(i,j-1,k,n) + delta_x * slopes_eb_lo[0]
+
512  + delta_y * slopes_eb_lo[1]
+
513  + delta_z * slopes_eb_lo[2];
+
514 #else
+
515  amrex::Real qmns = q(i,j-1,k,n) + delta_x * slopes_eb_lo[0]
+
516  + delta_y * slopes_eb_lo[1];
+
517 #endif
+
518 
+
519  qmns = amrex::max(amrex::min(qmns, cc_qmax), cc_qmin);
+
520 
+
521  HydroBC::SetYEdgeBCs(i, j, k, n, q, qmns, qpls, vmac(i,j,k), vmac(i,j,k),
+
522  d_bcrec[n].lo(1), domain_jlo, d_bcrec[n].hi(1), domain_jhi, is_velocity);
+
523 
+
524  if ( (j==domain_jlo) && (d_bcrec[n].lo(1) == amrex::BCType::foextrap || d_bcrec[n].lo(1) == amrex::BCType::hoextrap) )
+
525  {
+
526  if ( vmac(i,j,k) >= 0. && n==YVEL && is_velocity ) qpls = amrex::min(qpls,amrex::Real(0.0));
+
527  qmns = qpls;
+
528  }
+
529  if ( (j==domain_jhi+1) && (d_bcrec[n].hi(1) == amrex::BCType::foextrap || d_bcrec[n].hi(1) == amrex::BCType::hoextrap) )
+
530  {
+
531  if ( vmac(i,j,k) <= 0. && n==YVEL && is_velocity ) qmns = amrex::max(qmns,amrex::Real(0.0));
+
532  qpls = qmns;
+
533  }
+
534 
+
535  amrex::Real qs;
+
536 
+
537  if (vmac(i,j,k) > small_vel)
538  {
-
539  qs = qpls;
+
539  qs = qmns;
540  }
-
541  else
+
541  else if (vmac(i,j,k) < - small_vel)
542  {
-
543  qs = amrex::Real(0.5)*(qmns+qpls);
+
543  qs = qpls;
544  }
-
545 
-
546  return qs;
-
547 }
-
548 
+
545  else
+
546  {
+
547  qs = amrex::Real(0.5)*(qmns+qpls);
+
548  }
549 
-
550 
-
551 
-
552 #if (AMREX_SPACEDIM==3)
+
550  return qs;
+
551 }
+
552 
553 
-
554 AMREX_GPU_DEVICE AMREX_FORCE_INLINE
-
555 amrex::Real hydro_ebmol_zedge_state_extdir ( int i, int j, int k, int n,
-
556  amrex::Array4<amrex::Real const> const& q,
-
557  amrex::Array4<amrex::Real const> const& wmac,
-
558  AMREX_D_DECL(amrex::Array4<amrex::Real const> const& fcx,
-
559  amrex::Array4<amrex::Real const> const& fcy,
-
560  amrex::Array4<amrex::Real const> const& fcz),
-
561  amrex::Array4<amrex::Real const> const& ccc,
-
562  amrex::Array4<amrex::Real const> const& vfrac,
-
563  amrex::Array4<amrex::EBCellFlag const> const& flag,
-
564  amrex::BCRec const* const d_bcrec,
-
565  amrex::Box const& domain,
-
566  int order, const bool is_velocity) noexcept
-
567 {
-
568  amrex::Real qs;
-
569  int domlo = domain.smallEnd(2);
-
570  int domhi = domain.bigEnd(2);
-
571  bool extlo = d_bcrec[n].lo(2) == amrex::BCType::ext_dir;
-
572  bool exthi = d_bcrec[n].hi(2) == amrex::BCType::ext_dir;
-
573 
-
574  if ( extlo && k <= domlo)
-
575  {
-
576  qs = q(i,j,domlo-1,n);
-
577  }
-
578  else if ( exthi && k >= domhi+1)
+
554 
+
555 
+
556 #if (AMREX_SPACEDIM==3)
+
557 
+
558 AMREX_GPU_DEVICE AMREX_FORCE_INLINE
+
559 amrex::Real hydro_ebmol_zedge_state_extdir ( int i, int j, int k, int n,
+
560  amrex::Array4<amrex::Real const> const& q,
+
561  amrex::Array4<amrex::Real const> const& wmac,
+
562  AMREX_D_DECL(amrex::Array4<amrex::Real const> const& fcx,
+
563  amrex::Array4<amrex::Real const> const& fcy,
+
564  amrex::Array4<amrex::Real const> const& fcz),
+
565  amrex::Array4<amrex::Real const> const& ccc,
+
566  amrex::Array4<amrex::Real const> const& vfrac,
+
567  amrex::Array4<amrex::EBCellFlag const> const& flag,
+
568  amrex::BCRec const* const d_bcrec,
+
569  amrex::Box const& domain,
+
570  int order, const bool is_velocity) noexcept
+
571 {
+
572  amrex::Real qs;
+
573  int domlo = domain.smallEnd(2);
+
574  int domhi = domain.bigEnd(2);
+
575  bool extlo = d_bcrec[n].lo(2) == amrex::BCType::ext_dir;
+
576  bool exthi = d_bcrec[n].hi(2) == amrex::BCType::ext_dir;
+
577 
+
578  if ( extlo && k <= domlo)
579  {
-
580  qs = q(i,j,domhi+1,n);
+
580  qs = q(i,j,domlo-1,n);
581  }
-
582  else
+
582  else if ( exthi && k >= domhi+1)
583  {
-
584  const int domain_ilo = domain.smallEnd(0);
-
585  const int domain_ihi = domain.bigEnd(0);
-
586  const int domain_jlo = domain.smallEnd(1);
-
587  const int domain_jhi = domain.bigEnd(1);
-
588 #if (AMREX_SPACEDIM == 3)
-
589  const int domain_klo = domain.smallEnd(2);
-
590  const int domain_khi = domain.bigEnd(2);
-
591 #endif
-
592 
-
593  AMREX_D_TERM(bool extdir_or_ho_ilo = (d_bcrec[n].lo(0) == amrex::BCType::ext_dir) ||
-
594  (d_bcrec[n].lo(0) == amrex::BCType::hoextrap);,
-
595  bool extdir_or_ho_jlo = (d_bcrec[n].lo(1) == amrex::BCType::ext_dir) ||
-
596  (d_bcrec[n].lo(1) == amrex::BCType::hoextrap);,
-
597  bool extdir_or_ho_klo = (d_bcrec[n].lo(2) == amrex::BCType::ext_dir) ||
-
598  (d_bcrec[n].lo(2) == amrex::BCType::hoextrap););
-
599 
-
600  AMREX_D_TERM(bool extdir_or_ho_ihi = (d_bcrec[n].hi(0) == amrex::BCType::ext_dir) ||
-
601  (d_bcrec[n].hi(0) == amrex::BCType::hoextrap);,
-
602  bool extdir_or_ho_jhi = (d_bcrec[n].hi(1) == amrex::BCType::ext_dir) ||
-
603  (d_bcrec[n].hi(1) == amrex::BCType::hoextrap);,
-
604  bool extdir_or_ho_khi = (d_bcrec[n].hi(2) == amrex::BCType::ext_dir) ||
-
605  (d_bcrec[n].hi(2) == amrex::BCType::hoextrap););
-
606 
-
607  amrex::Real xf = fcz(i,j,k,0); // local (x,y) of centroid of z-face we are extrapolating to
-
608  amrex::Real yf = fcz(i,j,k,1);
-
609 
-
610  amrex::Real xc = ccc(i,j,k,0); // centroid of cell (i,j,k)
-
611  amrex::Real yc = ccc(i,j,k,1);
-
612  amrex::Real zc = ccc(i,j,k,2);
+
584  qs = q(i,j,domhi+1,n);
+
585  }
+
586  else
+
587  {
+
588  const int domain_ilo = domain.smallEnd(0);
+
589  const int domain_ihi = domain.bigEnd(0);
+
590  const int domain_jlo = domain.smallEnd(1);
+
591  const int domain_jhi = domain.bigEnd(1);
+
592 #if (AMREX_SPACEDIM == 3)
+
593  const int domain_klo = domain.smallEnd(2);
+
594  const int domain_khi = domain.bigEnd(2);
+
595 #endif
+
596 
+
597  AMREX_D_TERM(bool extdir_or_ho_ilo = (d_bcrec[n].lo(0) == amrex::BCType::ext_dir) ||
+
598  (d_bcrec[n].lo(0) == amrex::BCType::hoextrap);,
+
599  bool extdir_or_ho_jlo = (d_bcrec[n].lo(1) == amrex::BCType::ext_dir) ||
+
600  (d_bcrec[n].lo(1) == amrex::BCType::hoextrap);,
+
601  bool extdir_or_ho_klo = (d_bcrec[n].lo(2) == amrex::BCType::ext_dir) ||
+
602  (d_bcrec[n].lo(2) == amrex::BCType::hoextrap););
+
603 
+
604  AMREX_D_TERM(bool extdir_or_ho_ihi = (d_bcrec[n].hi(0) == amrex::BCType::ext_dir) ||
+
605  (d_bcrec[n].hi(0) == amrex::BCType::hoextrap);,
+
606  bool extdir_or_ho_jhi = (d_bcrec[n].hi(1) == amrex::BCType::ext_dir) ||
+
607  (d_bcrec[n].hi(1) == amrex::BCType::hoextrap);,
+
608  bool extdir_or_ho_khi = (d_bcrec[n].hi(2) == amrex::BCType::ext_dir) ||
+
609  (d_bcrec[n].hi(2) == amrex::BCType::hoextrap););
+
610 
+
611  amrex::Real xf = fcz(i,j,k,0); // local (x,y) of centroid of z-face we are extrapolating to
+
612  amrex::Real yf = fcz(i,j,k,1);
613 
-
614  amrex::Real delta_x = xf - xc;
-
615  amrex::Real delta_y = yf - yc;
-
616  amrex::Real delta_z = amrex::Real(0.5) + zc;
+
614  amrex::Real xc = ccc(i,j,k,0); // centroid of cell (i,j,k)
+
615  amrex::Real yc = ccc(i,j,k,1);
+
616  amrex::Real zc = ccc(i,j,k,2);
617 
-
618  amrex::Real cc_qmax = amrex::max(q(i,j,k,n),q(i,j,k-1,n));
-
619  amrex::Real cc_qmin = amrex::min(q(i,j,k,n),q(i,j,k-1,n));
-
620 
-
621  // Compute slopes of component "n" of q
-
622  const auto& slopes_eb_hi =
-
623  amrex_lim_slopes_extdir_eb(i, j, k, n, q, ccc, vfrac,
-
624  AMREX_D_DECL(fcx,fcy,fcz), flag,
-
625  AMREX_D_DECL(extdir_or_ho_ilo, extdir_or_ho_jlo, extdir_or_ho_klo),
-
626  AMREX_D_DECL(extdir_or_ho_ihi, extdir_or_ho_jhi, extdir_or_ho_khi),
-
627  AMREX_D_DECL(domain_ilo, domain_jlo, domain_klo),
-
628  AMREX_D_DECL(domain_ihi, domain_jhi, domain_khi),
-
629  order);
-
630 
-
631  amrex::Real qpls = q(i,j,k ,n) + delta_x * slopes_eb_hi[0]
-
632  + delta_y * slopes_eb_hi[1]
-
633  - delta_z * slopes_eb_hi[2];
+
618  amrex::Real delta_x = xf - xc;
+
619  amrex::Real delta_y = yf - yc;
+
620  amrex::Real delta_z = amrex::Real(0.5) + zc;
+
621 
+
622  amrex::Real cc_qmax = amrex::max(q(i,j,k,n),q(i,j,k-1,n));
+
623  amrex::Real cc_qmin = amrex::min(q(i,j,k,n),q(i,j,k-1,n));
+
624 
+
625  // Compute slopes of component "n" of q
+
626  const auto& slopes_eb_hi =
+
627  amrex_lim_slopes_extdir_eb(i, j, k, n, q, ccc, vfrac,
+
628  AMREX_D_DECL(fcx,fcy,fcz), flag,
+
629  AMREX_D_DECL(extdir_or_ho_ilo, extdir_or_ho_jlo, extdir_or_ho_klo),
+
630  AMREX_D_DECL(extdir_or_ho_ihi, extdir_or_ho_jhi, extdir_or_ho_khi),
+
631  AMREX_D_DECL(domain_ilo, domain_jlo, domain_klo),
+
632  AMREX_D_DECL(domain_ihi, domain_jhi, domain_khi),
+
633  order);
634 
-
635  qpls = amrex::max(amrex::min(qpls, cc_qmax), cc_qmin);
-
636 
-
637  xc = ccc(i,j,k-1,0); // centroid of cell (i,j,k-1)
-
638  yc = ccc(i,j,k-1,1);
-
639  zc = ccc(i,j,k-1,2);
+
635  amrex::Real qpls = q(i,j,k ,n) + delta_x * slopes_eb_hi[0]
+
636  + delta_y * slopes_eb_hi[1]
+
637  - delta_z * slopes_eb_hi[2];
+
638 
+
639  qpls = amrex::max(amrex::min(qpls, cc_qmax), cc_qmin);
640 
-
641  delta_x = xf - xc;
-
642  delta_y = yf - yc;
-
643  delta_z = amrex::Real(0.5) - zc;
+
641  xc = ccc(i,j,k-1,0); // centroid of cell (i,j,k-1)
+
642  yc = ccc(i,j,k-1,1);
+
643  zc = ccc(i,j,k-1,2);
644 
-
645  // Compute slopes of component "n" of q
-
646  const auto& slopes_eb_lo =
-
647  amrex_lim_slopes_extdir_eb(i, j, k-1, n, q, ccc, vfrac,
-
648  AMREX_D_DECL(fcx,fcy,fcz), flag,
-
649  AMREX_D_DECL(extdir_or_ho_ilo, extdir_or_ho_jlo, extdir_or_ho_klo),
-
650  AMREX_D_DECL(extdir_or_ho_ihi, extdir_or_ho_jhi, extdir_or_ho_khi),
-
651  AMREX_D_DECL(domain_ilo, domain_jlo, domain_klo),
-
652  AMREX_D_DECL(domain_ihi, domain_jhi, domain_khi),
-
653  order);
-
654 
-
655  amrex::Real qmns = q(i,j,k-1,n) + delta_x * slopes_eb_lo[0]
-
656  + delta_y * slopes_eb_lo[1]
-
657  + delta_z * slopes_eb_lo[2];
+
645  delta_x = xf - xc;
+
646  delta_y = yf - yc;
+
647  delta_z = amrex::Real(0.5) - zc;
+
648 
+
649  // Compute slopes of component "n" of q
+
650  const auto& slopes_eb_lo =
+
651  amrex_lim_slopes_extdir_eb(i, j, k-1, n, q, ccc, vfrac,
+
652  AMREX_D_DECL(fcx,fcy,fcz), flag,
+
653  AMREX_D_DECL(extdir_or_ho_ilo, extdir_or_ho_jlo, extdir_or_ho_klo),
+
654  AMREX_D_DECL(extdir_or_ho_ihi, extdir_or_ho_jhi, extdir_or_ho_khi),
+
655  AMREX_D_DECL(domain_ilo, domain_jlo, domain_klo),
+
656  AMREX_D_DECL(domain_ihi, domain_jhi, domain_khi),
+
657  order);
658 
-
659  qmns = amrex::max(amrex::min(qmns, cc_qmax), cc_qmin);
-
660 
-
661  HydroBC::SetZEdgeBCs(i, j, k, n, q, qmns, qpls, d_bcrec[n].lo(2), domain_klo, d_bcrec[n].hi(2), domain_khi, is_velocity);
+
659  amrex::Real qmns = q(i,j,k-1,n) + delta_x * slopes_eb_lo[0]
+
660  + delta_y * slopes_eb_lo[1]
+
661  + delta_z * slopes_eb_lo[2];
662 
-
663  if ( (k==domain_klo) && (d_bcrec[n].lo(2) == amrex::BCType::foextrap || d_bcrec[n].lo(2) == amrex::BCType::hoextrap) )
-
664  {
-
665  if ( wmac(i,j,k) >= 0. && n==ZVEL && is_velocity ) qpls = amrex::min(qpls,amrex::Real(0.0));
-
666  qmns = qpls;
-
667  }
-
668  if ( (k==domain_khi+1) && (d_bcrec[n].hi(2) == amrex::BCType::foextrap || d_bcrec[n].hi(2) == amrex::BCType::hoextrap) )
+
663  qmns = amrex::max(amrex::min(qmns, cc_qmax), cc_qmin);
+
664 
+
665  HydroBC::SetZEdgeBCs(i, j, k, n, q, qmns, qpls, wmac(i,j,k), wmac(i,j,k),
+
666  d_bcrec[n].lo(2), domain_klo, d_bcrec[n].hi(2), domain_khi, is_velocity);
+
667 
+
668  if ( (k==domain_klo) && (d_bcrec[n].lo(2) == amrex::BCType::foextrap || d_bcrec[n].lo(2) == amrex::BCType::hoextrap) )
669  {
-
670  if ( wmac(i,j,k) <= 0. && n==ZVEL && is_velocity ) qmns = amrex::max(qmns,amrex::Real(0.0));
-
671  qpls = qmns;
+
670  if ( wmac(i,j,k) >= 0. && n==ZVEL && is_velocity ) qpls = amrex::min(qpls,amrex::Real(0.0));
+
671  qmns = qpls;
672  }
-
673 
-
674  if (wmac(i,j,k) > small_vel)
-
675  {
-
676  qs = qmns;
+
673  if ( (k==domain_khi+1) && (d_bcrec[n].hi(2) == amrex::BCType::foextrap || d_bcrec[n].hi(2) == amrex::BCType::hoextrap) )
+
674  {
+
675  if ( wmac(i,j,k) <= 0. && n==ZVEL && is_velocity ) qmns = amrex::max(qmns,amrex::Real(0.0));
+
676  qpls = qmns;
677  }
-
678  else if (wmac(i,j,k) < -small_vel)
-
679  {
-
680  qs = qpls;
-
681  }
-
682  else
-
683  {
-
684  qs = amrex::Real(0.5)*(qmns+qpls);
-
685  }
-
686  }
-
687 
-
688  return qs;
-
689 }
-
690 
-
691 
+
678 
+
679  if (wmac(i,j,k) > small_vel)
+
680  {
+
681  qs = qmns;
+
682  }
+
683  else if (wmac(i,j,k) < -small_vel)
+
684  {
+
685  qs = qpls;
+
686  }
+
687  else
+
688  {
+
689  qs = amrex::Real(0.5)*(qmns+qpls);
+
690  }
+
691  }
692 
-
693 
-
694 AMREX_GPU_DEVICE AMREX_FORCE_INLINE
-
695 amrex::Real hydro_ebmol_zedge_state ( int i, int j, int k, int n,
-
696  amrex::Array4<amrex::Real const> const& q,
-
697  amrex::Array4<amrex::Real const> const& wmac,
-
698  AMREX_D_DECL(amrex::Array4<amrex::Real const> const& fcx,
-
699  amrex::Array4<amrex::Real const> const& fcy,
-
700  amrex::Array4<amrex::Real const> const& fcz),
-
701  amrex::Array4<amrex::Real const> const& ccc,
-
702  amrex::Array4<amrex::Real const> const& vfrac,
-
703  amrex::Array4<amrex::EBCellFlag const> const& flag,
-
704  amrex::BCRec const* const d_bcrec,
-
705  amrex::Box const& domain,
-
706  int order, const bool is_velocity) noexcept
-
707 {
-
708  const int domain_klo = domain.smallEnd(2);
-
709  const int domain_khi = domain.bigEnd(2);
-
710 
-
711  amrex::Real xf = fcz(i,j,k,0); // local (x,y) of centroid of z-face we are extrapolating to
-
712  amrex::Real yf = fcz(i,j,k,1);
-
713 
-
714  amrex::Real xc = ccc(i,j,k,0); // centroid of cell (i,j,k)
-
715  amrex::Real yc = ccc(i,j,k,1);
-
716  amrex::Real zc = ccc(i,j,k,2);
-
717 
-
718  amrex::Real delta_x = xf - xc;
-
719  amrex::Real delta_y = yf - yc;
-
720  amrex::Real delta_z = amrex::Real(0.5) + zc;
-
721 
-
722  amrex::Real cc_qmax = amrex::max(q(i,j,k,n),q(i,j,k-1,n));
-
723  amrex::Real cc_qmin = amrex::min(q(i,j,k,n),q(i,j,k-1,n));
-
724 
-
725  // Compute slopes of component "n" of q
-
726  const auto& slopes_eb_hi = amrex_lim_slopes_eb(i, j, k, n, q, ccc, vfrac,
-
727  AMREX_D_DECL(fcx,fcy,fcz),
-
728  flag, order);
+
693  return qs;
+
694 }
+
695 
+
696 
+
697 
+
698 
+
699 AMREX_GPU_DEVICE AMREX_FORCE_INLINE
+
700 amrex::Real hydro_ebmol_zedge_state ( int i, int j, int k, int n,
+
701  amrex::Array4<amrex::Real const> const& q,
+
702  amrex::Array4<amrex::Real const> const& wmac,
+
703  AMREX_D_DECL(amrex::Array4<amrex::Real const> const& fcx,
+
704  amrex::Array4<amrex::Real const> const& fcy,
+
705  amrex::Array4<amrex::Real const> const& fcz),
+
706  amrex::Array4<amrex::Real const> const& ccc,
+
707  amrex::Array4<amrex::Real const> const& vfrac,
+
708  amrex::Array4<amrex::EBCellFlag const> const& flag,
+
709  amrex::BCRec const* const d_bcrec,
+
710  amrex::Box const& domain,
+
711  int order, const bool is_velocity) noexcept
+
712 {
+
713  const int domain_klo = domain.smallEnd(2);
+
714  const int domain_khi = domain.bigEnd(2);
+
715 
+
716  amrex::Real xf = fcz(i,j,k,0); // local (x,y) of centroid of z-face we are extrapolating to
+
717  amrex::Real yf = fcz(i,j,k,1);
+
718 
+
719  amrex::Real xc = ccc(i,j,k,0); // centroid of cell (i,j,k)
+
720  amrex::Real yc = ccc(i,j,k,1);
+
721  amrex::Real zc = ccc(i,j,k,2);
+
722 
+
723  amrex::Real delta_x = xf - xc;
+
724  amrex::Real delta_y = yf - yc;
+
725  amrex::Real delta_z = amrex::Real(0.5) + zc;
+
726 
+
727  amrex::Real cc_qmax = amrex::max(q(i,j,k,n),q(i,j,k-1,n));
+
728  amrex::Real cc_qmin = amrex::min(q(i,j,k,n),q(i,j,k-1,n));
729 
-
730  amrex::Real qpls = q(i,j,k ,n) + delta_x * slopes_eb_hi[0]
-
731  + delta_y * slopes_eb_hi[1]
-
732  - delta_z * slopes_eb_hi[2];
-
733 
-
734  qpls = amrex::max(amrex::min(qpls, cc_qmax), cc_qmin);
-
735 
-
736  xc = ccc(i,j,k-1,0); // centroid of cell (i,j,k-1)
-
737  yc = ccc(i,j,k-1,1);
-
738  zc = ccc(i,j,k-1,2);
-
739 
-
740  delta_x = xf - xc;
-
741  delta_y = yf - yc;
-
742  delta_z = amrex::Real(0.5) - zc;
-
743 
-
744  // Compute slopes of component "n" of q
-
745  const auto& slopes_eb_lo = amrex_lim_slopes_eb(i, j, k-1, n, q, ccc, vfrac,
-
746  AMREX_D_DECL(fcx,fcy,fcz),
-
747  flag, order);
+
730  // Compute slopes of component "n" of q
+
731  const auto& slopes_eb_hi = amrex_lim_slopes_eb(i, j, k, n, q, ccc, vfrac,
+
732  AMREX_D_DECL(fcx,fcy,fcz),
+
733  flag, order);
+
734 
+
735  amrex::Real qpls = q(i,j,k ,n) + delta_x * slopes_eb_hi[0]
+
736  + delta_y * slopes_eb_hi[1]
+
737  - delta_z * slopes_eb_hi[2];
+
738 
+
739  qpls = amrex::max(amrex::min(qpls, cc_qmax), cc_qmin);
+
740 
+
741  xc = ccc(i,j,k-1,0); // centroid of cell (i,j,k-1)
+
742  yc = ccc(i,j,k-1,1);
+
743  zc = ccc(i,j,k-1,2);
+
744 
+
745  delta_x = xf - xc;
+
746  delta_y = yf - yc;
+
747  delta_z = amrex::Real(0.5) - zc;
748 
-
749  amrex::Real qmns = q(i,j,k-1,n) + delta_x * slopes_eb_lo[0]
-
750  + delta_y * slopes_eb_lo[1]
-
751  + delta_z * slopes_eb_lo[2];
-
752 
-
753  qmns = amrex::max(amrex::min(qmns, cc_qmax), cc_qmin);
-
754 
-
755  HydroBC::SetZEdgeBCs(i, j, k, n, q, qmns, qpls, d_bcrec[n].lo(2), domain_klo, d_bcrec[n].hi(2), domain_khi, is_velocity);
-
756 
-
757  if ( (k==domain_klo) && (d_bcrec[n].lo(2) == amrex::BCType::foextrap || d_bcrec[n].lo(2) == amrex::BCType::hoextrap) )
-
758  {
-
759  if ( wmac(i,j,k) >= 0. && n==ZVEL && is_velocity ) qpls = amrex::min(qpls,amrex::Real(0.0));
-
760  qmns = qpls;
-
761  }
-
762  if ( (k==domain_khi+1) && (d_bcrec[n].hi(2) == amrex::BCType::foextrap || d_bcrec[n].hi(2) == amrex::BCType::hoextrap) )
-
763  {
-
764  if ( wmac(i,j,k) <= 0. && n==ZVEL && is_velocity ) qmns = amrex::max(qmns,amrex::Real(0.0));
-
765  qpls = qmns;
-
766  }
-
767 
-
768  amrex::Real qs;
-
769 
-
770  if (wmac(i,j,k) > small_vel)
-
771  {
-
772  qs = qmns;
-
773  }
-
774  else if (wmac(i,j,k) < -small_vel)
-
775  {
-
776  qs = qpls;
-
777  }
-
778  else
-
779  {
-
780  qs = amrex::Real(0.5)*(qmns+qpls);
-
781  }
-
782 
-
783 
-
784  return qs;
-
785 }
-
786 
-
787 #endif
+
749  // Compute slopes of component "n" of q
+
750  const auto& slopes_eb_lo = amrex_lim_slopes_eb(i, j, k-1, n, q, ccc, vfrac,
+
751  AMREX_D_DECL(fcx,fcy,fcz),
+
752  flag, order);
+
753 
+
754  amrex::Real qmns = q(i,j,k-1,n) + delta_x * slopes_eb_lo[0]
+
755  + delta_y * slopes_eb_lo[1]
+
756  + delta_z * slopes_eb_lo[2];
+
757 
+
758  qmns = amrex::max(amrex::min(qmns, cc_qmax), cc_qmin);
+
759 
+
760  HydroBC::SetZEdgeBCs(i, j, k, n, q, qmns, qpls, wmac(i,j,k), wmac(i,j,k),
+
761  d_bcrec[n].lo(2), domain_klo, d_bcrec[n].hi(2), domain_khi, is_velocity);
+
762 
+
763  if ( (k==domain_klo) && (d_bcrec[n].lo(2) == amrex::BCType::foextrap || d_bcrec[n].lo(2) == amrex::BCType::hoextrap) )
+
764  {
+
765  if ( wmac(i,j,k) >= 0. && n==ZVEL && is_velocity ) qpls = amrex::min(qpls,amrex::Real(0.0));
+
766  qmns = qpls;
+
767  }
+
768  if ( (k==domain_khi+1) && (d_bcrec[n].hi(2) == amrex::BCType::foextrap || d_bcrec[n].hi(2) == amrex::BCType::hoextrap) )
+
769  {
+
770  if ( wmac(i,j,k) <= 0. && n==ZVEL && is_velocity ) qmns = amrex::max(qmns,amrex::Real(0.0));
+
771  qpls = qmns;
+
772  }
+
773 
+
774  amrex::Real qs;
+
775 
+
776  if (wmac(i,j,k) > small_vel)
+
777  {
+
778  qs = qmns;
+
779  }
+
780  else if (wmac(i,j,k) < -small_vel)
+
781  {
+
782  qs = qpls;
+
783  }
+
784  else
+
785  {
+
786  qs = amrex::Real(0.5)*(qmns+qpls);
+
787  }
788 
-
789 }
-
790 
-
791 #endif
-
792 /** @} */
+
789 
+
790  return qs;
+
791 }
+
792 
+
793 #endif
+
794 
+
795 }
+
796 
+
797 #endif
+
798 /** @} */
AMReX_BCRec.H
amrex_lim_slopes_eb
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > amrex_lim_slopes_eb(int i, int j, int k, int n, amrex::Array4< amrex::Real const > const &state, amrex::Array4< amrex::Real const > const &ccent, amrex::Array4< amrex::Real const > const &vfrac, amrex::Array4< amrex::Real const > const &fcx, amrex::Array4< amrex::Real const > const &fcy, amrex::Array4< amrex::EBCellFlag const > const &flag, int max_order) noexcept
amrex_lim_slopes_extdir_eb
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > amrex_lim_slopes_extdir_eb(int i, int j, int k, int n, amrex::Array4< amrex::Real const > const &state, amrex::Array4< amrex::Real const > const &ccent, amrex::Array4< amrex::Real const > const &vfrac, amrex::Array4< amrex::Real const > const &fcx, amrex::Array4< amrex::Real const > const &fcy, amrex::Array4< amrex::EBCellFlag const > const &flag, bool edlo_x, bool edlo_y, bool edhi_x, bool edhi_y, int domlo_x, int domlo_y, int domhi_x, int domhi_y, int max_order) noexcept
@@ -905,12 +911,12 @@
hydro_bcs_K.H
hydro_constants.H
EBMOL
-
EBMOL::hydro_ebmol_yedge_state_extdir
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real hydro_ebmol_yedge_state_extdir(AMREX_D_DECL(int i, int j, int k), int n, amrex::Array4< amrex::Real const > const &q, amrex::Array4< amrex::Real const > const &vmac, AMREX_D_DECL(amrex::Array4< amrex::Real const > const &fcx, amrex::Array4< amrex::Real const > const &fcy, amrex::Array4< amrex::Real const > const &fcz), amrex::Array4< amrex::Real const > const &ccc, amrex::Array4< amrex::Real const > const &vfrac, amrex::Array4< amrex::EBCellFlag const > const &flag, amrex::BCRec const *const d_bcrec, amrex::Box const &domain, int order, const bool is_velocity) noexcept
Definition: hydro_ebmol_edge_state_K.H:284
-
EBMOL::hydro_ebmol_yedge_state
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real hydro_ebmol_yedge_state(AMREX_D_DECL(int i, int j, int k), int n, amrex::Array4< amrex::Real const > const &q, amrex::Array4< amrex::Real const > const &vmac, AMREX_D_DECL(amrex::Array4< amrex::Real const > const &fcx, amrex::Array4< amrex::Real const > const &fcy, amrex::Array4< amrex::Real const > const &fcz), amrex::Array4< amrex::Real const > const &ccc, amrex::Array4< amrex::Real const > const &vfrac, amrex::Array4< amrex::EBCellFlag const > const &flag, amrex::BCRec const *const d_bcrec, amrex::Box const &domain, int order, const bool is_velocity) noexcept
Definition: hydro_ebmol_edge_state_K.H:441
-
EBMOL::hydro_ebmol_xedge_state
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real hydro_ebmol_xedge_state(AMREX_D_DECL(int i, int j, int k), int n, amrex::Array4< amrex::Real const > const &q, amrex::Array4< amrex::Real const > const &umac, AMREX_D_DECL(amrex::Array4< amrex::Real const > const &fcx, amrex::Array4< amrex::Real const > const &fcy, amrex::Array4< amrex::Real const > const &fcz), amrex::Array4< amrex::Real const > const &ccc, amrex::Array4< amrex::Real const > const &vfrac, amrex::Array4< amrex::EBCellFlag const > const &flag, amrex::BCRec const *const d_bcrec, amrex::Box const &domain, int order, const bool is_velocity) noexcept
Definition: hydro_ebmol_edge_state_K.H:175
+
EBMOL::hydro_ebmol_yedge_state_extdir
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real hydro_ebmol_yedge_state_extdir(AMREX_D_DECL(int i, int j, int k), int n, amrex::Array4< amrex::Real const > const &q, amrex::Array4< amrex::Real const > const &vmac, AMREX_D_DECL(amrex::Array4< amrex::Real const > const &fcx, amrex::Array4< amrex::Real const > const &fcy, amrex::Array4< amrex::Real const > const &fcz), amrex::Array4< amrex::Real const > const &ccc, amrex::Array4< amrex::Real const > const &vfrac, amrex::Array4< amrex::EBCellFlag const > const &flag, amrex::BCRec const *const d_bcrec, amrex::Box const &domain, int order, const bool is_velocity) noexcept
Definition: hydro_ebmol_edge_state_K.H:286
+
EBMOL::hydro_ebmol_yedge_state
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real hydro_ebmol_yedge_state(AMREX_D_DECL(int i, int j, int k), int n, amrex::Array4< amrex::Real const > const &q, amrex::Array4< amrex::Real const > const &vmac, AMREX_D_DECL(amrex::Array4< amrex::Real const > const &fcx, amrex::Array4< amrex::Real const > const &fcy, amrex::Array4< amrex::Real const > const &fcz), amrex::Array4< amrex::Real const > const &ccc, amrex::Array4< amrex::Real const > const &vfrac, amrex::Array4< amrex::EBCellFlag const > const &flag, amrex::BCRec const *const d_bcrec, amrex::Box const &domain, int order, const bool is_velocity) noexcept
Definition: hydro_ebmol_edge_state_K.H:444
+
EBMOL::hydro_ebmol_xedge_state
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real hydro_ebmol_xedge_state(AMREX_D_DECL(int i, int j, int k), int n, amrex::Array4< amrex::Real const > const &q, amrex::Array4< amrex::Real const > const &umac, AMREX_D_DECL(amrex::Array4< amrex::Real const > const &fcx, amrex::Array4< amrex::Real const > const &fcy, amrex::Array4< amrex::Real const > const &fcz), amrex::Array4< amrex::Real const > const &ccc, amrex::Array4< amrex::Real const > const &vfrac, amrex::Array4< amrex::EBCellFlag const > const &flag, amrex::BCRec const *const d_bcrec, amrex::Box const &domain, int order, const bool is_velocity) noexcept
Definition: hydro_ebmol_edge_state_K.H:176
EBMOL::hydro_ebmol_xedge_state_extdir
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real hydro_ebmol_xedge_state_extdir(AMREX_D_DECL(int i, int j, int k), int n, amrex::Array4< amrex::Real const > const &q, amrex::Array4< amrex::Real const > const &umac, AMREX_D_DECL(amrex::Array4< amrex::Real const > const &fcx, amrex::Array4< amrex::Real const > const &fcy, amrex::Array4< amrex::Real const > const &fcz), amrex::Array4< amrex::Real const > const &ccc, amrex::Array4< amrex::Real const > const &vfrac, amrex::Array4< amrex::EBCellFlag const > const &flag, amrex::BCRec const *const d_bcrec, amrex::Box const &domain, int order, const bool is_velocity) noexcept
Definition: hydro_ebmol_edge_state_K.H:21
-
HydroBC::SetXEdgeBCs
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void SetXEdgeBCs(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, int bchi, int domhi, bool is_velocity)
Boundary condition effects.
Definition: hydro_bcs_K.H:77
-
HydroBC::SetYEdgeBCs
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void SetYEdgeBCs(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, int bchi, int domhi, bool is_velocity)
Boundary condition effects.
Definition: hydro_bcs_K.H:144
+
HydroBC::SetYEdgeBCs
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void SetYEdgeBCs(int i, int j, int k, int n, const amrex::Array4< const amrex::Real > &s, amrex::Real &lo, amrex::Real &hi, amrex::Real velm, amrex::Real velp, int bclo, int domlo, int bchi, int domhi, bool is_velocity)
Boundary condition effects.
Definition: hydro_bcs_K.H:166
+
HydroBC::SetXEdgeBCs
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void SetXEdgeBCs(int i, int j, int k, int n, const amrex::Array4< const amrex::Real > &s, amrex::Real &lo, amrex::Real &hi, amrex::Real velm, amrex::Real velp, int bclo, int domlo, int bchi, int domhi, bool is_velocity)
Boundary condition effects.
Definition: hydro_bcs_K.H:77
amrex::max
AMREX_GPU_HOST_DEVICE constexpr AMREX_FORCE_INLINE const T & max(const T &a, const T &b) noexcept
amrex::min
AMREX_GPU_HOST_DEVICE constexpr AMREX_FORCE_INLINE const T & min(const T &a, const T &b) noexcept
amrex::Array4
diff --git a/amrex-hydro/Doxygen/html/hydro__enforce__inout__solvability_8cpp.html b/amrex-hydro/Doxygen/html/hydro__enforce__inout__solvability_8cpp.html index 94728be..08649db 100644 --- a/amrex-hydro/Doxygen/html/hydro__enforce__inout__solvability_8cpp.html +++ b/amrex-hydro/Doxygen/html/hydro__enforce__inout__solvability_8cpp.html @@ -108,12 +108,13 @@ - - - - - - + + + + + + + diff --git a/amrex-hydro/Doxygen/html/hydro__enforce__inout__solvability_8cpp__incl.map b/amrex-hydro/Doxygen/html/hydro__enforce__inout__solvability_8cpp__incl.map index 8d87dea..91ec9b4 100644 --- a/amrex-hydro/Doxygen/html/hydro__enforce__inout__solvability_8cpp__incl.map +++ b/amrex-hydro/Doxygen/html/hydro__enforce__inout__solvability_8cpp__incl.map @@ -2,10 +2,11 @@ - - - - - - + + + + + + + diff --git a/amrex-hydro/Doxygen/html/hydro__enforce__inout__solvability_8cpp__incl.md5 b/amrex-hydro/Doxygen/html/hydro__enforce__inout__solvability_8cpp__incl.md5 index 0ebf2a2..b8bef73 100644 --- a/amrex-hydro/Doxygen/html/hydro__enforce__inout__solvability_8cpp__incl.md5 +++ b/amrex-hydro/Doxygen/html/hydro__enforce__inout__solvability_8cpp__incl.md5 @@ -1 +1 @@ -075a4c62b6909e546793d1edb25ac87b \ No newline at end of file +9edb6f927426c1a20d6f66e22668549c \ No newline at end of file diff --git a/amrex-hydro/Doxygen/html/hydro__enforce__inout__solvability_8cpp__incl.png b/amrex-hydro/Doxygen/html/hydro__enforce__inout__solvability_8cpp__incl.png index 6d5baaf..1046bf0 100644 Binary files a/amrex-hydro/Doxygen/html/hydro__enforce__inout__solvability_8cpp__incl.png and b/amrex-hydro/Doxygen/html/hydro__enforce__inout__solvability_8cpp__incl.png differ diff --git a/amrex-hydro/Doxygen/html/hydro__extrap__vel__to__faces_8cpp.html b/amrex-hydro/Doxygen/html/hydro__extrap__vel__to__faces_8cpp.html index 26e7c7c..00635c8 100644 --- a/amrex-hydro/Doxygen/html/hydro__extrap__vel__to__faces_8cpp.html +++ b/amrex-hydro/Doxygen/html/hydro__extrap__vel__to__faces_8cpp.html @@ -104,17 +104,18 @@
- - - - - - - - - - - + + + + + + + + + + + +
diff --git a/amrex-hydro/Doxygen/html/hydro__extrap__vel__to__faces_8cpp__incl.map b/amrex-hydro/Doxygen/html/hydro__extrap__vel__to__faces_8cpp__incl.map index 3a12783..7ce2969 100644 --- a/amrex-hydro/Doxygen/html/hydro__extrap__vel__to__faces_8cpp__incl.map +++ b/amrex-hydro/Doxygen/html/hydro__extrap__vel__to__faces_8cpp__incl.map @@ -1,13 +1,14 @@ - - - - - - - - - - - + + + + + + + + + + + + diff --git a/amrex-hydro/Doxygen/html/hydro__extrap__vel__to__faces_8cpp__incl.md5 b/amrex-hydro/Doxygen/html/hydro__extrap__vel__to__faces_8cpp__incl.md5 index 49fa76b..8921e2a 100644 --- a/amrex-hydro/Doxygen/html/hydro__extrap__vel__to__faces_8cpp__incl.md5 +++ b/amrex-hydro/Doxygen/html/hydro__extrap__vel__to__faces_8cpp__incl.md5 @@ -1 +1 @@ -fcbc68056b28c1af0e72c3e6bdb755a2 \ No newline at end of file +6cd9b42bd2bfced8eaef6d78684e5a71 \ No newline at end of file diff --git a/amrex-hydro/Doxygen/html/hydro__extrap__vel__to__faces_8cpp__incl.png b/amrex-hydro/Doxygen/html/hydro__extrap__vel__to__faces_8cpp__incl.png index af63706..968bacf 100644 Binary files a/amrex-hydro/Doxygen/html/hydro__extrap__vel__to__faces_8cpp__incl.png and b/amrex-hydro/Doxygen/html/hydro__extrap__vel__to__faces_8cpp__incl.png differ diff --git a/amrex-hydro/Doxygen/html/hydro__godunov_8H.html b/amrex-hydro/Doxygen/html/hydro__godunov_8H.html index 3a13a0c..c16a547 100644 --- a/amrex-hydro/Doxygen/html/hydro__godunov_8H.html +++ b/amrex-hydro/Doxygen/html/hydro__godunov_8H.html @@ -109,12 +109,13 @@ - - - - - - + + + + + + +
diff --git a/amrex-hydro/Doxygen/html/hydro__godunov_8H__incl.map b/amrex-hydro/Doxygen/html/hydro__godunov_8H__incl.map index bb34ec7..0acbf50 100644 --- a/amrex-hydro/Doxygen/html/hydro__godunov_8H__incl.map +++ b/amrex-hydro/Doxygen/html/hydro__godunov_8H__incl.map @@ -1,10 +1,11 @@ - - - - - - + + + + + + + diff --git a/amrex-hydro/Doxygen/html/hydro__godunov_8H__incl.md5 b/amrex-hydro/Doxygen/html/hydro__godunov_8H__incl.md5 index eaeca15..c4c8e3e 100644 --- a/amrex-hydro/Doxygen/html/hydro__godunov_8H__incl.md5 +++ b/amrex-hydro/Doxygen/html/hydro__godunov_8H__incl.md5 @@ -1 +1 @@ -4bf8b24829d6cdd68b500962aeec0679 \ No newline at end of file +c64610b686916ddb7775ab143d9e7e64 \ No newline at end of file diff --git a/amrex-hydro/Doxygen/html/hydro__godunov_8H__incl.png b/amrex-hydro/Doxygen/html/hydro__godunov_8H__incl.png index 967180c..bcc6785 100644 Binary files a/amrex-hydro/Doxygen/html/hydro__godunov_8H__incl.png and b/amrex-hydro/Doxygen/html/hydro__godunov_8H__incl.png differ diff --git a/amrex-hydro/Doxygen/html/hydro__godunov_8H_source.html b/amrex-hydro/Doxygen/html/hydro__godunov_8H_source.html index 64488a0..a675b8d 100644 --- a/amrex-hydro/Doxygen/html/hydro__godunov_8H_source.html +++ b/amrex-hydro/Doxygen/html/hydro__godunov_8H_source.html @@ -211,7 +211,7 @@
void ExtrapVelToFacesOnBox(amrex::Box const &bx, int ncomp, AMREX_D_DECL(amrex::Box const &xbx, amrex::Box const &ybx, amrex::Box const &zbx), AMREX_D_DECL(amrex::Array4< amrex::Real > const &qx, amrex::Array4< amrex::Real > const &qy, amrex::Array4< amrex::Real > const &qz), amrex::Array4< amrex::Real const > const &q, AMREX_D_DECL(amrex::Array4< amrex::Real const > const &u_ad, amrex::Array4< amrex::Real const > const &v_ad, amrex::Array4< amrex::Real const > const &w_ad), AMREX_D_DECL(amrex::Array4< amrex::Real > const &Imx, amrex::Array4< amrex::Real > const &Imy, amrex::Array4< amrex::Real > const &Imz), AMREX_D_DECL(amrex::Array4< amrex::Real > const &Ipx, amrex::Array4< amrex::Real > const &Ipy, amrex::Array4< amrex::Real > const &Ipz), amrex::Array4< amrex::Real const > const &f, const amrex::Box &domain, const amrex::Real *dx, amrex::Real dt, amrex::BCRec const *pbc, bool use_forces_in_trans, amrex::Real *p, bool allow_inflow_on_outflow=false, amrex::Array4< int const > const &bc_arr={})
void ExtrapVelToFaces(amrex::MultiFab const &a_vel, amrex::MultiFab const &a_forces, AMREX_D_DECL(amrex::MultiFab &a_umac, amrex::MultiFab &a_vmac, amrex::MultiFab &a_wmac), const amrex::Vector< amrex::BCRec > &h_bcrec, const amrex::BCRec *d_bcrec, const amrex::Geometry &geom, amrex::Real l_dt, bool use_ppm, bool use_forces_in_trans, int limiter_type=PPM::VanLeer, bool allow_inflow_on_outflow=false, amrex::iMultiFab const *BC_MF=nullptr)
void ComputeAdvectiveVel(AMREX_D_DECL(amrex::Box const &xbx, amrex::Box const &ybx, amrex::Box const &zbx), AMREX_D_DECL(amrex::Array4< amrex::Real > const &u_ad, amrex::Array4< amrex::Real > const &v_ad, amrex::Array4< amrex::Real > const &w_ad), AMREX_D_DECL(amrex::Array4< amrex::Real const > const &Imx, amrex::Array4< amrex::Real const > const &Imy, amrex::Array4< amrex::Real const > const &Imz), AMREX_D_DECL(amrex::Array4< amrex::Real const > const &Ipx, amrex::Array4< amrex::Real const > const &Ipy, amrex::Array4< amrex::Real const > const &Ipz), amrex::Array4< amrex::Real const > const &vel, amrex::Array4< amrex::Real const > const &f, const amrex::Box &domain, amrex::Real dt, amrex::BCRec const *pbc, bool use_forces_in_trans, amrex::Array4< int const > const &bc_arr={})
-
@ VanLeer
Definition: hydro_godunov_ppm.H:17
+
@ VanLeer
Definition: hydro_godunov_ppm.H:18
diff --git a/amrex-hydro/Doxygen/html/hydro__godunov__edge__state__2D_8cpp.html b/amrex-hydro/Doxygen/html/hydro__godunov__edge__state__2D_8cpp.html index a40b9fc..0c5c01e 100644 --- a/amrex-hydro/Doxygen/html/hydro__godunov__edge__state__2D_8cpp.html +++ b/amrex-hydro/Doxygen/html/hydro__godunov__edge__state__2D_8cpp.html @@ -105,23 +105,23 @@
- - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + +
diff --git a/amrex-hydro/Doxygen/html/hydro__godunov__edge__state__2D_8cpp__incl.map b/amrex-hydro/Doxygen/html/hydro__godunov__edge__state__2D_8cpp__incl.map index c2e9d21..9cad4d4 100644 --- a/amrex-hydro/Doxygen/html/hydro__godunov__edge__state__2D_8cpp__incl.map +++ b/amrex-hydro/Doxygen/html/hydro__godunov__edge__state__2D_8cpp__incl.map @@ -1,19 +1,19 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + diff --git a/amrex-hydro/Doxygen/html/hydro__godunov__edge__state__2D_8cpp__incl.md5 b/amrex-hydro/Doxygen/html/hydro__godunov__edge__state__2D_8cpp__incl.md5 index e22c958..3bc070c 100644 --- a/amrex-hydro/Doxygen/html/hydro__godunov__edge__state__2D_8cpp__incl.md5 +++ b/amrex-hydro/Doxygen/html/hydro__godunov__edge__state__2D_8cpp__incl.md5 @@ -1 +1 @@ -ee258993465e7c217430030e46967ffd \ No newline at end of file +a1618b8986ec8de7aeb62f8778496e32 \ No newline at end of file diff --git a/amrex-hydro/Doxygen/html/hydro__godunov__edge__state__2D_8cpp__incl.png b/amrex-hydro/Doxygen/html/hydro__godunov__edge__state__2D_8cpp__incl.png index 765e7f5..2464a2a 100644 Binary files a/amrex-hydro/Doxygen/html/hydro__godunov__edge__state__2D_8cpp__incl.png and b/amrex-hydro/Doxygen/html/hydro__godunov__edge__state__2D_8cpp__incl.png differ diff --git a/amrex-hydro/Doxygen/html/hydro__godunov__edge__state__3D_8cpp.html b/amrex-hydro/Doxygen/html/hydro__godunov__edge__state__3D_8cpp.html index 6fe3990..7b530f5 100644 --- a/amrex-hydro/Doxygen/html/hydro__godunov__edge__state__3D_8cpp.html +++ b/amrex-hydro/Doxygen/html/hydro__godunov__edge__state__3D_8cpp.html @@ -106,24 +106,24 @@
- - - - - - - - - + + + + + + + + + - - - - - - + + + + + + - +
diff --git a/amrex-hydro/Doxygen/html/hydro__godunov__edge__state__3D_8cpp__incl.map b/amrex-hydro/Doxygen/html/hydro__godunov__edge__state__3D_8cpp__incl.map index 0bd678e..67b2220 100644 --- a/amrex-hydro/Doxygen/html/hydro__godunov__edge__state__3D_8cpp__incl.map +++ b/amrex-hydro/Doxygen/html/hydro__godunov__edge__state__3D_8cpp__incl.map @@ -1,20 +1,20 @@ - - - - - - - - - + + + + + + + + + - - - - - - + + + + + + - + diff --git a/amrex-hydro/Doxygen/html/hydro__godunov__edge__state__3D_8cpp__incl.md5 b/amrex-hydro/Doxygen/html/hydro__godunov__edge__state__3D_8cpp__incl.md5 index f0181ec..4e4655e 100644 --- a/amrex-hydro/Doxygen/html/hydro__godunov__edge__state__3D_8cpp__incl.md5 +++ b/amrex-hydro/Doxygen/html/hydro__godunov__edge__state__3D_8cpp__incl.md5 @@ -1 +1 @@ -f7515572fb6c308a8b5fa1abbd3148ba \ No newline at end of file +82be644ecafa72f003b26976fb2f389c \ No newline at end of file diff --git a/amrex-hydro/Doxygen/html/hydro__godunov__edge__state__3D_8cpp__incl.png b/amrex-hydro/Doxygen/html/hydro__godunov__edge__state__3D_8cpp__incl.png index c217ca4..abba273 100644 Binary files a/amrex-hydro/Doxygen/html/hydro__godunov__edge__state__3D_8cpp__incl.png and b/amrex-hydro/Doxygen/html/hydro__godunov__edge__state__3D_8cpp__incl.png differ diff --git a/amrex-hydro/Doxygen/html/hydro__godunov__extrap__vel__to__faces__2D_8cpp.html b/amrex-hydro/Doxygen/html/hydro__godunov__extrap__vel__to__faces__2D_8cpp.html index ca4cc4e..8e3cda2 100644 --- a/amrex-hydro/Doxygen/html/hydro__godunov__extrap__vel__to__faces__2D_8cpp.html +++ b/amrex-hydro/Doxygen/html/hydro__godunov__extrap__vel__to__faces__2D_8cpp.html @@ -105,23 +105,23 @@
- - - - - + + + + + + - - - - - - - + + + + + +
diff --git a/amrex-hydro/Doxygen/html/hydro__godunov__extrap__vel__to__faces__2D_8cpp__incl.map b/amrex-hydro/Doxygen/html/hydro__godunov__extrap__vel__to__faces__2D_8cpp__incl.map index 8e6259f..de365a0 100644 --- a/amrex-hydro/Doxygen/html/hydro__godunov__extrap__vel__to__faces__2D_8cpp__incl.map +++ b/amrex-hydro/Doxygen/html/hydro__godunov__extrap__vel__to__faces__2D_8cpp__incl.map @@ -1,19 +1,19 @@ - - - - - + + + + + - - - - - - - - - - + + + + + + + + + + diff --git a/amrex-hydro/Doxygen/html/hydro__godunov__extrap__vel__to__faces__2D_8cpp__incl.md5 b/amrex-hydro/Doxygen/html/hydro__godunov__extrap__vel__to__faces__2D_8cpp__incl.md5 index cfee723..ea0e09a 100644 --- a/amrex-hydro/Doxygen/html/hydro__godunov__extrap__vel__to__faces__2D_8cpp__incl.md5 +++ b/amrex-hydro/Doxygen/html/hydro__godunov__extrap__vel__to__faces__2D_8cpp__incl.md5 @@ -1 +1 @@ -5df45e567e550f6852c1a16067fbb334 \ No newline at end of file +7957ad5c22772a6be6718d195745e1d5 \ No newline at end of file diff --git a/amrex-hydro/Doxygen/html/hydro__godunov__extrap__vel__to__faces__2D_8cpp__incl.png b/amrex-hydro/Doxygen/html/hydro__godunov__extrap__vel__to__faces__2D_8cpp__incl.png index e8c0286..71c7b6b 100644 Binary files a/amrex-hydro/Doxygen/html/hydro__godunov__extrap__vel__to__faces__2D_8cpp__incl.png and b/amrex-hydro/Doxygen/html/hydro__godunov__extrap__vel__to__faces__2D_8cpp__incl.png differ diff --git a/amrex-hydro/Doxygen/html/hydro__godunov__extrap__vel__to__faces__3D_8cpp.html b/amrex-hydro/Doxygen/html/hydro__godunov__extrap__vel__to__faces__3D_8cpp.html index 197e770..ecfd297 100644 --- a/amrex-hydro/Doxygen/html/hydro__godunov__extrap__vel__to__faces__3D_8cpp.html +++ b/amrex-hydro/Doxygen/html/hydro__godunov__extrap__vel__to__faces__3D_8cpp.html @@ -107,23 +107,23 @@
- + - + + - + - - + - + diff --git a/amrex-hydro/Doxygen/html/hydro__godunov__extrap__vel__to__faces__3D_8cpp__incl.map b/amrex-hydro/Doxygen/html/hydro__godunov__extrap__vel__to__faces__3D_8cpp__incl.map index 5e799ef..ef2ac78 100644 --- a/amrex-hydro/Doxygen/html/hydro__godunov__extrap__vel__to__faces__3D_8cpp__incl.map +++ b/amrex-hydro/Doxygen/html/hydro__godunov__extrap__vel__to__faces__3D_8cpp__incl.map @@ -1,20 +1,20 @@ - - - + + + - - - - - - - + + + + + + + - + diff --git a/amrex-hydro/Doxygen/html/hydro__godunov__extrap__vel__to__faces__3D_8cpp__incl.md5 b/amrex-hydro/Doxygen/html/hydro__godunov__extrap__vel__to__faces__3D_8cpp__incl.md5 index 226a0cc..8579072 100644 --- a/amrex-hydro/Doxygen/html/hydro__godunov__extrap__vel__to__faces__3D_8cpp__incl.md5 +++ b/amrex-hydro/Doxygen/html/hydro__godunov__extrap__vel__to__faces__3D_8cpp__incl.md5 @@ -1 +1 @@ -3531e53adf10b39d74d134776469b244 \ No newline at end of file +74bf053f1f353ac5c175c4c1986db7a7 \ No newline at end of file diff --git a/amrex-hydro/Doxygen/html/hydro__godunov__extrap__vel__to__faces__3D_8cpp__incl.png b/amrex-hydro/Doxygen/html/hydro__godunov__extrap__vel__to__faces__3D_8cpp__incl.png index 65b6394..430f410 100644 Binary files a/amrex-hydro/Doxygen/html/hydro__godunov__extrap__vel__to__faces__3D_8cpp__incl.png and b/amrex-hydro/Doxygen/html/hydro__godunov__extrap__vel__to__faces__3D_8cpp__incl.png differ diff --git a/amrex-hydro/Doxygen/html/hydro__godunov__plm_8H_source.html b/amrex-hydro/Doxygen/html/hydro__godunov__plm_8H_source.html index 185dafb..a6ac47d 100644 --- a/amrex-hydro/Doxygen/html/hydro__godunov__plm_8H_source.html +++ b/amrex-hydro/Doxygen/html/hydro__godunov__plm_8H_source.html @@ -171,184 +171,190 @@
73 
74  int order = 4;
75 
-
76  if (i == domain_ilo && (bc.lo(0) == BCType::ext_dir))
-
77  {
-
78  umns = S(i-1,j,k,n);
-
79 
-
80  if ( n==XVEL && is_velocity )
-
81  {
-
82  upls = S(i-1,j,k,n);
-
83  }
-
84  else
-
85  {
-
86  upls = S(i ,j,k,n) + Real(0.5) * (-Real(1.0) - umac * dt/dx) *
-
87  amrex_calc_xslope_extdir(i ,j,k,n,order,S, extdir_or_ho_ilo, extdir_or_ho_ihi, domain_ilo, domain_ihi);
-
88  }
-
89 
-
90  }
-
91  else if (i == domain_ihi+1 && (bc.hi(0) == BCType::ext_dir))
-
92  {
-
93  upls = S(i ,j,k,n);
-
94 
-
95  if ( n==XVEL && is_velocity )
-
96  {
-
97  umns = S(i,j,k,n);
-
98  }
-
99  else
-
100  {
-
101  umns = S(i-1,j,k,n) + Real(0.5) * ( Real(1.0) - umac * dt/dx) *
-
102  amrex_calc_xslope_extdir(i-1,j,k,n,order,S, extdir_or_ho_ilo, extdir_or_ho_ihi, domain_ilo, domain_ihi);
-
103  }
-
104  }
-
105  else
-
106  {
-
107  // Note that we still call the "extdir version" here because interior cells one
-
108  // away from the boundary will still see the boundary condition in the 4th order
-
109  // slope
-
110  upls = S(i ,j,k,n) + Real(0.5) * (-Real(1.0) - umac * dt/dx) *
-
111  amrex_calc_xslope_extdir(i ,j,k,n,order,S, extdir_or_ho_ilo, extdir_or_ho_ihi, domain_ilo, domain_ihi);
-
112  umns = S(i-1,j,k,n) + Real(0.5) * ( Real(1.0) - umac * dt/dx) *
-
113  amrex_calc_xslope_extdir(i-1,j,k,n,order,S, extdir_or_ho_ilo, extdir_or_ho_ihi, domain_ilo, domain_ihi);
-
114  }
-
115 
-
116  Ip = umns;
-
117  Im = upls;
-
118  }
-
119 }
-
120 
-
121 
-
122 AMREX_GPU_DEVICE AMREX_FORCE_INLINE
-
123 void PredictStateOnYFace ( const int i, const int j, const int k, const int n,
-
124  const amrex::Real dt, const amrex::Real dy,
-
125  amrex::Real& Im, amrex::Real& Ip,
-
126  const amrex::Array4<const amrex::Real> &S,
-
127  const amrex::Real& vmac,
-
128  const amrex::BCRec bc,
-
129  const int domain_jlo, const int domain_jhi,
-
130  const bool is_velocity )
-
131 {
-
132  using namespace amrex;
-
133  {
-
134  bool extdir_or_ho_jlo = (bc.lo(1) == BCType::ext_dir) ||
-
135  (bc.lo(1) == BCType::hoextrap);
-
136  bool extdir_or_ho_jhi = (bc.hi(1) == BCType::ext_dir) ||
-
137  (bc.hi(1) == BCType::hoextrap);
-
138 
-
139  Real vpls, vmns;
+
76  if (i == domain_ilo && ((bc.lo(0) == BCType::ext_dir) ||
+
77  (bc.lo(0) == BCType::direction_dependent && umac >= 0.0)) )
+
78  {
+
79  umns = S(i-1,j,k,n);
+
80 
+
81  if ( n==XVEL && is_velocity )
+
82  {
+
83  upls = S(i-1,j,k,n);
+
84  }
+
85  else
+
86  {
+
87  upls = S(i ,j,k,n) + Real(0.5) * (-Real(1.0) - umac * dt/dx) *
+
88  amrex_calc_xslope_extdir(i ,j,k,n,order,S, extdir_or_ho_ilo, extdir_or_ho_ihi, domain_ilo, domain_ihi);
+
89  }
+
90 
+
91  }
+
92  else if (i == domain_ihi+1 && ((bc.hi(0) == BCType::ext_dir) ||
+
93  (bc.hi(0) == BCType::direction_dependent && umac <= 0.0)) )
+
94  {
+
95  upls = S(i ,j,k,n);
+
96 
+
97  if ( n==XVEL && is_velocity )
+
98  {
+
99  umns = S(i,j,k,n);
+
100  }
+
101  else
+
102  {
+
103  umns = S(i-1,j,k,n) + Real(0.5) * ( Real(1.0) - umac * dt/dx) *
+
104  amrex_calc_xslope_extdir(i-1,j,k,n,order,S, extdir_or_ho_ilo, extdir_or_ho_ihi, domain_ilo, domain_ihi);
+
105  }
+
106  }
+
107  else
+
108  {
+
109  // Note that we still call the "extdir version" here because interior cells one
+
110  // away from the boundary will still see the boundary condition in the 4th order
+
111  // slope
+
112  upls = S(i ,j,k,n) + Real(0.5) * (-Real(1.0) - umac * dt/dx) *
+
113  amrex_calc_xslope_extdir(i ,j,k,n,order,S, extdir_or_ho_ilo, extdir_or_ho_ihi, domain_ilo, domain_ihi);
+
114  umns = S(i-1,j,k,n) + Real(0.5) * ( Real(1.0) - umac * dt/dx) *
+
115  amrex_calc_xslope_extdir(i-1,j,k,n,order,S, extdir_or_ho_ilo, extdir_or_ho_ihi, domain_ilo, domain_ihi);
+
116  }
+
117 
+
118  Ip = umns;
+
119  Im = upls;
+
120  }
+
121 }
+
122 
+
123 
+
124 AMREX_GPU_DEVICE AMREX_FORCE_INLINE
+
125 void PredictStateOnYFace ( const int i, const int j, const int k, const int n,
+
126  const amrex::Real dt, const amrex::Real dy,
+
127  amrex::Real& Im, amrex::Real& Ip,
+
128  const amrex::Array4<const amrex::Real> &S,
+
129  const amrex::Real& vmac,
+
130  const amrex::BCRec bc,
+
131  const int domain_jlo, const int domain_jhi,
+
132  const bool is_velocity )
+
133 {
+
134  using namespace amrex;
+
135  {
+
136  bool extdir_or_ho_jlo = (bc.lo(1) == BCType::ext_dir) ||
+
137  (bc.lo(1) == BCType::hoextrap);
+
138  bool extdir_or_ho_jhi = (bc.hi(1) == BCType::ext_dir) ||
+
139  (bc.hi(1) == BCType::hoextrap);
140 
-
141  int order = 4;
+
141  Real vpls, vmns;
142 
-
143  if (j == domain_jlo && (bc.lo(1) == BCType::ext_dir))
-
144  {
-
145  vmns = S(i,j-1,k,n);
-
146  if ( n==YVEL && is_velocity )
-
147  {
-
148  vpls = S(i,j-1,k,n);
-
149  }
-
150  else
-
151  {
-
152  vpls = S(i,j ,k,n) + Real(0.5) * (-Real(1.0) - vmac * dt/dy) *
-
153  amrex_calc_yslope_extdir(i,j ,k,n,order,S, extdir_or_ho_jlo, extdir_or_ho_jhi, domain_jlo, domain_jhi);
-
154  }
-
155  }
-
156  else if (j == domain_jhi+1 && (bc.hi(1) == BCType::ext_dir))
-
157  {
-
158  vpls = S(i,j ,k,n);
-
159  if ( n==YVEL && is_velocity )
-
160  {
-
161  vmns = S(i,j ,k,n);
-
162  }
-
163  else
+
143  int order = 4;
+
144 
+
145  if (j == domain_jlo && ((bc.lo(1) == BCType::ext_dir) ||
+
146  (bc.lo(1) == BCType::direction_dependent && vmac >= 0.0)) )
+
147  {
+
148  vmns = S(i,j-1,k,n);
+
149  if ( n==YVEL && is_velocity )
+
150  {
+
151  vpls = S(i,j-1,k,n);
+
152  }
+
153  else
+
154  {
+
155  vpls = S(i,j ,k,n) + Real(0.5) * (-Real(1.0) - vmac * dt/dy) *
+
156  amrex_calc_yslope_extdir(i,j ,k,n,order,S, extdir_or_ho_jlo, extdir_or_ho_jhi, domain_jlo, domain_jhi);
+
157  }
+
158  }
+
159  else if (j == domain_jhi+1 && ((bc.hi(1) == BCType::ext_dir) ||
+
160  (bc.hi(1) == BCType::direction_dependent && vmac <= 0.0)) )
+
161  {
+
162  vpls = S(i,j ,k,n);
+
163  if ( n==YVEL && is_velocity )
164  {
-
165  vmns = S(i,j-1,k,n) + Real(0.5) * ( Real(1.0) - vmac * dt/dy) *
-
166  amrex_calc_yslope_extdir(i,j-1,k,n,order,S, extdir_or_ho_jlo, extdir_or_ho_jhi, domain_jlo, domain_jhi);
-
167  }
-
168  }
-
169  else
-
170  {
-
171  // Note that we still call the "extdir version" here because interior cells one
-
172  // away from the boundary will still see the boundary condition in the 4th order
-
173  // slope
-
174  vpls = S(i,j ,k,n) + Real(0.5) * (-Real(1.0) - vmac * dt/dy) *
-
175  amrex_calc_yslope_extdir(i,j ,k,n,order,S, extdir_or_ho_jlo, extdir_or_ho_jhi, domain_jlo, domain_jhi);
-
176  vmns = S(i,j-1,k,n) + Real(0.5) * ( Real(1.0) - vmac * dt/dy) *
-
177  amrex_calc_yslope_extdir(i,j-1,k,n,order,S, extdir_or_ho_jlo, extdir_or_ho_jhi, domain_jlo, domain_jhi);
-
178  }
-
179 
-
180  Ip = vmns;
-
181  Im = vpls;
-
182  }
-
183 }
-
184 
-
185 #if (AMREX_SPACEDIM==3)
-
186 
-
187 AMREX_GPU_DEVICE AMREX_FORCE_INLINE
-
188 void PredictStateOnZFace ( const int i, const int j, const int k, const int n,
-
189  const amrex::Real dt, const amrex::Real dz,
-
190  amrex::Real& Im, amrex::Real& Ip,
-
191  const amrex::Array4<const amrex::Real> &S,
-
192  const amrex::Real& wmac,
-
193  const amrex::BCRec bc,
-
194  const int domain_klo, const int domain_khi,
-
195  const bool is_velocity )
-
196 {
-
197  using namespace amrex;
-
198  {
-
199  bool extdir_or_ho_klo = (bc.lo(2) == BCType::ext_dir) ||
-
200  (bc.lo(2) == BCType::hoextrap);
-
201  bool extdir_or_ho_khi = (bc.hi(2) == BCType::ext_dir) ||
-
202  (bc.hi(2) == BCType::hoextrap);
-
203 
-
204  Real wpls, wmns;
-
205 
-
206  int order = 4;
+
165  vmns = S(i,j ,k,n);
+
166  }
+
167  else
+
168  {
+
169  vmns = S(i,j-1,k,n) + Real(0.5) * ( Real(1.0) - vmac * dt/dy) *
+
170  amrex_calc_yslope_extdir(i,j-1,k,n,order,S, extdir_or_ho_jlo, extdir_or_ho_jhi, domain_jlo, domain_jhi);
+
171  }
+
172  }
+
173  else
+
174  {
+
175  // Note that we still call the "extdir version" here because interior cells one
+
176  // away from the boundary will still see the boundary condition in the 4th order
+
177  // slope
+
178  vpls = S(i,j ,k,n) + Real(0.5) * (-Real(1.0) - vmac * dt/dy) *
+
179  amrex_calc_yslope_extdir(i,j ,k,n,order,S, extdir_or_ho_jlo, extdir_or_ho_jhi, domain_jlo, domain_jhi);
+
180  vmns = S(i,j-1,k,n) + Real(0.5) * ( Real(1.0) - vmac * dt/dy) *
+
181  amrex_calc_yslope_extdir(i,j-1,k,n,order,S, extdir_or_ho_jlo, extdir_or_ho_jhi, domain_jlo, domain_jhi);
+
182  }
+
183 
+
184  Ip = vmns;
+
185  Im = vpls;
+
186  }
+
187 }
+
188 
+
189 #if (AMREX_SPACEDIM==3)
+
190 
+
191 AMREX_GPU_DEVICE AMREX_FORCE_INLINE
+
192 void PredictStateOnZFace ( const int i, const int j, const int k, const int n,
+
193  const amrex::Real dt, const amrex::Real dz,
+
194  amrex::Real& Im, amrex::Real& Ip,
+
195  const amrex::Array4<const amrex::Real> &S,
+
196  const amrex::Real& wmac,
+
197  const amrex::BCRec bc,
+
198  const int domain_klo, const int domain_khi,
+
199  const bool is_velocity )
+
200 {
+
201  using namespace amrex;
+
202  {
+
203  bool extdir_or_ho_klo = (bc.lo(2) == BCType::ext_dir) ||
+
204  (bc.lo(2) == BCType::hoextrap);
+
205  bool extdir_or_ho_khi = (bc.hi(2) == BCType::ext_dir) ||
+
206  (bc.hi(2) == BCType::hoextrap);
207 
-
208  if (k == domain_klo && (bc.lo(2) == BCType::ext_dir))
-
209  {
-
210  wmns = S(i,j,k-1,n);
-
211  if ( n == ZVEL && is_velocity )
-
212  {
-
213  wpls = S(i,j,k-1,n);
-
214  }
-
215  else
-
216  {
-
217  wpls = S(i,j,k ,n) + Real(0.5) * (-Real(1.0) - wmac * dt/dz) *
-
218  amrex_calc_zslope_extdir(i,j,k ,n,order,S, extdir_or_ho_klo, extdir_or_ho_khi, domain_klo, domain_khi);
+
208  Real wpls, wmns;
+
209 
+
210  int order = 4;
+
211 
+
212  if (k == domain_klo && ((bc.lo(2) == BCType::ext_dir) ||
+
213  (bc.lo(2) == BCType::direction_dependent && wmac >= 0.0)) )
+
214  {
+
215  wmns = S(i,j,k-1,n);
+
216  if ( n == ZVEL && is_velocity )
+
217  {
+
218  wpls = S(i,j,k-1,n);
219  }
-
220  }
-
221  else if (k == domain_khi+1 && (bc.hi(2) == BCType::ext_dir))
-
222  {
-
223  wpls = S(i,j,k ,n);
-
224  if ( n == ZVEL && is_velocity )
-
225  {
-
226  wmns = S(i,j,k ,n);
-
227  }
-
228  else
-
229  {
-
230  wmns = S(i,j,k-1,n) + Real(0.5) * ( Real(1.0) - wmac * dt/dz) *
-
231  amrex_calc_zslope_extdir(i,j,k-1,n,order,S, extdir_or_ho_klo, extdir_or_ho_khi, domain_klo, domain_khi);
-
232  }
-
233  }
-
234  else
-
235  {
-
236  // Note that we still call the "extdir version" here because interior cells one
-
237  // away from the boundary will still see the boundary condition in the 4th order
-
238  // slope
-
239  wpls = S(i,j,k ,n) + Real(0.5) * (-Real(1.0) - wmac * dt/dz) *
-
240  amrex_calc_zslope_extdir(i,j,k ,n,order,S, extdir_or_ho_klo, extdir_or_ho_khi, domain_klo, domain_khi);
-
241  wmns = S(i,j,k-1,n) + Real(0.5) * ( Real(1.0) - wmac * dt/dz) *
-
242  amrex_calc_zslope_extdir(i,j,k-1,n,order,S, extdir_or_ho_klo, extdir_or_ho_khi, domain_klo, domain_khi);
-
243  }
-
244 
-
245  Ip = wmns;
-
246  Im = wpls;
-
247  }
-
248 }
-
249 #endif
+
220  else
+
221  {
+
222  wpls = S(i,j,k ,n) + Real(0.5) * (-Real(1.0) - wmac * dt/dz) *
+
223  amrex_calc_zslope_extdir(i,j,k ,n,order,S, extdir_or_ho_klo, extdir_or_ho_khi, domain_klo, domain_khi);
+
224  }
+
225  }
+
226  else if (k == domain_khi+1 && ((bc.hi(2) == BCType::ext_dir) ||
+
227  (bc.hi(2) == BCType::direction_dependent && wmac <= 0.0)) )
+
228  {
+
229  wpls = S(i,j,k ,n);
+
230  if ( n == ZVEL && is_velocity )
+
231  {
+
232  wmns = S(i,j,k ,n);
+
233  }
+
234  else
+
235  {
+
236  wmns = S(i,j,k-1,n) + Real(0.5) * ( Real(1.0) - wmac * dt/dz) *
+
237  amrex_calc_zslope_extdir(i,j,k-1,n,order,S, extdir_or_ho_klo, extdir_or_ho_khi, domain_klo, domain_khi);
+
238  }
+
239  }
+
240  else
+
241  {
+
242  // Note that we still call the "extdir version" here because interior cells one
+
243  // away from the boundary will still see the boundary condition in the 4th order
+
244  // slope
+
245  wpls = S(i,j,k ,n) + Real(0.5) * (-Real(1.0) - wmac * dt/dz) *
+
246  amrex_calc_zslope_extdir(i,j,k ,n,order,S, extdir_or_ho_klo, extdir_or_ho_khi, domain_klo, domain_khi);
+
247  wmns = S(i,j,k-1,n) + Real(0.5) * ( Real(1.0) - wmac * dt/dz) *
+
248  amrex_calc_zslope_extdir(i,j,k-1,n,order,S, extdir_or_ho_klo, extdir_or_ho_khi, domain_klo, domain_khi);
+
249  }
250 
-
251 }
-
252 #endif
-
253 /** @} */
+
251  Ip = wmns;
+
252  Im = wpls;
+
253  }
+
254 }
+
255 #endif
+
256 
+
257 }
+
258 #endif
+
259 /** @} */
AMReX_Array.H
AMReX_BCRec.H
AMReX_BC_TYPES.H
@@ -368,7 +374,7 @@
ZVEL
#define ZVEL
Definition: hydro_constants.H:30
hydro_constants.H
PLM
Definition: hydro_godunov_plm.H:20
-
PLM::PredictStateOnYFace
AMREX_GPU_DEVICE AMREX_FORCE_INLINE void PredictStateOnYFace(const int i, const int j, const int k, const int n, const amrex::Real dt, const amrex::Real dy, amrex::Real &Im, amrex::Real &Ip, const amrex::Array4< const amrex::Real > &S, const amrex::Real &vmac, const amrex::BCRec bc, const int domain_jlo, const int domain_jhi, const bool is_velocity)
Definition: hydro_godunov_plm.H:123
+
PLM::PredictStateOnYFace
AMREX_GPU_DEVICE AMREX_FORCE_INLINE void PredictStateOnYFace(const int i, const int j, const int k, const int n, const amrex::Real dt, const amrex::Real dy, amrex::Real &Im, amrex::Real &Ip, const amrex::Array4< const amrex::Real > &S, const amrex::Real &vmac, const amrex::BCRec bc, const int domain_jlo, const int domain_jhi, const bool is_velocity)
Definition: hydro_godunov_plm.H:125
PLM::PredictStateOnXFace
AMREX_GPU_DEVICE AMREX_FORCE_INLINE void PredictStateOnXFace(const int i, const int j, const int k, const int n, const amrex::Real dt, const amrex::Real dx, amrex::Real &Im, amrex::Real &Ip, const amrex::Array4< const amrex::Real > &S, const amrex::Real &umac, const amrex::BCRec bc, const int domain_ilo, const int domain_ihi, const bool is_velocity)
Definition: hydro_godunov_plm.H:56
PLM::PredictVelOnYFace
void PredictVelOnYFace(amrex::Box const &yebox, int ncomp, amrex::Array4< amrex::Real > const &Imy, amrex::Array4< amrex::Real > const &Ipy, amrex::Array4< amrex::Real const > const &q, amrex::Array4< amrex::Real const > const &vcc, const amrex::Geometry &geom, amrex::Real dt, amrex::Vector< amrex::BCRec > const &h_bcrec, amrex::BCRec const *pbc, amrex::Array4< int const > const &bc_arr={})
PLM::PredictVelOnXFace
void PredictVelOnXFace(amrex::Box const &xebox, int ncomp, amrex::Array4< amrex::Real > const &Imx, amrex::Array4< amrex::Real > const &Ipx, amrex::Array4< amrex::Real const > const &q, amrex::Array4< amrex::Real const > const &vcc, const amrex::Geometry &geom, amrex::Real dt, amrex::Vector< amrex::BCRec > const &h_bcrec, amrex::BCRec const *pbc, amrex::Array4< int const > const &bc_arr={})
diff --git a/amrex-hydro/Doxygen/html/hydro__godunov__ppm_8H.html b/amrex-hydro/Doxygen/html/hydro__godunov__ppm_8H.html index 0660b0a..315f0ab 100644 --- a/amrex-hydro/Doxygen/html/hydro__godunov__ppm_8H.html +++ b/amrex-hydro/Doxygen/html/hydro__godunov__ppm_8H.html @@ -104,18 +104,20 @@
#include <AMReX_MultiFab.H>
#include <AMReX_BCRec.H>
+#include <AMReX_BC_TYPES.H>
#include <hydro_constants.H>
Include dependency graph for hydro_godunov_ppm.H:
- + - - - + + + +
@@ -169,12 +171,12 @@
- - - - - - + + + + + + diff --git a/amrex-hydro/Doxygen/html/hydro__godunov__ppm_8H.js b/amrex-hydro/Doxygen/html/hydro__godunov__ppm_8H.js index 995d4fb..0ae55bf 100644 --- a/amrex-hydro/Doxygen/html/hydro__godunov__ppm_8H.js +++ b/amrex-hydro/Doxygen/html/hydro__godunov__ppm_8H.js @@ -16,7 +16,7 @@ var hydro__godunov__ppm_8H = [ "PredictVelOnFaces", "hydro__godunov__ppm_8H.html#afc01feca9b1f93c06521af5d6591c22c", null ], [ "PredictVelOnXFace", "hydro__godunov__ppm_8H.html#adb2496aca52fb5c10215b6b2e51dd56a", null ], [ "PredictVelOnYFace", "hydro__godunov__ppm_8H.html#a2508ebdfc4ebe06e3a4a4b3b45e1e14f", null ], - [ "SetXBCs", "hydro__godunov__ppm_8H.html#ad5bb40375d5bfdec96a5906cf7ef365d", null ], - [ "SetYBCs", "hydro__godunov__ppm_8H.html#aa3ffd2df3e546aecfc2301f5b6f8f7d0", null ], + [ "SetXBCs", "hydro__godunov__ppm_8H.html#a90c9fcca9c5e4a4098dcccf9aaead891", null ], + [ "SetYBCs", "hydro__godunov__ppm_8H.html#abf337b316b14038fe9d5eace8e23b1be", null ], [ "default_limiter", "hydro__godunov__ppm_8H.html#a4f476328680db9ab71492a158fce0749", null ] ]; \ No newline at end of file diff --git a/amrex-hydro/Doxygen/html/hydro__godunov__ppm_8H__incl.map b/amrex-hydro/Doxygen/html/hydro__godunov__ppm_8H__incl.map index 25ae569..5bfc179 100644 --- a/amrex-hydro/Doxygen/html/hydro__godunov__ppm_8H__incl.map +++ b/amrex-hydro/Doxygen/html/hydro__godunov__ppm_8H__incl.map @@ -1,8 +1,9 @@ - + - - - + + + + diff --git a/amrex-hydro/Doxygen/html/hydro__godunov__ppm_8H__incl.md5 b/amrex-hydro/Doxygen/html/hydro__godunov__ppm_8H__incl.md5 index 7616be2..aed5ec1 100644 --- a/amrex-hydro/Doxygen/html/hydro__godunov__ppm_8H__incl.md5 +++ b/amrex-hydro/Doxygen/html/hydro__godunov__ppm_8H__incl.md5 @@ -1 +1 @@ -8872486f1ef7b1bb128780f7e7370160 \ No newline at end of file +9d8b2f25a31f65a6f50b2a40d3a28b2b \ No newline at end of file diff --git a/amrex-hydro/Doxygen/html/hydro__godunov__ppm_8H__incl.png b/amrex-hydro/Doxygen/html/hydro__godunov__ppm_8H__incl.png index 0d0d014..a3a80be 100644 Binary files a/amrex-hydro/Doxygen/html/hydro__godunov__ppm_8H__incl.png and b/amrex-hydro/Doxygen/html/hydro__godunov__ppm_8H__incl.png differ diff --git a/amrex-hydro/Doxygen/html/hydro__godunov__ppm_8H_source.html b/amrex-hydro/Doxygen/html/hydro__godunov__ppm_8H_source.html index 6ff06d7..e000fcb 100644 --- a/amrex-hydro/Doxygen/html/hydro__godunov__ppm_8H_source.html +++ b/amrex-hydro/Doxygen/html/hydro__godunov__ppm_8H_source.html @@ -108,922 +108,937 @@
10 
11 #include <AMReX_MultiFab.H>
12 #include <AMReX_BCRec.H>
-
13 #include <hydro_constants.H>
-
14 
-
15 namespace PPM {
-
16 
-
17 enum limiters {VanLeer, WENOZ, WENO_JS, NoLimiter};
-
18 
-
19 static constexpr int default_limiter = VanLeer;
-
20 
-
21 struct nolimiter {
-
22 
-
23  static constexpr bool do_limiting = false;
-
24 
-
25  [[nodiscard]] AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
-
26  static amrex::Real
-
27  sedge1(const amrex::Real sm2,
-
28  const amrex::Real sm1,
-
29  const amrex::Real s0,
-
30  const amrex::Real sp1,
-
31  const amrex::Real /*sp2*/)
-
32  {
-
33 
-
34  amrex::Real d1 = amrex::Real(0.5) * (sp1 - sm1);
-
35  amrex::Real d2 = amrex::Real(0.5) * (s0 - sm2);
-
36 
-
37  amrex::Real sedge = amrex::Real(0.5)*(s0 + sm1) - amrex::Real(1./6.)*(d1 - d2);
-
38  return sedge;
-
39 
-
40  }
-
41 
-
42  [[nodiscard]] AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
-
43  static amrex::Real
-
44  sedge2(const amrex::Real /*sm2*/,
-
45  const amrex::Real sm1,
-
46  const amrex::Real s0,
-
47  const amrex::Real sp1,
-
48  const amrex::Real sp2)
-
49  {
-
50  amrex::Real d1 = amrex::Real(0.5) * (sp2 - s0);
-
51  amrex::Real d2 = amrex::Real(0.5) * (sp1 - sm1);
-
52 
-
53  amrex::Real sedge = amrex::Real(0.5)*(sp1 + s0) - amrex::Real(1./6.)*(d1 - d2);
-
54  return sedge;
-
55  }
-
56 
-
57  [[nodiscard]] AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
-
58  static amrex::GpuTuple<amrex::Real,amrex::Real>
-
59  sm_sp(const amrex::Real /*s0*/,
-
60  const amrex::Real sedge1,
-
61  const amrex::Real sedge2)
-
62  {
-
63  return amrex::makeTuple(sedge1, sedge2);
-
64  }
-
65 };
-
66 
-
67 struct vanleer {
-
68 
-
69  static constexpr bool do_limiting = true;
-
70 
-
71  [[nodiscard]] AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
-
72  static amrex::Real vanLeer(const amrex::Real a, const amrex::Real b, const amrex::Real c)
-
73  {
-
74  constexpr auto small_qty_sq = amrex::Real(1.e-10) * amrex::Real(1.e-10);
-
75 
-
76  amrex::Real dsc = amrex::Real(0.5)*(b - c);
-
77  amrex::Real dsl = amrex::Real(2.0)*(a - c);
-
78  amrex::Real dsr = amrex::Real(2.0)*(b - a);
-
79  return (dsl*dsr > small_qty_sq) ?
-
80  std::copysign(amrex::Real(1.0), dsc)*amrex::min(amrex::Math::abs(dsc),amrex::min(amrex::Math::abs(dsl),
-
81  amrex::Math::abs(dsr))) : amrex::Real(0.0);
-
82  }
-
83 
-
84  [[nodiscard]] AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
-
85  static amrex::Real
-
86  sedge1(const amrex::Real sm2,
-
87  const amrex::Real sm1,
-
88  const amrex::Real s0,
-
89  const amrex::Real sp1,
-
90  const amrex::Real /*sp2*/)
-
91  {
-
92 
-
93  amrex::Real d1 = vanLeer(s0,sp1,sm1);
-
94  amrex::Real d2 = vanLeer(sm1,s0,sm2);
-
95 
-
96  amrex::Real sedge = amrex::Real(0.5)*(s0 + sm1) - amrex::Real(1./6.)*(d1 - d2);
-
97  return amrex::min(amrex::max(sedge, amrex::min(s0, sm1)),amrex::max(s0,sm1));
-
98 
-
99  }
-
100 
-
101  [[nodiscard]] AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
-
102  static amrex::Real
-
103  sedge2(const amrex::Real /*sm2*/,
-
104  const amrex::Real sm1,
-
105  const amrex::Real s0,
-
106  const amrex::Real sp1,
-
107  const amrex::Real sp2)
-
108  {
-
109 
-
110  amrex::Real d1 = vanLeer(sp1,sp2,s0);
-
111  amrex::Real d2 = vanLeer(s0,sp1,sm1);
-
112 
-
113  amrex::Real sedge = amrex::Real(0.5)*(sp1 + s0) - amrex::Real(1./6.)*(d1 - d2);
-
114  return amrex::min(amrex::max(sedge, amrex::min(s0, sp1)),amrex::max(s0,sp1));
-
115 
+
13 #include <AMReX_BC_TYPES.H>
+
14 #include <hydro_constants.H>
+
15 
+
16 namespace PPM {
+
17 
+
18 enum limiters {VanLeer, WENOZ, WENO_JS, NoLimiter};
+
19 
+
20 static constexpr int default_limiter = VanLeer;
+
21 
+
22 struct nolimiter {
+
23 
+
24  static constexpr bool do_limiting = false;
+
25 
+
26  [[nodiscard]] AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
+
27  static amrex::Real
+
28  sedge1(const amrex::Real sm2,
+
29  const amrex::Real sm1,
+
30  const amrex::Real s0,
+
31  const amrex::Real sp1,
+
32  const amrex::Real /*sp2*/)
+
33  {
+
34 
+
35  amrex::Real d1 = amrex::Real(0.5) * (sp1 - sm1);
+
36  amrex::Real d2 = amrex::Real(0.5) * (s0 - sm2);
+
37 
+
38  amrex::Real sedge = amrex::Real(0.5)*(s0 + sm1) - amrex::Real(1./6.)*(d1 - d2);
+
39  return sedge;
+
40 
+
41  }
+
42 
+
43  [[nodiscard]] AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
+
44  static amrex::Real
+
45  sedge2(const amrex::Real /*sm2*/,
+
46  const amrex::Real sm1,
+
47  const amrex::Real s0,
+
48  const amrex::Real sp1,
+
49  const amrex::Real sp2)
+
50  {
+
51  amrex::Real d1 = amrex::Real(0.5) * (sp2 - s0);
+
52  amrex::Real d2 = amrex::Real(0.5) * (sp1 - sm1);
+
53 
+
54  amrex::Real sedge = amrex::Real(0.5)*(sp1 + s0) - amrex::Real(1./6.)*(d1 - d2);
+
55  return sedge;
+
56  }
+
57 
+
58  [[nodiscard]] AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
+
59  static amrex::GpuTuple<amrex::Real,amrex::Real>
+
60  sm_sp(const amrex::Real /*s0*/,
+
61  const amrex::Real sedge1,
+
62  const amrex::Real sedge2)
+
63  {
+
64  return amrex::makeTuple(sedge1, sedge2);
+
65  }
+
66 };
+
67 
+
68 struct vanleer {
+
69 
+
70  static constexpr bool do_limiting = true;
+
71 
+
72  [[nodiscard]] AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
+
73  static amrex::Real vanLeer(const amrex::Real a, const amrex::Real b, const amrex::Real c)
+
74  {
+
75  constexpr auto small_qty_sq = amrex::Real(1.e-10) * amrex::Real(1.e-10);
+
76 
+
77  amrex::Real dsc = amrex::Real(0.5)*(b - c);
+
78  amrex::Real dsl = amrex::Real(2.0)*(a - c);
+
79  amrex::Real dsr = amrex::Real(2.0)*(b - a);
+
80  return (dsl*dsr > small_qty_sq) ?
+
81  std::copysign(amrex::Real(1.0), dsc)*amrex::min(amrex::Math::abs(dsc),amrex::min(amrex::Math::abs(dsl),
+
82  amrex::Math::abs(dsr))) : amrex::Real(0.0);
+
83  }
+
84 
+
85  [[nodiscard]] AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
+
86  static amrex::Real
+
87  sedge1(const amrex::Real sm2,
+
88  const amrex::Real sm1,
+
89  const amrex::Real s0,
+
90  const amrex::Real sp1,
+
91  const amrex::Real /*sp2*/)
+
92  {
+
93 
+
94  amrex::Real d1 = vanLeer(s0,sp1,sm1);
+
95  amrex::Real d2 = vanLeer(sm1,s0,sm2);
+
96 
+
97  amrex::Real sedge = amrex::Real(0.5)*(s0 + sm1) - amrex::Real(1./6.)*(d1 - d2);
+
98  return amrex::min(amrex::max(sedge, amrex::min(s0, sm1)),amrex::max(s0,sm1));
+
99 
+
100  }
+
101 
+
102  [[nodiscard]] AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
+
103  static amrex::Real
+
104  sedge2(const amrex::Real /*sm2*/,
+
105  const amrex::Real sm1,
+
106  const amrex::Real s0,
+
107  const amrex::Real sp1,
+
108  const amrex::Real sp2)
+
109  {
+
110 
+
111  amrex::Real d1 = vanLeer(sp1,sp2,s0);
+
112  amrex::Real d2 = vanLeer(s0,sp1,sm1);
+
113 
+
114  amrex::Real sedge = amrex::Real(0.5)*(sp1 + s0) - amrex::Real(1./6.)*(d1 - d2);
+
115  return amrex::min(amrex::max(sedge, amrex::min(s0, sp1)),amrex::max(s0,sp1));
116 
-
117  }
-
118 
-
119  [[nodiscard]] AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
-
120  static amrex::GpuTuple<amrex::Real,amrex::Real>
-
121  sm_sp(const amrex::Real s0,
-
122  const amrex::Real sedge1,
-
123  const amrex::Real sedge2)
-
124  {
-
125  amrex::Real sm_ = sedge1;
-
126  amrex::Real sp_ = sedge2;
-
127 
-
128  if ((sedge2-s0)*(s0-sedge1) < 0.0) {
-
129  sm_ = s0;
-
130  sp_ = s0;
-
131  } else if (amrex::Math::abs(sedge2-s0) >= amrex::Real(2.0)*amrex::Math::abs(sedge1-s0)) {
-
132  sp_ = amrex::Real(3.0)*s0 - amrex::Real(2.0)*sedge1;
-
133  } else if (amrex::Math::abs(sedge1-s0) >= amrex::Real(2.0)*amrex::Math::abs(sedge2-s0)) {
-
134  sm_ = amrex::Real(3.0)*s0 - amrex::Real(2.0)*sedge2;
-
135  }
-
136  return amrex::makeTuple(sm_,sp_);
-
137 
-
138  // this might be the correct way to do this in case the else if are both == 0.0
-
139  // could also change the >= to just > for each
-
140 // if ((sedge2-s0)*(s0-sedge1) < amrex::Real(0.0)) {
-
141 // return amrex::makeTuple(s0,s0);
-
142 // }
-
143 // amrex::Real sm_ = sedge1;
-
144 // amrex::Real sp_ = sedge2;
-
145 // if (amrex::Math::abs(sedge2-s0) >= amrex::Real(2.0)*amrex::Math::abs(sedge1-s0)) {
-
146 // sp_ = amrex::Real(3.0)*s0 - amrex::Real(2.0)*sedge1;
-
147 // }
-
148 // if (amrex::Math::abs(sedge1-s0) >= amrex::Real(2.0)*amrex::Math::abs(sedge2-s0)) {
-
149 // sm_ = amrex::Real(3.0)*s0 - amrex::Real(2.0)*sedge2;
-
150 // }
-
151 // return amrex::makeTuple(sm_,sp_);
-
152 
-
153  }
-
154 };
-
155 
-
156 struct wenoz {
-
157 
-
158  static constexpr bool do_limiting = false;
-
159 
-
160  [[nodiscard]] AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
-
161  static amrex::Real
-
162  sedge2(const amrex::Real sm2,
-
163  const amrex::Real sm1,
-
164  const amrex::Real s0,
-
165  const amrex::Real sp1,
-
166  const amrex::Real sp2)
-
167  {
-
168  constexpr auto eps = amrex::Real(1.0e-6);
-
169 
-
170  const amrex::Real beta1 =
-
171  amrex::Real(13.0) / amrex::Real(12.0) * (sm2 - amrex::Real(2.0) * sm1 + s0) * (sm2 - amrex::Real(2.0) * sm1 + s0) +
-
172  amrex::Real(0.25) * (sm2 - amrex::Real(4.0) * sm1 + amrex::Real(3.0) * s0) * (sm2 - amrex::Real(4.0) * sm1 + amrex::Real(3.0) * s0);
-
173  const amrex::Real beta2 =
-
174  amrex::Real(13.0) / amrex::Real(12.0) * (sm1 - amrex::Real(2.0) * s0 + sp1) * (sm1 - amrex::Real(2.0) * s0 + sp1) +
-
175  amrex::Real(0.25) * (sm1 - sp1) * (sm1 - sp1);
-
176  const amrex::Real beta3 =
-
177  amrex::Real(13.0) / amrex::Real(12.0) * (s0 - amrex::Real(2.0) * sp1 + sp2) * (s0 - amrex::Real(2.0) * sp1 + sp2) +
-
178  amrex::Real(0.25) * (amrex::Real(3.0) * s0 - amrex::Real(4.0) * sp1 + sp2) * (amrex::Real(3.0) * s0 - amrex::Real(4.0) * sp1 + sp2);
-
179 
-
180  const amrex::Real t5 = amrex::Math::abs(beta3 - beta1);
-
181  const amrex::Real omega1 = amrex::Real(0.1) * (amrex::Real(1.0) + t5 / (eps + beta1));
-
182  const amrex::Real omega2 = amrex::Real(0.6) * (amrex::Real(1.0) + t5 / (eps + beta2));
-
183  const amrex::Real omega3 = amrex::Real(0.3) * (amrex::Real(1.0) + t5 / (eps + beta3));
-
184 
-
185  const amrex::Real omega = omega1 + omega2 + omega3;
-
186 
-
187  const amrex::Real v_1 = amrex::Real(2.0) * sm2 - amrex::Real(7.0) * sm1 + amrex::Real(11.0) * s0;
-
188  const amrex::Real v_2 = -sm1 + amrex::Real(5.0) * s0 + amrex::Real(2.0) * sp1;
-
189  const amrex::Real v_3 = amrex::Real(2.0) * s0 + amrex::Real(5.0) * sp1 - sp2;
-
190 
-
191  return (omega1 * v_1 + omega2 * v_2 + omega3 * v_3) / (amrex::Real(6.0) * omega);
-
192  }
-
193 
-
194  [[nodiscard]] AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
-
195  static amrex::Real
-
196  sedge1(const amrex::Real sm2,
-
197  const amrex::Real sm1,
-
198  const amrex::Real s0,
-
199  const amrex::Real sp1,
-
200  const amrex::Real sp2)
-
201  {
-
202  return sedge2(sp2,sp1,s0,sm1,sm2); // NOLINT(readability-suspicious-call-argument)
-
203  }
-
204 
-
205  [[nodiscard]] AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
-
206  static amrex::GpuTuple<amrex::Real,amrex::Real>
-
207  sm_sp(const amrex::Real /*s0*/,
-
208  const amrex::Real sedge1,
-
209  const amrex::Real sedge2)
-
210  {
-
211  return amrex::makeTuple(sedge1, sedge2);
-
212  }
-
213 };
-
214 
-
215 struct weno_js {
-
216 
-
217  static constexpr bool do_limiting = false;
-
218 
-
219  [[nodiscard]] AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
-
220  static amrex::Real
-
221  sedge2(const amrex::Real sm2,
-
222  const amrex::Real sm1,
-
223  const amrex::Real s0,
-
224  const amrex::Real sp1,
-
225  const amrex::Real sp2)
-
226  {
-
227  constexpr auto eps = amrex::Real(1.0e-6);
-
228 
-
229  const amrex::Real beta1 =
-
230  amrex::Real(13.0) / amrex::Real(12.0) * (sm2 - amrex::Real(2.0) * sm1 + s0) *
-
231  (sm2 - amrex::Real(2.0) * sm1 + s0) +
-
232  amrex::Real(0.25) * (sm2 - amrex::Real(4.0) * sm1 + amrex::Real(3.0) * s0) *
-
233  (sm2 - amrex::Real(4.0) * sm1 + amrex::Real(3.0) * s0);
-
234  const amrex::Real beta2 =
-
235  amrex::Real(13.0) / amrex::Real(12.0) * (sm1 - amrex::Real(2.0) * s0 + sp1) *
-
236  (sm1 - amrex::Real(2.0) * s0 + sp1) +
-
237  amrex::Real(0.25) * (sm1 - sp1) * (sm1 - sp1);
-
238  const amrex::Real beta3 =
-
239  amrex::Real(13.0) / amrex::Real(12.0) * (s0 - amrex::Real(2.0) * sp1 + sp2) *
-
240  (s0 - amrex::Real(2.0) * sp1 + sp2) +
-
241  amrex::Real(0.25) * (amrex::Real(3.0) * s0 - amrex::Real(4.0) * sp1 + sp2) *
-
242  (amrex::Real(3.0) * s0 - amrex::Real(4.0) * sp1 + sp2);
-
243 
-
244  const amrex::Real omega1 = amrex::Real(0.1) / (eps + beta1);
-
245  const amrex::Real omega2 = amrex::Real(0.6) / (eps + beta2);
-
246  const amrex::Real omega3 = amrex::Real(0.3) / (eps + beta3);
-
247 
-
248  const amrex::Real omega = omega1 + omega2 + omega3;
-
249 
-
250  const amrex::Real v_1 = amrex::Real(2.0) * sm2 - amrex::Real(7.0) * sm1 + amrex::Real(11.0) * s0;
-
251  const amrex::Real v_2 = -sm1 + amrex::Real(5.0) * s0 + amrex::Real(2.0) * sp1;
-
252  const amrex::Real v_3 = amrex::Real(2.0) * s0 + amrex::Real(5.0) * sp1 - sp2;
-
253 
-
254  return (omega1 * v_1 + omega2 * v_2 + omega3 * v_3) / (amrex::Real(6.0) * omega);
-
255  }
-
256 
-
257  [[nodiscard]] AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
-
258  static amrex::Real
-
259  sedge1(const amrex::Real sm2,
-
260  const amrex::Real sm1,
-
261  const amrex::Real s0,
-
262  const amrex::Real sp1,
-
263  const amrex::Real sp2)
-
264  {
-
265  return sedge2(sp2,sp1,s0,sm1,sm2); // NOLINT(readability-suspicious-call-argument)
-
266  }
-
267 
-
268  [[nodiscard]] AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
-
269  static amrex::GpuTuple<amrex::Real,amrex::Real>
-
270  sm_sp(const amrex::Real /*s0*/,
-
271  const amrex::Real sedge1,
-
272  const amrex::Real sedge2)
-
273  {
-
274  return amrex::makeTuple(sedge1, sedge2);
-
275  }
-
276 };
-
277 
-
278 template <typename Limiter>
-
279 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
-
280 void SetXBCs ( const int i, const int j, const int k, const int n,
-
281  amrex::Real &sm, amrex::Real &sp,
-
282  amrex::Real &sedge1, amrex::Real &sedge2,
-
283  const amrex::Array4<const amrex::Real> &s,
-
284  const int bclo, const int bchi,
-
285  const int domlo, const int domhi)
-
286 {
-
287  using namespace amrex;
-
288 
-
289  if (bclo == BCType::ext_dir || bclo == BCType::hoextrap)
-
290  {
-
291  if (i == domlo)
-
292  {
-
293  sedge2 = -amrex::Real(0.2)*s(domlo-1,j,k,n) + amrex::Real(0.75)*s(domlo,j, k, n)
-
294  +amrex::Real(0.5)*s(domlo+1,j,k,n) - amrex::Real(0.05)*s(domlo+2,j,k,n);
-
295  if constexpr (Limiter::do_limiting) {
-
296  sedge2 = amrex::max(sedge2, amrex::min(s(domlo+1,j,k,n), s(domlo,j,k,n)));
-
297  sedge2 = amrex::min(sedge2, amrex::max(s(domlo+1,j,k,n), s(domlo,j,k,n)));
-
298  }
-
299 
-
300  sm = s(domlo-1,j,k,n);
-
301  sp = sedge2;
+
117 
+
118  }
+
119 
+
120  [[nodiscard]] AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
+
121  static amrex::GpuTuple<amrex::Real,amrex::Real>
+
122  sm_sp(const amrex::Real s0,
+
123  const amrex::Real sedge1,
+
124  const amrex::Real sedge2)
+
125  {
+
126  amrex::Real sm_ = sedge1;
+
127  amrex::Real sp_ = sedge2;
+
128 
+
129  if ((sedge2-s0)*(s0-sedge1) < 0.0) {
+
130  sm_ = s0;
+
131  sp_ = s0;
+
132  } else if (amrex::Math::abs(sedge2-s0) >= amrex::Real(2.0)*amrex::Math::abs(sedge1-s0)) {
+
133  sp_ = amrex::Real(3.0)*s0 - amrex::Real(2.0)*sedge1;
+
134  } else if (amrex::Math::abs(sedge1-s0) >= amrex::Real(2.0)*amrex::Math::abs(sedge2-s0)) {
+
135  sm_ = amrex::Real(3.0)*s0 - amrex::Real(2.0)*sedge2;
+
136  }
+
137  return amrex::makeTuple(sm_,sp_);
+
138 
+
139  // this might be the correct way to do this in case the else if are both == 0.0
+
140  // could also change the >= to just > for each
+
141 // if ((sedge2-s0)*(s0-sedge1) < amrex::Real(0.0)) {
+
142 // return amrex::makeTuple(s0,s0);
+
143 // }
+
144 // amrex::Real sm_ = sedge1;
+
145 // amrex::Real sp_ = sedge2;
+
146 // if (amrex::Math::abs(sedge2-s0) >= amrex::Real(2.0)*amrex::Math::abs(sedge1-s0)) {
+
147 // sp_ = amrex::Real(3.0)*s0 - amrex::Real(2.0)*sedge1;
+
148 // }
+
149 // if (amrex::Math::abs(sedge1-s0) >= amrex::Real(2.0)*amrex::Math::abs(sedge2-s0)) {
+
150 // sm_ = amrex::Real(3.0)*s0 - amrex::Real(2.0)*sedge2;
+
151 // }
+
152 // return amrex::makeTuple(sm_,sp_);
+
153 
+
154  }
+
155 };
+
156 
+
157 struct wenoz {
+
158 
+
159  static constexpr bool do_limiting = false;
+
160 
+
161  [[nodiscard]] AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
+
162  static amrex::Real
+
163  sedge2(const amrex::Real sm2,
+
164  const amrex::Real sm1,
+
165  const amrex::Real s0,
+
166  const amrex::Real sp1,
+
167  const amrex::Real sp2)
+
168  {
+
169  constexpr auto eps = amrex::Real(1.0e-6);
+
170 
+
171  const amrex::Real beta1 =
+
172  amrex::Real(13.0) / amrex::Real(12.0) * (sm2 - amrex::Real(2.0) * sm1 + s0) * (sm2 - amrex::Real(2.0) * sm1 + s0) +
+
173  amrex::Real(0.25) * (sm2 - amrex::Real(4.0) * sm1 + amrex::Real(3.0) * s0) * (sm2 - amrex::Real(4.0) * sm1 + amrex::Real(3.0) * s0);
+
174  const amrex::Real beta2 =
+
175  amrex::Real(13.0) / amrex::Real(12.0) * (sm1 - amrex::Real(2.0) * s0 + sp1) * (sm1 - amrex::Real(2.0) * s0 + sp1) +
+
176  amrex::Real(0.25) * (sm1 - sp1) * (sm1 - sp1);
+
177  const amrex::Real beta3 =
+
178  amrex::Real(13.0) / amrex::Real(12.0) * (s0 - amrex::Real(2.0) * sp1 + sp2) * (s0 - amrex::Real(2.0) * sp1 + sp2) +
+
179  amrex::Real(0.25) * (amrex::Real(3.0) * s0 - amrex::Real(4.0) * sp1 + sp2) * (amrex::Real(3.0) * s0 - amrex::Real(4.0) * sp1 + sp2);
+
180 
+
181  const amrex::Real t5 = amrex::Math::abs(beta3 - beta1);
+
182  const amrex::Real omega1 = amrex::Real(0.1) * (amrex::Real(1.0) + t5 / (eps + beta1));
+
183  const amrex::Real omega2 = amrex::Real(0.6) * (amrex::Real(1.0) + t5 / (eps + beta2));
+
184  const amrex::Real omega3 = amrex::Real(0.3) * (amrex::Real(1.0) + t5 / (eps + beta3));
+
185 
+
186  const amrex::Real omega = omega1 + omega2 + omega3;
+
187 
+
188  const amrex::Real v_1 = amrex::Real(2.0) * sm2 - amrex::Real(7.0) * sm1 + amrex::Real(11.0) * s0;
+
189  const amrex::Real v_2 = -sm1 + amrex::Real(5.0) * s0 + amrex::Real(2.0) * sp1;
+
190  const amrex::Real v_3 = amrex::Real(2.0) * s0 + amrex::Real(5.0) * sp1 - sp2;
+
191 
+
192  return (omega1 * v_1 + omega2 * v_2 + omega3 * v_3) / (amrex::Real(6.0) * omega);
+
193  }
+
194 
+
195  [[nodiscard]] AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
+
196  static amrex::Real
+
197  sedge1(const amrex::Real sm2,
+
198  const amrex::Real sm1,
+
199  const amrex::Real s0,
+
200  const amrex::Real sp1,
+
201  const amrex::Real sp2)
+
202  {
+
203  return sedge2(sp2,sp1,s0,sm1,sm2); // NOLINT(readability-suspicious-call-argument)
+
204  }
+
205 
+
206  [[nodiscard]] AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
+
207  static amrex::GpuTuple<amrex::Real,amrex::Real>
+
208  sm_sp(const amrex::Real /*s0*/,
+
209  const amrex::Real sedge1,
+
210  const amrex::Real sedge2)
+
211  {
+
212  return amrex::makeTuple(sedge1, sedge2);
+
213  }
+
214 };
+
215 
+
216 struct weno_js {
+
217 
+
218  static constexpr bool do_limiting = false;
+
219 
+
220  [[nodiscard]] AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
+
221  static amrex::Real
+
222  sedge2(const amrex::Real sm2,
+
223  const amrex::Real sm1,
+
224  const amrex::Real s0,
+
225  const amrex::Real sp1,
+
226  const amrex::Real sp2)
+
227  {
+
228  constexpr auto eps = amrex::Real(1.0e-6);
+
229 
+
230  const amrex::Real beta1 =
+
231  amrex::Real(13.0) / amrex::Real(12.0) * (sm2 - amrex::Real(2.0) * sm1 + s0) *
+
232  (sm2 - amrex::Real(2.0) * sm1 + s0) +
+
233  amrex::Real(0.25) * (sm2 - amrex::Real(4.0) * sm1 + amrex::Real(3.0) * s0) *
+
234  (sm2 - amrex::Real(4.0) * sm1 + amrex::Real(3.0) * s0);
+
235  const amrex::Real beta2 =
+
236  amrex::Real(13.0) / amrex::Real(12.0) * (sm1 - amrex::Real(2.0) * s0 + sp1) *
+
237  (sm1 - amrex::Real(2.0) * s0 + sp1) +
+
238  amrex::Real(0.25) * (sm1 - sp1) * (sm1 - sp1);
+
239  const amrex::Real beta3 =
+
240  amrex::Real(13.0) / amrex::Real(12.0) * (s0 - amrex::Real(2.0) * sp1 + sp2) *
+
241  (s0 - amrex::Real(2.0) * sp1 + sp2) +
+
242  amrex::Real(0.25) * (amrex::Real(3.0) * s0 - amrex::Real(4.0) * sp1 + sp2) *
+
243  (amrex::Real(3.0) * s0 - amrex::Real(4.0) * sp1 + sp2);
+
244 
+
245  const amrex::Real omega1 = amrex::Real(0.1) / (eps + beta1);
+
246  const amrex::Real omega2 = amrex::Real(0.6) / (eps + beta2);
+
247  const amrex::Real omega3 = amrex::Real(0.3) / (eps + beta3);
+
248 
+
249  const amrex::Real omega = omega1 + omega2 + omega3;
+
250 
+
251  const amrex::Real v_1 = amrex::Real(2.0) * sm2 - amrex::Real(7.0) * sm1 + amrex::Real(11.0) * s0;
+
252  const amrex::Real v_2 = -sm1 + amrex::Real(5.0) * s0 + amrex::Real(2.0) * sp1;
+
253  const amrex::Real v_3 = amrex::Real(2.0) * s0 + amrex::Real(5.0) * sp1 - sp2;
+
254 
+
255  return (omega1 * v_1 + omega2 * v_2 + omega3 * v_3) / (amrex::Real(6.0) * omega);
+
256  }
+
257 
+
258  [[nodiscard]] AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
+
259  static amrex::Real
+
260  sedge1(const amrex::Real sm2,
+
261  const amrex::Real sm1,
+
262  const amrex::Real s0,
+
263  const amrex::Real sp1,
+
264  const amrex::Real sp2)
+
265  {
+
266  return sedge2(sp2,sp1,s0,sm1,sm2); // NOLINT(readability-suspicious-call-argument)
+
267  }
+
268 
+
269  [[nodiscard]] AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
+
270  static amrex::GpuTuple<amrex::Real,amrex::Real>
+
271  sm_sp(const amrex::Real /*s0*/,
+
272  const amrex::Real sedge1,
+
273  const amrex::Real sedge2)
+
274  {
+
275  return amrex::makeTuple(sedge1, sedge2);
+
276  }
+
277 };
+
278 
+
279 template <typename Limiter>
+
280 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
+
281 void SetXBCs ( const int i, const int j, const int k, const int n,
+
282  amrex::Real &sm, amrex::Real &sp,
+
283  amrex::Real &sedge1, amrex::Real &sedge2,
+
284  const amrex::Array4<const amrex::Real> &s,
+
285  const amrex::Real velm, const amrex::Real velp,
+
286  const int bclo, const int bchi,
+
287  const int domlo, const int domhi)
+
288 {
+
289  using namespace amrex;
+
290 
+
291  if ( (bclo == BCType::ext_dir) || (bclo == BCType::hoextrap) ||
+
292  (bclo == BCType::direction_dependent && velp >= 0.0) )
+
293  {
+
294  if (i == domlo)
+
295  {
+
296  sedge2 = -amrex::Real(0.2)*s(domlo-1,j,k,n) + amrex::Real(0.75)*s(domlo,j, k, n)
+
297  +amrex::Real(0.5)*s(domlo+1,j,k,n) - amrex::Real(0.05)*s(domlo+2,j,k,n);
+
298  if constexpr (Limiter::do_limiting) {
+
299  sedge2 = amrex::max(sedge2, amrex::min(s(domlo+1,j,k,n), s(domlo,j,k,n)));
+
300  sedge2 = amrex::min(sedge2, amrex::max(s(domlo+1,j,k,n), s(domlo,j,k,n)));
+
301  }
302 
-
303  } else if (i == domlo+1) {
-
304 
-
305  sedge1 = -amrex::Real(0.2)*s(domlo-1,j,k,n) + amrex::Real(0.75)*s(domlo ,j,k,n)
-
306  + amrex::Real(0.5)*s(domlo+1,j,k,n) - amrex::Real(0.05)*s(domlo+2,j,k,n);
-
307  if constexpr (Limiter::do_limiting) {
-
308  sedge1 = amrex::max(sedge1, amrex::min(s(domlo+1,j,k,n), s(domlo,j,k,n)));
-
309  sedge1 = amrex::min(sedge1, amrex::max(s(domlo+1,j,k,n), s(domlo,j,k,n)));
-
310  }
-
311 
-
312  sp = sedge2;
-
313  sm = sedge1;
+
303  sm = s(domlo-1,j,k,n);
+
304  sp = sedge2;
+
305 
+
306  } else if (i == domlo+1) {
+
307 
+
308  sedge1 = -amrex::Real(0.2)*s(domlo-1,j,k,n) + amrex::Real(0.75)*s(domlo ,j,k,n)
+
309  + amrex::Real(0.5)*s(domlo+1,j,k,n) - amrex::Real(0.05)*s(domlo+2,j,k,n);
+
310  if constexpr (Limiter::do_limiting) {
+
311  sedge1 = amrex::max(sedge1, amrex::min(s(domlo+1,j,k,n), s(domlo,j,k,n)));
+
312  sedge1 = amrex::min(sedge1, amrex::max(s(domlo+1,j,k,n), s(domlo,j,k,n)));
+
313  }
314 
-
315  if constexpr (Limiter::do_limiting) {
-
316  if ( (sp - s(domlo+1,j,k,n))*(s(domlo+1,j,k,n) - sm) <= amrex::Real(0.0))
-
317  {
-
318  sp = s(domlo+1,j,k,n);
-
319  sm = s(domlo+1,j,k,n);
-
320  } else if(amrex::Math::abs(sp - s(domlo+1,j,k,n)) >= amrex::Real(2.0)*amrex::Math::abs(sm - s(domlo+1,j,k,n))) {
-
321  sp = amrex::Real(3.0)*s(domlo+1,j,k,n) - amrex::Real(2.0)*sm;
-
322  } else if(amrex::Math::abs(sm - s(domlo+1,j,k,n)) >= amrex::Real(2.0)*amrex::Math::abs(sp - s(domlo+1,j,k,n))) {
-
323  sm = amrex::Real(3.0)*s(domlo+1,j,k,n) - amrex::Real(2.0)*sp;
-
324  }
-
325  }
-
326  }
-
327  }
-
328 
-
329  if (bchi == BCType::ext_dir || bchi == BCType::hoextrap)
-
330  {
-
331  if (i == domhi)
-
332  {
-
333  sedge1 = -amrex::Real(0.2)*s(domhi+1,j,k,n) + amrex::Real(0.75)*s(domhi,j,k, n)
-
334  +amrex::Real(0.5)*s(domhi-1,j,k,n) - amrex::Real(0.05)*s(domhi-2,j,k,n);
-
335  if constexpr (Limiter::do_limiting) {
-
336  sedge1 = amrex::max(sedge1, amrex::min(s(domhi-1,j,k,n), s(domhi,j,k,n)));
-
337  sedge1 = amrex::min(sedge1, amrex::max(s(domhi-1,j,k,n), s(domhi,j,k,n)));
-
338  }
-
339 
-
340  sp = s(domhi+1,j,k,n);
-
341  sm = sedge1;
-
342 
-
343  } else if (i == domhi-1) {
-
344 
-
345  sedge2 = -amrex::Real(0.2)*s(domhi+1,j,k,n) + amrex::Real(0.75)*s(domhi ,j,k,n)
-
346  +amrex::Real(0.5)*s(domhi-1,j,k,n) - amrex::Real(0.05)*s(domhi-2,j,k,n);
-
347  if constexpr (Limiter::do_limiting) {
-
348  sedge2 = amrex::max(sedge2, amrex::min(s(domhi-1,j,k,n), s(domhi,j,k,n)));
-
349  sedge2 = amrex::min(sedge2, amrex::max(s(domhi-1,j,k,n), s(domhi,j,k,n)));
-
350  }
-
351 
-
352  sp = sedge2;
-
353  sm = sedge1;
-
354 
-
355  if constexpr (Limiter::do_limiting) {
-
356  if( (sp - s(domhi-1,j,k,n))*(s(domhi-1,j,k,n) - sm) <= amrex::Real(0.0))
-
357  {
-
358  sp = s(domhi-1,j,k,n);
-
359  sm = s(domhi-1,j,k,n);
-
360  } else if(amrex::Math::abs(sp - s(domhi-1,j,k,n)) >= 2.*amrex::Math::abs(sm - s(domhi-1,j,k,n))) {
-
361  sp = amrex::Real(3.0)*s(domhi-1,j,k,n) - amrex::Real(2.0)*sm;
-
362  } else if(amrex::Math::abs(sm - s(domhi-1,j,k,n)) >= 2.*amrex::Math::abs(sp - s(domhi-1,j,k,n))) {
-
363  sm = amrex::Real(3.0)*s(domhi-1,j,k,n) - amrex::Real(2.0)*sp;
-
364  }
-
365  }
-
366  }
-
367  }
-
368 }
-
369 
-
370 template <typename Limiter>
-
371 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
-
372 void SetYBCs ( const int i, const int j, const int k, const int n,
-
373  amrex::Real &sm, amrex::Real &sp,
-
374  amrex::Real &sedge1, amrex::Real &sedge2,
-
375  const amrex::Array4<const amrex::Real> &s,
-
376  const int bclo, const int bchi,
-
377  const int domlo, const int domhi)
-
378 {
-
379  using namespace amrex;
-
380 
-
381  if (bclo == BCType::ext_dir || bclo == BCType::hoextrap)
-
382  {
-
383  if (j == domlo)
-
384  {
-
385  sedge2 = -amrex::Real(0.2)*s(i,domlo-1,k,n) + amrex::Real(0.75)*s(i,domlo ,k,n)
-
386  +amrex::Real(0.5)*s(i,domlo+1,k,n) - amrex::Real(0.05)*s(i,domlo+2,k,n);
-
387  if constexpr (Limiter::do_limiting) {
-
388  sedge2 = amrex::max(sedge2, amrex::min(s(i,domlo+1,k,n), s(i,domlo,k,n)));
-
389  sedge2 = amrex::min(sedge2, amrex::max(s(i,domlo+1,k,n), s(i,domlo,k,n)));
-
390  }
-
391 
-
392  sm = s(i,domlo-1,k,n);
-
393  sp = sedge2;
-
394 
-
395  } else if (j == domlo+1) {
-
396 
-
397  sedge1 = -amrex::Real(0.2)*s(i,domlo-1,k,n) + amrex::Real(0.75)*s(i,domlo ,k,n)
-
398  +amrex::Real(0.5)*s(i,domlo+1,k,n) - amrex::Real(0.05)*s(i,domlo+2,k,n);
-
399  if constexpr (Limiter::do_limiting) {
-
400  sedge1 = amrex::max(sedge1, amrex::min(s(i,domlo+1,k,n), s(i,domlo,k,n)));
-
401  sedge1 = amrex::min(sedge1, amrex::max(s(i,domlo+1,k,n), s(i,domlo,k,n)));
-
402  }
-
403 
-
404  sp = sedge2;
-
405  sm = sedge1;
-
406 
-
407  if constexpr (Limiter::do_limiting) {
-
408  if ( (sp - s(i,domlo+1,k,n))*(s(i,domlo+1,k,n) - sm) <= amrex::Real(0.0))
-
409  {
-
410  sp = s(i,domlo+1,k,n);
-
411  sm = s(i,domlo+1,k,n);
-
412  } else if(amrex::Math::abs(sp - s(i,domlo+1,k,n)) >= amrex::Real(2.0)*amrex::Math::abs(sm - s(i,domlo+1,k,n))) {
-
413  sp = amrex::Real(3.0)*s(i,domlo+1,k,n) - amrex::Real(2.0)*sm;
-
414  } else if(amrex::Math::abs(sm - s(i,domlo+1,k,n)) >= amrex::Real(2.0)*amrex::Math::abs(sp - s(i,domlo+1,k,n))) {
-
415  sm = amrex::Real(3.0)*s(i,domlo+1,k,n) - amrex::Real(2.0)*sp;
-
416  }
-
417  }
-
418  }
-
419  }
-
420 
-
421  if (bchi == BCType::ext_dir || bchi == BCType::hoextrap)
-
422  {
-
423  if (j == domhi)
-
424  {
-
425  sedge1 = -amrex::Real(0.2)*s(i,domhi+1,k,n) + amrex::Real(0.75)*s(i,domhi ,k,n)
-
426  +amrex::Real(0.5)*s(i,domhi-1,k,n) - amrex::Real(0.05)*s(i,domhi-2,k,n);
-
427  if constexpr (Limiter::do_limiting) {
-
428  sedge1 = amrex::max(sedge1, amrex::min(s(i,domhi-1,k,n), s(i,domhi,k,n)));
-
429  sedge1 = amrex::min(sedge1, amrex::max(s(i,domhi-1,k,n), s(i,domhi,k,n)));
-
430  }
-
431 
-
432  sp = s(i,domhi+1,k, n);
-
433  sm = sedge1;
-
434 
-
435  } else if (j == domhi-1) {
-
436 
-
437  sedge2 = -amrex::Real(0.2)*s(i,domhi+1,k,n) + amrex::Real(0.75)*s(i,domhi ,k,n)
-
438  +amrex::Real(0.5)*s(i,domhi-1,k,n) - amrex::Real(0.05)*s(i,domhi-2,k,n);
-
439  if constexpr (Limiter::do_limiting) {
-
440  sedge2 = amrex::max(sedge2, amrex::min(s(i,domhi-1,k,n), s(i,domhi,k,n)));
-
441  sedge2 = amrex::min(sedge2, amrex::max(s(i,domhi-1,k,n), s(i,domhi,k,n)));
-
442  }
+
315  sp = sedge2;
+
316  sm = sedge1;
+
317 
+
318  if constexpr (Limiter::do_limiting) {
+
319  if ( (sp - s(domlo+1,j,k,n))*(s(domlo+1,j,k,n) - sm) <= amrex::Real(0.0))
+
320  {
+
321  sp = s(domlo+1,j,k,n);
+
322  sm = s(domlo+1,j,k,n);
+
323  } else if(amrex::Math::abs(sp - s(domlo+1,j,k,n)) >= amrex::Real(2.0)*amrex::Math::abs(sm - s(domlo+1,j,k,n))) {
+
324  sp = amrex::Real(3.0)*s(domlo+1,j,k,n) - amrex::Real(2.0)*sm;
+
325  } else if(amrex::Math::abs(sm - s(domlo+1,j,k,n)) >= amrex::Real(2.0)*amrex::Math::abs(sp - s(domlo+1,j,k,n))) {
+
326  sm = amrex::Real(3.0)*s(domlo+1,j,k,n) - amrex::Real(2.0)*sp;
+
327  }
+
328  }
+
329  }
+
330  }
+
331 
+
332  if ( (bchi == BCType::ext_dir) || (bchi == BCType::hoextrap) ||
+
333  (bchi == BCType::direction_dependent && velm <= 0.0) )
+
334  {
+
335  if (i == domhi)
+
336  {
+
337  sedge1 = -amrex::Real(0.2)*s(domhi+1,j,k,n) + amrex::Real(0.75)*s(domhi,j,k, n)
+
338  +amrex::Real(0.5)*s(domhi-1,j,k,n) - amrex::Real(0.05)*s(domhi-2,j,k,n);
+
339  if constexpr (Limiter::do_limiting) {
+
340  sedge1 = amrex::max(sedge1, amrex::min(s(domhi-1,j,k,n), s(domhi,j,k,n)));
+
341  sedge1 = amrex::min(sedge1, amrex::max(s(domhi-1,j,k,n), s(domhi,j,k,n)));
+
342  }
+
343 
+
344  sp = s(domhi+1,j,k,n);
+
345  sm = sedge1;
+
346 
+
347  } else if (i == domhi-1) {
+
348 
+
349  sedge2 = -amrex::Real(0.2)*s(domhi+1,j,k,n) + amrex::Real(0.75)*s(domhi ,j,k,n)
+
350  +amrex::Real(0.5)*s(domhi-1,j,k,n) - amrex::Real(0.05)*s(domhi-2,j,k,n);
+
351  if constexpr (Limiter::do_limiting) {
+
352  sedge2 = amrex::max(sedge2, amrex::min(s(domhi-1,j,k,n), s(domhi,j,k,n)));
+
353  sedge2 = amrex::min(sedge2, amrex::max(s(domhi-1,j,k,n), s(domhi,j,k,n)));
+
354  }
+
355 
+
356  sp = sedge2;
+
357  sm = sedge1;
+
358 
+
359  if constexpr (Limiter::do_limiting) {
+
360  if( (sp - s(domhi-1,j,k,n))*(s(domhi-1,j,k,n) - sm) <= amrex::Real(0.0))
+
361  {
+
362  sp = s(domhi-1,j,k,n);
+
363  sm = s(domhi-1,j,k,n);
+
364  } else if(amrex::Math::abs(sp - s(domhi-1,j,k,n)) >= 2.*amrex::Math::abs(sm - s(domhi-1,j,k,n))) {
+
365  sp = amrex::Real(3.0)*s(domhi-1,j,k,n) - amrex::Real(2.0)*sm;
+
366  } else if(amrex::Math::abs(sm - s(domhi-1,j,k,n)) >= 2.*amrex::Math::abs(sp - s(domhi-1,j,k,n))) {
+
367  sm = amrex::Real(3.0)*s(domhi-1,j,k,n) - amrex::Real(2.0)*sp;
+
368  }
+
369  }
+
370  }
+
371  }
+
372 }
+
373 
+
374 template <typename Limiter>
+
375 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
+
376 void SetYBCs ( const int i, const int j, const int k, const int n,
+
377  amrex::Real &sm, amrex::Real &sp,
+
378  amrex::Real &sedge1, amrex::Real &sedge2,
+
379  const amrex::Array4<const amrex::Real> &s,
+
380  const amrex::Real velm, const amrex::Real velp,
+
381  const int bclo, const int bchi,
+
382  const int domlo, const int domhi)
+
383 {
+
384  using namespace amrex;
+
385 
+
386  if ( (bclo == BCType::ext_dir) || (bclo == BCType::hoextrap) ||
+
387  (bclo == BCType::direction_dependent && velm >= 0.0) )
+
388  {
+
389  if (j == domlo)
+
390  {
+
391  sedge2 = -amrex::Real(0.2)*s(i,domlo-1,k,n) + amrex::Real(0.75)*s(i,domlo ,k,n)
+
392  +amrex::Real(0.5)*s(i,domlo+1,k,n) - amrex::Real(0.05)*s(i,domlo+2,k,n);
+
393  if constexpr (Limiter::do_limiting) {
+
394  sedge2 = amrex::max(sedge2, amrex::min(s(i,domlo+1,k,n), s(i,domlo,k,n)));
+
395  sedge2 = amrex::min(sedge2, amrex::max(s(i,domlo+1,k,n), s(i,domlo,k,n)));
+
396  }
+
397 
+
398  sm = s(i,domlo-1,k,n);
+
399  sp = sedge2;
+
400 
+
401  } else if (j == domlo+1) {
+
402 
+
403  sedge1 = -amrex::Real(0.2)*s(i,domlo-1,k,n) + amrex::Real(0.75)*s(i,domlo ,k,n)
+
404  +amrex::Real(0.5)*s(i,domlo+1,k,n) - amrex::Real(0.05)*s(i,domlo+2,k,n);
+
405  if constexpr (Limiter::do_limiting) {
+
406  sedge1 = amrex::max(sedge1, amrex::min(s(i,domlo+1,k,n), s(i,domlo,k,n)));
+
407  sedge1 = amrex::min(sedge1, amrex::max(s(i,domlo+1,k,n), s(i,domlo,k,n)));
+
408  }
+
409 
+
410  sp = sedge2;
+
411  sm = sedge1;
+
412 
+
413  if constexpr (Limiter::do_limiting) {
+
414  if ( (sp - s(i,domlo+1,k,n))*(s(i,domlo+1,k,n) - sm) <= amrex::Real(0.0))
+
415  {
+
416  sp = s(i,domlo+1,k,n);
+
417  sm = s(i,domlo+1,k,n);
+
418  } else if(amrex::Math::abs(sp - s(i,domlo+1,k,n)) >= amrex::Real(2.0)*amrex::Math::abs(sm - s(i,domlo+1,k,n))) {
+
419  sp = amrex::Real(3.0)*s(i,domlo+1,k,n) - amrex::Real(2.0)*sm;
+
420  } else if(amrex::Math::abs(sm - s(i,domlo+1,k,n)) >= amrex::Real(2.0)*amrex::Math::abs(sp - s(i,domlo+1,k,n))) {
+
421  sm = amrex::Real(3.0)*s(i,domlo+1,k,n) - amrex::Real(2.0)*sp;
+
422  }
+
423  }
+
424  }
+
425  }
+
426 
+
427  if ( (bchi == BCType::ext_dir) || (bchi == BCType::hoextrap) ||
+
428  (bchi == BCType::direction_dependent && velp <= 0.0) )
+
429  {
+
430  if (j == domhi)
+
431  {
+
432  sedge1 = -amrex::Real(0.2)*s(i,domhi+1,k,n) + amrex::Real(0.75)*s(i,domhi ,k,n)
+
433  +amrex::Real(0.5)*s(i,domhi-1,k,n) - amrex::Real(0.05)*s(i,domhi-2,k,n);
+
434  if constexpr (Limiter::do_limiting) {
+
435  sedge1 = amrex::max(sedge1, amrex::min(s(i,domhi-1,k,n), s(i,domhi,k,n)));
+
436  sedge1 = amrex::min(sedge1, amrex::max(s(i,domhi-1,k,n), s(i,domhi,k,n)));
+
437  }
+
438 
+
439  sp = s(i,domhi+1,k, n);
+
440  sm = sedge1;
+
441 
+
442  } else if (j == domhi-1) {
443 
-
444  sp = sedge2;
-
445  sm = sedge1;
-
446 
-
447  if constexpr (Limiter::do_limiting) {
-
448  if( (sp - s(i,domhi-1,k,n))*(s(i,domhi-1,k,n) - sm) <= amrex::Real(0.0)){
-
449  sp = s(i,domhi-1,k,n);
-
450  sm = s(i,domhi-1,k,n);
-
451  } else if(amrex::Math::abs(sp - s(i,domhi-1,k,n)) >= 2.*amrex::Math::abs(sm - s(i,domhi-1,k,n))) {
-
452  sp = amrex::Real(3.0)*s(i,domhi-1,k,n) - amrex::Real(2.0)*sm;
-
453  } else if(amrex::Math::abs(sm - s(i,domhi-1,k,n)) >= 2.*amrex::Math::abs(sp - s(i,domhi-1,k,n))) {
-
454  sm = amrex::Real(3.0)*s(i,domhi-1,k,n) - amrex::Real(2.0)*sp;
-
455  }
-
456  }
-
457  }
-
458  }
-
459 }
-
460 
-
461 #if (AMREX_SPACEDIM==3)
-
462 template <typename Limiter>
-
463 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
-
464 void SetZBCs ( const int i, const int j, const int k, const int n,
-
465  amrex::Real &sm, amrex::Real &sp,
-
466  amrex::Real &sedge1, amrex::Real &sedge2,
-
467  const amrex::Array4<const amrex::Real> &s,
-
468  const int bclo, const int bchi,
-
469  const int domlo, const int domhi)
-
470 {
-
471  using namespace amrex;
-
472 
-
473  if (bclo == BCType::ext_dir || bclo == BCType::hoextrap)
-
474  {
-
475  if (k == domlo)
-
476  {
-
477  sedge2 = -amrex::Real(0.2)*s(i,j,domlo-1,n) + amrex::Real(0.75)*s(i,j,domlo ,n)
-
478  +amrex::Real(0.5)*s(i,j,domlo+1,n) - amrex::Real(0.05)*s(i,j,domlo+2,n);
-
479  if constexpr (Limiter::do_limiting) {
-
480  sedge2 = amrex::max(sedge2, amrex::min(s(i,j,domlo+1,n), s(i,j,domlo,n)));
-
481  sedge2 = amrex::min(sedge2, amrex::max(s(i,j,domlo+1,n), s(i,j,domlo,n)));
-
482  }
-
483 
-
484  sm = s(i,j,domlo-1,n);
-
485  sp = sedge2;
-
486 
-
487  } else if (k == domlo+1) {
-
488 
-
489  sedge1 = -amrex::Real(0.2)*s(i,j,domlo-1,n) + amrex::Real(0.75)*s(i,j,domlo ,n)
-
490  +amrex::Real(0.5)*s(i,j,domlo+1,n) - amrex::Real(0.05)*s(i,j,domlo+2,n);
-
491  if constexpr (Limiter::do_limiting) {
-
492  sedge1 = amrex::max(sedge1, amrex::min(s(i,j,domlo+1,n), s(i,j,domlo,n)));
-
493  sedge1 = amrex::min(sedge1, amrex::max(s(i,j,domlo+1,n), s(i,j,domlo,n)));
-
494  }
+
444  sedge2 = -amrex::Real(0.2)*s(i,domhi+1,k,n) + amrex::Real(0.75)*s(i,domhi ,k,n)
+
445  +amrex::Real(0.5)*s(i,domhi-1,k,n) - amrex::Real(0.05)*s(i,domhi-2,k,n);
+
446  if constexpr (Limiter::do_limiting) {
+
447  sedge2 = amrex::max(sedge2, amrex::min(s(i,domhi-1,k,n), s(i,domhi,k,n)));
+
448  sedge2 = amrex::min(sedge2, amrex::max(s(i,domhi-1,k,n), s(i,domhi,k,n)));
+
449  }
+
450 
+
451  sp = sedge2;
+
452  sm = sedge1;
+
453 
+
454  if constexpr (Limiter::do_limiting) {
+
455  if( (sp - s(i,domhi-1,k,n))*(s(i,domhi-1,k,n) - sm) <= amrex::Real(0.0)){
+
456  sp = s(i,domhi-1,k,n);
+
457  sm = s(i,domhi-1,k,n);
+
458  } else if(amrex::Math::abs(sp - s(i,domhi-1,k,n)) >= 2.*amrex::Math::abs(sm - s(i,domhi-1,k,n))) {
+
459  sp = amrex::Real(3.0)*s(i,domhi-1,k,n) - amrex::Real(2.0)*sm;
+
460  } else if(amrex::Math::abs(sm - s(i,domhi-1,k,n)) >= 2.*amrex::Math::abs(sp - s(i,domhi-1,k,n))) {
+
461  sm = amrex::Real(3.0)*s(i,domhi-1,k,n) - amrex::Real(2.0)*sp;
+
462  }
+
463  }
+
464  }
+
465  }
+
466 }
+
467 
+
468 #if (AMREX_SPACEDIM==3)
+
469 template <typename Limiter>
+
470 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
+
471 void SetZBCs ( const int i, const int j, const int k, const int n,
+
472  amrex::Real &sm, amrex::Real &sp,
+
473  amrex::Real &sedge1, amrex::Real &sedge2,
+
474  const amrex::Array4<const amrex::Real> &s,
+
475  const amrex::Real velm, const amrex::Real velp,
+
476  const int bclo, const int bchi,
+
477  const int domlo, const int domhi)
+
478 {
+
479  using namespace amrex;
+
480 
+
481  if ( (bclo == BCType::ext_dir) || (bclo == BCType::hoextrap) ||
+
482  (bclo == BCType::direction_dependent && velm >= 0.0) )
+
483  {
+
484  if (k == domlo)
+
485  {
+
486  sedge2 = -amrex::Real(0.2)*s(i,j,domlo-1,n) + amrex::Real(0.75)*s(i,j,domlo ,n)
+
487  +amrex::Real(0.5)*s(i,j,domlo+1,n) - amrex::Real(0.05)*s(i,j,domlo+2,n);
+
488  if constexpr (Limiter::do_limiting) {
+
489  sedge2 = amrex::max(sedge2, amrex::min(s(i,j,domlo+1,n), s(i,j,domlo,n)));
+
490  sedge2 = amrex::min(sedge2, amrex::max(s(i,j,domlo+1,n), s(i,j,domlo,n)));
+
491  }
+
492 
+
493  sm = s(i,j,domlo-1,n);
+
494  sp = sedge2;
495 
-
496  sp = sedge2;
-
497  sm = sedge1;
-
498 
-
499  if constexpr (Limiter::do_limiting) {
-
500  if ( (sp - s(i,j,domlo+1,n))*(s(i,j,domlo+1,n) - sm) <= 0. )
-
501  {
-
502  sp = s(i,j,domlo+1,n);
-
503  sm = s(i,j,domlo+1,n);
-
504  } else if(amrex::Math::abs(sp - s(i,j,domlo+1,n)) >= 2.*amrex::Math::abs(sm - s(i,j,domlo+1,n))) {
-
505  sp = amrex::Real(3.0)*s(i,j,domlo+1,n) - amrex::Real(2.0)*sm;
-
506  } else if(amrex::Math::abs(sm - s(i,j,domlo+1,n)) >= 2.*amrex::Math::abs(sp - s(i,j,domlo+1,n))) {
-
507  sm = amrex::Real(3.0)*s(i,j,domlo+1,n) - amrex::Real(2.0)*sp;
-
508  }
-
509  }
-
510  }
-
511  }
-
512 
-
513  if (bchi == BCType::ext_dir || bchi == BCType::hoextrap)
-
514  {
-
515  if (k == domhi)
-
516  {
-
517  sedge1 = -amrex::Real(0.2)*s(i,j,domhi+1,n) + amrex::Real(0.75)*s(i,j,domhi ,n)
-
518  +amrex::Real(0.5)*s(i,j,domhi-1,n) - amrex::Real(0.05)*s(i,j,domhi-2,n);
-
519  if constexpr (Limiter::do_limiting) {
-
520  sedge1 = amrex::max(sedge1, amrex::min(s(i,j,domhi-1,n), s(i,j,domhi,n)));
-
521  sedge1 = amrex::min(sedge1, amrex::max(s(i,j,domhi-1,n), s(i,j,domhi,n)));
-
522  }
-
523 
-
524  sp = s(i,j,domhi+1,n);
-
525  sm = sedge1;
-
526 
-
527  } else if (k == domhi-1) {
-
528 
-
529  sedge2 = -amrex::Real(0.2)*s(i,j,domhi+1,n) + amrex::Real(0.75)*s(i,j,domhi ,n)
-
530  +amrex::Real(0.5)*s(i,j,domhi-1,n) - amrex::Real(0.05)*s(i,j,domhi-2,n);
-
531  if constexpr (Limiter::do_limiting) {
-
532  sedge2 = amrex::max(sedge2, amrex::min(s(i,j,domhi-1,n), s(i,j,domhi,n)));
-
533  sedge2 = amrex::min(sedge2, amrex::max(s(i,j,domhi-1,n), s(i,j,domhi,n)));
-
534  }
-
535 
-
536  sp = sedge2;
-
537  sm = sedge1;
+
496  } else if (k == domlo+1) {
+
497 
+
498  sedge1 = -amrex::Real(0.2)*s(i,j,domlo-1,n) + amrex::Real(0.75)*s(i,j,domlo ,n)
+
499  +amrex::Real(0.5)*s(i,j,domlo+1,n) - amrex::Real(0.05)*s(i,j,domlo+2,n);
+
500  if constexpr (Limiter::do_limiting) {
+
501  sedge1 = amrex::max(sedge1, amrex::min(s(i,j,domlo+1,n), s(i,j,domlo,n)));
+
502  sedge1 = amrex::min(sedge1, amrex::max(s(i,j,domlo+1,n), s(i,j,domlo,n)));
+
503  }
+
504 
+
505  sp = sedge2;
+
506  sm = sedge1;
+
507 
+
508  if constexpr (Limiter::do_limiting) {
+
509  if ( (sp - s(i,j,domlo+1,n))*(s(i,j,domlo+1,n) - sm) <= 0. )
+
510  {
+
511  sp = s(i,j,domlo+1,n);
+
512  sm = s(i,j,domlo+1,n);
+
513  } else if(amrex::Math::abs(sp - s(i,j,domlo+1,n)) >= 2.*amrex::Math::abs(sm - s(i,j,domlo+1,n))) {
+
514  sp = amrex::Real(3.0)*s(i,j,domlo+1,n) - amrex::Real(2.0)*sm;
+
515  } else if(amrex::Math::abs(sm - s(i,j,domlo+1,n)) >= 2.*amrex::Math::abs(sp - s(i,j,domlo+1,n))) {
+
516  sm = amrex::Real(3.0)*s(i,j,domlo+1,n) - amrex::Real(2.0)*sp;
+
517  }
+
518  }
+
519  }
+
520  }
+
521 
+
522  if ( (bchi == BCType::ext_dir) || (bchi == BCType::hoextrap) ||
+
523  (bchi == BCType::direction_dependent && velp <= 0.0) )
+
524  {
+
525  if (k == domhi)
+
526  {
+
527  sedge1 = -amrex::Real(0.2)*s(i,j,domhi+1,n) + amrex::Real(0.75)*s(i,j,domhi ,n)
+
528  +amrex::Real(0.5)*s(i,j,domhi-1,n) - amrex::Real(0.05)*s(i,j,domhi-2,n);
+
529  if constexpr (Limiter::do_limiting) {
+
530  sedge1 = amrex::max(sedge1, amrex::min(s(i,j,domhi-1,n), s(i,j,domhi,n)));
+
531  sedge1 = amrex::min(sedge1, amrex::max(s(i,j,domhi-1,n), s(i,j,domhi,n)));
+
532  }
+
533 
+
534  sp = s(i,j,domhi+1,n);
+
535  sm = sedge1;
+
536 
+
537  } else if (k == domhi-1) {
538 
-
539  if constexpr (Limiter::do_limiting) {
-
540  if ( (sp - s(i,j,domhi-1,n))*(s(i,j,domhi-1,n) - sm) <= 0. )
-
541  {
-
542  sp = s(i,j,domhi-1,n);
-
543  sm = s(i,j,domhi-1,n);
-
544  } else if(amrex::Math::abs(sp - s(i,j,domhi-1,n)) >= 2.*amrex::Math::abs(sm - s(i,j,domhi-1,n))) {
-
545  sp = amrex::Real(3.0)*s(i,j,domhi-1,n) - amrex::Real(2.0)*sm;
-
546  } else if(amrex::Math::abs(sm - s(i,j,domhi-1,n)) >= 2.*amrex::Math::abs(sp - s(i,j,domhi-1,n))) {
-
547  sm = amrex::Real(3.0)*s(i,j,domhi-1,n) - amrex::Real(2.0)*sp;
-
548  }
-
549  }
-
550 
-
551  }
-
552  }
-
553 }
-
554 #endif
-
555 
-
556 
-
557 // Right now only ppm type 1 is supported on GPU
-
558 // This version is called before the MAC projection, when we use the cell-centered velocity
-
559 // for upwinding
-
560 template <typename Limiter>
-
561 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
-
562 void PredictVelOnXFace ( const int i, const int j, const int k, const int n,
-
563  const amrex::Real dtdx, const amrex::Real v_ad,
-
564  const amrex::Array4<const amrex::Real> &S,
-
565  const amrex::Array4<amrex::Real> &Im,
-
566  const amrex::Array4<amrex::Real> &Ip,
-
567  const amrex::BCRec bc, const int domlo, const int domhi,
-
568  const Limiter& /*limiter*/)
-
569 {
-
570  constexpr auto half{amrex::Real(0.5)};
-
571  constexpr auto two3rds{amrex::Real(2.0/3.0)};
-
572 
-
573  amrex::Real sm2 = S(i-2,j,k,n);
-
574  amrex::Real sm1 = S(i-1,j,k,n);
-
575  amrex::Real s0 = S(i ,j,k,n);
-
576  amrex::Real sp1 = S(i+1,j,k,n);
-
577  amrex::Real sp2 = S(i+2,j,k,n);
-
578 
-
579  amrex::Real sedge1 = Limiter::sedge1(sm2,sm1,s0,sp1,sp2);
-
580  amrex::Real sedge2 = Limiter::sedge2(sm2,sm1,s0,sp1,sp2);
-
581 
-
582  amrex::Real sm, sp;
-
583  amrex::Tie(sm,sp) = Limiter::sm_sp(s0,sedge1,sedge2);
-
584 
-
585  SetXBCs<Limiter>(i, j, k, n, sm, sp, sedge1, sedge2, S, bc.lo(0), bc.hi(0), domlo, domhi);
-
586 
-
587  amrex::Real s6 = amrex::Real(6.0)*s0 - amrex::Real(3.0)*(sm + sp);
+
539  sedge2 = -amrex::Real(0.2)*s(i,j,domhi+1,n) + amrex::Real(0.75)*s(i,j,domhi ,n)
+
540  +amrex::Real(0.5)*s(i,j,domhi-1,n) - amrex::Real(0.05)*s(i,j,domhi-2,n);
+
541  if constexpr (Limiter::do_limiting) {
+
542  sedge2 = amrex::max(sedge2, amrex::min(s(i,j,domhi-1,n), s(i,j,domhi,n)));
+
543  sedge2 = amrex::min(sedge2, amrex::max(s(i,j,domhi-1,n), s(i,j,domhi,n)));
+
544  }
+
545 
+
546  sp = sedge2;
+
547  sm = sedge1;
+
548 
+
549  if constexpr (Limiter::do_limiting) {
+
550  if ( (sp - s(i,j,domhi-1,n))*(s(i,j,domhi-1,n) - sm) <= 0. )
+
551  {
+
552  sp = s(i,j,domhi-1,n);
+
553  sm = s(i,j,domhi-1,n);
+
554  } else if(amrex::Math::abs(sp - s(i,j,domhi-1,n)) >= 2.*amrex::Math::abs(sm - s(i,j,domhi-1,n))) {
+
555  sp = amrex::Real(3.0)*s(i,j,domhi-1,n) - amrex::Real(2.0)*sm;
+
556  } else if(amrex::Math::abs(sm - s(i,j,domhi-1,n)) >= 2.*amrex::Math::abs(sp - s(i,j,domhi-1,n))) {
+
557  sm = amrex::Real(3.0)*s(i,j,domhi-1,n) - amrex::Real(2.0)*sp;
+
558  }
+
559  }
+
560 
+
561  }
+
562  }
+
563 }
+
564 #endif
+
565 
+
566 
+
567 // Right now only ppm type 1 is supported on GPU
+
568 // This version is called before the MAC projection, when we use the cell-centered velocity
+
569 // for upwinding
+
570 template <typename Limiter>
+
571 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
+
572 void PredictVelOnXFace ( const int i, const int j, const int k, const int n,
+
573  const amrex::Real dtdx, const amrex::Real v_ad,
+
574  const amrex::Array4<const amrex::Real> &S,
+
575  const amrex::Array4<amrex::Real> &Im,
+
576  const amrex::Array4<amrex::Real> &Ip,
+
577  const amrex::BCRec bc, const int domlo, const int domhi,
+
578  const Limiter& /*limiter*/)
+
579 {
+
580  constexpr auto half{amrex::Real(0.5)};
+
581  constexpr auto two3rds{amrex::Real(2.0/3.0)};
+
582 
+
583  amrex::Real sm2 = S(i-2,j,k,n);
+
584  amrex::Real sm1 = S(i-1,j,k,n);
+
585  amrex::Real s0 = S(i ,j,k,n);
+
586  amrex::Real sp1 = S(i+1,j,k,n);
+
587  amrex::Real sp2 = S(i+2,j,k,n);
588 
-
589  amrex::Real sigma = amrex::Math::abs(v_ad)*dtdx;
-
590 
-
591  if (v_ad > small_vel)
-
592  {
-
593  Ip(i,j,k,n) = sp - (half*sigma)*((sp-sm) - (amrex::Real(1.0) - two3rds*sigma)*s6);
-
594  Im(i,j,k,n) = S(i,j,k,n);
-
595  }
-
596  else if (v_ad < -small_vel)
-
597  {
-
598  Ip(i,j,k,n) = S(i,j,k,n);
-
599  Im(i,j,k,n) = sm + (half*sigma)*((sp-sm) + (amrex::Real(1.0) - two3rds*sigma)*s6);
-
600  } else
-
601  {
-
602  Ip(i,j,k,n) = S(i,j,k,n);
-
603  Im(i,j,k,n) = S(i,j,k,n);
-
604  }
-
605 }
-
606 
-
607 template <typename Limiter>
-
608 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
-
609 void PredictVelOnYFace ( const int i, const int j, const int k, const int n,
-
610  const amrex::Real dtdy, const amrex::Real v_ad,
-
611  const amrex::Array4<const amrex::Real> &S,
-
612  const amrex::Array4<amrex::Real> &Im,
-
613  const amrex::Array4<amrex::Real> &Ip,
-
614  const amrex::BCRec bc, const int domlo, const int domhi,
-
615  const Limiter& /*limiter*/)
-
616 {
-
617  constexpr auto half{amrex::Real(0.5)};
-
618  constexpr auto two3rds{amrex::Real(2.0/3.0)};
-
619 
-
620  amrex::Real sm2 = S(i,j-2,k,n);
-
621  amrex::Real sm1 = S(i,j-1,k,n);
-
622  amrex::Real s0 = S(i,j ,k,n);
-
623  amrex::Real sp1 = S(i,j+1,k,n);
-
624  amrex::Real sp2 = S(i,j+2,k,n);
-
625 
-
626  amrex::Real sedge1 = Limiter::sedge1(sm2,sm1,s0,sp1,sp2);
-
627  amrex::Real sedge2 = Limiter::sedge2(sm2,sm1,s0,sp1,sp2);
-
628 
-
629  amrex::Real sm, sp;
-
630  amrex::Tie(sm,sp) = Limiter::sm_sp(s0,sedge1,sedge2);
-
631 
-
632  SetYBCs<Limiter>(i, j, k, n, sm, sp, sedge1, sedge2, S, bc.lo(1), bc.hi(1), domlo, domhi);
-
633 
-
634  amrex::Real s6 = amrex::Real(6.0)*s0 - amrex::Real(3.0)*(sm + sp);
-
635 
-
636  amrex::Real sigma = amrex::Math::abs(v_ad)*dtdy;
-
637 
-
638  if (v_ad > small_vel)
-
639  {
-
640  Ip(i,j,k,n) = sp - (half*sigma)*((sp-sm) - (amrex::Real(1.0) - two3rds*sigma)*s6);
-
641  Im(i,j,k,n) = S(i,j,k,n);
-
642  }
-
643  else if (v_ad < -small_vel)
-
644  {
-
645  Ip(i,j,k,n) = S(i,j,k,n);
-
646  Im(i,j,k,n) = sm + (half*sigma)*((sp-sm) + (amrex::Real(1.0) - two3rds*sigma)*s6);
-
647  } else
-
648  {
-
649  Ip(i,j,k,n) = S(i,j,k,n);
-
650  Im(i,j,k,n) = S(i,j,k,n);
-
651  }
-
652 }
-
653 
-
654 #if (AMREX_SPACEDIM==3)
-
655 template <typename Limiter>
-
656 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
-
657 void PredictVelOnZFace ( const int i, const int j, const int k, const int n,
-
658  const amrex::Real dtdz, const amrex::Real v_ad,
-
659  const amrex::Array4<const amrex::Real> &S,
-
660  const amrex::Array4<amrex::Real> &Im,
-
661  const amrex::Array4<amrex::Real> &Ip,
-
662  const amrex::BCRec bc, const int domlo, const int domhi,
-
663  const Limiter& /*limiter*/)
-
664 {
-
665  constexpr auto half{amrex::Real(0.5)};
-
666  constexpr auto two3rds{amrex::Real(2.0/3.0)};
-
667 
-
668  amrex::Real sm2 = S(i,j,k-2,n);
-
669  amrex::Real sm1 = S(i,j,k-1,n);
-
670  amrex::Real s0 = S(i,j,k ,n);
-
671  amrex::Real sp1 = S(i,j,k+1,n);
-
672  amrex::Real sp2 = S(i,j,k+2,n);
-
673 
-
674  amrex::Real sedge1 = Limiter::sedge1(sm2,sm1,s0,sp1,sp2);
-
675  amrex::Real sedge2 = Limiter::sedge2(sm2,sm1,s0,sp1,sp2);
-
676 
-
677  amrex::Real sm, sp;
-
678  amrex::Tie(sm,sp) = Limiter::sm_sp(s0,sedge1,sedge2);
+
589  amrex::Real sedge1 = Limiter::sedge1(sm2,sm1,s0,sp1,sp2);
+
590  amrex::Real sedge2 = Limiter::sedge2(sm2,sm1,s0,sp1,sp2);
+
591 
+
592  amrex::Real sm, sp;
+
593  amrex::Tie(sm,sp) = Limiter::sm_sp(s0,sedge1,sedge2);
+
594 
+
595  SetXBCs<Limiter>(i, j, k, n, sm, sp, sedge1, sedge2, S, v_ad, v_ad,
+
596  bc.lo(0), bc.hi(0), domlo, domhi);
+
597 
+
598  amrex::Real s6 = amrex::Real(6.0)*s0 - amrex::Real(3.0)*(sm + sp);
+
599 
+
600  amrex::Real sigma = amrex::Math::abs(v_ad)*dtdx;
+
601 
+
602  if (v_ad > small_vel)
+
603  {
+
604  Ip(i,j,k,n) = sp - (half*sigma)*((sp-sm) - (amrex::Real(1.0) - two3rds*sigma)*s6);
+
605  Im(i,j,k,n) = S(i,j,k,n);
+
606  }
+
607  else if (v_ad < -small_vel)
+
608  {
+
609  Ip(i,j,k,n) = S(i,j,k,n);
+
610  Im(i,j,k,n) = sm + (half*sigma)*((sp-sm) + (amrex::Real(1.0) - two3rds*sigma)*s6);
+
611  } else
+
612  {
+
613  Ip(i,j,k,n) = S(i,j,k,n);
+
614  Im(i,j,k,n) = S(i,j,k,n);
+
615  }
+
616 }
+
617 
+
618 template <typename Limiter>
+
619 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
+
620 void PredictVelOnYFace ( const int i, const int j, const int k, const int n,
+
621  const amrex::Real dtdy, const amrex::Real v_ad,
+
622  const amrex::Array4<const amrex::Real> &S,
+
623  const amrex::Array4<amrex::Real> &Im,
+
624  const amrex::Array4<amrex::Real> &Ip,
+
625  const amrex::BCRec bc, const int domlo, const int domhi,
+
626  const Limiter& /*limiter*/)
+
627 {
+
628  constexpr auto half{amrex::Real(0.5)};
+
629  constexpr auto two3rds{amrex::Real(2.0/3.0)};
+
630 
+
631  amrex::Real sm2 = S(i,j-2,k,n);
+
632  amrex::Real sm1 = S(i,j-1,k,n);
+
633  amrex::Real s0 = S(i,j ,k,n);
+
634  amrex::Real sp1 = S(i,j+1,k,n);
+
635  amrex::Real sp2 = S(i,j+2,k,n);
+
636 
+
637  amrex::Real sedge1 = Limiter::sedge1(sm2,sm1,s0,sp1,sp2);
+
638  amrex::Real sedge2 = Limiter::sedge2(sm2,sm1,s0,sp1,sp2);
+
639 
+
640  amrex::Real sm, sp;
+
641  amrex::Tie(sm,sp) = Limiter::sm_sp(s0,sedge1,sedge2);
+
642 
+
643  SetYBCs<Limiter>(i, j, k, n, sm, sp, sedge1, sedge2, S, v_ad, v_ad,
+
644  bc.lo(1), bc.hi(1), domlo, domhi);
+
645 
+
646  amrex::Real s6 = amrex::Real(6.0)*s0 - amrex::Real(3.0)*(sm + sp);
+
647 
+
648  amrex::Real sigma = amrex::Math::abs(v_ad)*dtdy;
+
649 
+
650  if (v_ad > small_vel)
+
651  {
+
652  Ip(i,j,k,n) = sp - (half*sigma)*((sp-sm) - (amrex::Real(1.0) - two3rds*sigma)*s6);
+
653  Im(i,j,k,n) = S(i,j,k,n);
+
654  }
+
655  else if (v_ad < -small_vel)
+
656  {
+
657  Ip(i,j,k,n) = S(i,j,k,n);
+
658  Im(i,j,k,n) = sm + (half*sigma)*((sp-sm) + (amrex::Real(1.0) - two3rds*sigma)*s6);
+
659  } else
+
660  {
+
661  Ip(i,j,k,n) = S(i,j,k,n);
+
662  Im(i,j,k,n) = S(i,j,k,n);
+
663  }
+
664 }
+
665 
+
666 #if (AMREX_SPACEDIM==3)
+
667 template <typename Limiter>
+
668 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
+
669 void PredictVelOnZFace ( const int i, const int j, const int k, const int n,
+
670  const amrex::Real dtdz, const amrex::Real v_ad,
+
671  const amrex::Array4<const amrex::Real> &S,
+
672  const amrex::Array4<amrex::Real> &Im,
+
673  const amrex::Array4<amrex::Real> &Ip,
+
674  const amrex::BCRec bc, const int domlo, const int domhi,
+
675  const Limiter& /*limiter*/)
+
676 {
+
677  constexpr auto half{amrex::Real(0.5)};
+
678  constexpr auto two3rds{amrex::Real(2.0/3.0)};
679 
-
680  SetZBCs<Limiter>(i, j, k, n, sm, sp, sedge1, sedge2, S, bc.lo(2), bc.hi(2), domlo, domhi);
-
681 
-
682  amrex::Real s6 = amrex::Real(6.0)*s0 - amrex::Real(3.0)*(sm + sp);
-
683 
-
684  amrex::Real sigma = amrex::Math::abs(v_ad)*dtdz;
+
680  amrex::Real sm2 = S(i,j,k-2,n);
+
681  amrex::Real sm1 = S(i,j,k-1,n);
+
682  amrex::Real s0 = S(i,j,k ,n);
+
683  amrex::Real sp1 = S(i,j,k+1,n);
+
684  amrex::Real sp2 = S(i,j,k+2,n);
685 
-
686  if (v_ad > small_vel)
-
687  {
-
688  Ip(i,j,k,n) = sp - (half*sigma)*((sp-sm) - (amrex::Real(1.0) - two3rds*sigma)*s6);
-
689  Im(i,j,k,n) = S(i,j,k,n);
-
690  }
-
691  else if (v_ad < -small_vel)
-
692  {
-
693  Ip(i,j,k,n) = S(i,j,k,n);
-
694  Im(i,j,k,n) = sm + (half*sigma)*((sp-sm) + (amrex::Real(1.0) - two3rds*sigma)*s6);
-
695  } else
-
696  {
-
697  Ip(i,j,k,n) = S(i,j,k,n);
-
698  Im(i,j,k,n) = S(i,j,k,n);
-
699  }
-
700 }
-
701 
-
702 #endif
-
703 
-
704 // Right now only ppm type 1 is supported on GPU
-
705 // This version is called after the MAC projection, when we use the MAC-projected velocity
-
706 // for upwinding
-
707 template <typename Limiter>
-
708 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
-
709 void PredictStateOnXFace ( const int i, const int j, const int k, const int n,
-
710  const amrex::Real dt, const amrex::Real dx,
-
711  amrex::Real& Im, amrex::Real& Ip,
-
712  const amrex::Array4<const amrex::Real> &S,
-
713  const amrex::Array4<const amrex::Real> &vel_edge,
-
714  const amrex::BCRec bc,
-
715  const int domlo, const int domhi,
-
716  const Limiter& /*limiter*/)
-
717 {
-
718  constexpr auto half{amrex::Real(0.5)};
-
719  constexpr auto two3rds{amrex::Real(2.0/3.0)};
-
720 
-
721  amrex::Real sm2 = S(i-2,j,k,n);
-
722  amrex::Real sm1 = S(i-1,j,k,n);
-
723  amrex::Real s0 = S(i ,j,k,n);
-
724  amrex::Real sp1 = S(i+1,j,k,n);
-
725  amrex::Real sp2 = S(i+2,j,k,n);
-
726 
-
727  amrex::Real sedge1 = Limiter::sedge1(sm2,sm1,s0,sp1,sp2);
-
728  amrex::Real sedge2 = Limiter::sedge2(sm2,sm1,s0,sp1,sp2);
-
729 
-
730  amrex::Real sm, sp;
-
731  amrex::Tie(sm,sp) = Limiter::sm_sp(s0,sedge1,sedge2);
-
732 
-
733  SetXBCs<Limiter>(i, j, k, n, sm, sp, sedge1, sedge2, S, bc.lo(0), bc.hi(0), domlo, domhi);
-
734 
-
735  amrex::Real s6 = 6.0*s0 - 3.0*(sm + sp);
-
736 
-
737  amrex::Real sigmap = amrex::Math::abs(vel_edge(i+1,j,k))*dt/dx;
-
738  amrex::Real sigmam = amrex::Math::abs(vel_edge(i ,j,k))*dt/dx;
+
686  amrex::Real sedge1 = Limiter::sedge1(sm2,sm1,s0,sp1,sp2);
+
687  amrex::Real sedge2 = Limiter::sedge2(sm2,sm1,s0,sp1,sp2);
+
688 
+
689  amrex::Real sm, sp;
+
690  amrex::Tie(sm,sp) = Limiter::sm_sp(s0,sedge1,sedge2);
+
691 
+
692  SetZBCs<Limiter>(i, j, k, n, sm, sp, sedge1, sedge2, S, v_ad, v_ad,
+
693  bc.lo(2), bc.hi(2), domlo, domhi);
+
694 
+
695  amrex::Real s6 = amrex::Real(6.0)*s0 - amrex::Real(3.0)*(sm + sp);
+
696 
+
697  amrex::Real sigma = amrex::Math::abs(v_ad)*dtdz;
+
698 
+
699  if (v_ad > small_vel)
+
700  {
+
701  Ip(i,j,k,n) = sp - (half*sigma)*((sp-sm) - (amrex::Real(1.0) - two3rds*sigma)*s6);
+
702  Im(i,j,k,n) = S(i,j,k,n);
+
703  }
+
704  else if (v_ad < -small_vel)
+
705  {
+
706  Ip(i,j,k,n) = S(i,j,k,n);
+
707  Im(i,j,k,n) = sm + (half*sigma)*((sp-sm) + (amrex::Real(1.0) - two3rds*sigma)*s6);
+
708  } else
+
709  {
+
710  Ip(i,j,k,n) = S(i,j,k,n);
+
711  Im(i,j,k,n) = S(i,j,k,n);
+
712  }
+
713 }
+
714 
+
715 #endif
+
716 
+
717 // Right now only ppm type 1 is supported on GPU
+
718 // This version is called after the MAC projection, when we use the MAC-projected velocity
+
719 // for upwinding
+
720 template <typename Limiter>
+
721 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
+
722 void PredictStateOnXFace ( const int i, const int j, const int k, const int n,
+
723  const amrex::Real dt, const amrex::Real dx,
+
724  amrex::Real& Im, amrex::Real& Ip,
+
725  const amrex::Array4<const amrex::Real> &S,
+
726  const amrex::Array4<const amrex::Real> &vel_edge,
+
727  const amrex::BCRec bc,
+
728  const int domlo, const int domhi,
+
729  const Limiter& /*limiter*/)
+
730 {
+
731  constexpr auto half{amrex::Real(0.5)};
+
732  constexpr auto two3rds{amrex::Real(2.0/3.0)};
+
733 
+
734  amrex::Real sm2 = S(i-2,j,k,n);
+
735  amrex::Real sm1 = S(i-1,j,k,n);
+
736  amrex::Real s0 = S(i ,j,k,n);
+
737  amrex::Real sp1 = S(i+1,j,k,n);
+
738  amrex::Real sp2 = S(i+2,j,k,n);
739 
-
740  if (vel_edge(i+1,j,k) > small_vel) {
-
741  Ip = sp - (half*sigmap)*((sp - sm) - (amrex::Real(1.0) -two3rds*sigmap)*s6);
-
742  } else {
-
743  Ip = S(i,j,k,n);
-
744  }
+
740  amrex::Real sedge1 = Limiter::sedge1(sm2,sm1,s0,sp1,sp2);
+
741  amrex::Real sedge2 = Limiter::sedge2(sm2,sm1,s0,sp1,sp2);
+
742 
+
743  amrex::Real sm, sp;
+
744  amrex::Tie(sm,sp) = Limiter::sm_sp(s0,sedge1,sedge2);
745 
-
746  if(vel_edge(i,j,k) < -small_vel) {
-
747  Im = sm + (half*sigmam)*((sp-sm) + (amrex::Real(1.0) - two3rds*sigmam)*s6);
-
748  } else {
-
749  Im = S(i,j,k,n);
-
750  }
-
751 }
-
752 
-
753 template <typename Limiter>
-
754 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
-
755 void PredictStateOnYFace ( const int i, const int j, const int k, const int n,
-
756  const amrex::Real dt, const amrex::Real dx,
-
757  amrex::Real& Im, amrex::Real& Ip,
-
758  const amrex::Array4<const amrex::Real> &S,
-
759  const amrex::Array4<const amrex::Real> &vel_edge,
-
760  const amrex::BCRec bc,
-
761  const int domlo, const int domhi,
-
762  const Limiter& /*limiter*/)
-
763 {
-
764  constexpr auto half{amrex::Real(0.5)};
-
765  constexpr auto two3rds{amrex::Real(2.0/3.0)};
+
746  SetXBCs<Limiter>(i, j, k, n, sm, sp, sedge1, sedge2, S, vel_edge(i,j,k), vel_edge(i,j,k),
+
747  bc.lo(0), bc.hi(0), domlo, domhi);
+
748 
+
749  amrex::Real s6 = 6.0*s0 - 3.0*(sm + sp);
+
750 
+
751  amrex::Real sigmap = amrex::Math::abs(vel_edge(i+1,j,k))*dt/dx;
+
752  amrex::Real sigmam = amrex::Math::abs(vel_edge(i ,j,k))*dt/dx;
+
753 
+
754  if (vel_edge(i+1,j,k) > small_vel) {
+
755  Ip = sp - (half*sigmap)*((sp - sm) - (amrex::Real(1.0) -two3rds*sigmap)*s6);
+
756  } else {
+
757  Ip = S(i,j,k,n);
+
758  }
+
759 
+
760  if(vel_edge(i,j,k) < -small_vel) {
+
761  Im = sm + (half*sigmam)*((sp-sm) + (amrex::Real(1.0) - two3rds*sigmam)*s6);
+
762  } else {
+
763  Im = S(i,j,k,n);
+
764  }
+
765 }
766 
-
767  amrex::Real sm2 = S(i,j-2,k,n);
-
768  amrex::Real sm1 = S(i,j-1,k,n);
-
769  amrex::Real s0 = S(i,j ,k,n);
-
770  amrex::Real sp1 = S(i,j+1,k,n);
-
771  amrex::Real sp2 = S(i,j+2,k,n);
-
772 
-
773  amrex::Real sedge1 = Limiter::sedge1(sm2,sm1,s0,sp1,sp2);
-
774  amrex::Real sedge2 = Limiter::sedge2(sm2,sm1,s0,sp1,sp2);
-
775 
-
776  amrex::Real sm, sp;
-
777  amrex::Tie(sm,sp) = Limiter::sm_sp(s0,sedge1,sedge2);
-
778 
-
779  SetYBCs<Limiter>(i, j, k, n, sm, sp, sedge1, sedge2, S, bc.lo(1), bc.hi(1), domlo, domhi);
+
767 template <typename Limiter>
+
768 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
+
769 void PredictStateOnYFace ( const int i, const int j, const int k, const int n,
+
770  const amrex::Real dt, const amrex::Real dx,
+
771  amrex::Real& Im, amrex::Real& Ip,
+
772  const amrex::Array4<const amrex::Real> &S,
+
773  const amrex::Array4<const amrex::Real> &vel_edge,
+
774  const amrex::BCRec bc,
+
775  const int domlo, const int domhi,
+
776  const Limiter& /*limiter*/)
+
777 {
+
778  constexpr auto half{amrex::Real(0.5)};
+
779  constexpr auto two3rds{amrex::Real(2.0/3.0)};
780 
-
781  amrex::Real s6 = 6.0*s0- 3.0*(sm + sp);
-
782 
-
783  amrex::Real sigmap = amrex::Math::abs(vel_edge(i,j+1,k))*dt/dx;
-
784  amrex::Real sigmam = amrex::Math::abs(vel_edge(i,j ,k))*dt/dx;
-
785 
-
786  if (vel_edge(i,j+1,k) > small_vel) {
-
787  Ip = sp - (half*sigmap)*((sp - sm) - (amrex::Real(1.0) -two3rds*sigmap)*s6);
-
788  } else {
-
789  Ip = S(i,j,k,n);
-
790  }
-
791 
-
792  if (vel_edge(i,j,k) < -small_vel) {
-
793  Im = sm + (half*sigmam)*((sp-sm) + (amrex::Real(1.0) - two3rds*sigmam)*s6);
-
794  } else {
-
795  Im = S(i,j,k,n);
-
796  }
-
797 }
-
798 
-
799 
-
800 #if (AMREX_SPACEDIM==3)
-
801 template <typename Limiter>
-
802 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
-
803 void PredictStateOnZFace ( const int i, const int j, const int k, const int n,
-
804  const amrex::Real dt, const amrex::Real dx,
-
805  amrex::Real& Im, amrex::Real& Ip,
-
806  const amrex::Array4<const amrex::Real> &S,
-
807  const amrex::Array4<const amrex::Real> &vel_edge,
-
808  const amrex::BCRec bc,
-
809  const int domlo, const int domhi,
-
810  const Limiter& /*limiter*/)
-
811 {
-
812 
-
813  constexpr auto half{amrex::Real(0.5)};
-
814  constexpr auto two3rds{amrex::Real(2.0/3.0)};
-
815 
-
816  amrex::Real sm2 = S(i,j,k-2,n);
-
817  amrex::Real sm1 = S(i,j,k-1,n);
-
818  amrex::Real s0 = S(i,j,k ,n);
-
819  amrex::Real sp1 = S(i,j,k+1,n);
-
820  amrex::Real sp2 = S(i,j,k+2,n);
-
821 
-
822  amrex::Real sedge1 = Limiter::sedge1(sm2,sm1,s0,sp1,sp2);
-
823  amrex::Real sedge2 = Limiter::sedge2(sm2,sm1,s0,sp1,sp2);
-
824 
-
825  amrex::Real sm, sp;
-
826  amrex::Tie(sm,sp) = Limiter::sm_sp(s0,sedge1,sedge2);
+
781  amrex::Real sm2 = S(i,j-2,k,n);
+
782  amrex::Real sm1 = S(i,j-1,k,n);
+
783  amrex::Real s0 = S(i,j ,k,n);
+
784  amrex::Real sp1 = S(i,j+1,k,n);
+
785  amrex::Real sp2 = S(i,j+2,k,n);
+
786 
+
787  amrex::Real sedge1 = Limiter::sedge1(sm2,sm1,s0,sp1,sp2);
+
788  amrex::Real sedge2 = Limiter::sedge2(sm2,sm1,s0,sp1,sp2);
+
789 
+
790  amrex::Real sm, sp;
+
791  amrex::Tie(sm,sp) = Limiter::sm_sp(s0,sedge1,sedge2);
+
792 
+
793  SetYBCs<Limiter>(i, j, k, n, sm, sp, sedge1, sedge2, S, vel_edge(i,j,k), vel_edge(i,j,k),
+
794  bc.lo(1), bc.hi(1), domlo, domhi);
+
795 
+
796  amrex::Real s6 = 6.0*s0- 3.0*(sm + sp);
+
797 
+
798  amrex::Real sigmap = amrex::Math::abs(vel_edge(i,j+1,k))*dt/dx;
+
799  amrex::Real sigmam = amrex::Math::abs(vel_edge(i,j ,k))*dt/dx;
+
800 
+
801  if (vel_edge(i,j+1,k) > small_vel) {
+
802  Ip = sp - (half*sigmap)*((sp - sm) - (amrex::Real(1.0) -two3rds*sigmap)*s6);
+
803  } else {
+
804  Ip = S(i,j,k,n);
+
805  }
+
806 
+
807  if (vel_edge(i,j,k) < -small_vel) {
+
808  Im = sm + (half*sigmam)*((sp-sm) + (amrex::Real(1.0) - two3rds*sigmam)*s6);
+
809  } else {
+
810  Im = S(i,j,k,n);
+
811  }
+
812 }
+
813 
+
814 
+
815 #if (AMREX_SPACEDIM==3)
+
816 template <typename Limiter>
+
817 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
+
818 void PredictStateOnZFace ( const int i, const int j, const int k, const int n,
+
819  const amrex::Real dt, const amrex::Real dx,
+
820  amrex::Real& Im, amrex::Real& Ip,
+
821  const amrex::Array4<const amrex::Real> &S,
+
822  const amrex::Array4<const amrex::Real> &vel_edge,
+
823  const amrex::BCRec bc,
+
824  const int domlo, const int domhi,
+
825  const Limiter& /*limiter*/)
+
826 {
827 
-
828  SetZBCs<Limiter>(i, j, k, n, sm, sp, sedge1, sedge2, S, bc.lo(2), bc.hi(2), domlo, domhi);
-
829 
-
830  amrex::Real s6 = 6.0*s0- 3.0*(sm + sp);
-
831  amrex::Real sigmap = amrex::Math::abs(vel_edge(i,j,k+1))*dt/dx;
-
832  amrex::Real sigmam = amrex::Math::abs(vel_edge(i,j,k ))*dt/dx;
-
833 
-
834  if(vel_edge(i,j,k+1) > small_vel) {
-
835  Ip = sp - (half*sigmap)*((sp-sm) - (amrex::Real(1.0) -two3rds*sigmap)*s6);
-
836  } else {
-
837  Ip = S(i,j,k,n);
-
838  }
+
828  constexpr auto half{amrex::Real(0.5)};
+
829  constexpr auto two3rds{amrex::Real(2.0/3.0)};
+
830 
+
831  amrex::Real sm2 = S(i,j,k-2,n);
+
832  amrex::Real sm1 = S(i,j,k-1,n);
+
833  amrex::Real s0 = S(i,j,k ,n);
+
834  amrex::Real sp1 = S(i,j,k+1,n);
+
835  amrex::Real sp2 = S(i,j,k+2,n);
+
836 
+
837  amrex::Real sedge1 = Limiter::sedge1(sm2,sm1,s0,sp1,sp2);
+
838  amrex::Real sedge2 = Limiter::sedge2(sm2,sm1,s0,sp1,sp2);
839 
-
840  if(vel_edge(i,j,k) < -small_vel) {
-
841  Im = sm + (half*sigmam)*((sp-sm) + (amrex::Real(1.0) - two3rds*sigmam)*s6);
-
842  } else {
-
843  Im = S(i,j,k,n);
-
844  }
-
845 }
-
846 #endif
-
847 
-
848 template <typename Limiter>
-
849 void PredictVelOnFaces (amrex::Box const& bx,
-
850  AMREX_D_DECL(amrex::Array4<amrex::Real> const& Imx,
-
851  amrex::Array4<amrex::Real> const& Imy,
-
852  amrex::Array4<amrex::Real> const& Imz),
-
853  AMREX_D_DECL(amrex::Array4<amrex::Real> const& Ipx,
-
854  amrex::Array4<amrex::Real> const& Ipy,
-
855  amrex::Array4<amrex::Real> const& Ipz),
-
856  amrex::Array4<amrex::Real const> const& q,
-
857  amrex::Array4<amrex::Real const> const& vel,
-
858  amrex::Geometry geom,
-
859  amrex::Real dt,
-
860  amrex::BCRec const* pbc,
-
861  const Limiter& limiter)
-
862 {
-
863  const amrex::Box& domain = geom.Domain();
-
864  const amrex::Dim3 dlo = amrex::lbound(domain);
-
865  const amrex::Dim3 dhi = amrex::ubound(domain);
-
866 
-
867  const auto dx = geom.CellSizeArray();
-
868  AMREX_D_TERM( amrex::Real l_dtdx = dt / dx[0];,
-
869  amrex::Real l_dtdy = dt / dx[1];,
-
870  amrex::Real l_dtdz = dt / dx[2];);
-
871 
-
872  amrex::ParallelFor(bx, AMREX_SPACEDIM,
-
873  [=] AMREX_GPU_DEVICE (int i, int j, int k, int n) noexcept
-
874  {
-
875  PredictVelOnXFace(i,j,k,n,l_dtdx,vel(i,j,k,0),q,Imx,Ipx,pbc[n],dlo.x,dhi.x,limiter);
-
876  PredictVelOnYFace(i,j,k,n,l_dtdy,vel(i,j,k,1),q,Imy,Ipy,pbc[n],dlo.y,dhi.y,limiter);
-
877 #if (AMREX_SPACEDIM==3)
-
878  PredictVelOnZFace(i,j,k,n,l_dtdz,vel(i,j,k,2),q,Imz,Ipz,pbc[n],dlo.z,dhi.z,limiter);
-
879 #endif
-
880  });
-
881 }
+
840  amrex::Real sm, sp;
+
841  amrex::Tie(sm,sp) = Limiter::sm_sp(s0,sedge1,sedge2);
+
842 
+
843  SetZBCs<Limiter>(i, j, k, n, sm, sp, sedge1, sedge2, S, vel_edge(i,j,k), vel_edge(i,j,k),
+
844  bc.lo(2), bc.hi(2), domlo, domhi);
+
845 
+
846  amrex::Real s6 = 6.0*s0- 3.0*(sm + sp);
+
847  amrex::Real sigmap = amrex::Math::abs(vel_edge(i,j,k+1))*dt/dx;
+
848  amrex::Real sigmam = amrex::Math::abs(vel_edge(i,j,k ))*dt/dx;
+
849 
+
850  if(vel_edge(i,j,k+1) > small_vel) {
+
851  Ip = sp - (half*sigmap)*((sp-sm) - (amrex::Real(1.0) -two3rds*sigmap)*s6);
+
852  } else {
+
853  Ip = S(i,j,k,n);
+
854  }
+
855 
+
856  if(vel_edge(i,j,k) < -small_vel) {
+
857  Im = sm + (half*sigmam)*((sp-sm) + (amrex::Real(1.0) - two3rds*sigmam)*s6);
+
858  } else {
+
859  Im = S(i,j,k,n);
+
860  }
+
861 }
+
862 #endif
+
863 
+
864 template <typename Limiter>
+
865 void PredictVelOnFaces (amrex::Box const& bx,
+
866  AMREX_D_DECL(amrex::Array4<amrex::Real> const& Imx,
+
867  amrex::Array4<amrex::Real> const& Imy,
+
868  amrex::Array4<amrex::Real> const& Imz),
+
869  AMREX_D_DECL(amrex::Array4<amrex::Real> const& Ipx,
+
870  amrex::Array4<amrex::Real> const& Ipy,
+
871  amrex::Array4<amrex::Real> const& Ipz),
+
872  amrex::Array4<amrex::Real const> const& q,
+
873  amrex::Array4<amrex::Real const> const& vel,
+
874  amrex::Geometry geom,
+
875  amrex::Real dt,
+
876  amrex::BCRec const* pbc,
+
877  const Limiter& limiter)
+
878 {
+
879  const amrex::Box& domain = geom.Domain();
+
880  const amrex::Dim3 dlo = amrex::lbound(domain);
+
881  const amrex::Dim3 dhi = amrex::ubound(domain);
882 
-
883 template <typename Limiter>
-
884 void PredictStateOnFaces (amrex::Box const& bx,
-
885  AMREX_D_DECL(amrex::Array4<amrex::Real> const& Imx,
-
886  amrex::Array4<amrex::Real> const& Imy,
-
887  amrex::Array4<amrex::Real> const& Imz),
-
888  AMREX_D_DECL(amrex::Array4<amrex::Real> const& Ipx,
-
889  amrex::Array4<amrex::Real> const& Ipy,
-
890  amrex::Array4<amrex::Real> const& Ipz),
-
891  AMREX_D_DECL(amrex::Array4<amrex::Real const> const& umac,
-
892  amrex::Array4<amrex::Real const> const& vmac,
-
893  amrex::Array4<amrex::Real const> const& wmac),
-
894  amrex::Array4<amrex::Real const> const& q,
-
895  amrex::Geometry geom,
-
896  amrex::Real l_dt,
-
897  amrex::BCRec const* pbc,
-
898  const int ncomp,
-
899  const Limiter& limiter)
-
900 {
-
901  const amrex::Box& domain = geom.Domain();
-
902  const amrex::Dim3 dlo = amrex::lbound(domain);
-
903  const amrex::Dim3 dhi = amrex::ubound(domain);
-
904 
-
905  AMREX_D_TERM (const auto dx = geom.CellSize(0);,
-
906  const auto dy = geom.CellSize(1);,
-
907  const auto dz = geom.CellSize(2););
-
908 
-
909  amrex::ParallelFor(bx, ncomp,
-
910  [=] AMREX_GPU_DEVICE (int i, int j, int k, int n) noexcept
-
911  {
-
912  PPM::PredictStateOnXFace(i, j, k, n, l_dt, dx, Imx(i,j,k,n), Ipx(i,j,k,n),
-
913  q, umac, pbc[n], dlo.x, dhi.x,limiter);
-
914  PPM::PredictStateOnYFace(i, j, k, n, l_dt, dy, Imy(i,j,k,n), Ipy(i,j,k,n),
-
915  q, vmac, pbc[n], dlo.y, dhi.y,limiter);
-
916 #if (AMREX_SPACEDIM==3)
-
917  PPM::PredictStateOnZFace(i, j, k, n, l_dt, dz, Imz(i,j,k,n), Ipz(i,j,k,n),
-
918  q, wmac, pbc[n], dlo.z, dhi.z,limiter);
-
919 #endif
-
920  });
-
921 }
-
922 
-
923 
-
924 }
-
925 
-
926 #endif
-
927 /** @} */
+
883  const auto dx = geom.CellSizeArray();
+
884  AMREX_D_TERM( amrex::Real l_dtdx = dt / dx[0];,
+
885  amrex::Real l_dtdy = dt / dx[1];,
+
886  amrex::Real l_dtdz = dt / dx[2];);
+
887 
+
888  amrex::ParallelFor(bx, AMREX_SPACEDIM,
+
889  [=] AMREX_GPU_DEVICE (int i, int j, int k, int n) noexcept
+
890  {
+
891  PredictVelOnXFace(i,j,k,n,l_dtdx,vel(i,j,k,0),q,Imx,Ipx,pbc[n],dlo.x,dhi.x,limiter);
+
892  PredictVelOnYFace(i,j,k,n,l_dtdy,vel(i,j,k,1),q,Imy,Ipy,pbc[n],dlo.y,dhi.y,limiter);
+
893 #if (AMREX_SPACEDIM==3)
+
894  PredictVelOnZFace(i,j,k,n,l_dtdz,vel(i,j,k,2),q,Imz,Ipz,pbc[n],dlo.z,dhi.z,limiter);
+
895 #endif
+
896  });
+
897 }
+
898 
+
899 template <typename Limiter>
+
900 void PredictStateOnFaces (amrex::Box const& bx,
+
901  AMREX_D_DECL(amrex::Array4<amrex::Real> const& Imx,
+
902  amrex::Array4<amrex::Real> const& Imy,
+
903  amrex::Array4<amrex::Real> const& Imz),
+
904  AMREX_D_DECL(amrex::Array4<amrex::Real> const& Ipx,
+
905  amrex::Array4<amrex::Real> const& Ipy,
+
906  amrex::Array4<amrex::Real> const& Ipz),
+
907  AMREX_D_DECL(amrex::Array4<amrex::Real const> const& umac,
+
908  amrex::Array4<amrex::Real const> const& vmac,
+
909  amrex::Array4<amrex::Real const> const& wmac),
+
910  amrex::Array4<amrex::Real const> const& q,
+
911  amrex::Geometry geom,
+
912  amrex::Real l_dt,
+
913  amrex::BCRec const* pbc,
+
914  const int ncomp,
+
915  const Limiter& limiter)
+
916 {
+
917  const amrex::Box& domain = geom.Domain();
+
918  const amrex::Dim3 dlo = amrex::lbound(domain);
+
919  const amrex::Dim3 dhi = amrex::ubound(domain);
+
920 
+
921  AMREX_D_TERM (const auto dx = geom.CellSize(0);,
+
922  const auto dy = geom.CellSize(1);,
+
923  const auto dz = geom.CellSize(2););
+
924 
+
925  amrex::ParallelFor(bx, ncomp,
+
926  [=] AMREX_GPU_DEVICE (int i, int j, int k, int n) noexcept
+
927  {
+
928  PPM::PredictStateOnXFace(i, j, k, n, l_dt, dx, Imx(i,j,k,n), Ipx(i,j,k,n),
+
929  q, umac, pbc[n], dlo.x, dhi.x,limiter);
+
930  PPM::PredictStateOnYFace(i, j, k, n, l_dt, dy, Imy(i,j,k,n), Ipy(i,j,k,n),
+
931  q, vmac, pbc[n], dlo.y, dhi.y,limiter);
+
932 #if (AMREX_SPACEDIM==3)
+
933  PPM::PredictStateOnZFace(i, j, k, n, l_dt, dz, Imz(i,j,k,n), Ipz(i,j,k,n),
+
934  q, wmac, pbc[n], dlo.z, dhi.z,limiter);
+
935 #endif
+
936  });
+
937 }
+
938 } // namespace
+
939 
+
940 #endif
+
941 /** @} */
AMReX_BCRec.H
+
AMReX_BC_TYPES.H
AMREX_FORCE_INLINE
#define AMREX_FORCE_INLINE
AMREX_GPU_DEVICE
#define AMREX_GPU_DEVICE
AMREX_GPU_HOST_DEVICE
#define AMREX_GPU_HOST_DEVICE
@@ -1042,21 +1057,21 @@
eps
constexpr amrex::Real eps
Definition: hydro_bds_edge_state_2D.cpp:13
small_vel
static constexpr amrex::Real small_vel
Definition: hydro_constants.H:37
hydro_constants.H
-
PPM
Definition: hydro_godunov_ppm.H:15
-
PPM::PredictStateOnXFace
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void PredictStateOnXFace(const int i, const int j, const int k, const int n, const amrex::Real dt, const amrex::Real dx, amrex::Real &Im, amrex::Real &Ip, const amrex::Array4< const amrex::Real > &S, const amrex::Array4< const amrex::Real > &vel_edge, const amrex::BCRec bc, const int domlo, const int domhi, const Limiter &)
Definition: hydro_godunov_ppm.H:709
-
PPM::PredictVelOnYFace
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void PredictVelOnYFace(const int i, const int j, const int k, const int n, const amrex::Real dtdy, const amrex::Real v_ad, const amrex::Array4< const amrex::Real > &S, const amrex::Array4< amrex::Real > &Im, const amrex::Array4< amrex::Real > &Ip, const amrex::BCRec bc, const int domlo, const int domhi, const Limiter &)
Definition: hydro_godunov_ppm.H:609
-
PPM::default_limiter
static constexpr int default_limiter
Definition: hydro_godunov_ppm.H:19
-
PPM::PredictStateOnYFace
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void PredictStateOnYFace(const int i, const int j, const int k, const int n, const amrex::Real dt, const amrex::Real dx, amrex::Real &Im, amrex::Real &Ip, const amrex::Array4< const amrex::Real > &S, const amrex::Array4< const amrex::Real > &vel_edge, const amrex::BCRec bc, const int domlo, const int domhi, const Limiter &)
Definition: hydro_godunov_ppm.H:755
-
PPM::SetYBCs
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void SetYBCs(const int i, const int j, const int k, const int n, amrex::Real &sm, amrex::Real &sp, amrex::Real &sedge1, amrex::Real &sedge2, const amrex::Array4< const amrex::Real > &s, const int bclo, const int bchi, const int domlo, const int domhi)
Definition: hydro_godunov_ppm.H:372
-
PPM::PredictStateOnFaces
void PredictStateOnFaces(amrex::Box const &bx, AMREX_D_DECL(amrex::Array4< amrex::Real > const &Imx, amrex::Array4< amrex::Real > const &Imy, amrex::Array4< amrex::Real > const &Imz), AMREX_D_DECL(amrex::Array4< amrex::Real > const &Ipx, amrex::Array4< amrex::Real > const &Ipy, amrex::Array4< amrex::Real > const &Ipz), AMREX_D_DECL(amrex::Array4< amrex::Real const > const &umac, amrex::Array4< amrex::Real const > const &vmac, amrex::Array4< amrex::Real const > const &wmac), amrex::Array4< amrex::Real const > const &q, amrex::Geometry geom, amrex::Real l_dt, amrex::BCRec const *pbc, const int ncomp, const Limiter &limiter)
Definition: hydro_godunov_ppm.H:884
-
PPM::SetXBCs
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void SetXBCs(const int i, const int j, const int k, const int n, amrex::Real &sm, amrex::Real &sp, amrex::Real &sedge1, amrex::Real &sedge2, const amrex::Array4< const amrex::Real > &s, const int bclo, const int bchi, const int domlo, const int domhi)
Definition: hydro_godunov_ppm.H:280
-
PPM::PredictVelOnXFace
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void PredictVelOnXFace(const int i, const int j, const int k, const int n, const amrex::Real dtdx, const amrex::Real v_ad, const amrex::Array4< const amrex::Real > &S, const amrex::Array4< amrex::Real > &Im, const amrex::Array4< amrex::Real > &Ip, const amrex::BCRec bc, const int domlo, const int domhi, const Limiter &)
Definition: hydro_godunov_ppm.H:562
-
PPM::PredictVelOnFaces
void PredictVelOnFaces(amrex::Box const &bx, AMREX_D_DECL(amrex::Array4< amrex::Real > const &Imx, amrex::Array4< amrex::Real > const &Imy, amrex::Array4< amrex::Real > const &Imz), AMREX_D_DECL(amrex::Array4< amrex::Real > const &Ipx, amrex::Array4< amrex::Real > const &Ipy, amrex::Array4< amrex::Real > const &Ipz), amrex::Array4< amrex::Real const > const &q, amrex::Array4< amrex::Real const > const &vel, amrex::Geometry geom, amrex::Real dt, amrex::BCRec const *pbc, const Limiter &limiter)
Definition: hydro_godunov_ppm.H:849
-
PPM::limiters
limiters
Definition: hydro_godunov_ppm.H:17
-
PPM::VanLeer
@ VanLeer
Definition: hydro_godunov_ppm.H:17
-
PPM::WENOZ
@ WENOZ
Definition: hydro_godunov_ppm.H:17
-
PPM::WENO_JS
@ WENO_JS
Definition: hydro_godunov_ppm.H:17
-
PPM::NoLimiter
@ NoLimiter
Definition: hydro_godunov_ppm.H:17
+
PPM
Definition: hydro_godunov_ppm.H:16
+
PPM::PredictStateOnXFace
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void PredictStateOnXFace(const int i, const int j, const int k, const int n, const amrex::Real dt, const amrex::Real dx, amrex::Real &Im, amrex::Real &Ip, const amrex::Array4< const amrex::Real > &S, const amrex::Array4< const amrex::Real > &vel_edge, const amrex::BCRec bc, const int domlo, const int domhi, const Limiter &)
Definition: hydro_godunov_ppm.H:722
+
PPM::PredictVelOnYFace
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void PredictVelOnYFace(const int i, const int j, const int k, const int n, const amrex::Real dtdy, const amrex::Real v_ad, const amrex::Array4< const amrex::Real > &S, const amrex::Array4< amrex::Real > &Im, const amrex::Array4< amrex::Real > &Ip, const amrex::BCRec bc, const int domlo, const int domhi, const Limiter &)
Definition: hydro_godunov_ppm.H:620
+
PPM::default_limiter
static constexpr int default_limiter
Definition: hydro_godunov_ppm.H:20
+
PPM::PredictStateOnYFace
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void PredictStateOnYFace(const int i, const int j, const int k, const int n, const amrex::Real dt, const amrex::Real dx, amrex::Real &Im, amrex::Real &Ip, const amrex::Array4< const amrex::Real > &S, const amrex::Array4< const amrex::Real > &vel_edge, const amrex::BCRec bc, const int domlo, const int domhi, const Limiter &)
Definition: hydro_godunov_ppm.H:769
+
PPM::SetXBCs
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void SetXBCs(const int i, const int j, const int k, const int n, amrex::Real &sm, amrex::Real &sp, amrex::Real &sedge1, amrex::Real &sedge2, const amrex::Array4< const amrex::Real > &s, const amrex::Real velm, const amrex::Real velp, const int bclo, const int bchi, const int domlo, const int domhi)
Definition: hydro_godunov_ppm.H:281
+
PPM::SetYBCs
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void SetYBCs(const int i, const int j, const int k, const int n, amrex::Real &sm, amrex::Real &sp, amrex::Real &sedge1, amrex::Real &sedge2, const amrex::Array4< const amrex::Real > &s, const amrex::Real velm, const amrex::Real velp, const int bclo, const int bchi, const int domlo, const int domhi)
Definition: hydro_godunov_ppm.H:376
+
PPM::PredictStateOnFaces
void PredictStateOnFaces(amrex::Box const &bx, AMREX_D_DECL(amrex::Array4< amrex::Real > const &Imx, amrex::Array4< amrex::Real > const &Imy, amrex::Array4< amrex::Real > const &Imz), AMREX_D_DECL(amrex::Array4< amrex::Real > const &Ipx, amrex::Array4< amrex::Real > const &Ipy, amrex::Array4< amrex::Real > const &Ipz), AMREX_D_DECL(amrex::Array4< amrex::Real const > const &umac, amrex::Array4< amrex::Real const > const &vmac, amrex::Array4< amrex::Real const > const &wmac), amrex::Array4< amrex::Real const > const &q, amrex::Geometry geom, amrex::Real l_dt, amrex::BCRec const *pbc, const int ncomp, const Limiter &limiter)
Definition: hydro_godunov_ppm.H:900
+
PPM::PredictVelOnXFace
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void PredictVelOnXFace(const int i, const int j, const int k, const int n, const amrex::Real dtdx, const amrex::Real v_ad, const amrex::Array4< const amrex::Real > &S, const amrex::Array4< amrex::Real > &Im, const amrex::Array4< amrex::Real > &Ip, const amrex::BCRec bc, const int domlo, const int domhi, const Limiter &)
Definition: hydro_godunov_ppm.H:572
+
PPM::PredictVelOnFaces
void PredictVelOnFaces(amrex::Box const &bx, AMREX_D_DECL(amrex::Array4< amrex::Real > const &Imx, amrex::Array4< amrex::Real > const &Imy, amrex::Array4< amrex::Real > const &Imz), AMREX_D_DECL(amrex::Array4< amrex::Real > const &Ipx, amrex::Array4< amrex::Real > const &Ipy, amrex::Array4< amrex::Real > const &Ipz), amrex::Array4< amrex::Real const > const &q, amrex::Array4< amrex::Real const > const &vel, amrex::Geometry geom, amrex::Real dt, amrex::BCRec const *pbc, const Limiter &limiter)
Definition: hydro_godunov_ppm.H:865
+
PPM::limiters
limiters
Definition: hydro_godunov_ppm.H:18
+
PPM::VanLeer
@ VanLeer
Definition: hydro_godunov_ppm.H:18
+
PPM::WENOZ
@ WENOZ
Definition: hydro_godunov_ppm.H:18
+
PPM::WENO_JS
@ WENO_JS
Definition: hydro_godunov_ppm.H:18
+
PPM::NoLimiter
@ NoLimiter
Definition: hydro_godunov_ppm.H:18
half
real(kind=amrex_real), parameter half
amrex
CurlCurlStateType::b
@ b
@@ -1067,27 +1082,27 @@
amrex::ubound
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE Dim3 ubound(Array4< T > const &a) noexcept
amrex::lbound
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE Dim3 lbound(Array4< T > const &a) noexcept
amrex::ParallelFor
std::enable_if_t< std::is_integral_v< T > > ParallelFor(TypeList< CTOs... >, std::array< int, sizeof...(CTOs)> const &runtime_options, T N, F &&f)
-
PPM::nolimiter
Definition: hydro_godunov_ppm.H:21
-
PPM::nolimiter::sm_sp
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::GpuTuple< amrex::Real, amrex::Real > sm_sp(const amrex::Real, const amrex::Real sedge1, const amrex::Real sedge2)
Definition: hydro_godunov_ppm.H:59
-
PPM::nolimiter::sedge2
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::Real sedge2(const amrex::Real, const amrex::Real sm1, const amrex::Real s0, const amrex::Real sp1, const amrex::Real sp2)
Definition: hydro_godunov_ppm.H:44
-
PPM::nolimiter::sedge1
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::Real sedge1(const amrex::Real sm2, const amrex::Real sm1, const amrex::Real s0, const amrex::Real sp1, const amrex::Real)
Definition: hydro_godunov_ppm.H:27
-
PPM::nolimiter::do_limiting
static constexpr bool do_limiting
Definition: hydro_godunov_ppm.H:23
-
PPM::vanleer
Definition: hydro_godunov_ppm.H:67
-
PPM::vanleer::do_limiting
static constexpr bool do_limiting
Definition: hydro_godunov_ppm.H:69
-
PPM::vanleer::sedge2
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::Real sedge2(const amrex::Real, const amrex::Real sm1, const amrex::Real s0, const amrex::Real sp1, const amrex::Real sp2)
Definition: hydro_godunov_ppm.H:103
-
PPM::vanleer::vanLeer
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::Real vanLeer(const amrex::Real a, const amrex::Real b, const amrex::Real c)
Definition: hydro_godunov_ppm.H:72
-
PPM::vanleer::sm_sp
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::GpuTuple< amrex::Real, amrex::Real > sm_sp(const amrex::Real s0, const amrex::Real sedge1, const amrex::Real sedge2)
Definition: hydro_godunov_ppm.H:121
-
PPM::vanleer::sedge1
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::Real sedge1(const amrex::Real sm2, const amrex::Real sm1, const amrex::Real s0, const amrex::Real sp1, const amrex::Real)
Definition: hydro_godunov_ppm.H:86
-
PPM::weno_js
Definition: hydro_godunov_ppm.H:215
-
PPM::weno_js::do_limiting
static constexpr bool do_limiting
Definition: hydro_godunov_ppm.H:217
-
PPM::weno_js::sedge1
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::Real sedge1(const amrex::Real sm2, const amrex::Real sm1, const amrex::Real s0, const amrex::Real sp1, const amrex::Real sp2)
Definition: hydro_godunov_ppm.H:259
-
PPM::weno_js::sm_sp
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::GpuTuple< amrex::Real, amrex::Real > sm_sp(const amrex::Real, const amrex::Real sedge1, const amrex::Real sedge2)
Definition: hydro_godunov_ppm.H:270
-
PPM::weno_js::sedge2
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::Real sedge2(const amrex::Real sm2, const amrex::Real sm1, const amrex::Real s0, const amrex::Real sp1, const amrex::Real sp2)
Definition: hydro_godunov_ppm.H:221
-
PPM::wenoz
Definition: hydro_godunov_ppm.H:156
-
PPM::wenoz::do_limiting
static constexpr bool do_limiting
Definition: hydro_godunov_ppm.H:158
-
PPM::wenoz::sm_sp
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::GpuTuple< amrex::Real, amrex::Real > sm_sp(const amrex::Real, const amrex::Real sedge1, const amrex::Real sedge2)
Definition: hydro_godunov_ppm.H:207
-
PPM::wenoz::sedge2
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::Real sedge2(const amrex::Real sm2, const amrex::Real sm1, const amrex::Real s0, const amrex::Real sp1, const amrex::Real sp2)
Definition: hydro_godunov_ppm.H:162
-
PPM::wenoz::sedge1
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::Real sedge1(const amrex::Real sm2, const amrex::Real sm1, const amrex::Real s0, const amrex::Real sp1, const amrex::Real sp2)
Definition: hydro_godunov_ppm.H:196
+
PPM::nolimiter
Definition: hydro_godunov_ppm.H:22
+
PPM::nolimiter::sm_sp
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::GpuTuple< amrex::Real, amrex::Real > sm_sp(const amrex::Real, const amrex::Real sedge1, const amrex::Real sedge2)
Definition: hydro_godunov_ppm.H:60
+
PPM::nolimiter::sedge2
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::Real sedge2(const amrex::Real, const amrex::Real sm1, const amrex::Real s0, const amrex::Real sp1, const amrex::Real sp2)
Definition: hydro_godunov_ppm.H:45
+
PPM::nolimiter::sedge1
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::Real sedge1(const amrex::Real sm2, const amrex::Real sm1, const amrex::Real s0, const amrex::Real sp1, const amrex::Real)
Definition: hydro_godunov_ppm.H:28
+
PPM::nolimiter::do_limiting
static constexpr bool do_limiting
Definition: hydro_godunov_ppm.H:24
+
PPM::vanleer
Definition: hydro_godunov_ppm.H:68
+
PPM::vanleer::do_limiting
static constexpr bool do_limiting
Definition: hydro_godunov_ppm.H:70
+
PPM::vanleer::sedge2
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::Real sedge2(const amrex::Real, const amrex::Real sm1, const amrex::Real s0, const amrex::Real sp1, const amrex::Real sp2)
Definition: hydro_godunov_ppm.H:104
+
PPM::vanleer::vanLeer
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::Real vanLeer(const amrex::Real a, const amrex::Real b, const amrex::Real c)
Definition: hydro_godunov_ppm.H:73
+
PPM::vanleer::sm_sp
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::GpuTuple< amrex::Real, amrex::Real > sm_sp(const amrex::Real s0, const amrex::Real sedge1, const amrex::Real sedge2)
Definition: hydro_godunov_ppm.H:122
+
PPM::vanleer::sedge1
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::Real sedge1(const amrex::Real sm2, const amrex::Real sm1, const amrex::Real s0, const amrex::Real sp1, const amrex::Real)
Definition: hydro_godunov_ppm.H:87
+
PPM::weno_js
Definition: hydro_godunov_ppm.H:216
+
PPM::weno_js::do_limiting
static constexpr bool do_limiting
Definition: hydro_godunov_ppm.H:218
+
PPM::weno_js::sedge1
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::Real sedge1(const amrex::Real sm2, const amrex::Real sm1, const amrex::Real s0, const amrex::Real sp1, const amrex::Real sp2)
Definition: hydro_godunov_ppm.H:260
+
PPM::weno_js::sm_sp
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::GpuTuple< amrex::Real, amrex::Real > sm_sp(const amrex::Real, const amrex::Real sedge1, const amrex::Real sedge2)
Definition: hydro_godunov_ppm.H:271
+
PPM::weno_js::sedge2
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::Real sedge2(const amrex::Real sm2, const amrex::Real sm1, const amrex::Real s0, const amrex::Real sp1, const amrex::Real sp2)
Definition: hydro_godunov_ppm.H:222
+
PPM::wenoz
Definition: hydro_godunov_ppm.H:157
+
PPM::wenoz::do_limiting
static constexpr bool do_limiting
Definition: hydro_godunov_ppm.H:159
+
PPM::wenoz::sm_sp
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::GpuTuple< amrex::Real, amrex::Real > sm_sp(const amrex::Real, const amrex::Real sedge1, const amrex::Real sedge2)
Definition: hydro_godunov_ppm.H:208
+
PPM::wenoz::sedge2
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::Real sedge2(const amrex::Real sm2, const amrex::Real sm1, const amrex::Real s0, const amrex::Real sp1, const amrex::Real sp2)
Definition: hydro_godunov_ppm.H:163
+
PPM::wenoz::sedge1
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::Real sedge1(const amrex::Real sm2, const amrex::Real sm1, const amrex::Real s0, const amrex::Real sp1, const amrex::Real sp2)
Definition: hydro_godunov_ppm.H:197
amrex::Array4
amrex::Dim3
amrex::Dim3::x
int x
diff --git a/amrex-hydro/Doxygen/html/hydro__mol__edge__state__K_8H_source.html b/amrex-hydro/Doxygen/html/hydro__mol__edge__state__K_8H_source.html index 56dbed6..3aef8a2 100644 --- a/amrex-hydro/Doxygen/html/hydro__mol__edge__state__K_8H_source.html +++ b/amrex-hydro/Doxygen/html/hydro__mol__edge__state__K_8H_source.html @@ -143,307 +143,313 @@
45  amrex::Real qmns = q(i-1,j,k,n) + 0.5 *
46  amrex_calc_xslope_extdir( i-1, j, k, n, order, q, extdir_or_ho_lo, extdir_or_ho_hi, domlo, domhi );
47 
-
48  HydroBC::SetXEdgeBCs(i,j,k,n,q,qmns,qpls,d_bcrec[n].lo(0),domlo,d_bcrec[n].hi(0),domhi,is_velocity);
-
49 
-
50  if ( (i==domlo) && (d_bcrec[n].lo(0) == amrex::BCType::foextrap || d_bcrec[n].lo(0) == amrex::BCType::hoextrap) )
-
51  {
-
52  if ( umac(i,j,k) >= 0. && n==XVEL && is_velocity ) qpls = amrex::min(qpls,0.0_rt);
-
53  qmns = qpls;
-
54  }
-
55  if ( (i==domhi+1) && (d_bcrec[n].hi(0) == amrex::BCType::foextrap || d_bcrec[n].hi(0) == amrex::BCType::hoextrap) )
-
56  {
-
57  if ( umac(i,j,k) <= 0. && n==XVEL && is_velocity ) qmns = amrex::max(qmns,0.0_rt);
-
58  qpls = qmns;
-
59  }
-
60 
-
61  if ( umac(i,j,k) > small_vel)
-
62  {
-
63  qs = qmns;
-
64  }
-
65  else if ( umac(i,j,k) < -small_vel)
-
66  {
-
67  qs = qpls;
-
68  }
-
69  else
-
70  {
-
71  qs = 0.5*(qmns+qpls);
-
72  }
-
73  }
-
74 
-
75  return qs;
-
76 }
-
77 
-
78 AMREX_GPU_DEVICE AMREX_FORCE_INLINE
-
79 amrex::Real hydro_mol_xedge_state ( int i, int j, int k, int n,
-
80  amrex::Array4<amrex::Real const> const& q,
-
81  amrex::Array4<amrex::Real const> const& umac,
-
82  amrex::BCRec const* const d_bcrec,
-
83  int domlo, int domhi, bool is_velocity) noexcept
-
84 {
-
85  //slope order
-
86  int order = 2;
-
87 
-
88  amrex::Real qs;
-
89  amrex::Real qpls = q(i ,j,k,n) - 0.5 * amrex_calc_xslope( i , j, k, n, order, q );
-
90  amrex::Real qmns = q(i-1,j,k,n) + 0.5 * amrex_calc_xslope( i-1, j, k, n, order, q );
-
91 
-
92  HydroBC::SetXEdgeBCs(i,j,k,n,q,qmns,qpls,d_bcrec[n].lo(0),domlo,d_bcrec[n].hi(0),domhi,is_velocity);
-
93 
-
94  if ( (i==domlo) && (d_bcrec[n].lo(0) == amrex::BCType::foextrap || d_bcrec[n].lo(0) == amrex::BCType::hoextrap) )
-
95  {
-
96  if ( umac(i,j,k) >= 0. && n==XVEL && is_velocity ) qpls = amrex::min(qpls,0.0_rt);
-
97  qmns = qpls;
-
98  }
-
99  if ( (i==domhi+1) && (d_bcrec[n].hi(0) == amrex::BCType::foextrap || d_bcrec[n].hi(0) == amrex::BCType::hoextrap) )
-
100  {
-
101  if ( umac(i,j,k) <= 0. && n==XVEL && is_velocity ) qmns = amrex::max(qmns,0.0_rt);
-
102  qpls = qmns;
-
103  }
-
104 
-
105  if ( umac(i,j,k) > small_vel)
-
106  {
-
107  qs = qmns;
-
108  }
-
109  else if ( umac(i,j,k) < -small_vel)
-
110  {
-
111  qs = qpls;
-
112  }
-
113  else
-
114  {
-
115  qs = 0.5*(qmns+qpls);
-
116  }
-
117 
-
118  return qs;
-
119 }
-
120 
-
121 
-
122 AMREX_GPU_DEVICE AMREX_FORCE_INLINE
-
123 amrex::Real hydro_mol_yedge_state_extdir ( int i, int j, int k, int n,
-
124  amrex::Array4<amrex::Real const> const& q,
-
125  amrex::Array4<amrex::Real const> const& vmac,
-
126  amrex::BCRec const* const d_bcrec,
-
127  int domlo, int domhi, bool is_velocity) noexcept
-
128 {
-
129  //slope order
-
130  int order = 2;
-
131 
-
132  bool edlo = (d_bcrec[n].lo(1) == amrex::BCType::ext_dir);
-
133  bool edhi = (d_bcrec[n].hi(1) == amrex::BCType::ext_dir);
-
134 
-
135  bool extdir_or_ho_lo = (d_bcrec[n].lo(1) == amrex::BCType::ext_dir) || d_bcrec[n].lo(1) == amrex::BCType::hoextrap;
-
136  bool extdir_or_ho_hi = (d_bcrec[n].hi(1) == amrex::BCType::ext_dir) || d_bcrec[n].lo(1) == amrex::BCType::hoextrap;
-
137 
-
138  amrex::Real qs;
+
48  HydroBC::SetXEdgeBCs(i,j,k,n,q,qmns,qpls,umac(i,j,k),umac(i,j,k),
+
49  d_bcrec[n].lo(0),domlo,d_bcrec[n].hi(0),domhi,is_velocity);
+
50 
+
51  if ( (i==domlo) && (d_bcrec[n].lo(0) == amrex::BCType::foextrap || d_bcrec[n].lo(0) == amrex::BCType::hoextrap) )
+
52  {
+
53  if ( umac(i,j,k) >= 0. && n==XVEL && is_velocity ) qpls = amrex::min(qpls,0.0_rt);
+
54  qmns = qpls;
+
55  }
+
56  if ( (i==domhi+1) && (d_bcrec[n].hi(0) == amrex::BCType::foextrap || d_bcrec[n].hi(0) == amrex::BCType::hoextrap) )
+
57  {
+
58  if ( umac(i,j,k) <= 0. && n==XVEL && is_velocity ) qmns = amrex::max(qmns,0.0_rt);
+
59  qpls = qmns;
+
60  }
+
61 
+
62  if ( umac(i,j,k) > small_vel)
+
63  {
+
64  qs = qmns;
+
65  }
+
66  else if ( umac(i,j,k) < -small_vel)
+
67  {
+
68  qs = qpls;
+
69  }
+
70  else
+
71  {
+
72  qs = 0.5*(qmns+qpls);
+
73  }
+
74  }
+
75 
+
76  return qs;
+
77 }
+
78 
+
79 AMREX_GPU_DEVICE AMREX_FORCE_INLINE
+
80 amrex::Real hydro_mol_xedge_state ( int i, int j, int k, int n,
+
81  amrex::Array4<amrex::Real const> const& q,
+
82  amrex::Array4<amrex::Real const> const& umac,
+
83  amrex::BCRec const* const d_bcrec,
+
84  int domlo, int domhi, bool is_velocity) noexcept
+
85 {
+
86  //slope order
+
87  int order = 2;
+
88 
+
89  amrex::Real qs;
+
90  amrex::Real qpls = q(i ,j,k,n) - 0.5 * amrex_calc_xslope( i , j, k, n, order, q );
+
91  amrex::Real qmns = q(i-1,j,k,n) + 0.5 * amrex_calc_xslope( i-1, j, k, n, order, q );
+
92 
+
93  HydroBC::SetXEdgeBCs(i,j,k,n,q,qmns,qpls,umac(i,j,k),umac(i,j,k),
+
94  d_bcrec[n].lo(0),domlo,d_bcrec[n].hi(0),domhi,is_velocity);
+
95 
+
96  if ( (i==domlo) && (d_bcrec[n].lo(0) == amrex::BCType::foextrap || d_bcrec[n].lo(0) == amrex::BCType::hoextrap) )
+
97  {
+
98  if ( umac(i,j,k) >= 0. && n==XVEL && is_velocity ) qpls = amrex::min(qpls,0.0_rt);
+
99  qmns = qpls;
+
100  }
+
101  if ( (i==domhi+1) && (d_bcrec[n].hi(0) == amrex::BCType::foextrap || d_bcrec[n].hi(0) == amrex::BCType::hoextrap) )
+
102  {
+
103  if ( umac(i,j,k) <= 0. && n==XVEL && is_velocity ) qmns = amrex::max(qmns,0.0_rt);
+
104  qpls = qmns;
+
105  }
+
106 
+
107  if ( umac(i,j,k) > small_vel)
+
108  {
+
109  qs = qmns;
+
110  }
+
111  else if ( umac(i,j,k) < -small_vel)
+
112  {
+
113  qs = qpls;
+
114  }
+
115  else
+
116  {
+
117  qs = 0.5*(qmns+qpls);
+
118  }
+
119 
+
120  return qs;
+
121 }
+
122 
+
123 
+
124 AMREX_GPU_DEVICE AMREX_FORCE_INLINE
+
125 amrex::Real hydro_mol_yedge_state_extdir ( int i, int j, int k, int n,
+
126  amrex::Array4<amrex::Real const> const& q,
+
127  amrex::Array4<amrex::Real const> const& vmac,
+
128  amrex::BCRec const* const d_bcrec,
+
129  int domlo, int domhi, bool is_velocity) noexcept
+
130 {
+
131  //slope order
+
132  int order = 2;
+
133 
+
134  bool edlo = (d_bcrec[n].lo(1) == amrex::BCType::ext_dir);
+
135  bool edhi = (d_bcrec[n].hi(1) == amrex::BCType::ext_dir);
+
136 
+
137  bool extdir_or_ho_lo = (d_bcrec[n].lo(1) == amrex::BCType::ext_dir) || d_bcrec[n].lo(1) == amrex::BCType::hoextrap;
+
138  bool extdir_or_ho_hi = (d_bcrec[n].hi(1) == amrex::BCType::ext_dir) || d_bcrec[n].lo(1) == amrex::BCType::hoextrap;
139 
-
140  if (edlo && j <= domlo)
-
141  {
-
142  qs = q(i,domlo-1,k,n);
-
143  }
-
144  else if ( edhi && j >= domhi+1)
-
145  {
-
146  qs = q(i,domhi+1,k,n);
-
147  }
-
148  else
-
149  {
-
150  amrex::Real qpls = q(i,j ,k,n) - 0.5 *
-
151  amrex_calc_yslope_extdir( i, j , k, n, order, q, extdir_or_ho_lo, extdir_or_ho_hi, domlo, domhi );
-
152  amrex::Real qmns = q(i,j-1,k,n) + 0.5 *
-
153  amrex_calc_yslope_extdir( i, j-1, k, n, order, q, extdir_or_ho_lo, extdir_or_ho_hi, domlo, domhi );
-
154 
-
155  HydroBC::SetYEdgeBCs(i,j,k,n,q,qmns,qpls,d_bcrec[n].lo(1),domlo,d_bcrec[n].hi(1),domhi,is_velocity);
+
140  amrex::Real qs;
+
141 
+
142  if (edlo && j <= domlo)
+
143  {
+
144  qs = q(i,domlo-1,k,n);
+
145  }
+
146  else if ( edhi && j >= domhi+1)
+
147  {
+
148  qs = q(i,domhi+1,k,n);
+
149  }
+
150  else
+
151  {
+
152  amrex::Real qpls = q(i,j ,k,n) - 0.5 *
+
153  amrex_calc_yslope_extdir( i, j , k, n, order, q, extdir_or_ho_lo, extdir_or_ho_hi, domlo, domhi );
+
154  amrex::Real qmns = q(i,j-1,k,n) + 0.5 *
+
155  amrex_calc_yslope_extdir( i, j-1, k, n, order, q, extdir_or_ho_lo, extdir_or_ho_hi, domlo, domhi );
156 
-
157  if ( (j==domlo) && (d_bcrec[n].lo(1) == amrex::BCType::foextrap || d_bcrec[n].lo(1) == amrex::BCType::hoextrap) )
-
158  {
-
159  if ( vmac(i,j,k) >= 0. && n==YVEL && is_velocity ) qpls = amrex::min(qpls,0.0_rt);
-
160  qmns = qpls;
-
161  }
-
162  if ( (j==domhi+1) && (d_bcrec[n].hi(1) == amrex::BCType::foextrap || d_bcrec[n].hi(1) == amrex::BCType::hoextrap) )
-
163  {
-
164  if ( vmac(i,j,k) <= 0. && n==YVEL && is_velocity ) qmns = amrex::max(qmns,0.0_rt);
-
165  qpls = qmns;
-
166  }
-
167 
-
168  if ( vmac(i,j,k) > small_vel)
-
169  {
-
170  qs = qmns;
-
171  }
-
172  else if ( vmac(i,j,k) < -small_vel)
-
173  {
-
174  qs = qpls;
-
175  }
-
176  else
-
177  {
-
178  qs = 0.5*(qmns+qpls);
-
179  }
-
180  }
-
181 
-
182  return qs;
-
183 }
+
157  HydroBC::SetYEdgeBCs(i,j,k,n,q,qmns,qpls,vmac(i,j,k),vmac(i,j,k),
+
158  d_bcrec[n].lo(1),domlo,d_bcrec[n].hi(1),domhi,is_velocity);
+
159 
+
160  if ( (j==domlo) && (d_bcrec[n].lo(1) == amrex::BCType::foextrap || d_bcrec[n].lo(1) == amrex::BCType::hoextrap) )
+
161  {
+
162  if ( vmac(i,j,k) >= 0. && n==YVEL && is_velocity ) qpls = amrex::min(qpls,0.0_rt);
+
163  qmns = qpls;
+
164  }
+
165  if ( (j==domhi+1) && (d_bcrec[n].hi(1) == amrex::BCType::foextrap || d_bcrec[n].hi(1) == amrex::BCType::hoextrap) )
+
166  {
+
167  if ( vmac(i,j,k) <= 0. && n==YVEL && is_velocity ) qmns = amrex::max(qmns,0.0_rt);
+
168  qpls = qmns;
+
169  }
+
170 
+
171  if ( vmac(i,j,k) > small_vel)
+
172  {
+
173  qs = qmns;
+
174  }
+
175  else if ( vmac(i,j,k) < -small_vel)
+
176  {
+
177  qs = qpls;
+
178  }
+
179  else
+
180  {
+
181  qs = 0.5*(qmns+qpls);
+
182  }
+
183  }
184 
-
185 
-
186 
-
187 AMREX_GPU_DEVICE AMREX_FORCE_INLINE
-
188 amrex::Real hydro_mol_yedge_state ( int i, int j, int k, int n,
-
189  amrex::Array4<amrex::Real const> const& q,
-
190  amrex::Array4<amrex::Real const> const& vmac,
-
191  amrex::BCRec const* const d_bcrec,
-
192  int domlo, int domhi, bool is_velocity) noexcept
-
193 {
-
194  //slope order
-
195  int order = 2;
-
196 
-
197  amrex::Real qs;
-
198  amrex::Real qpls = q(i,j ,k,n) - 0.5 * amrex_calc_yslope( i, j , k, n, order, q );
-
199  amrex::Real qmns = q(i,j-1,k,n) + 0.5 * amrex_calc_yslope( i, j-1, k, n, order, q );
-
200 
-
201  HydroBC::SetYEdgeBCs(i,j,k,n,q,qmns,qpls,d_bcrec[n].lo(1),domlo,d_bcrec[n].hi(1),domhi,is_velocity);
-
202 
-
203  if ( (j==domlo) && (d_bcrec[n].lo(1) == amrex::BCType::foextrap || d_bcrec[n].lo(1) == amrex::BCType::hoextrap) )
-
204  {
-
205  if ( vmac(i,j,k) >= 0. && n==YVEL && is_velocity ) qpls = amrex::min(qpls,0.0_rt);
-
206  qmns = qpls;
-
207  }
-
208  if ( (j==domhi+1) && (d_bcrec[n].hi(1) == amrex::BCType::foextrap || d_bcrec[n].hi(1) == amrex::BCType::hoextrap) )
-
209  {
-
210  if ( vmac(i,j,k) <= 0. && n==YVEL && is_velocity ) qmns = amrex::max(qmns,0.0_rt);
-
211  qpls = qmns;
-
212  }
-
213 
-
214  if ( vmac(i,j,k) > small_vel)
-
215  {
-
216  qs = qmns;
-
217  }
-
218  else if ( vmac(i,j,k) < -small_vel)
+
185  return qs;
+
186 }
+
187 
+
188 
+
189 
+
190 AMREX_GPU_DEVICE AMREX_FORCE_INLINE
+
191 amrex::Real hydro_mol_yedge_state ( int i, int j, int k, int n,
+
192  amrex::Array4<amrex::Real const> const& q,
+
193  amrex::Array4<amrex::Real const> const& vmac,
+
194  amrex::BCRec const* const d_bcrec,
+
195  int domlo, int domhi, bool is_velocity) noexcept
+
196 {
+
197  //slope order
+
198  int order = 2;
+
199 
+
200  amrex::Real qs;
+
201  amrex::Real qpls = q(i,j ,k,n) - 0.5 * amrex_calc_yslope( i, j , k, n, order, q );
+
202  amrex::Real qmns = q(i,j-1,k,n) + 0.5 * amrex_calc_yslope( i, j-1, k, n, order, q );
+
203 
+
204  HydroBC::SetYEdgeBCs(i,j,k,n,q,qmns,qpls,vmac(i,j,k),vmac(i,j,k),
+
205  d_bcrec[n].lo(1),domlo,d_bcrec[n].hi(1),domhi,is_velocity);
+
206 
+
207  if ( (j==domlo) && (d_bcrec[n].lo(1) == amrex::BCType::foextrap || d_bcrec[n].lo(1) == amrex::BCType::hoextrap) )
+
208  {
+
209  if ( vmac(i,j,k) >= 0. && n==YVEL && is_velocity ) qpls = amrex::min(qpls,0.0_rt);
+
210  qmns = qpls;
+
211  }
+
212  if ( (j==domhi+1) && (d_bcrec[n].hi(1) == amrex::BCType::foextrap || d_bcrec[n].hi(1) == amrex::BCType::hoextrap) )
+
213  {
+
214  if ( vmac(i,j,k) <= 0. && n==YVEL && is_velocity ) qmns = amrex::max(qmns,0.0_rt);
+
215  qpls = qmns;
+
216  }
+
217 
+
218  if ( vmac(i,j,k) > small_vel)
219  {
-
220  qs = qpls;
+
220  qs = qmns;
221  }
-
222  else
+
222  else if ( vmac(i,j,k) < -small_vel)
223  {
-
224  qs = 0.5*(qmns+qpls);
+
224  qs = qpls;
225  }
-
226 
-
227  return qs;
-
228 
-
229 }
+
226  else
+
227  {
+
228  qs = 0.5*(qmns+qpls);
+
229  }
230 
-
231 #if (AMREX_SPACEDIM==3)
+
231  return qs;
232 
-
233 AMREX_GPU_DEVICE AMREX_FORCE_INLINE
-
234 amrex::Real hydro_mol_zedge_state_extdir ( int i, int j, int k, int n,
-
235  amrex::Array4<amrex::Real const> const& q,
-
236  amrex::Array4<amrex::Real const> const& wmac,
-
237  amrex::BCRec const* const d_bcrec,
-
238  int domlo, int domhi, bool is_velocity) noexcept
-
239 {
-
240  //slope order
-
241  int order = 2;
-
242 
-
243  amrex::Real qs;
-
244 
-
245  bool edlo = (d_bcrec[n].lo(2) == amrex::BCType::ext_dir);
-
246  bool edhi = (d_bcrec[n].hi(2) == amrex::BCType::ext_dir);
-
247 
-
248  bool extdir_or_ho_lo = (d_bcrec[n].lo(2) == amrex::BCType::ext_dir) || d_bcrec[n].lo(2) == amrex::BCType::hoextrap;
-
249  bool extdir_or_ho_hi = (d_bcrec[n].hi(2) == amrex::BCType::ext_dir) || d_bcrec[n].lo(2) == amrex::BCType::hoextrap;
-
250 
-
251  if (edlo && k <= domlo)
-
252  {
-
253  qs = q(i,j,domlo-1,n);
-
254  }
-
255  else if ( edhi && k >= domhi+1)
+
233 }
+
234 
+
235 #if (AMREX_SPACEDIM==3)
+
236 
+
237 AMREX_GPU_DEVICE AMREX_FORCE_INLINE
+
238 amrex::Real hydro_mol_zedge_state_extdir ( int i, int j, int k, int n,
+
239  amrex::Array4<amrex::Real const> const& q,
+
240  amrex::Array4<amrex::Real const> const& wmac,
+
241  amrex::BCRec const* const d_bcrec,
+
242  int domlo, int domhi, bool is_velocity) noexcept
+
243 {
+
244  //slope order
+
245  int order = 2;
+
246 
+
247  amrex::Real qs;
+
248 
+
249  bool edlo = (d_bcrec[n].lo(2) == amrex::BCType::ext_dir);
+
250  bool edhi = (d_bcrec[n].hi(2) == amrex::BCType::ext_dir);
+
251 
+
252  bool extdir_or_ho_lo = (d_bcrec[n].lo(2) == amrex::BCType::ext_dir) || d_bcrec[n].lo(2) == amrex::BCType::hoextrap;
+
253  bool extdir_or_ho_hi = (d_bcrec[n].hi(2) == amrex::BCType::ext_dir) || d_bcrec[n].lo(2) == amrex::BCType::hoextrap;
+
254 
+
255  if (edlo && k <= domlo)
256  {
-
257  qs = q(i,j,domhi+1,n);
+
257  qs = q(i,j,domlo-1,n);
258  }
-
259  else
+
259  else if ( edhi && k >= domhi+1)
260  {
-
261  amrex::Real qpls = q(i,j,k ,n) - 0.5 *
-
262  amrex_calc_zslope_extdir( i, j, k , n, order, q, extdir_or_ho_lo, extdir_or_ho_hi, domlo, domhi );
-
263  amrex::Real qmns = q(i,j,k-1,n) + 0.5 *
-
264  amrex_calc_zslope_extdir( i, j, k-1, n, order, q, extdir_or_ho_lo, extdir_or_ho_hi, domlo, domhi );
-
265 
-
266  HydroBC::SetZEdgeBCs(i,j,k,n,q,qmns,qpls,d_bcrec[n].lo(2),domlo,d_bcrec[n].hi(2),domhi,is_velocity);
-
267 
-
268  if ( (k==domlo) && (d_bcrec[n].lo(2) == amrex::BCType::foextrap || d_bcrec[n].lo(2) == amrex::BCType::hoextrap) )
-
269  {
-
270  if ( wmac(i,j,k) >= 0. && n==ZVEL && is_velocity ) qpls = amrex::min(qpls,0.0_rt);
-
271  qmns = qpls;
-
272  }
-
273  if ( (k==domhi+1) && (d_bcrec[n].hi(2) == amrex::BCType::foextrap || d_bcrec[n].hi(2) == amrex::BCType::hoextrap) )
+
261  qs = q(i,j,domhi+1,n);
+
262  }
+
263  else
+
264  {
+
265  amrex::Real qpls = q(i,j,k ,n) - 0.5 *
+
266  amrex_calc_zslope_extdir( i, j, k , n, order, q, extdir_or_ho_lo, extdir_or_ho_hi, domlo, domhi );
+
267  amrex::Real qmns = q(i,j,k-1,n) + 0.5 *
+
268  amrex_calc_zslope_extdir( i, j, k-1, n, order, q, extdir_or_ho_lo, extdir_or_ho_hi, domlo, domhi );
+
269 
+
270  HydroBC::SetZEdgeBCs(i,j,k,n,q,qmns,qpls,wmac(i,j,k),wmac(i,j,k),
+
271  d_bcrec[n].lo(2),domlo,d_bcrec[n].hi(2),domhi,is_velocity);
+
272 
+
273  if ( (k==domlo) && (d_bcrec[n].lo(2) == amrex::BCType::foextrap || d_bcrec[n].lo(2) == amrex::BCType::hoextrap) )
274  {
-
275  if ( wmac(i,j,k) <= 0. && n==ZVEL && is_velocity ) qmns = amrex::max(qmns,0.0_rt);
-
276  qpls = qmns;
+
275  if ( wmac(i,j,k) >= 0. && n==ZVEL && is_velocity ) qpls = amrex::min(qpls,0.0_rt);
+
276  qmns = qpls;
277  }
-
278 
-
279  if ( wmac(i,j,k) > small_vel)
-
280  {
-
281  qs = qmns;
+
278  if ( (k==domhi+1) && (d_bcrec[n].hi(2) == amrex::BCType::foextrap || d_bcrec[n].hi(2) == amrex::BCType::hoextrap) )
+
279  {
+
280  if ( wmac(i,j,k) <= 0. && n==ZVEL && is_velocity ) qmns = amrex::max(qmns,0.0_rt);
+
281  qpls = qmns;
282  }
-
283  else if ( wmac(i,j,k) < -small_vel)
-
284  {
-
285  qs = qpls;
-
286  }
-
287  else
-
288  {
-
289  qs = 0.5*(qmns+qpls);
-
290  }
-
291  }
-
292 
-
293  return qs;
-
294 }
-
295 
-
296 
+
283 
+
284  if ( wmac(i,j,k) > small_vel)
+
285  {
+
286  qs = qmns;
+
287  }
+
288  else if ( wmac(i,j,k) < -small_vel)
+
289  {
+
290  qs = qpls;
+
291  }
+
292  else
+
293  {
+
294  qs = 0.5*(qmns+qpls);
+
295  }
+
296  }
297 
-
298 AMREX_GPU_DEVICE AMREX_FORCE_INLINE
-
299 amrex::Real hydro_mol_zedge_state ( int i, int j, int k, int n,
-
300  amrex::Array4<amrex::Real const> const& q,
-
301  amrex::Array4<amrex::Real const> const& wmac,
-
302  amrex::BCRec const* const d_bcrec,
-
303  int domlo, int domhi, bool is_velocity) noexcept
-
304 {
-
305  //slope order
-
306  int order = 2;
-
307 
-
308  amrex::Real qs;
-
309  amrex::Real qpls = q(i,j,k ,n) - 0.5 * amrex_calc_zslope( i, j, k , n, order, q );
-
310  amrex::Real qmns = q(i,j,k-1,n) + 0.5 * amrex_calc_zslope( i, j, k-1, n, order, q );
-
311 
-
312  HydroBC::SetZEdgeBCs(i,j,k,n,q,qmns,qpls,d_bcrec[n].lo(2),domlo,d_bcrec[n].hi(2),domhi,is_velocity);
-
313 
-
314  if ( (k==domlo) && (d_bcrec[n].lo(2) == amrex::BCType::foextrap || d_bcrec[n].lo(2) == amrex::BCType::hoextrap) )
-
315  {
-
316  if ( wmac(i,j,k) >= 0. && n==ZVEL && is_velocity ) qpls = amrex::min(qpls,0.0_rt);
-
317  qmns = qpls;
-
318  }
-
319  if ( (k==domhi+1) && (d_bcrec[n].hi(2) == amrex::BCType::foextrap || d_bcrec[n].hi(2) == amrex::BCType::hoextrap) )
-
320  {
-
321  if ( wmac(i,j,k) <= 0. && n==ZVEL && is_velocity ) qmns = amrex::max(qmns,0.0_rt);
-
322  qpls = qmns;
-
323  }
-
324 
-
325  if ( wmac(i,j,k) > small_vel)
+
298  return qs;
+
299 }
+
300 
+
301 
+
302 
+
303 AMREX_GPU_DEVICE AMREX_FORCE_INLINE
+
304 amrex::Real hydro_mol_zedge_state ( int i, int j, int k, int n,
+
305  amrex::Array4<amrex::Real const> const& q,
+
306  amrex::Array4<amrex::Real const> const& wmac,
+
307  amrex::BCRec const* const d_bcrec,
+
308  int domlo, int domhi, bool is_velocity) noexcept
+
309 {
+
310  //slope order
+
311  int order = 2;
+
312 
+
313  amrex::Real qs;
+
314  amrex::Real qpls = q(i,j,k ,n) - 0.5 * amrex_calc_zslope( i, j, k , n, order, q );
+
315  amrex::Real qmns = q(i,j,k-1,n) + 0.5 * amrex_calc_zslope( i, j, k-1, n, order, q );
+
316 
+
317  HydroBC::SetZEdgeBCs(i,j,k,n,q,qmns,qpls,wmac(i,j,k),wmac(i,j,k),
+
318  d_bcrec[n].lo(2),domlo,d_bcrec[n].hi(2),domhi,is_velocity);
+
319 
+
320  if ( (k==domlo) && (d_bcrec[n].lo(2) == amrex::BCType::foextrap || d_bcrec[n].lo(2) == amrex::BCType::hoextrap) )
+
321  {
+
322  if ( wmac(i,j,k) >= 0. && n==ZVEL && is_velocity ) qpls = amrex::min(qpls,0.0_rt);
+
323  qmns = qpls;
+
324  }
+
325  if ( (k==domhi+1) && (d_bcrec[n].hi(2) == amrex::BCType::foextrap || d_bcrec[n].hi(2) == amrex::BCType::hoextrap) )
326  {
-
327  qs = qmns;
-
328  }
-
329  else if ( wmac(i,j,k) < -small_vel)
-
330  {
-
331  qs = qpls;
-
332  }
-
333  else
-
334  {
-
335  qs = 0.5*(qmns+qpls);
-
336  }
-
337 
-
338  return qs;
-
339 
-
340 }
-
341 
-
342 #endif
+
327  if ( wmac(i,j,k) <= 0. && n==ZVEL && is_velocity ) qmns = amrex::max(qmns,0.0_rt);
+
328  qpls = qmns;
+
329  }
+
330 
+
331  if ( wmac(i,j,k) > small_vel)
+
332  {
+
333  qs = qmns;
+
334  }
+
335  else if ( wmac(i,j,k) < -small_vel)
+
336  {
+
337  qs = qpls;
+
338  }
+
339  else
+
340  {
+
341  qs = 0.5*(qmns+qpls);
+
342  }
343 
-
344 
-
345 }
-
346 
-
347 #endif
-
348 /** @}*/
+
344  return qs;
+
345 
+
346 }
+
347 
+
348 #endif
+
349 
+
350 
+
351 }
+
352 
+
353 #endif
+
354 /** @}*/
AMREX_FORCE_INLINE
#define AMREX_FORCE_INLINE
AMREX_GPU_DEVICE
#define AMREX_GPU_DEVICE
AMReX_Slopes_K.H
@@ -454,12 +460,12 @@
ZVEL
#define ZVEL
Definition: hydro_constants.H:30
hydro_bcs_K.H
hydro_constants.H
-
HydroBC::SetXEdgeBCs
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void SetXEdgeBCs(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, int bchi, int domhi, bool is_velocity)
Boundary condition effects.
Definition: hydro_bcs_K.H:77
-
HydroBC::SetYEdgeBCs
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void SetYEdgeBCs(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, int bchi, int domhi, bool is_velocity)
Boundary condition effects.
Definition: hydro_bcs_K.H:144
+
HydroBC::SetYEdgeBCs
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void SetYEdgeBCs(int i, int j, int k, int n, const amrex::Array4< const amrex::Real > &s, amrex::Real &lo, amrex::Real &hi, amrex::Real velm, amrex::Real velp, int bclo, int domlo, int bchi, int domhi, bool is_velocity)
Boundary condition effects.
Definition: hydro_bcs_K.H:166
+
HydroBC::SetXEdgeBCs
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void SetXEdgeBCs(int i, int j, int k, int n, const amrex::Array4< const amrex::Real > &s, amrex::Real &lo, amrex::Real &hi, amrex::Real velm, amrex::Real velp, int bclo, int domlo, int bchi, int domhi, bool is_velocity)
Boundary condition effects.
Definition: hydro_bcs_K.H:77
MOL
-
MOL::hydro_mol_xedge_state
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real hydro_mol_xedge_state(int i, int j, int k, int n, amrex::Array4< amrex::Real const > const &q, amrex::Array4< amrex::Real const > const &umac, amrex::BCRec const *const d_bcrec, int domlo, int domhi, bool is_velocity) noexcept
Definition: hydro_mol_edge_state_K.H:79
-
MOL::hydro_mol_yedge_state_extdir
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real hydro_mol_yedge_state_extdir(int i, int j, int k, int n, amrex::Array4< amrex::Real const > const &q, amrex::Array4< amrex::Real const > const &vmac, amrex::BCRec const *const d_bcrec, int domlo, int domhi, bool is_velocity) noexcept
Definition: hydro_mol_edge_state_K.H:123
-
MOL::hydro_mol_yedge_state
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real hydro_mol_yedge_state(int i, int j, int k, int n, amrex::Array4< amrex::Real const > const &q, amrex::Array4< amrex::Real const > const &vmac, amrex::BCRec const *const d_bcrec, int domlo, int domhi, bool is_velocity) noexcept
Definition: hydro_mol_edge_state_K.H:188
+
MOL::hydro_mol_xedge_state
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real hydro_mol_xedge_state(int i, int j, int k, int n, amrex::Array4< amrex::Real const > const &q, amrex::Array4< amrex::Real const > const &umac, amrex::BCRec const *const d_bcrec, int domlo, int domhi, bool is_velocity) noexcept
Definition: hydro_mol_edge_state_K.H:80
+
MOL::hydro_mol_yedge_state_extdir
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real hydro_mol_yedge_state_extdir(int i, int j, int k, int n, amrex::Array4< amrex::Real const > const &q, amrex::Array4< amrex::Real const > const &vmac, amrex::BCRec const *const d_bcrec, int domlo, int domhi, bool is_velocity) noexcept
Definition: hydro_mol_edge_state_K.H:125
+
MOL::hydro_mol_yedge_state
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real hydro_mol_yedge_state(int i, int j, int k, int n, amrex::Array4< amrex::Real const > const &q, amrex::Array4< amrex::Real const > const &vmac, amrex::BCRec const *const d_bcrec, int domlo, int domhi, bool is_velocity) noexcept
Definition: hydro_mol_edge_state_K.H:191
MOL::hydro_mol_xedge_state_extdir
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real hydro_mol_xedge_state_extdir(int i, int j, int k, int n, amrex::Array4< amrex::Real const > const &q, amrex::Array4< amrex::Real const > const &umac, amrex::BCRec const *const d_bcrec, int domlo, int domhi, bool is_velocity) noexcept
Definition: hydro_mol_edge_state_K.H:16
amrex::amrex_calc_yslope_extdir
AMREX_GPU_DEVICE AMREX_FORCE_INLINE Real amrex_calc_yslope_extdir(int i, int j, int k, int n, int order, amrex::Array4< Real const > const &q, bool edlo, bool edhi, int domlo, int domhi) noexcept
amrex::max
AMREX_GPU_HOST_DEVICE constexpr AMREX_FORCE_INLINE const T & max(const T &a, const T &b) noexcept
diff --git a/amrex-hydro/Doxygen/html/hydro__utils_8H.html b/amrex-hydro/Doxygen/html/hydro__utils_8H.html index 1d875d1..32b422c 100644 --- a/amrex-hydro/Doxygen/html/hydro__utils_8H.html +++ b/amrex-hydro/Doxygen/html/hydro__utils_8H.html @@ -109,12 +109,13 @@ - - - - - - + + + + + + +
diff --git a/amrex-hydro/Doxygen/html/hydro__utils_8H__incl.map b/amrex-hydro/Doxygen/html/hydro__utils_8H__incl.map index 24a487c..0616f9c 100644 --- a/amrex-hydro/Doxygen/html/hydro__utils_8H__incl.map +++ b/amrex-hydro/Doxygen/html/hydro__utils_8H__incl.map @@ -1,10 +1,11 @@ - - - - - - + + + + + + + diff --git a/amrex-hydro/Doxygen/html/hydro__utils_8H__incl.md5 b/amrex-hydro/Doxygen/html/hydro__utils_8H__incl.md5 index 3834b5e..d4499f1 100644 --- a/amrex-hydro/Doxygen/html/hydro__utils_8H__incl.md5 +++ b/amrex-hydro/Doxygen/html/hydro__utils_8H__incl.md5 @@ -1 +1 @@ -44887916aed08725009a2bde612b7a12 \ No newline at end of file +16209100eac809f4c20c0c7b4b76ec93 \ No newline at end of file diff --git a/amrex-hydro/Doxygen/html/hydro__utils_8H__incl.png b/amrex-hydro/Doxygen/html/hydro__utils_8H__incl.png index cd7c000..7958026 100644 Binary files a/amrex-hydro/Doxygen/html/hydro__utils_8H__incl.png and b/amrex-hydro/Doxygen/html/hydro__utils_8H__incl.png differ diff --git a/amrex-hydro/Doxygen/html/hydro__utils_8H_source.html b/amrex-hydro/Doxygen/html/hydro__utils_8H_source.html index 29ad0c9..18a63d4 100644 --- a/amrex-hydro/Doxygen/html/hydro__utils_8H_source.html +++ b/amrex-hydro/Doxygen/html/hydro__utils_8H_source.html @@ -392,7 +392,7 @@
void ComputeDivergence(amrex::Box const &bx, amrex::Array4< amrex::Real > const &div, AMREX_D_DECL(amrex::Array4< amrex::Real const > const &fx, amrex::Array4< amrex::Real const > const &fy, amrex::Array4< amrex::Real const > const &fz), int ncomp, amrex::Geometry const &geom, amrex::Real mult, bool fluxes_are_area_weighted)
Compute divergence.
void ComputeFluxes(amrex::Box const &bx, AMREX_D_DECL(amrex::Array4< amrex::Real > const &fx, amrex::Array4< amrex::Real > const &fy, amrex::Array4< amrex::Real > const &fz), AMREX_D_DECL(amrex::Array4< amrex::Real const > const &umac, amrex::Array4< amrex::Real const > const &vmac, amrex::Array4< amrex::Real const > const &wmac), AMREX_D_DECL(amrex::Array4< amrex::Real const > const &xed, amrex::Array4< amrex::Real const > const &yed, amrex::Array4< amrex::Real const > const &zed), amrex::Geometry const &geom, int ncomp, bool fluxes_are_area_weighted)
Compute Fluxes.
void ComputeFluxesOnBoxFromState(amrex::Box const &bx, int ncomp, amrex::MFIter &mfi, amrex::Array4< amrex::Real const > const &q, AMREX_D_DECL(amrex::Array4< amrex::Real > const &flux_x, amrex::Array4< amrex::Real > const &flux_y, amrex::Array4< amrex::Real > const &flux_z), AMREX_D_DECL(amrex::Array4< amrex::Real > const &face_x, amrex::Array4< amrex::Real > const &face_y, amrex::Array4< amrex::Real > const &face_z), bool knownFaceState, AMREX_D_DECL(amrex::Array4< amrex::Real const > const &u_mac, amrex::Array4< amrex::Real const > const &v_mac, amrex::Array4< amrex::Real const > const &w_mac), AMREX_D_DECL(amrex::Array4< amrex::Real const > const &u_flux, amrex::Array4< amrex::Real const > const &v_flux, amrex::Array4< amrex::Real const > const &w_flux), amrex::Array4< amrex::Real const > const &divu, amrex::Array4< amrex::Real const > const &fq, amrex::Geometry geom, amrex::Real l_dt, amrex::Vector< amrex::BCRec > const &h_bcrec, const amrex::BCRec *d_bcrec, int const *iconserv, bool godunov_use_ppm, bool godunov_use_forces_in_trans, bool is_velocity, bool fluxes_are_area_weighted, std::string const &advection_type, int limiter_type=PPM::default_limiter, bool allow_inflow_on_outflow=false, amrex::Array4< int const > const &bc_arr={})
Compute edge state and flux. Most general version for use with multilevel synchronization....
-
static constexpr int default_limiter
Definition: hydro_godunov_ppm.H:19
+
static constexpr int default_limiter
Definition: hydro_godunov_ppm.H:20
std::array< T, N > Array
diff --git a/amrex-hydro/Doxygen/html/hydro__utils_8cpp.html b/amrex-hydro/Doxygen/html/hydro__utils_8cpp.html index 0774624..8977cb5 100644 --- a/amrex-hydro/Doxygen/html/hydro__utils_8cpp.html +++ b/amrex-hydro/Doxygen/html/hydro__utils_8cpp.html @@ -105,12 +105,13 @@ - - - - - - + + + + + + +
diff --git a/amrex-hydro/Doxygen/html/hydro__utils_8cpp__incl.map b/amrex-hydro/Doxygen/html/hydro__utils_8cpp__incl.map index 3a9fa70..28d5fe7 100644 --- a/amrex-hydro/Doxygen/html/hydro__utils_8cpp__incl.map +++ b/amrex-hydro/Doxygen/html/hydro__utils_8cpp__incl.map @@ -2,10 +2,11 @@ - - - - - - + + + + + + + diff --git a/amrex-hydro/Doxygen/html/hydro__utils_8cpp__incl.md5 b/amrex-hydro/Doxygen/html/hydro__utils_8cpp__incl.md5 index 940169f..dc9c253 100644 --- a/amrex-hydro/Doxygen/html/hydro__utils_8cpp__incl.md5 +++ b/amrex-hydro/Doxygen/html/hydro__utils_8cpp__incl.md5 @@ -1 +1 @@ -9ba11a3e1ecd169af234f4065988cc8b \ No newline at end of file +35238809518d2f7079f5823840042c35 \ No newline at end of file diff --git a/amrex-hydro/Doxygen/html/hydro__utils_8cpp__incl.png b/amrex-hydro/Doxygen/html/hydro__utils_8cpp__incl.png index eb59026..fe1ee9a 100644 Binary files a/amrex-hydro/Doxygen/html/hydro__utils_8cpp__incl.png and b/amrex-hydro/Doxygen/html/hydro__utils_8cpp__incl.png differ diff --git a/amrex-hydro/Doxygen/html/namespaceEBGodunovBC.html b/amrex-hydro/Doxygen/html/namespaceEBGodunovBC.html index 9383e83..f6dfa6e 100644 --- a/amrex-hydro/Doxygen/html/namespaceEBGodunovBC.html +++ b/amrex-hydro/Doxygen/html/namespaceEBGodunovBC.html @@ -101,14 +101,14 @@

Functions

template<typename Limiter >
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void PPM::SetXBCs (const int i, const int j, const int k, const int n, amrex::Real &sm, amrex::Real &sp, amrex::Real &sedge1, amrex::Real &sedge2, const amrex::Array4< const amrex::Real > &s, const int bclo, const int bchi, const int domlo, const int domhi)
 
template<typename Limiter >
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void PPM::SetYBCs (const int i, const int j, const int k, const int n, amrex::Real &sm, amrex::Real &sp, amrex::Real &sedge1, amrex::Real &sedge2, const amrex::Array4< const amrex::Real > &s, const int bclo, const int bchi, const int domlo, const int domhi)
 
template<typename Limiter >
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void PPM::SetXBCs (const int i, const int j, const int k, const int n, amrex::Real &sm, amrex::Real &sp, amrex::Real &sedge1, amrex::Real &sedge2, const amrex::Array4< const amrex::Real > &s, const amrex::Real velm, const amrex::Real velp, const int bclo, const int bchi, const int domlo, const int domhi)
 
template<typename Limiter >
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void PPM::SetYBCs (const int i, const int j, const int k, const int n, amrex::Real &sm, amrex::Real &sp, amrex::Real &sedge1, amrex::Real &sedge2, const amrex::Array4< const amrex::Real > &s, const amrex::Real velm, const amrex::Real velp, const int bclo, const int bchi, const int domlo, const int domhi)
 
template<typename Limiter >
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void PPM::PredictVelOnXFace (const int i, const int j, const int k, const int n, const amrex::Real dtdx, const amrex::Real v_ad, const amrex::Array4< const amrex::Real > &S, const amrex::Array4< amrex::Real > &Im, const amrex::Array4< amrex::Real > &Ip, const amrex::BCRec bc, const int domlo, const int domhi, const Limiter &)
 
- - - - + + + +

Functions

AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void SetXBCs (const int i, const int j, const int k, const int n, const amrex::Array4< const amrex::Real > &s, amrex::Real &lo, amrex::Real &hi, const int bclo, const int bchi, const int domlo, const int domhi, const bool is_velocity)
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void SetYBCs (const int i, const int j, const int k, const int n, const amrex::Array4< const amrex::Real > &s, amrex::Real &lo, amrex::Real &hi, const int bclo, const int bchi, const int domlo, const int domhi, const bool is_velocity)
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void SetXBCs (const int i, const int j, const int k, const int n, const amrex::Array4< const amrex::Real > &s, amrex::Real &lo, amrex::Real &hi, amrex::Real velm, amrex::Real velp, const int bclo, const int bchi, const int domlo, const int domhi, const bool is_velocity)
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void SetYBCs (const int i, const int j, const int k, const int n, const amrex::Array4< const amrex::Real > &s, amrex::Real &lo, amrex::Real &hi, amrex::Real velm, amrex::Real velp, const int bclo, const int bchi, const int domlo, const int domhi, const bool is_velocity)
 

Function Documentation

- -

◆ SetXBCs()

+ +

◆ SetXBCs()

@@ -155,6 +155,18 @@

amrex::Real &  hi, + + + + amrex::Real  + velm, + + + + + amrex::Real  + velp, + @@ -195,8 +207,8 @@

Here is the call graph for this function:

-
- +
+ @@ -204,8 +216,8 @@

-

◆ SetYBCs()

+ +

◆ SetYBCs()

-
- +
+ diff --git a/amrex-hydro/Doxygen/html/namespaceEBGodunovBC_a0e325c26f3ab1fe5a4b6d8ccc67280a5_cgraph.map b/amrex-hydro/Doxygen/html/namespaceEBGodunovBC_a0e325c26f3ab1fe5a4b6d8ccc67280a5_cgraph.map new file mode 100644 index 0000000..99677f1 --- /dev/null +++ b/amrex-hydro/Doxygen/html/namespaceEBGodunovBC_a0e325c26f3ab1fe5a4b6d8ccc67280a5_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/amrex-hydro/Doxygen/html/namespaceEBGodunovBC_a0e325c26f3ab1fe5a4b6d8ccc67280a5_cgraph.md5 b/amrex-hydro/Doxygen/html/namespaceEBGodunovBC_a0e325c26f3ab1fe5a4b6d8ccc67280a5_cgraph.md5 new file mode 100644 index 0000000..c2d0dc1 --- /dev/null +++ b/amrex-hydro/Doxygen/html/namespaceEBGodunovBC_a0e325c26f3ab1fe5a4b6d8ccc67280a5_cgraph.md5 @@ -0,0 +1 @@ +558ef8a9ed0a6d3c1be01bb8104f8856 \ No newline at end of file diff --git a/amrex-hydro/Doxygen/html/namespaceEBGodunovBC_a0e325c26f3ab1fe5a4b6d8ccc67280a5_cgraph.png b/amrex-hydro/Doxygen/html/namespaceEBGodunovBC_a0e325c26f3ab1fe5a4b6d8ccc67280a5_cgraph.png new file mode 100644 index 0000000..4902491 Binary files /dev/null and b/amrex-hydro/Doxygen/html/namespaceEBGodunovBC_a0e325c26f3ab1fe5a4b6d8ccc67280a5_cgraph.png differ diff --git a/amrex-hydro/Doxygen/html/namespaceEBGodunovBC_a95fe61ec1acf2cf81ce6b99cceac75e3_cgraph.map b/amrex-hydro/Doxygen/html/namespaceEBGodunovBC_a95fe61ec1acf2cf81ce6b99cceac75e3_cgraph.map new file mode 100644 index 0000000..2228296 --- /dev/null +++ b/amrex-hydro/Doxygen/html/namespaceEBGodunovBC_a95fe61ec1acf2cf81ce6b99cceac75e3_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/amrex-hydro/Doxygen/html/namespaceEBGodunovBC_a95fe61ec1acf2cf81ce6b99cceac75e3_cgraph.md5 b/amrex-hydro/Doxygen/html/namespaceEBGodunovBC_a95fe61ec1acf2cf81ce6b99cceac75e3_cgraph.md5 new file mode 100644 index 0000000..1b812d8 --- /dev/null +++ b/amrex-hydro/Doxygen/html/namespaceEBGodunovBC_a95fe61ec1acf2cf81ce6b99cceac75e3_cgraph.md5 @@ -0,0 +1 @@ +33e2762854fa4571718976043ba3e17a \ No newline at end of file diff --git a/amrex-hydro/Doxygen/html/namespaceEBGodunovBC_a95fe61ec1acf2cf81ce6b99cceac75e3_cgraph.png b/amrex-hydro/Doxygen/html/namespaceEBGodunovBC_a95fe61ec1acf2cf81ce6b99cceac75e3_cgraph.png new file mode 100644 index 0000000..99cf4a3 Binary files /dev/null and b/amrex-hydro/Doxygen/html/namespaceEBGodunovBC_a95fe61ec1acf2cf81ce6b99cceac75e3_cgraph.png differ diff --git a/amrex-hydro/Doxygen/html/namespaceEBMOL.html b/amrex-hydro/Doxygen/html/namespaceEBMOL.html index 161faba..c85d8f9 100644 --- a/amrex-hydro/Doxygen/html/namespaceEBMOL.html +++ b/amrex-hydro/Doxygen/html/namespaceEBMOL.html @@ -446,7 +446,7 @@

- +

@@ -554,7 +554,7 @@

- +

@@ -662,7 +662,7 @@

- +

@@ -770,7 +770,7 @@

- +

diff --git a/amrex-hydro/Doxygen/html/namespaceEBMOL_a5d0b60d61b6303c1d25f02fd5f775b93_cgraph.map b/amrex-hydro/Doxygen/html/namespaceEBMOL_a5d0b60d61b6303c1d25f02fd5f775b93_cgraph.map index ff1df23..dfc61d2 100644 --- a/amrex-hydro/Doxygen/html/namespaceEBMOL_a5d0b60d61b6303c1d25f02fd5f775b93_cgraph.map +++ b/amrex-hydro/Doxygen/html/namespaceEBMOL_a5d0b60d61b6303c1d25f02fd5f775b93_cgraph.map @@ -3,5 +3,5 @@ - + diff --git a/amrex-hydro/Doxygen/html/namespaceEBMOL_a5d0b60d61b6303c1d25f02fd5f775b93_cgraph.md5 b/amrex-hydro/Doxygen/html/namespaceEBMOL_a5d0b60d61b6303c1d25f02fd5f775b93_cgraph.md5 index 930ad08..2753564 100644 --- a/amrex-hydro/Doxygen/html/namespaceEBMOL_a5d0b60d61b6303c1d25f02fd5f775b93_cgraph.md5 +++ b/amrex-hydro/Doxygen/html/namespaceEBMOL_a5d0b60d61b6303c1d25f02fd5f775b93_cgraph.md5 @@ -1 +1 @@ -d7d1b6fcbd1cf836e934919a08ea6167 \ No newline at end of file +bd8e0e9340019b6a381ed3a20cb9833b \ No newline at end of file diff --git a/amrex-hydro/Doxygen/html/namespaceEBMOL_a7c207869e112a99d0812585c67f7bcc0_cgraph.map b/amrex-hydro/Doxygen/html/namespaceEBMOL_a7c207869e112a99d0812585c67f7bcc0_cgraph.map index 0bdae21..6d0a87d 100644 --- a/amrex-hydro/Doxygen/html/namespaceEBMOL_a7c207869e112a99d0812585c67f7bcc0_cgraph.map +++ b/amrex-hydro/Doxygen/html/namespaceEBMOL_a7c207869e112a99d0812585c67f7bcc0_cgraph.map @@ -3,5 +3,5 @@ - + diff --git a/amrex-hydro/Doxygen/html/namespaceEBMOL_a7c207869e112a99d0812585c67f7bcc0_cgraph.md5 b/amrex-hydro/Doxygen/html/namespaceEBMOL_a7c207869e112a99d0812585c67f7bcc0_cgraph.md5 index 30f8a34..9506425 100644 --- a/amrex-hydro/Doxygen/html/namespaceEBMOL_a7c207869e112a99d0812585c67f7bcc0_cgraph.md5 +++ b/amrex-hydro/Doxygen/html/namespaceEBMOL_a7c207869e112a99d0812585c67f7bcc0_cgraph.md5 @@ -1 +1 @@ -a2f32e6185b6c983dc6990d82e1d524a \ No newline at end of file +04aaa52fc872dd3bbad4791ac43dd35b \ No newline at end of file diff --git a/amrex-hydro/Doxygen/html/namespaceEBMOL_ad5b27400945caeff89542f66eff439ac_cgraph.map b/amrex-hydro/Doxygen/html/namespaceEBMOL_ad5b27400945caeff89542f66eff439ac_cgraph.map index 8496f36..f91ebbf 100644 --- a/amrex-hydro/Doxygen/html/namespaceEBMOL_ad5b27400945caeff89542f66eff439ac_cgraph.map +++ b/amrex-hydro/Doxygen/html/namespaceEBMOL_ad5b27400945caeff89542f66eff439ac_cgraph.map @@ -3,5 +3,5 @@ - + diff --git a/amrex-hydro/Doxygen/html/namespaceEBMOL_ad5b27400945caeff89542f66eff439ac_cgraph.md5 b/amrex-hydro/Doxygen/html/namespaceEBMOL_ad5b27400945caeff89542f66eff439ac_cgraph.md5 index 3a4cd3c..de4f0b1 100644 --- a/amrex-hydro/Doxygen/html/namespaceEBMOL_ad5b27400945caeff89542f66eff439ac_cgraph.md5 +++ b/amrex-hydro/Doxygen/html/namespaceEBMOL_ad5b27400945caeff89542f66eff439ac_cgraph.md5 @@ -1 +1 @@ -6641b76de62266a1c9d21c7235219953 \ No newline at end of file +4bc97974c07adce78fa88b0e4404fcbe \ No newline at end of file diff --git a/amrex-hydro/Doxygen/html/namespaceEBMOL_af1238db74667f2f811b387bf837af5f2_cgraph.map b/amrex-hydro/Doxygen/html/namespaceEBMOL_af1238db74667f2f811b387bf837af5f2_cgraph.map index 0bd17b5..7c1486b 100644 --- a/amrex-hydro/Doxygen/html/namespaceEBMOL_af1238db74667f2f811b387bf837af5f2_cgraph.map +++ b/amrex-hydro/Doxygen/html/namespaceEBMOL_af1238db74667f2f811b387bf837af5f2_cgraph.map @@ -3,5 +3,5 @@ - + diff --git a/amrex-hydro/Doxygen/html/namespaceEBMOL_af1238db74667f2f811b387bf837af5f2_cgraph.md5 b/amrex-hydro/Doxygen/html/namespaceEBMOL_af1238db74667f2f811b387bf837af5f2_cgraph.md5 index e10667a..2dbd536 100644 --- a/amrex-hydro/Doxygen/html/namespaceEBMOL_af1238db74667f2f811b387bf837af5f2_cgraph.md5 +++ b/amrex-hydro/Doxygen/html/namespaceEBMOL_af1238db74667f2f811b387bf837af5f2_cgraph.md5 @@ -1 +1 @@ -95b407f2796a2ec8f72a8a8661665d90 \ No newline at end of file +ef3bc1338916668de30f557503cf877d \ No newline at end of file diff --git a/amrex-hydro/Doxygen/html/namespaceHydroBC.html b/amrex-hydro/Doxygen/html/namespaceHydroBC.html index 997b85a..753bfcf 100644 --- a/amrex-hydro/Doxygen/html/namespaceHydroBC.html +++ b/amrex-hydro/Doxygen/html/namespaceHydroBC.html @@ -103,12 +103,12 @@ Functions 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)   -AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void SetXEdgeBCs (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, int bchi, int domhi, bool is_velocity) - Boundary condition effects. More...
-  -AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void SetYEdgeBCs (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, int bchi, int domhi, bool is_velocity) - Boundary condition effects. More...
-  +AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void SetXEdgeBCs (int i, int j, int k, int n, const amrex::Array4< const amrex::Real > &s, amrex::Real &lo, amrex::Real &hi, amrex::Real velm, amrex::Real velp, int bclo, int domlo, int bchi, int domhi, bool is_velocity) + Boundary condition effects. More...
+  +AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void SetYEdgeBCs (int i, int j, int k, int n, const amrex::Array4< const amrex::Real > &s, amrex::Real &lo, amrex::Real &hi, amrex::Real velm, amrex::Real velp, int bclo, int domlo, int bchi, int domhi, bool is_velocity) + Boundary condition effects. More...

Function Documentation

@@ -180,8 +180,8 @@

-

◆ SetXEdgeBCs()

+ +

◆ SetXEdgeBCs()

-
- +
+ @@ -284,8 +296,8 @@

-

◆ SetYEdgeBCs()

+ +

◆ SetYEdgeBCs()

-
- +
+ diff --git a/amrex-hydro/Doxygen/html/namespaceHydroBC_a4b03a900994953e6e007f229046f652c_icgraph.map b/amrex-hydro/Doxygen/html/namespaceHydroBC_a4b03a900994953e6e007f229046f652c_icgraph.map new file mode 100644 index 0000000..31635bd --- /dev/null +++ b/amrex-hydro/Doxygen/html/namespaceHydroBC_a4b03a900994953e6e007f229046f652c_icgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/amrex-hydro/Doxygen/html/namespaceHydroBC_a4b03a900994953e6e007f229046f652c_icgraph.md5 b/amrex-hydro/Doxygen/html/namespaceHydroBC_a4b03a900994953e6e007f229046f652c_icgraph.md5 new file mode 100644 index 0000000..44be566 --- /dev/null +++ b/amrex-hydro/Doxygen/html/namespaceHydroBC_a4b03a900994953e6e007f229046f652c_icgraph.md5 @@ -0,0 +1 @@ +dfb5a034a38151fb3be03d03eed2b1a2 \ No newline at end of file diff --git a/amrex-hydro/Doxygen/html/namespaceHydroBC_a4b03a900994953e6e007f229046f652c_icgraph.png b/amrex-hydro/Doxygen/html/namespaceHydroBC_a4b03a900994953e6e007f229046f652c_icgraph.png new file mode 100644 index 0000000..bcff6d6 Binary files /dev/null and b/amrex-hydro/Doxygen/html/namespaceHydroBC_a4b03a900994953e6e007f229046f652c_icgraph.png differ diff --git a/amrex-hydro/Doxygen/html/namespaceHydroBC_a96c8149b6212b7eee7a68dd1da6c663b_icgraph.map b/amrex-hydro/Doxygen/html/namespaceHydroBC_a96c8149b6212b7eee7a68dd1da6c663b_icgraph.map new file mode 100644 index 0000000..e6e0fb0 --- /dev/null +++ b/amrex-hydro/Doxygen/html/namespaceHydroBC_a96c8149b6212b7eee7a68dd1da6c663b_icgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/amrex-hydro/Doxygen/html/namespaceHydroBC_a96c8149b6212b7eee7a68dd1da6c663b_icgraph.md5 b/amrex-hydro/Doxygen/html/namespaceHydroBC_a96c8149b6212b7eee7a68dd1da6c663b_icgraph.md5 new file mode 100644 index 0000000..601b112 --- /dev/null +++ b/amrex-hydro/Doxygen/html/namespaceHydroBC_a96c8149b6212b7eee7a68dd1da6c663b_icgraph.md5 @@ -0,0 +1 @@ +0b9a031e6346cf532dcdd0d70094d620 \ No newline at end of file diff --git a/amrex-hydro/Doxygen/html/namespaceHydroBC_a96c8149b6212b7eee7a68dd1da6c663b_icgraph.png b/amrex-hydro/Doxygen/html/namespaceHydroBC_a96c8149b6212b7eee7a68dd1da6c663b_icgraph.png new file mode 100644 index 0000000..b59f6b7 Binary files /dev/null and b/amrex-hydro/Doxygen/html/namespaceHydroBC_a96c8149b6212b7eee7a68dd1da6c663b_icgraph.png differ diff --git a/amrex-hydro/Doxygen/html/namespaceMOL.html b/amrex-hydro/Doxygen/html/namespaceMOL.html index 77c8100..37de774 100644 --- a/amrex-hydro/Doxygen/html/namespaceMOL.html +++ b/amrex-hydro/Doxygen/html/namespaceMOL.html @@ -440,7 +440,7 @@

- +

@@ -536,7 +536,7 @@

- +

@@ -632,7 +632,7 @@

- +

@@ -728,7 +728,7 @@

- +

diff --git a/amrex-hydro/Doxygen/html/namespaceMOL_a0af7e22f67c73814e7968b5bd6e02e8a_cgraph.map b/amrex-hydro/Doxygen/html/namespaceMOL_a0af7e22f67c73814e7968b5bd6e02e8a_cgraph.map index 36fe222..db58710 100644 --- a/amrex-hydro/Doxygen/html/namespaceMOL_a0af7e22f67c73814e7968b5bd6e02e8a_cgraph.map +++ b/amrex-hydro/Doxygen/html/namespaceMOL_a0af7e22f67c73814e7968b5bd6e02e8a_cgraph.map @@ -3,5 +3,5 @@ - + diff --git a/amrex-hydro/Doxygen/html/namespaceMOL_a0af7e22f67c73814e7968b5bd6e02e8a_cgraph.md5 b/amrex-hydro/Doxygen/html/namespaceMOL_a0af7e22f67c73814e7968b5bd6e02e8a_cgraph.md5 index 4d36272..d26d61d 100644 --- a/amrex-hydro/Doxygen/html/namespaceMOL_a0af7e22f67c73814e7968b5bd6e02e8a_cgraph.md5 +++ b/amrex-hydro/Doxygen/html/namespaceMOL_a0af7e22f67c73814e7968b5bd6e02e8a_cgraph.md5 @@ -1 +1 @@ -82f9605652b3380e71124cf275c27db6 \ No newline at end of file +4a9c8436b0868ac9dfdb28bf7629d498 \ No newline at end of file diff --git a/amrex-hydro/Doxygen/html/namespaceMOL_a4e5b6599e866b0386d608e59dabb37ce_cgraph.map b/amrex-hydro/Doxygen/html/namespaceMOL_a4e5b6599e866b0386d608e59dabb37ce_cgraph.map index 17460c8..6efa3f7 100644 --- a/amrex-hydro/Doxygen/html/namespaceMOL_a4e5b6599e866b0386d608e59dabb37ce_cgraph.map +++ b/amrex-hydro/Doxygen/html/namespaceMOL_a4e5b6599e866b0386d608e59dabb37ce_cgraph.map @@ -3,5 +3,5 @@ - + diff --git a/amrex-hydro/Doxygen/html/namespaceMOL_a4e5b6599e866b0386d608e59dabb37ce_cgraph.md5 b/amrex-hydro/Doxygen/html/namespaceMOL_a4e5b6599e866b0386d608e59dabb37ce_cgraph.md5 index aaa787b..f076a28 100644 --- a/amrex-hydro/Doxygen/html/namespaceMOL_a4e5b6599e866b0386d608e59dabb37ce_cgraph.md5 +++ b/amrex-hydro/Doxygen/html/namespaceMOL_a4e5b6599e866b0386d608e59dabb37ce_cgraph.md5 @@ -1 +1 @@ -0d1b62dce8b569f107988de7ba60a174 \ No newline at end of file +4b0a9522891e1231e3f96192e5ebaa9b \ No newline at end of file diff --git a/amrex-hydro/Doxygen/html/namespaceMOL_a5df4bf00c86eb57634b4bff1d4d3d89b_cgraph.map b/amrex-hydro/Doxygen/html/namespaceMOL_a5df4bf00c86eb57634b4bff1d4d3d89b_cgraph.map index 51872a6..53612c1 100644 --- a/amrex-hydro/Doxygen/html/namespaceMOL_a5df4bf00c86eb57634b4bff1d4d3d89b_cgraph.map +++ b/amrex-hydro/Doxygen/html/namespaceMOL_a5df4bf00c86eb57634b4bff1d4d3d89b_cgraph.map @@ -3,5 +3,5 @@ - + diff --git a/amrex-hydro/Doxygen/html/namespaceMOL_a5df4bf00c86eb57634b4bff1d4d3d89b_cgraph.md5 b/amrex-hydro/Doxygen/html/namespaceMOL_a5df4bf00c86eb57634b4bff1d4d3d89b_cgraph.md5 index 022ba12..ab5d969 100644 --- a/amrex-hydro/Doxygen/html/namespaceMOL_a5df4bf00c86eb57634b4bff1d4d3d89b_cgraph.md5 +++ b/amrex-hydro/Doxygen/html/namespaceMOL_a5df4bf00c86eb57634b4bff1d4d3d89b_cgraph.md5 @@ -1 +1 @@ -176a981d01273b3d9ad3fbe0907141a8 \ No newline at end of file +540476ac9b78600d574d62fef1c0176b \ No newline at end of file diff --git a/amrex-hydro/Doxygen/html/namespaceMOL_a7eb1fa9334dbb23a3fe2f8b3f8f4087e_cgraph.map b/amrex-hydro/Doxygen/html/namespaceMOL_a7eb1fa9334dbb23a3fe2f8b3f8f4087e_cgraph.map index 62c962c..d11be9b 100644 --- a/amrex-hydro/Doxygen/html/namespaceMOL_a7eb1fa9334dbb23a3fe2f8b3f8f4087e_cgraph.map +++ b/amrex-hydro/Doxygen/html/namespaceMOL_a7eb1fa9334dbb23a3fe2f8b3f8f4087e_cgraph.map @@ -3,5 +3,5 @@ - + diff --git a/amrex-hydro/Doxygen/html/namespaceMOL_a7eb1fa9334dbb23a3fe2f8b3f8f4087e_cgraph.md5 b/amrex-hydro/Doxygen/html/namespaceMOL_a7eb1fa9334dbb23a3fe2f8b3f8f4087e_cgraph.md5 index bacd479..f50ab55 100644 --- a/amrex-hydro/Doxygen/html/namespaceMOL_a7eb1fa9334dbb23a3fe2f8b3f8f4087e_cgraph.md5 +++ b/amrex-hydro/Doxygen/html/namespaceMOL_a7eb1fa9334dbb23a3fe2f8b3f8f4087e_cgraph.md5 @@ -1 +1 @@ -40ea0245a134d2bd00af15ae966f0e70 \ No newline at end of file +1c4daa699d073d76c67e8033fcfd36f6 \ No newline at end of file diff --git a/amrex-hydro/Doxygen/html/namespacePPM.html b/amrex-hydro/Doxygen/html/namespacePPM.html index b9afbbb..288aa05 100644 --- a/amrex-hydro/Doxygen/html/namespacePPM.html +++ b/amrex-hydro/Doxygen/html/namespacePPM.html @@ -124,12 +124,12 @@ - - - - - - + + + + + + @@ -838,8 +838,8 @@

-

◆ SetXBCs()

+ +

◆ SetXBCs()

@@ -900,6 +900,18 @@

const amrex::Array4< const amrex::Real > & 

+ + + + + + + + + + + + @@ -934,8 +946,8 @@

Here is the call graph for this function:
-
- +
+ @@ -944,8 +956,8 @@

-

◆ SetYBCs()

+ +

◆ SetYBCs()

@@ -1006,6 +1018,18 @@

const amrex::Array4< const amrex::Real > & 

+ + + + + + + + + + + + @@ -1040,8 +1064,8 @@

Here is the call graph for this function:
-
- +
+ diff --git a/amrex-hydro/Doxygen/html/namespacePPM.js b/amrex-hydro/Doxygen/html/namespacePPM.js index d7d8f3c..0ba7d14 100644 --- a/amrex-hydro/Doxygen/html/namespacePPM.js +++ b/amrex-hydro/Doxygen/html/namespacePPM.js @@ -16,7 +16,7 @@ var namespacePPM = [ "PredictVelOnFaces", "namespacePPM.html#afc01feca9b1f93c06521af5d6591c22c", null ], [ "PredictVelOnXFace", "namespacePPM.html#adb2496aca52fb5c10215b6b2e51dd56a", null ], [ "PredictVelOnYFace", "namespacePPM.html#a2508ebdfc4ebe06e3a4a4b3b45e1e14f", null ], - [ "SetXBCs", "namespacePPM.html#ad5bb40375d5bfdec96a5906cf7ef365d", null ], - [ "SetYBCs", "namespacePPM.html#aa3ffd2df3e546aecfc2301f5b6f8f7d0", null ], + [ "SetXBCs", "namespacePPM.html#a90c9fcca9c5e4a4098dcccf9aaead891", null ], + [ "SetYBCs", "namespacePPM.html#abf337b316b14038fe9d5eace8e23b1be", null ], [ "default_limiter", "namespacePPM.html#a4f476328680db9ab71492a158fce0749", null ] ]; \ No newline at end of file diff --git a/amrex-hydro/Doxygen/html/namespacePPM_a90c9fcca9c5e4a4098dcccf9aaead891_cgraph.map b/amrex-hydro/Doxygen/html/namespacePPM_a90c9fcca9c5e4a4098dcccf9aaead891_cgraph.map new file mode 100644 index 0000000..d396ca4 --- /dev/null +++ b/amrex-hydro/Doxygen/html/namespacePPM_a90c9fcca9c5e4a4098dcccf9aaead891_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/amrex-hydro/Doxygen/html/namespacePPM_a90c9fcca9c5e4a4098dcccf9aaead891_cgraph.md5 b/amrex-hydro/Doxygen/html/namespacePPM_a90c9fcca9c5e4a4098dcccf9aaead891_cgraph.md5 new file mode 100644 index 0000000..3efbeaa --- /dev/null +++ b/amrex-hydro/Doxygen/html/namespacePPM_a90c9fcca9c5e4a4098dcccf9aaead891_cgraph.md5 @@ -0,0 +1 @@ +e3cecb47b0890c85536f5ef5645548f8 \ No newline at end of file diff --git a/amrex-hydro/Doxygen/html/namespacePPM_a90c9fcca9c5e4a4098dcccf9aaead891_cgraph.png b/amrex-hydro/Doxygen/html/namespacePPM_a90c9fcca9c5e4a4098dcccf9aaead891_cgraph.png new file mode 100644 index 0000000..e07e824 Binary files /dev/null and b/amrex-hydro/Doxygen/html/namespacePPM_a90c9fcca9c5e4a4098dcccf9aaead891_cgraph.png differ diff --git a/amrex-hydro/Doxygen/html/namespacePPM_abf337b316b14038fe9d5eace8e23b1be_cgraph.map b/amrex-hydro/Doxygen/html/namespacePPM_abf337b316b14038fe9d5eace8e23b1be_cgraph.map new file mode 100644 index 0000000..45f5a24 --- /dev/null +++ b/amrex-hydro/Doxygen/html/namespacePPM_abf337b316b14038fe9d5eace8e23b1be_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/amrex-hydro/Doxygen/html/namespacePPM_abf337b316b14038fe9d5eace8e23b1be_cgraph.md5 b/amrex-hydro/Doxygen/html/namespacePPM_abf337b316b14038fe9d5eace8e23b1be_cgraph.md5 new file mode 100644 index 0000000..98dc22e --- /dev/null +++ b/amrex-hydro/Doxygen/html/namespacePPM_abf337b316b14038fe9d5eace8e23b1be_cgraph.md5 @@ -0,0 +1 @@ +d6dc08e6e1f57a855f5e1f6a77dd013d \ No newline at end of file diff --git a/amrex-hydro/Doxygen/html/namespacePPM_abf337b316b14038fe9d5eace8e23b1be_cgraph.png b/amrex-hydro/Doxygen/html/namespacePPM_abf337b316b14038fe9d5eace8e23b1be_cgraph.png new file mode 100644 index 0000000..f2798c0 Binary files /dev/null and b/amrex-hydro/Doxygen/html/namespacePPM_abf337b316b14038fe9d5eace8e23b1be_cgraph.png differ diff --git a/amrex-hydro/Doxygen/html/namespacemembers.html b/amrex-hydro/Doxygen/html/namespacemembers.html index 7438685..1b772a4 100644 --- a/amrex-hydro/Doxygen/html/namespacemembers.html +++ b/amrex-hydro/Doxygen/html/namespacemembers.html @@ -277,18 +277,18 @@

- p -

diff --git a/amrex-hydro/Doxygen/html/namespaces_dup.js b/amrex-hydro/Doxygen/html/namespaces_dup.js index 1e3a070..7e285f0 100644 --- a/amrex-hydro/Doxygen/html/namespaces_dup.js +++ b/amrex-hydro/Doxygen/html/namespaces_dup.js @@ -3305,8 +3305,8 @@ var namespaces_dup = [ "ExtrapVelToFacesOnBox", "namespaceEBGodunov.html#abcdbfbbc5a098883686937dbab7ace35", null ] ] ], [ "EBGodunovBC", "namespaceEBGodunovBC.html", [ - [ "SetXBCs", "namespaceEBGodunovBC.html#a201fb4a4c48f82f653fd5fb61090bcef", null ], - [ "SetYBCs", "namespaceEBGodunovBC.html#abe925055f42491bbd794bdb3678ea1d4", null ] + [ "SetXBCs", "namespaceEBGodunovBC.html#a95fe61ec1acf2cf81ce6b99cceac75e3", null ], + [ "SetYBCs", "namespaceEBGodunovBC.html#a0e325c26f3ab1fe5a4b6d8ccc67280a5", null ] ] ], [ "EBGodunovCornerCouple", "namespaceEBGodunovCornerCouple.html", [ [ "EBGodunov_corner_couple_xy", "namespaceEBGodunovCornerCouple.html#a7670251a235d8e8a0029aa4d3d2be940", null ], @@ -3348,8 +3348,8 @@ var namespaces_dup = [ "Hydro", "namespaceHydro.html", "namespaceHydro" ], [ "HydroBC", "namespaceHydroBC.html", [ [ "getBC", "namespaceHydroBC.html#ae4805c1bf4cec4012693733f3fa44f7b", null ], - [ "SetXEdgeBCs", "namespaceHydroBC.html#a45d3b23f98379c982fee1b1b72ae2d6a", null ], - [ "SetYEdgeBCs", "namespaceHydroBC.html#ab483be498f1f0c98923a5e6cde92841a", null ] + [ "SetXEdgeBCs", "namespaceHydroBC.html#a96c8149b6212b7eee7a68dd1da6c663b", null ], + [ "SetYEdgeBCs", "namespaceHydroBC.html#a4b03a900994953e6e007f229046f652c", null ] ] ], [ "HydroUtils", "namespaceHydroUtils.html", [ [ "ComputeConvectiveTerm", "namespaceHydroUtils.html#a0742bbe8fac4178460020a4073724d51", null ], diff --git a/amrex-hydro/Doxygen/html/navtreedata.js b/amrex-hydro/Doxygen/html/navtreedata.js index 8e8f31a..bc1ca1a 100644 --- a/amrex-hydro/Doxygen/html/navtreedata.js +++ b/amrex-hydro/Doxygen/html/navtreedata.js @@ -67,7 +67,7 @@ var NAVTREE = var NAVTREEINDEX = [ "", -"hydro__bcs__K_8H.html#ab483be498f1f0c98923a5e6cde92841a", +"hydro__bcs__K_8H.html#a96c8149b6212b7eee7a68dd1da6c663b", "namespaceamrex.html#a025e5b59bd3848fc86899a836d0800f2", "namespaceamrex.html#a249f102bab7043232da73dcc4d33612e", "namespaceamrex.html#a42587d745d04512fb463b6e351f026a4", diff --git a/amrex-hydro/Doxygen/html/navtreeindex0.js b/amrex-hydro/Doxygen/html/navtreeindex0.js index 17e8576..6512439 100644 --- a/amrex-hydro/Doxygen/html/navtreeindex0.js +++ b/amrex-hydro/Doxygen/html/navtreeindex0.js @@ -249,5 +249,5 @@ var NAVTREEINDEX0 = "hydro__NodalProjector_8H_source.html":[4,0,6,3], "hydro__NodalProjector_8cpp.html":[4,0,6,2], "hydro__bcs__K_8H.html":[4,0,8,0], -"hydro__bcs__K_8H.html#a45d3b23f98379c982fee1b1b72ae2d6a":[4,0,8,0,1] +"hydro__bcs__K_8H.html#a4b03a900994953e6e007f229046f652c":[4,0,8,0,2] }; diff --git a/amrex-hydro/Doxygen/html/navtreeindex1.js b/amrex-hydro/Doxygen/html/navtreeindex1.js index 78adff0..5d8d9db 100644 --- a/amrex-hydro/Doxygen/html/navtreeindex1.js +++ b/amrex-hydro/Doxygen/html/navtreeindex1.js @@ -1,6 +1,6 @@ var NAVTREEINDEX1 = { -"hydro__bcs__K_8H.html#ab483be498f1f0c98923a5e6cde92841a":[4,0,8,0,2], +"hydro__bcs__K_8H.html#a96c8149b6212b7eee7a68dd1da6c663b":[4,0,8,0,1], "hydro__bcs__K_8H.html#ae4805c1bf4cec4012693733f3fa44f7b":[4,0,8,0,0], "hydro__bcs__K_8H_source.html":[4,0,8,0], "hydro__bds_8H.html":[4,0,0,0], @@ -20,8 +20,8 @@ var NAVTREEINDEX1 = "hydro__ebgodunov_8H.html#afb19ecbdb3559abf37dc71ac1d0e3cef":[4,0,2,0,0], "hydro__ebgodunov_8H_source.html":[4,0,2,0], "hydro__ebgodunov__bcs__K_8H.html":[4,0,2,1], -"hydro__ebgodunov__bcs__K_8H.html#a201fb4a4c48f82f653fd5fb61090bcef":[4,0,2,1,0], -"hydro__ebgodunov__bcs__K_8H.html#abe925055f42491bbd794bdb3678ea1d4":[4,0,2,1,1], +"hydro__ebgodunov__bcs__K_8H.html#a0e325c26f3ab1fe5a4b6d8ccc67280a5":[4,0,2,1,1], +"hydro__ebgodunov__bcs__K_8H.html#a95fe61ec1acf2cf81ce6b99cceac75e3":[4,0,2,1,0], "hydro__ebgodunov__bcs__K_8H_source.html":[4,0,2,1], "hydro__ebgodunov__corner__couple_8H.html":[4,0,2,2], "hydro__ebgodunov__corner__couple_8H.html#a080e49a78a054a19a43018df9f3315e6":[4,0,2,2,1], @@ -95,9 +95,9 @@ var NAVTREEINDEX1 = "hydro__godunov__ppm_8H.html#a2508ebdfc4ebe06e3a4a4b3b45e1e14f":[4,0,4,8,10], "hydro__godunov__ppm_8H.html#a4f476328680db9ab71492a158fce0749":[4,0,4,8,13], "hydro__godunov__ppm_8H.html#a70abc2e2dd9b19e5e80e217de7c225c1":[4,0,4,8,7], -"hydro__godunov__ppm_8H.html#aa3ffd2df3e546aecfc2301f5b6f8f7d0":[4,0,4,8,12], +"hydro__godunov__ppm_8H.html#a90c9fcca9c5e4a4098dcccf9aaead891":[4,0,4,8,11], +"hydro__godunov__ppm_8H.html#abf337b316b14038fe9d5eace8e23b1be":[4,0,4,8,12], "hydro__godunov__ppm_8H.html#acc43ed98677d40c3b0cd8ea5326e7d5d":[4,0,4,8,5], -"hydro__godunov__ppm_8H.html#ad5bb40375d5bfdec96a5906cf7ef365d":[4,0,4,8,11], "hydro__godunov__ppm_8H.html#adb2496aca52fb5c10215b6b2e51dd56a":[4,0,4,8,9], "hydro__godunov__ppm_8H.html#afc01feca9b1f93c06521af5d6591c22c":[4,0,4,8,8], "hydro__godunov__ppm_8H.html#afde008f2efff2705e2231ca88ed08ff5":[4,0,4,8,4], @@ -148,8 +148,8 @@ var NAVTREEINDEX1 = "namespaceEBGodunov.html#abcdbfbbc5a098883686937dbab7ace35":[2,0,20,3], "namespaceEBGodunov.html#afb19ecbdb3559abf37dc71ac1d0e3cef":[2,0,20,0], "namespaceEBGodunovBC.html":[2,0,21], -"namespaceEBGodunovBC.html#a201fb4a4c48f82f653fd5fb61090bcef":[2,0,21,0], -"namespaceEBGodunovBC.html#abe925055f42491bbd794bdb3678ea1d4":[2,0,21,1], +"namespaceEBGodunovBC.html#a0e325c26f3ab1fe5a4b6d8ccc67280a5":[2,0,21,1], +"namespaceEBGodunovBC.html#a95fe61ec1acf2cf81ce6b99cceac75e3":[2,0,21,0], "namespaceEBGodunovCornerCouple.html":[2,0,22], "namespaceEBGodunovCornerCouple.html#a080e49a78a054a19a43018df9f3315e6":[2,0,22,1], "namespaceEBGodunovCornerCouple.html#a20333045bcf5a9b6fa34e4673453be03":[2,0,22,5], @@ -184,8 +184,8 @@ var NAVTREEINDEX1 = "namespaceGodunovCornerCouple.html#aecdc5855798cbfb5732a6966d861172e":[2,0,26,4], "namespaceHydro.html":[2,0,27], "namespaceHydroBC.html":[2,0,28], -"namespaceHydroBC.html#a45d3b23f98379c982fee1b1b72ae2d6a":[2,0,28,1], -"namespaceHydroBC.html#ab483be498f1f0c98923a5e6cde92841a":[2,0,28,2], +"namespaceHydroBC.html#a4b03a900994953e6e007f229046f652c":[2,0,28,2], +"namespaceHydroBC.html#a96c8149b6212b7eee7a68dd1da6c663b":[2,0,28,1], "namespaceHydroBC.html#ae4805c1bf4cec4012693733f3fa44f7b":[2,0,28,0], "namespaceHydroUtils.html":[2,0,29], "namespaceHydroUtils.html#a0742bbe8fac4178460020a4073724d51":[2,0,29,0], @@ -212,9 +212,9 @@ var NAVTREEINDEX1 = "namespacePPM.html#a2508ebdfc4ebe06e3a4a4b3b45e1e14f":[2,0,33,10], "namespacePPM.html#a4f476328680db9ab71492a158fce0749":[2,0,33,13], "namespacePPM.html#a70abc2e2dd9b19e5e80e217de7c225c1":[2,0,33,7], -"namespacePPM.html#aa3ffd2df3e546aecfc2301f5b6f8f7d0":[2,0,33,12], +"namespacePPM.html#a90c9fcca9c5e4a4098dcccf9aaead891":[2,0,33,11], +"namespacePPM.html#abf337b316b14038fe9d5eace8e23b1be":[2,0,33,12], "namespacePPM.html#acc43ed98677d40c3b0cd8ea5326e7d5d":[2,0,33,5], -"namespacePPM.html#ad5bb40375d5bfdec96a5906cf7ef365d":[2,0,33,11], "namespacePPM.html#adb2496aca52fb5c10215b6b2e51dd56a":[2,0,33,9], "namespacePPM.html#afc01feca9b1f93c06521af5d6591c22c":[2,0,33,8], "namespacePPM.html#afde008f2efff2705e2231ca88ed08ff5":[2,0,33,4], diff --git a/amrex-hydro/Doxygen/html/search/all_13.js b/amrex-hydro/Doxygen/html/search/all_13.js index c9998fe..94e0f69 100644 --- a/amrex-hydro/Doxygen/html/search/all_13.js +++ b/amrex-hydro/Doxygen/html/search/all_13.js @@ -413,12 +413,12 @@ var searchData= ['setvolumeweighting_7753',['SetVolumeWeighting',['https://amrex-codes.github.io/amrex/doxygen/structamrex_1_1AMRErrorTagInfo.html#aab42331c47167778993cf79cd0689549',1,'amrex::AMRErrorTagInfo']]], ['setwritebuffersize_7754',['SetWriteBufferSize',['https://amrex-codes.github.io/amrex/doxygen/classamrex_1_1RealDescriptor.html#aae779778e03e99a52811ac1e3460f4d2',1,'amrex::RealDescriptor']]], ['setwritetolevel_7755',['SetWriteToLevel',['https://amrex-codes.github.io/amrex/doxygen/classamrex_1_1DataServices.html#aedf7787e5d78a2ec4920bdae6f1033c2',1,'amrex::DataServices']]], - ['setxbcs_7756',['SetXBCs',['../namespacePPM.html#ad5bb40375d5bfdec96a5906cf7ef365d',1,'PPM::SetXBCs()'],['../namespaceEBGodunovBC.html#a201fb4a4c48f82f653fd5fb61090bcef',1,'EBGodunovBC::SetXBCs()']]], - ['setxedgebcs_7757',['SetXEdgeBCs',['../namespaceHydroBC.html#a45d3b23f98379c982fee1b1b72ae2d6a',1,'HydroBC']]], + ['setxbcs_7756',['SetXBCs',['../namespacePPM.html#a90c9fcca9c5e4a4098dcccf9aaead891',1,'PPM::SetXBCs()'],['../namespaceEBGodunovBC.html#a95fe61ec1acf2cf81ce6b99cceac75e3',1,'EBGodunovBC::SetXBCs()']]], + ['setxedgebcs_7757',['SetXEdgeBCs',['../namespaceHydroBC.html#a96c8149b6212b7eee7a68dd1da6c663b',1,'HydroBC']]], ['setxhi_7758',['setXHi',['https://amrex-codes.github.io/amrex/doxygen/structamrex_1_1EB2_1_1Neighbor.html#a3fed54140796e26ad90fc8d151beb855',1,'amrex::EB2::Neighbor']]], ['setxlo_7759',['setXLo',['https://amrex-codes.github.io/amrex/doxygen/structamrex_1_1EB2_1_1Neighbor.html#aa07825ca5ad98d94fa9bfb9879bb8383',1,'amrex::EB2::Neighbor']]], - ['setybcs_7760',['SetYBCs',['../namespaceEBGodunovBC.html#abe925055f42491bbd794bdb3678ea1d4',1,'EBGodunovBC::SetYBCs()'],['../namespacePPM.html#aa3ffd2df3e546aecfc2301f5b6f8f7d0',1,'PPM::SetYBCs()']]], - ['setyedgebcs_7761',['SetYEdgeBCs',['../namespaceHydroBC.html#ab483be498f1f0c98923a5e6cde92841a',1,'HydroBC']]], + ['setybcs_7760',['SetYBCs',['../namespaceEBGodunovBC.html#a0e325c26f3ab1fe5a4b6d8ccc67280a5',1,'EBGodunovBC::SetYBCs()'],['../namespacePPM.html#abf337b316b14038fe9d5eace8e23b1be',1,'PPM::SetYBCs()']]], + ['setyedgebcs_7761',['SetYEdgeBCs',['../namespaceHydroBC.html#a4b03a900994953e6e007f229046f652c',1,'HydroBC']]], ['setyhi_7762',['setYHi',['https://amrex-codes.github.io/amrex/doxygen/structamrex_1_1EB2_1_1Neighbor.html#a212ed5915d00323dcbcaeb9c017cf79f',1,'amrex::EB2::Neighbor']]], ['setylo_7763',['setYLo',['https://amrex-codes.github.io/amrex/doxygen/structamrex_1_1EB2_1_1Neighbor.html#ab5689b17794d98940e22c2dc1c856f72',1,'amrex::EB2::Neighbor']]], ['setzeroprocs_7764',['setZeroProcs',['https://amrex-codes.github.io/amrex/doxygen/classamrex_1_1NFilesIter.html#a3862f6ec68ebefd530ce66a3bd5e37b2',1,'amrex::NFilesIter']]], diff --git a/amrex-hydro/Doxygen/html/search/all_9.js b/amrex-hydro/Doxygen/html/search/all_9.js index 8c0d42b..153d61f 100644 --- a/amrex-hydro/Doxygen/html/search/all_9.js +++ b/amrex-hydro/Doxygen/html/search/all_9.js @@ -90,7 +90,7 @@ var searchData= ['index_3759',['index',['https://amrex-codes.github.io/amrex/doxygen/structamrex_1_1ParticleInterpolator_1_1Base.html#a9e34ea4216c47905ed5b9e44cf7f9822',1,'amrex::ParticleInterpolator::Base::index()'],['https://amrex-codes.github.io/amrex/doxygen/structamrex_1_1ParticleInterpolator_1_1Base.html#a9e34ea4216c47905ed5b9e44cf7f9822',1,'Base< Linear, amrex::Real >::index()'],['https://amrex-codes.github.io/amrex/doxygen/structamrex_1_1ParticleInterpolator_1_1Base.html#a9e34ea4216c47905ed5b9e44cf7f9822',1,'Base< Nearest, int >::index()'],['https://amrex-codes.github.io/amrex/doxygen/structamrex_1_1ValLocPair.html#a0c3808b669899ddde6c26fa5ec26cc1a',1,'amrex::ValLocPair::index()'],['https://amrex-codes.github.io/amrex/doxygen/classamrex_1_1BoxND.html#a5e916aff07e51d3d3e473c7f6f4bfe68',1,'amrex::BoxND::index()'],['https://amrex-codes.github.io/amrex/doxygen/classamrex_1_1BoxND.html#a5e916aff07e51d3d3e473c7f6f4bfe68',1,'BoxND< AMREX_SPACEDIM >::index()'],['https://amrex-codes.github.io/amrex/doxygen/structamrex_1_1Neighbors_1_1const__iterator.html#aa66fe114af5887c4e2a679627c687bf7',1,'amrex::Neighbors::const_iterator::index()'],['https://amrex-codes.github.io/amrex/doxygen/structamrex_1_1Neighbors_1_1iterator.html#aaf05d2993eabd39dee90939a4e8d3b80',1,'amrex::Neighbors::iterator::index()'],['https://amrex-codes.github.io/amrex/doxygen/classamrex_1_1MFIter.html#aa69f73dbf7931e2d0a3889de2db4a42b',1,'amrex::MFIter::index()']]], ['index_3760',['Index',['https://amrex-codes.github.io/amrex/doxygen/classamrex_1_1ParticleContainer__impl.html#ae6231e20371e520643fb269cf5f646ca',1,'amrex::ParticleContainer_impl::Index(const P &p, int lev) const'],['https://amrex-codes.github.io/amrex/doxygen/classamrex_1_1ParticleContainer__impl.html#ae6231e20371e520643fb269cf5f646ca',1,'amrex::ParticleContainer_impl::Index(const P &p, int lev) const'],['https://amrex-codes.github.io/amrex/doxygen/classamrex_1_1ParticleContainer__impl.html#ae6231e20371e520643fb269cf5f646ca',1,'ParticleContainer_impl< T_ParticleType, 0, 0, DefaultAllocator, DefaultAssignor >::Index(const P &p, int lev) const'],['https://amrex-codes.github.io/amrex/doxygen/classamrex_1_1ParticleContainer__impl.html#ae6231e20371e520643fb269cf5f646ca',1,'ParticleContainer_impl< T_ParticleType, 0, 0, DefaultAllocator, DefaultAssignor >::Index(const P &p, int lev) const']]], ['index_5fmap_3761',['index_map',['https://amrex-codes.github.io/amrex/doxygen/classamrex_1_1MFIter.html#ac482cbbf5ecee6f2593a3e4437623082',1,'amrex::MFIter']]], - ['index_5ftype_3762',['index_type',['https://amrex-codes.github.io/amrex/doxygen/classamrex_1_1DenseBins.html#ace91724777a08f267ca7515117ebe620',1,'DenseBins< typename amrex::ParticleTileData >::index_type()'],['https://amrex-codes.github.io/amrex/doxygen/classamrex_1_1SparseBins.html#acd6d4073c186417cb25f04de695363d0',1,'amrex::SparseBins::index_type()'],['https://amrex-codes.github.io/amrex/doxygen/structamrex_1_1SparseBinIteratorFactory.html#af3b2075ffb37148df43247481a6acf79',1,'amrex::SparseBinIteratorFactory::index_type()'],['https://amrex-codes.github.io/amrex/doxygen/structamrex_1_1BinIterator.html#a9e55017514e250d49f7eccb1d03caca4',1,'amrex::BinIterator::index_type()'],['https://amrex-codes.github.io/amrex/doxygen/classamrex_1_1DenseBins.html#ace91724777a08f267ca7515117ebe620',1,'DenseBins< ParticleType >::index_type()'],['https://amrex-codes.github.io/amrex/doxygen/classamrex_1_1DenseBins.html#ace91724777a08f267ca7515117ebe620',1,'amrex::DenseBins::index_type()'],['https://amrex-codes.github.io/amrex/doxygen/structamrex_1_1DenseBinIteratorFactory.html#aee679b2caba1e5933d98f87d51ee2dbe',1,'amrex::DenseBinIteratorFactory::index_type()'],['https://amrex-codes.github.io/amrex/doxygen/structamrex_1_1BATbndryReg.html#a18c09cc04f0e7aa632e619fcc3824025',1,'amrex::BATbndryReg::index_type()'],['https://amrex-codes.github.io/amrex/doxygen/structamrex_1_1BATcoarsenRatio.html#a83d1ac876f96d6e5561f193b39498bec',1,'amrex::BATcoarsenRatio::index_type()'],['https://amrex-codes.github.io/amrex/doxygen/structamrex_1_1BATindexType.html#a94cc8c83f1dd9de4e2d1ab9a3d67e056',1,'amrex::BATindexType::index_type()'],['https://amrex-codes.github.io/amrex/doxygen/structamrex_1_1BATindexType__coarsenRatio.html#a90bd569f67fe7881da5831e52d1c78c2',1,'amrex::BATindexType_coarsenRatio::index_type()'],['https://amrex-codes.github.io/amrex/doxygen/structamrex_1_1BATnull.html#a32b3bfb809dceced0d08a737413919f6',1,'amrex::BATnull::index_type()'],['https://amrex-codes.github.io/amrex/doxygen/structamrex_1_1BATransformer.html#ab3b08da13a73b3057d2c1a7d565b0f8a',1,'amrex::BATransformer::index_type()']]], + ['index_5ftype_3762',['index_type',['https://amrex-codes.github.io/amrex/doxygen/classamrex_1_1DenseBins.html#aab51eb84697fee235dac2dfe29ecfa3b',1,'DenseBins< typename amrex::ParticleTileData >::index_type()'],['https://amrex-codes.github.io/amrex/doxygen/classamrex_1_1SparseBins.html#aa7f90581f997c06bef83a50325c7d550',1,'amrex::SparseBins::index_type()'],['https://amrex-codes.github.io/amrex/doxygen/structamrex_1_1SparseBinIteratorFactory.html#ae5dcffa68729e972f969d4813b61cc3f',1,'amrex::SparseBinIteratorFactory::index_type()'],['https://amrex-codes.github.io/amrex/doxygen/structamrex_1_1BinIterator.html#a076901dd6c8e2e3c65fef98f0ca348cd',1,'amrex::BinIterator::index_type()'],['https://amrex-codes.github.io/amrex/doxygen/classamrex_1_1DenseBins.html#aab51eb84697fee235dac2dfe29ecfa3b',1,'DenseBins< ParticleType >::index_type()'],['https://amrex-codes.github.io/amrex/doxygen/classamrex_1_1DenseBins.html#aab51eb84697fee235dac2dfe29ecfa3b',1,'amrex::DenseBins::index_type()'],['https://amrex-codes.github.io/amrex/doxygen/structamrex_1_1DenseBinIteratorFactory.html#a223f66550fa407ec108387b2cd8d61b2',1,'amrex::DenseBinIteratorFactory::index_type()'],['https://amrex-codes.github.io/amrex/doxygen/structamrex_1_1BATbndryReg.html#a18c09cc04f0e7aa632e619fcc3824025',1,'amrex::BATbndryReg::index_type()'],['https://amrex-codes.github.io/amrex/doxygen/structamrex_1_1BATcoarsenRatio.html#a83d1ac876f96d6e5561f193b39498bec',1,'amrex::BATcoarsenRatio::index_type()'],['https://amrex-codes.github.io/amrex/doxygen/structamrex_1_1BATindexType.html#a94cc8c83f1dd9de4e2d1ab9a3d67e056',1,'amrex::BATindexType::index_type()'],['https://amrex-codes.github.io/amrex/doxygen/structamrex_1_1BATindexType__coarsenRatio.html#a90bd569f67fe7881da5831e52d1c78c2',1,'amrex::BATindexType_coarsenRatio::index_type()'],['https://amrex-codes.github.io/amrex/doxygen/structamrex_1_1BATnull.html#a32b3bfb809dceced0d08a737413919f6',1,'amrex::BATnull::index_type()'],['https://amrex-codes.github.io/amrex/doxygen/structamrex_1_1BATransformer.html#ab3b08da13a73b3057d2c1a7d565b0f8a',1,'amrex::BATransformer::index_type()']]], ['index_5ftype_5fread_3763',['index_type_read',['https://amrex-codes.github.io/amrex/doxygen/namespaceamrex_1_1detail.html#ae1db1fc5feb5005eee61aeeeb926a478',1,'amrex::detail']]], ['index_5ftype_5fwrite_3764',['index_type_write',['https://amrex-codes.github.io/amrex/doxygen/namespaceamrex_1_1detail.html#ab00f37e64a03e8049a6890215b22817a',1,'amrex::detail']]], ['indexarray_3765',['IndexArray',['https://amrex-codes.github.io/amrex/doxygen/classamrex_1_1FabArrayBase.html#a7a4ed8b70e3aa4c3ddd3a24fb1c0f3a0',1,'amrex::FabArrayBase']]], diff --git a/amrex-hydro/Doxygen/html/search/functions_13.js b/amrex-hydro/Doxygen/html/search/functions_13.js index 9e613fc..9b6710c 100644 --- a/amrex-hydro/Doxygen/html/search/functions_13.js +++ b/amrex-hydro/Doxygen/html/search/functions_13.js @@ -379,12 +379,12 @@ var searchData= ['setvolumeweighting_14823',['SetVolumeWeighting',['https://amrex-codes.github.io/amrex/doxygen/structamrex_1_1AMRErrorTagInfo.html#aab42331c47167778993cf79cd0689549',1,'amrex::AMRErrorTagInfo']]], ['setwritebuffersize_14824',['SetWriteBufferSize',['https://amrex-codes.github.io/amrex/doxygen/classamrex_1_1RealDescriptor.html#aae779778e03e99a52811ac1e3460f4d2',1,'amrex::RealDescriptor']]], ['setwritetolevel_14825',['SetWriteToLevel',['https://amrex-codes.github.io/amrex/doxygen/classamrex_1_1DataServices.html#aedf7787e5d78a2ec4920bdae6f1033c2',1,'amrex::DataServices']]], - ['setxbcs_14826',['SetXBCs',['../namespaceEBGodunovBC.html#a201fb4a4c48f82f653fd5fb61090bcef',1,'EBGodunovBC::SetXBCs()'],['../namespacePPM.html#ad5bb40375d5bfdec96a5906cf7ef365d',1,'PPM::SetXBCs()']]], - ['setxedgebcs_14827',['SetXEdgeBCs',['../namespaceHydroBC.html#a45d3b23f98379c982fee1b1b72ae2d6a',1,'HydroBC']]], + ['setxbcs_14826',['SetXBCs',['../namespaceEBGodunovBC.html#a95fe61ec1acf2cf81ce6b99cceac75e3',1,'EBGodunovBC::SetXBCs()'],['../namespacePPM.html#a90c9fcca9c5e4a4098dcccf9aaead891',1,'PPM::SetXBCs()']]], + ['setxedgebcs_14827',['SetXEdgeBCs',['../namespaceHydroBC.html#a96c8149b6212b7eee7a68dd1da6c663b',1,'HydroBC']]], ['setxhi_14828',['setXHi',['https://amrex-codes.github.io/amrex/doxygen/structamrex_1_1EB2_1_1Neighbor.html#a3fed54140796e26ad90fc8d151beb855',1,'amrex::EB2::Neighbor']]], ['setxlo_14829',['setXLo',['https://amrex-codes.github.io/amrex/doxygen/structamrex_1_1EB2_1_1Neighbor.html#aa07825ca5ad98d94fa9bfb9879bb8383',1,'amrex::EB2::Neighbor']]], - ['setybcs_14830',['SetYBCs',['../namespacePPM.html#aa3ffd2df3e546aecfc2301f5b6f8f7d0',1,'PPM::SetYBCs()'],['../namespaceEBGodunovBC.html#abe925055f42491bbd794bdb3678ea1d4',1,'EBGodunovBC::SetYBCs()']]], - ['setyedgebcs_14831',['SetYEdgeBCs',['../namespaceHydroBC.html#ab483be498f1f0c98923a5e6cde92841a',1,'HydroBC']]], + ['setybcs_14830',['SetYBCs',['../namespacePPM.html#abf337b316b14038fe9d5eace8e23b1be',1,'PPM::SetYBCs()'],['../namespaceEBGodunovBC.html#a0e325c26f3ab1fe5a4b6d8ccc67280a5',1,'EBGodunovBC::SetYBCs()']]], + ['setyedgebcs_14831',['SetYEdgeBCs',['../namespaceHydroBC.html#a4b03a900994953e6e007f229046f652c',1,'HydroBC']]], ['setyhi_14832',['setYHi',['https://amrex-codes.github.io/amrex/doxygen/structamrex_1_1EB2_1_1Neighbor.html#a212ed5915d00323dcbcaeb9c017cf79f',1,'amrex::EB2::Neighbor']]], ['setylo_14833',['setYLo',['https://amrex-codes.github.io/amrex/doxygen/structamrex_1_1EB2_1_1Neighbor.html#ab5689b17794d98940e22c2dc1c856f72',1,'amrex::EB2::Neighbor']]], ['setzhi_14834',['setZHi',['https://amrex-codes.github.io/amrex/doxygen/structamrex_1_1EB2_1_1Neighbor.html#a89b6f98e17fc1ab18e714227d70a16c6',1,'amrex::EB2::Neighbor']]], diff --git a/amrex-hydro/Doxygen/html/search/typedefs_8.js b/amrex-hydro/Doxygen/html/search/typedefs_8.js index c2d8068..8cacbaa 100644 --- a/amrex-hydro/Doxygen/html/search/typedefs_8.js +++ b/amrex-hydro/Doxygen/html/search/typedefs_8.js @@ -1,7 +1,7 @@ var searchData= [ ['idcpu_18107',['IdCPU',['https://amrex-codes.github.io/amrex/doxygen/structamrex_1_1StructOfArrays.html#af6874dec9cbf05e59a6bc7367c5d22f7',1,'amrex::StructOfArrays']]], - ['index_5ftype_18108',['index_type',['https://amrex-codes.github.io/amrex/doxygen/structamrex_1_1BinIterator.html#a9e55017514e250d49f7eccb1d03caca4',1,'amrex::BinIterator::index_type()'],['https://amrex-codes.github.io/amrex/doxygen/structamrex_1_1DenseBinIteratorFactory.html#aee679b2caba1e5933d98f87d51ee2dbe',1,'amrex::DenseBinIteratorFactory::index_type()'],['https://amrex-codes.github.io/amrex/doxygen/classamrex_1_1DenseBins.html#ace91724777a08f267ca7515117ebe620',1,'amrex::DenseBins::index_type()'],['https://amrex-codes.github.io/amrex/doxygen/classamrex_1_1DenseBins.html#ace91724777a08f267ca7515117ebe620',1,'DenseBins< ParticleType >::index_type()'],['https://amrex-codes.github.io/amrex/doxygen/classamrex_1_1DenseBins.html#ace91724777a08f267ca7515117ebe620',1,'DenseBins< typename amrex::ParticleTileData >::index_type()'],['https://amrex-codes.github.io/amrex/doxygen/structamrex_1_1SparseBinIteratorFactory.html#af3b2075ffb37148df43247481a6acf79',1,'amrex::SparseBinIteratorFactory::index_type()'],['https://amrex-codes.github.io/amrex/doxygen/classamrex_1_1SparseBins.html#acd6d4073c186417cb25f04de695363d0',1,'amrex::SparseBins::index_type()']]], + ['index_5ftype_18108',['index_type',['https://amrex-codes.github.io/amrex/doxygen/structamrex_1_1BinIterator.html#a076901dd6c8e2e3c65fef98f0ca348cd',1,'amrex::BinIterator::index_type()'],['https://amrex-codes.github.io/amrex/doxygen/structamrex_1_1DenseBinIteratorFactory.html#a223f66550fa407ec108387b2cd8d61b2',1,'amrex::DenseBinIteratorFactory::index_type()'],['https://amrex-codes.github.io/amrex/doxygen/classamrex_1_1DenseBins.html#aab51eb84697fee235dac2dfe29ecfa3b',1,'amrex::DenseBins::index_type()'],['https://amrex-codes.github.io/amrex/doxygen/classamrex_1_1DenseBins.html#aab51eb84697fee235dac2dfe29ecfa3b',1,'DenseBins< ParticleType >::index_type()'],['https://amrex-codes.github.io/amrex/doxygen/classamrex_1_1DenseBins.html#aab51eb84697fee235dac2dfe29ecfa3b',1,'DenseBins< typename amrex::ParticleTileData >::index_type()'],['https://amrex-codes.github.io/amrex/doxygen/structamrex_1_1SparseBinIteratorFactory.html#ae5dcffa68729e972f969d4813b61cc3f',1,'amrex::SparseBinIteratorFactory::index_type()'],['https://amrex-codes.github.io/amrex/doxygen/classamrex_1_1SparseBins.html#aa7f90581f997c06bef83a50325c7d550',1,'amrex::SparseBins::index_type()']]], ['indextype_18109',['IndexType',['https://amrex-codes.github.io/amrex/doxygen/namespaceamrex.html#ad35342b486ef07ba6108169268169296',1,'amrex']]], ['int_18110',['Int',['https://amrex-codes.github.io/amrex/doxygen/classamrex_1_1HypreNodeLap.html#a55bfff3929ed41ec8c5f707f22cc392d',1,'amrex::HypreNodeLap']]], ['intarray_18111',['IntArray',['https://amrex-codes.github.io/amrex/doxygen/namespaceamrex.html#a2b58b8c81ca5e47c17a861e86354eba1',1,'amrex']]],

Functions

template<typename Limiter >
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void SetXBCs (const int i, const int j, const int k, const int n, amrex::Real &sm, amrex::Real &sp, amrex::Real &sedge1, amrex::Real &sedge2, const amrex::Array4< const amrex::Real > &s, const int bclo, const int bchi, const int domlo, const int domhi)
 
template<typename Limiter >
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void SetYBCs (const int i, const int j, const int k, const int n, amrex::Real &sm, amrex::Real &sp, amrex::Real &sedge1, amrex::Real &sedge2, const amrex::Array4< const amrex::Real > &s, const int bclo, const int bchi, const int domlo, const int domhi)
 
template<typename Limiter >
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void SetXBCs (const int i, const int j, const int k, const int n, amrex::Real &sm, amrex::Real &sp, amrex::Real &sedge1, amrex::Real &sedge2, const amrex::Array4< const amrex::Real > &s, const amrex::Real velm, const amrex::Real velp, const int bclo, const int bchi, const int domlo, const int domhi)
 
template<typename Limiter >
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void SetYBCs (const int i, const int j, const int k, const int n, amrex::Real &sm, amrex::Real &sp, amrex::Real &sedge1, amrex::Real &sedge2, const amrex::Array4< const amrex::Real > &s, const amrex::Real velm, const amrex::Real velp, const int bclo, const int bchi, const int domlo, const int domhi)
 
template<typename Limiter >
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void PredictVelOnXFace (const int i, const int j, const int k, const int n, const amrex::Real dtdx, const amrex::Real v_ad, const amrex::Array4< const amrex::Real > &S, const amrex::Array4< amrex::Real > &Im, const amrex::Array4< amrex::Real > &Ip, const amrex::BCRec bc, const int domlo, const int domhi, const Limiter &)
 
s,
const amrex::Real velm,
const amrex::Real velp,
s,
const amrex::Real velm,
const amrex::Real velp,