ERF
Energy Research and Forecasting: An Atmospheric Modeling Code
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
ERF_PhysBCFunct.H
Go to the documentation of this file.
1 #ifndef ERF_PhysBCFunct_H_
2 #define ERF_PhysBCFunct_H_
3 
4 #include <AMReX_Config.H>
5 
6 #include <AMReX_BCRec.H>
7 #include <AMReX_Geometry.H>
8 #include <AMReX_MultiFab.H>
9 #include <AMReX_ArrayLim.H>
10 #include <AMReX_FilCC_C.H>
11 #include <AMReX_FilND_C.H>
12 #include <AMReX_FilFC_C.H>
13 #include "AMReX_TypeTraits.H"
14 #include "AMReX_Orientation.H"
15 
16 #include <ERF_ReadBndryPlanes.H>
18 #include <ERF_IndexDefines.H>
19 #include <ERF_DataStruct.H>
20 #include <ERF_EddyViscosity.H>
21 #include <ERF_TerrainMetrics.H>
22 
24 {
25 public:
26  ERFPhysBCFunct_cons (const int lev,
27  const amrex::Geometry& geom, const amrex::Vector<amrex::BCRec>& domain_bcs_type,
28  const amrex::Gpu::DeviceVector<amrex::BCRec>& domain_bcs_type_d,
29  amrex::Array<amrex::Array<amrex::Real,AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NBCVAR_max> bc_extdir_vals,
30  amrex::Array<amrex::Array<amrex::Real,AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NBCVAR_max> bc_neumann_vals,
31  std::unique_ptr<amrex::MultiFab>& z_phys_nd,
32  const bool use_real_bcs,
33  amrex::Real* th_bc_data)
34  : m_lev(lev), m_geom(geom),
35  m_domain_bcs_type(domain_bcs_type),
36  m_domain_bcs_type_d(domain_bcs_type_d),
37  m_bc_extdir_vals(bc_extdir_vals),
38  m_bc_neumann_vals(bc_neumann_vals),
39  m_z_phys_nd(z_phys_nd.get()),
40  m_use_real_bcs(use_real_bcs),
41  m_th_bc_data(th_bc_data)
42  {}
43 
45 
46  /*
47  * Impose physical boundary conditions at domain boundaries
48  *
49  * @param[out] mfs Vector of MultiFabs to be filled containing, in order: cons, xvel, yvel, and zvel data
50  * @param[in] icomp starting component for conserved variables
51  * @param[in] ncomp number of components for conserved variables
52  * @param[in] nghost number of ghost cells to be filled for conserved variables
53  * @param[in] time time at which the data should be filled
54  * @param[in] use_real_bcs if true then we fill boundary conditions for interior locations
55  */
56  void operator() (amrex::MultiFab& mf, amrex::MultiFab& xvel, amrex::MultiFab& yvel,
57  int icomp, int ncomp, amrex::IntVect const& nghost,
58  const amrex::Real time, int bccomp_cons, bool do_fb = true, bool do_terrain_adjustment = true);
59 
60  void impose_lateral_cons_bcs (const amrex::Array4<amrex::Real>& dest_arr,
61  const amrex::Array4<amrex::Real const>& xvel_arr,
62  const amrex::Array4<amrex::Real const>& yvel_arr,
63  const amrex::Box& bx, const amrex::Box& domain,
64  int icomp, int ncomp, amrex::IntVect ng);
65  void impose_vertical_cons_bcs (const amrex::Array4<amrex::Real>& dest_arr,
66  const amrex::Box& bx, const amrex::Box& domain,
67  const amrex::Array4<amrex::Real const>& z_nd,
68  const amrex::GpuArray<amrex::Real,AMREX_SPACEDIM> dxInv,
69  int icomp, int ncomp, bool do_terrain_adjustment = true);
70 
71 private:
72  int m_lev;
73  amrex::Geometry m_geom;
74  amrex::Vector<amrex::BCRec> m_domain_bcs_type;
75  amrex::Gpu::DeviceVector<amrex::BCRec> m_domain_bcs_type_d;
76  amrex::Array<amrex::Array<amrex::Real, AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NBCVAR_max> m_bc_extdir_vals;
77  amrex::Array<amrex::Array<amrex::Real, AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NBCVAR_max> m_bc_neumann_vals;
78  amrex::MultiFab* m_z_phys_nd;
80  amrex::Real* m_th_bc_data;
81 };
82 
84 {
85 public:
86  ERFPhysBCFunct_u (const int lev, const amrex::Geometry& geom,
87  const amrex::Vector<amrex::BCRec>& domain_bcs_type,
88  const amrex::Gpu::DeviceVector<amrex::BCRec>& domain_bcs_type_d,
89  amrex::Array<amrex::Array<amrex::Real,AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NBCVAR_max> bc_extdir_vals,
90  amrex::Array<amrex::Array<amrex::Real,AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NBCVAR_max> bc_neumann_vals,
91  std::unique_ptr<amrex::MultiFab>& z_phys_nd,
92  const bool use_real_bcs,
93  amrex::Real* u_bc_data)
94  : m_lev(lev), m_geom(geom),
95  m_domain_bcs_type(domain_bcs_type),
96  m_domain_bcs_type_d(domain_bcs_type_d),
97  m_bc_extdir_vals(bc_extdir_vals),
98  m_bc_neumann_vals(bc_neumann_vals),
99  m_z_phys_nd(z_phys_nd.get()),
100  m_use_real_bcs(use_real_bcs),
101  m_u_bc_data(u_bc_data)
102  { }
103 
105 
106  /*
107  * Impose physical boundary conditions at domain boundaries
108  *
109  * @param[out] mfs Vector of MultiFabs to be filled containing, in order: cons, xvel, yvel, and zvel data
110  * @param[in] nghost number of ghost cells to be filled for velocity components
111  * @param[in] time time at which the data should be filled
112  * @param[in] use_real_bcs if true then we fill boundary conditions for interior locations
113  */
114  void operator() (amrex::MultiFab& mf, amrex::MultiFab& xvel, amrex::MultiFab& yvel,
115  amrex::IntVect const& nghost, const amrex::Real time, int bccomp, bool do_fb);
116 
117  void impose_lateral_xvel_bcs (const amrex::Array4<amrex::Real>& dest_arr,
118  const amrex::Array4<amrex::Real const>& xvel_arr,
119  const amrex::Array4<amrex::Real const>& yvel_arr,
120  const amrex::Box& bx, const amrex::Box& domain,
121  int bccomp);
122  void impose_vertical_xvel_bcs (const amrex::Array4<amrex::Real>& dest_arr,
123  const amrex::Box& bx, const amrex::Box& domain,
124  const amrex::Array4<amrex::Real const>& z_nd,
125  const amrex::GpuArray<amrex::Real,AMREX_SPACEDIM> dxInv,
126  int bccomp,
127  const amrex::Real time);
128 
129 private:
130  int m_lev;
131  amrex::Geometry m_geom;
132  amrex::Vector<amrex::BCRec> m_domain_bcs_type;
133  amrex::Gpu::DeviceVector<amrex::BCRec> m_domain_bcs_type_d;
134  amrex::Array<amrex::Array<amrex::Real, AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NBCVAR_max> m_bc_extdir_vals;
135  amrex::Array<amrex::Array<amrex::Real, AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NBCVAR_max> m_bc_neumann_vals;
136  amrex::MultiFab* m_z_phys_nd;
138  amrex::Real* m_u_bc_data;
139 };
140 
142 {
143 public:
144  ERFPhysBCFunct_v (const int lev, const amrex::Geometry& geom,
145  const amrex::Vector<amrex::BCRec>& domain_bcs_type,
146  const amrex::Gpu::DeviceVector<amrex::BCRec>& domain_bcs_type_d,
147  amrex::Array<amrex::Array<amrex::Real,AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NBCVAR_max> bc_extdir_vals,
148  amrex::Array<amrex::Array<amrex::Real,AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NBCVAR_max> bc_neumann_vals,
149  std::unique_ptr<amrex::MultiFab>& z_phys_nd,
150  const bool use_real_bcs,
151  amrex::Real* v_bc_data)
152  : m_lev(lev),
153  m_geom(geom), m_domain_bcs_type(domain_bcs_type),
154  m_domain_bcs_type_d(domain_bcs_type_d),
155  m_bc_extdir_vals(bc_extdir_vals),
156  m_bc_neumann_vals(bc_neumann_vals),
157  m_z_phys_nd(z_phys_nd.get()),
158  m_use_real_bcs(use_real_bcs),
159  m_v_bc_data(v_bc_data)
160  { }
161 
163 
164  /*
165  * Impose physical boundary conditions at domain boundaries
166  *
167  * @param[out] mfs Vector of MultiFabs to be filled containing, in order: cons, xvel, yvel, and zvel data
168  * @param[in] icomp_cons starting component for conserved variables
169  * @param[in] ncomp_cons number of components for conserved variables
170  * @param[in] nghost number of ghost cells to be filled for velocity components
171  * @param[in] time time at which the data should be filled
172  * @param[in] use_real_bcs if true then we fill boundary conditions for interior locations
173  */
174  void operator() (amrex::MultiFab& mf, amrex::MultiFab& xvel, amrex::MultiFab& yvel,
175  amrex::IntVect const& nghost, const amrex::Real time, int bccomp, bool do_fb);
176 
177  void impose_lateral_yvel_bcs (const amrex::Array4<amrex::Real>& dest_arr,
178  const amrex::Array4<amrex::Real const>& xvel_arr,
179  const amrex::Array4<amrex::Real const>& yvel_arr,
180  const amrex::Box& bx, const amrex::Box& domain,
181  int bccomp);
182  void impose_vertical_yvel_bcs (const amrex::Array4<amrex::Real>& dest_arr,
183  const amrex::Box& bx, const amrex::Box& domain,
184  const amrex::Array4<amrex::Real const>& z_nd,
185  const amrex::GpuArray<amrex::Real,AMREX_SPACEDIM> dxInv,
186  int bccomp);
187 
188 private:
189  int m_lev;
190  amrex::Geometry m_geom;
191  amrex::Vector<amrex::BCRec> m_domain_bcs_type;
192  amrex::Gpu::DeviceVector<amrex::BCRec> m_domain_bcs_type_d;
193  amrex::Array<amrex::Array<amrex::Real, AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NBCVAR_max> m_bc_extdir_vals;
194  amrex::Array<amrex::Array<amrex::Real, AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NBCVAR_max> m_bc_neumann_vals;
195  amrex::MultiFab* m_z_phys_nd;
197  amrex::Real* m_v_bc_data;
198 };
199 
201 {
202 public:
203  ERFPhysBCFunct_w (const int lev, const amrex::Geometry& geom,
204  const amrex::Vector<amrex::BCRec>& domain_bcs_type,
205  const amrex::Gpu::DeviceVector<amrex::BCRec>& domain_bcs_type_d,
206  amrex::Array<amrex::Array<amrex::Real,AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NBCVAR_max> bc_extdir_vals,
207  amrex::Array<amrex::Array<amrex::Real,AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NBCVAR_max> bc_neumann_vals,
208  const TerrainType& terrain_type, std::unique_ptr<amrex::MultiFab>& z_phys_nd,
209  const bool use_real_bcs,
210  amrex::Real* w_bc_data)
211  : m_lev(lev),
212  m_geom(geom), m_domain_bcs_type(domain_bcs_type),
213  m_domain_bcs_type_d(domain_bcs_type_d),
214  m_bc_extdir_vals(bc_extdir_vals),
215  m_bc_neumann_vals(bc_neumann_vals),
216  m_terrain_type(terrain_type),
217  m_z_phys_nd(z_phys_nd.get()),
218  m_use_real_bcs(use_real_bcs),
219  m_w_bc_data(w_bc_data)
220  { }
221 
223 
224  /*
225  * Impose physical boundary conditions at domain boundaries
226  *
227  * @param[out] mfs Vector of MultiFabs to be filled containing, in order: cons, xvel, yvel, and zvel data
228  * @param[in] icomp_cons starting component for conserved variables
229  * @param[in] ncomp_cons number of components for conserved variables
230  * @param[in] nghost number of ghost cells to be filled for velocity components
231  * @param[in] time time at which the data should be filled
232  * @param[in] use_real_bcs if true then we fill boundary conditions for interior locations
233  */
234  void operator() (amrex::MultiFab& mf, amrex::MultiFab& xvel, amrex::MultiFab& yvel,
235  amrex::IntVect const& nghost, const amrex::Real time, int bccomp,
236  bool do_fb);
237 
238  void impose_lateral_zvel_bcs (const amrex::Array4<amrex::Real>& dest_arr,
239  const amrex::Array4<amrex::Real const>& xvel_arr,
240  const amrex::Array4<amrex::Real const>& yvel_arr,
241  const amrex::Box& bx, const amrex::Box& domain,
242  const amrex::Array4<amrex::Real const>& z_nd,
243  const amrex::GpuArray<amrex::Real,AMREX_SPACEDIM> dxInv,
244  TerrainType terrain_type, int bccomp);
245  void impose_vertical_zvel_bcs (const amrex::Array4<amrex::Real>& dest_arr,
246  const amrex::Array4<amrex::Real const>& xvel_arr,
247  const amrex::Array4<amrex::Real const>& yvel_arr,
248  const amrex::Box& bx, const amrex::Box& domain,
249  const amrex::Array4<amrex::Real const>& z_nd,
250  const amrex::GpuArray<amrex::Real,AMREX_SPACEDIM> dxInv,
251  int bccomp_u, int bccomp_v, int bccomp_w,
252  TerrainType terrain_type);
253 
254 private:
255  int m_lev;
256  amrex::Geometry m_geom;
257  amrex::Vector<amrex::BCRec> m_domain_bcs_type;
258  amrex::Gpu::DeviceVector<amrex::BCRec> m_domain_bcs_type_d;
259  amrex::Array<amrex::Array<amrex::Real, AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NBCVAR_max> m_bc_extdir_vals;
260  amrex::Array<amrex::Array<amrex::Real, AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NBCVAR_max> m_bc_neumann_vals;
261  TerrainType m_terrain_type;
262  amrex::MultiFab* m_z_phys_nd;
264  amrex::Real* m_w_bc_data;
265 };
266 
268 {
269 public:
270  ERFPhysBCFunct_base (const int lev,
271  const amrex::Geometry& geom, const amrex::Vector<amrex::BCRec>& domain_bcs_type,
272  const amrex::Gpu::DeviceVector<amrex::BCRec>& domain_bcs_type_d,
273  bool moving_terrain)
274  : m_lev(lev), m_geom(geom),
275  m_moving_terrain(moving_terrain),
276  m_domain_bcs_type(domain_bcs_type),
277  m_domain_bcs_type_d(domain_bcs_type_d)
278  {}
279 
281 
282  /*
283  * Impose physical boundary conditions at domain boundaries
284  *
285  * @param[out] mfs Vector of MultiFabs to be filled containing, in order: cons, xvel, yvel, and zvel data
286  * @param[in] icomp starting component for conserved variables
287  * @param[in] ncomp number of components for conserved variables
288  * @param[in] nghost number of ghost cells to be filled for conserved variables
289  * @param[in] time time at which the data should be filled
290  */
291  void operator() (amrex::MultiFab& mf, int icomp, int ncomp, amrex::IntVect const& nghost);
292 
293  void impose_lateral_basestate_bcs (const amrex::Array4<amrex::Real>& dest_arr,
294  const amrex::Box& bx, const amrex::Box& domain,
295  int ncomp, const amrex::IntVect& nghost);
296  void impose_vertical_basestate_bcs (const amrex::Array4<amrex::Real>& dest_arr,
297  const amrex::Box& bx, const amrex::Box& domain,
298  int ncomp, const amrex::IntVect& nghost);
299 
300 private:
301  int m_lev;
302  amrex::Geometry m_geom;
304  amrex::Vector<amrex::BCRec> m_domain_bcs_type;
305  amrex::Gpu::DeviceVector<amrex::BCRec> m_domain_bcs_type_d;
306 };
307 
308 #endif
#define NBCVAR_max
Definition: ERF_IndexDefines.H:29
Definition: ERF_PhysBCFunct.H:268
amrex::Gpu::DeviceVector< amrex::BCRec > m_domain_bcs_type_d
Definition: ERF_PhysBCFunct.H:305
void impose_vertical_basestate_bcs(const amrex::Array4< amrex::Real > &dest_arr, const amrex::Box &bx, const amrex::Box &domain, int ncomp, const amrex::IntVect &nghost)
Definition: ERF_BoundaryConditionsBaseState.cpp:247
ERFPhysBCFunct_base(const int lev, const amrex::Geometry &geom, const amrex::Vector< amrex::BCRec > &domain_bcs_type, const amrex::Gpu::DeviceVector< amrex::BCRec > &domain_bcs_type_d, bool moving_terrain)
Definition: ERF_PhysBCFunct.H:270
int m_lev
Definition: ERF_PhysBCFunct.H:301
amrex::Geometry m_geom
Definition: ERF_PhysBCFunct.H:302
bool m_moving_terrain
Definition: ERF_PhysBCFunct.H:303
void impose_lateral_basestate_bcs(const amrex::Array4< amrex::Real > &dest_arr, const amrex::Box &bx, const amrex::Box &domain, int ncomp, const amrex::IntVect &nghost)
Definition: ERF_BoundaryConditionsBaseState.cpp:15
void operator()(amrex::MultiFab &mf, int icomp, int ncomp, amrex::IntVect const &nghost)
Definition: ERF_PhysBCFunct.cpp:319
amrex::Vector< amrex::BCRec > m_domain_bcs_type
Definition: ERF_PhysBCFunct.H:304
~ERFPhysBCFunct_base()
Definition: ERF_PhysBCFunct.H:280
Definition: ERF_PhysBCFunct.H:24
bool m_use_real_bcs
Definition: ERF_PhysBCFunct.H:79
amrex::Geometry m_geom
Definition: ERF_PhysBCFunct.H:73
void impose_vertical_cons_bcs(const amrex::Array4< amrex::Real > &dest_arr, const amrex::Box &bx, const amrex::Box &domain, const amrex::Array4< amrex::Real const > &z_nd, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > dxInv, int icomp, int ncomp, bool do_terrain_adjustment=true)
Definition: ERF_BoundaryConditionsCons.cpp:317
amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > m_bc_extdir_vals
Definition: ERF_PhysBCFunct.H:76
amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > m_bc_neumann_vals
Definition: ERF_PhysBCFunct.H:77
void operator()(amrex::MultiFab &mf, amrex::MultiFab &xvel, amrex::MultiFab &yvel, int icomp, int ncomp, amrex::IntVect const &nghost, const amrex::Real time, int bccomp_cons, bool do_fb=true, bool do_terrain_adjustment=true)
Definition: ERF_PhysBCFunct.cpp:16
amrex::Gpu::DeviceVector< amrex::BCRec > m_domain_bcs_type_d
Definition: ERF_PhysBCFunct.H:75
amrex::Vector< amrex::BCRec > m_domain_bcs_type
Definition: ERF_PhysBCFunct.H:74
~ERFPhysBCFunct_cons()
Definition: ERF_PhysBCFunct.H:44
amrex::Real * m_th_bc_data
Definition: ERF_PhysBCFunct.H:80
ERFPhysBCFunct_cons(const int lev, const amrex::Geometry &geom, const amrex::Vector< amrex::BCRec > &domain_bcs_type, const amrex::Gpu::DeviceVector< amrex::BCRec > &domain_bcs_type_d, amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > bc_extdir_vals, amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > bc_neumann_vals, std::unique_ptr< amrex::MultiFab > &z_phys_nd, const bool use_real_bcs, amrex::Real *th_bc_data)
Definition: ERF_PhysBCFunct.H:26
amrex::MultiFab * m_z_phys_nd
Definition: ERF_PhysBCFunct.H:78
int m_lev
Definition: ERF_PhysBCFunct.H:72
void impose_lateral_cons_bcs(const amrex::Array4< amrex::Real > &dest_arr, const amrex::Array4< amrex::Real const > &xvel_arr, const amrex::Array4< amrex::Real const > &yvel_arr, const amrex::Box &bx, const amrex::Box &domain, int icomp, int ncomp, amrex::IntVect ng)
Definition: ERF_BoundaryConditionsCons.cpp:17
Definition: ERF_PhysBCFunct.H:84
ERFPhysBCFunct_u(const int lev, const amrex::Geometry &geom, const amrex::Vector< amrex::BCRec > &domain_bcs_type, const amrex::Gpu::DeviceVector< amrex::BCRec > &domain_bcs_type_d, amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > bc_extdir_vals, amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > bc_neumann_vals, std::unique_ptr< amrex::MultiFab > &z_phys_nd, const bool use_real_bcs, amrex::Real *u_bc_data)
Definition: ERF_PhysBCFunct.H:86
amrex::Geometry m_geom
Definition: ERF_PhysBCFunct.H:131
amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > m_bc_extdir_vals
Definition: ERF_PhysBCFunct.H:134
amrex::Gpu::DeviceVector< amrex::BCRec > m_domain_bcs_type_d
Definition: ERF_PhysBCFunct.H:133
bool m_use_real_bcs
Definition: ERF_PhysBCFunct.H:137
amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > m_bc_neumann_vals
Definition: ERF_PhysBCFunct.H:135
amrex::Real * m_u_bc_data
Definition: ERF_PhysBCFunct.H:138
void impose_lateral_xvel_bcs(const amrex::Array4< amrex::Real > &dest_arr, const amrex::Array4< amrex::Real const > &xvel_arr, const amrex::Array4< amrex::Real const > &yvel_arr, const amrex::Box &bx, const amrex::Box &domain, int bccomp)
Definition: ERF_BoundaryConditionsXvel.cpp:15
int m_lev
Definition: ERF_PhysBCFunct.H:130
amrex::Vector< amrex::BCRec > m_domain_bcs_type
Definition: ERF_PhysBCFunct.H:132
~ERFPhysBCFunct_u()
Definition: ERF_PhysBCFunct.H:104
void operator()(amrex::MultiFab &mf, amrex::MultiFab &xvel, amrex::MultiFab &yvel, amrex::IntVect const &nghost, const amrex::Real time, int bccomp, bool do_fb)
Definition: ERF_PhysBCFunct.cpp:89
amrex::MultiFab * m_z_phys_nd
Definition: ERF_PhysBCFunct.H:136
void impose_vertical_xvel_bcs(const amrex::Array4< amrex::Real > &dest_arr, const amrex::Box &bx, const amrex::Box &domain, const amrex::Array4< amrex::Real const > &z_nd, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > dxInv, int bccomp, const amrex::Real time)
Definition: ERF_BoundaryConditionsXvel.cpp:180
Definition: ERF_PhysBCFunct.H:142
amrex::Geometry m_geom
Definition: ERF_PhysBCFunct.H:190
amrex::Gpu::DeviceVector< amrex::BCRec > m_domain_bcs_type_d
Definition: ERF_PhysBCFunct.H:192
amrex::Real * m_v_bc_data
Definition: ERF_PhysBCFunct.H:197
int m_lev
Definition: ERF_PhysBCFunct.H:189
~ERFPhysBCFunct_v()
Definition: ERF_PhysBCFunct.H:162
ERFPhysBCFunct_v(const int lev, const amrex::Geometry &geom, const amrex::Vector< amrex::BCRec > &domain_bcs_type, const amrex::Gpu::DeviceVector< amrex::BCRec > &domain_bcs_type_d, amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > bc_extdir_vals, amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > bc_neumann_vals, std::unique_ptr< amrex::MultiFab > &z_phys_nd, const bool use_real_bcs, amrex::Real *v_bc_data)
Definition: ERF_PhysBCFunct.H:144
amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > m_bc_neumann_vals
Definition: ERF_PhysBCFunct.H:194
void impose_vertical_yvel_bcs(const amrex::Array4< amrex::Real > &dest_arr, const amrex::Box &bx, const amrex::Box &domain, const amrex::Array4< amrex::Real const > &z_nd, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > dxInv, int bccomp)
Definition: ERF_BoundaryConditionsYvel.cpp:181
bool m_use_real_bcs
Definition: ERF_PhysBCFunct.H:196
void operator()(amrex::MultiFab &mf, amrex::MultiFab &xvel, amrex::MultiFab &yvel, amrex::IntVect const &nghost, const amrex::Real time, int bccomp, bool do_fb)
Definition: ERF_PhysBCFunct.cpp:163
void impose_lateral_yvel_bcs(const amrex::Array4< amrex::Real > &dest_arr, const amrex::Array4< amrex::Real const > &xvel_arr, const amrex::Array4< amrex::Real const > &yvel_arr, const amrex::Box &bx, const amrex::Box &domain, int bccomp)
Definition: ERF_BoundaryConditionsYvel.cpp:14
amrex::Vector< amrex::BCRec > m_domain_bcs_type
Definition: ERF_PhysBCFunct.H:191
amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > m_bc_extdir_vals
Definition: ERF_PhysBCFunct.H:193
amrex::MultiFab * m_z_phys_nd
Definition: ERF_PhysBCFunct.H:195
Definition: ERF_PhysBCFunct.H:201
amrex::Vector< amrex::BCRec > m_domain_bcs_type
Definition: ERF_PhysBCFunct.H:257
amrex::Geometry m_geom
Definition: ERF_PhysBCFunct.H:256
int m_lev
Definition: ERF_PhysBCFunct.H:255
amrex::Real * m_w_bc_data
Definition: ERF_PhysBCFunct.H:264
void operator()(amrex::MultiFab &mf, amrex::MultiFab &xvel, amrex::MultiFab &yvel, amrex::IntVect const &nghost, const amrex::Real time, int bccomp, bool do_fb)
Definition: ERF_PhysBCFunct.cpp:235
bool m_use_real_bcs
Definition: ERF_PhysBCFunct.H:263
amrex::Gpu::DeviceVector< amrex::BCRec > m_domain_bcs_type_d
Definition: ERF_PhysBCFunct.H:258
void impose_vertical_zvel_bcs(const amrex::Array4< amrex::Real > &dest_arr, const amrex::Array4< amrex::Real const > &xvel_arr, const amrex::Array4< amrex::Real const > &yvel_arr, const amrex::Box &bx, const amrex::Box &domain, const amrex::Array4< amrex::Real const > &z_nd, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > dxInv, int bccomp_u, int bccomp_v, int bccomp_w, TerrainType terrain_type)
Definition: ERF_BoundaryConditionsZvel.cpp:171
TerrainType m_terrain_type
Definition: ERF_PhysBCFunct.H:261
ERFPhysBCFunct_w(const int lev, const amrex::Geometry &geom, const amrex::Vector< amrex::BCRec > &domain_bcs_type, const amrex::Gpu::DeviceVector< amrex::BCRec > &domain_bcs_type_d, amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > bc_extdir_vals, amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > bc_neumann_vals, const TerrainType &terrain_type, std::unique_ptr< amrex::MultiFab > &z_phys_nd, const bool use_real_bcs, amrex::Real *w_bc_data)
Definition: ERF_PhysBCFunct.H:203
amrex::MultiFab * m_z_phys_nd
Definition: ERF_PhysBCFunct.H:262
amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > m_bc_neumann_vals
Definition: ERF_PhysBCFunct.H:260
~ERFPhysBCFunct_w()
Definition: ERF_PhysBCFunct.H:222
amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > m_bc_extdir_vals
Definition: ERF_PhysBCFunct.H:259
void impose_lateral_zvel_bcs(const amrex::Array4< amrex::Real > &dest_arr, const amrex::Array4< amrex::Real const > &xvel_arr, const amrex::Array4< amrex::Real const > &yvel_arr, const amrex::Box &bx, const amrex::Box &domain, const amrex::Array4< amrex::Real const > &z_nd, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > dxInv, TerrainType terrain_type, int bccomp)
Definition: ERF_BoundaryConditionsZvel.cpp:16
@ xvel
Definition: ERF_IndexDefines.H:141
@ yvel
Definition: ERF_IndexDefines.H:142