ERF
Energy Research and Forecasting: An Atmospheric Modeling Code
ERF_TI_fast_headers.H
Go to the documentation of this file.
1 #ifndef ERF_FAST_INTEGRATION_H_
2 #define ERF_FAST_INTEGRATION_H_
3 
4 #include <AMReX_MultiFab.H>
5 #include <AMReX_BCRec.H>
6 #include <AMReX_YAFluxRegister.H>
7 #include <AMReX_EBMultiFabUtil.H>
8 
9 #include "ERF_DataStruct.H"
10 #include "ERF_IndexDefines.H"
11 #include <ERF_TerrainMetrics.H>
12 #include <ERF_TileNoZ.H>
13 #include <ERF_ProbCommon.H>
14 
15 /**
16  * Function for computing the fast RHS with no terrain
17  *
18  */
19 void erf_fast_rhs_N (int step, int nrk, int level, int finest_level,
20  amrex::Vector<amrex::MultiFab >& S_slow_rhs,
21  const amrex::Vector<amrex::MultiFab >& S_prev,
22  amrex::Vector<amrex::MultiFab >& S_stage_data,
23  const amrex::MultiFab& S_stage_prim,
24  const amrex::MultiFab& qt,
25  const amrex::MultiFab& pi_stage,
26  const amrex::MultiFab& fast_coeffs,
27  amrex::Vector<amrex::MultiFab >& S_data,
28  amrex::MultiFab& lagged_delta_rt,
29  amrex::MultiFab& avg_xmom,
30  amrex::MultiFab& avg_ymom,
31  amrex::MultiFab& avg_zmom,
32  const amrex::MultiFab& cc_src,
33  const amrex::MultiFab& xmom_src,
34  const amrex::MultiFab& ymom_src,
35  const amrex::MultiFab& zmom_src,
36  const amrex::Geometry geom,
37  const amrex::Real gravity,
38  const amrex::Real dtau, const amrex::Real beta_s,
39  const amrex::Real facinv,
40  amrex::Vector<std::unique_ptr<amrex::MultiFab>>& mapfac,
41  amrex::YAFluxRegister* fr_as_crse,
42  amrex::YAFluxRegister* fr_as_fine,
43  bool l_use_moisture, bool l_reflux,
44  bool l_implicit_substepping);
45 
46 /**
47  * Function for computing the fast RHS with fixed terrain
48  *
49  */
50 void erf_fast_rhs_T (int step, int nrk, int level, int finest_level,
51  amrex::Vector<amrex::MultiFab >& S_slow_rhs,
52  const amrex::Vector<amrex::MultiFab >& S_prev,
53  amrex::Vector<amrex::MultiFab >& S_stage_data,
54  const amrex::MultiFab& S_stage_prim,
55  const amrex::MultiFab& qt,
56  const amrex::MultiFab& pi_stage,
57  const amrex::MultiFab& fast_coeffs,
58  amrex::Vector<amrex::MultiFab >& S_data,
59  amrex::MultiFab& lagged_delta_rt,
60  amrex::MultiFab& avg_xmom,
61  amrex::MultiFab& avg_ymom,
62  amrex::MultiFab& avg_zmom,
63  const amrex::MultiFab& cc_src,
64  const amrex::MultiFab& xmom_src,
65  const amrex::MultiFab& ymom_src,
66  const amrex::MultiFab& zmom_src,
67  const amrex::Geometry geom,
68  const amrex::Real gravity,
69  std::unique_ptr<amrex::MultiFab>& z_phys_nd,
70  std::unique_ptr<amrex::MultiFab>& detJ_cc,
71  const amrex::Real dtau, const amrex::Real beta_s,
72  const amrex::Real facinv,
73  amrex::Vector<std::unique_ptr<amrex::MultiFab>>& mapfac,
74  amrex::YAFluxRegister* fr_as_crse,
75  amrex::YAFluxRegister* fr_as_fine,
76  bool l_use_moisture, bool l_reflux,
77  bool l_implicit_substepping);
78 
79 /**
80  * Function for computing the fast RHS with moving terrain
81  *
82  */
83 void erf_fast_rhs_MT (int step, int nrk, int level, int finest_level,
84  amrex::Vector<amrex::MultiFab >& S_slow_rhs,
85  const amrex::Vector<amrex::MultiFab >& S_prev,
86  amrex::Vector<amrex::MultiFab >& S_stg_data,
87  const amrex::MultiFab& S_stg_prim,
88  const amrex::MultiFab& qt,
89  const amrex::MultiFab& pi_stage,
90  const amrex::MultiFab& fast_coeffs,
91  amrex::Vector<amrex::MultiFab >& S_data,
92  amrex::MultiFab& lagged_delta_rt,
93  amrex::MultiFab& avg_xmom,
94  amrex::MultiFab& avg_ymom,
95  amrex::MultiFab& avg_zmom,
96  const amrex::MultiFab& cc_src,
97  const amrex::MultiFab& xmom_src,
98  const amrex::MultiFab& ymom_src,
99  const amrex::MultiFab& zmom_src,
100  const amrex::Geometry geom,
101  const amrex::Real gravity,
102  const bool use_lagged_delta_rt,
103  std::unique_ptr<amrex::MultiFab>& z_t_rk,
104  const amrex::MultiFab* z_t_pert,
105  std::unique_ptr<amrex::MultiFab>& z_phys_nd_old,
106  std::unique_ptr<amrex::MultiFab>& z_phys_nd_new,
107  std::unique_ptr<amrex::MultiFab>& z_phys_nd_stg,
108  std::unique_ptr<amrex::MultiFab>& detJ_cc_old,
109  std::unique_ptr<amrex::MultiFab>& detJ_cc_new,
110  std::unique_ptr<amrex::MultiFab>& detJ_cc_stg,
111  const amrex::Real dtau, const amrex::Real beta_s,
112  const amrex::Real facinv,
113  amrex::Vector<std::unique_ptr<amrex::MultiFab>>& mapfac,
114  amrex::YAFluxRegister* fr_as_crse,
115  amrex::YAFluxRegister* fr_as_fine,
116  bool l_use_moisture, bool l_reflux,
117  bool l_implicit_substepping);
118 
119 /**
120  * Function for computing the coefficients for the tridiagonal solver used in the fast
121  * integrator (the acoustic substepping).
122  */
123 void make_fast_coeffs (int level,
124  amrex::MultiFab& fast_coeffs,
125  amrex::Vector<amrex::MultiFab >& S_stage_data,
126  const amrex::MultiFab& S_stage_prim,
127  const amrex::MultiFab& pi_stage,
128  const amrex::Geometry geom,
129  const bool use_moisture,
130  const MeshType mesh_type,
131  const amrex::Real gravity,
132  const amrex::Real c_p,
133  std::unique_ptr<amrex::MultiFab>& detJ_cc,
134  const amrex::MultiFab* r0,
135  const amrex::MultiFab* pi0,
136  const amrex::Real dtau,
137  const amrex::Real beta_s,
138  amrex::GpuArray<ERF_BC, AMREX_SPACEDIM*2> &phys_bc_type);
139 
140 #endif
amrex::Real Real
Definition: ERF_ShocInterface.H:19
void make_fast_coeffs(int level, amrex::MultiFab &fast_coeffs, amrex::Vector< amrex::MultiFab > &S_stage_data, const amrex::MultiFab &S_stage_prim, const amrex::MultiFab &pi_stage, const amrex::Geometry geom, const bool use_moisture, const MeshType mesh_type, const amrex::Real gravity, const amrex::Real c_p, std::unique_ptr< amrex::MultiFab > &detJ_cc, const amrex::MultiFab *r0, const amrex::MultiFab *pi0, const amrex::Real dtau, const amrex::Real beta_s, amrex::GpuArray< ERF_BC, AMREX_SPACEDIM *2 > &phys_bc_type)
void erf_fast_rhs_N(int step, int nrk, int level, int finest_level, amrex::Vector< amrex::MultiFab > &S_slow_rhs, const amrex::Vector< amrex::MultiFab > &S_prev, amrex::Vector< amrex::MultiFab > &S_stage_data, const amrex::MultiFab &S_stage_prim, const amrex::MultiFab &qt, const amrex::MultiFab &pi_stage, const amrex::MultiFab &fast_coeffs, amrex::Vector< amrex::MultiFab > &S_data, amrex::MultiFab &lagged_delta_rt, amrex::MultiFab &avg_xmom, amrex::MultiFab &avg_ymom, amrex::MultiFab &avg_zmom, const amrex::MultiFab &cc_src, const amrex::MultiFab &xmom_src, const amrex::MultiFab &ymom_src, const amrex::MultiFab &zmom_src, const amrex::Geometry geom, const amrex::Real gravity, const amrex::Real dtau, const amrex::Real beta_s, const amrex::Real facinv, amrex::Vector< std::unique_ptr< amrex::MultiFab >> &mapfac, amrex::YAFluxRegister *fr_as_crse, amrex::YAFluxRegister *fr_as_fine, bool l_use_moisture, bool l_reflux, bool l_implicit_substepping)
void erf_fast_rhs_T(int step, int nrk, int level, int finest_level, amrex::Vector< amrex::MultiFab > &S_slow_rhs, const amrex::Vector< amrex::MultiFab > &S_prev, amrex::Vector< amrex::MultiFab > &S_stage_data, const amrex::MultiFab &S_stage_prim, const amrex::MultiFab &qt, const amrex::MultiFab &pi_stage, const amrex::MultiFab &fast_coeffs, amrex::Vector< amrex::MultiFab > &S_data, amrex::MultiFab &lagged_delta_rt, amrex::MultiFab &avg_xmom, amrex::MultiFab &avg_ymom, amrex::MultiFab &avg_zmom, const amrex::MultiFab &cc_src, const amrex::MultiFab &xmom_src, const amrex::MultiFab &ymom_src, const amrex::MultiFab &zmom_src, const amrex::Geometry geom, const amrex::Real gravity, std::unique_ptr< amrex::MultiFab > &z_phys_nd, std::unique_ptr< amrex::MultiFab > &detJ_cc, const amrex::Real dtau, const amrex::Real beta_s, const amrex::Real facinv, amrex::Vector< std::unique_ptr< amrex::MultiFab >> &mapfac, amrex::YAFluxRegister *fr_as_crse, amrex::YAFluxRegister *fr_as_fine, bool l_use_moisture, bool l_reflux, bool l_implicit_substepping)
void erf_fast_rhs_MT(int step, int nrk, int level, int finest_level, amrex::Vector< amrex::MultiFab > &S_slow_rhs, const amrex::Vector< amrex::MultiFab > &S_prev, amrex::Vector< amrex::MultiFab > &S_stg_data, const amrex::MultiFab &S_stg_prim, const amrex::MultiFab &qt, const amrex::MultiFab &pi_stage, const amrex::MultiFab &fast_coeffs, amrex::Vector< amrex::MultiFab > &S_data, amrex::MultiFab &lagged_delta_rt, amrex::MultiFab &avg_xmom, amrex::MultiFab &avg_ymom, amrex::MultiFab &avg_zmom, const amrex::MultiFab &cc_src, const amrex::MultiFab &xmom_src, const amrex::MultiFab &ymom_src, const amrex::MultiFab &zmom_src, const amrex::Geometry geom, const amrex::Real gravity, const bool use_lagged_delta_rt, std::unique_ptr< amrex::MultiFab > &z_t_rk, const amrex::MultiFab *z_t_pert, std::unique_ptr< amrex::MultiFab > &z_phys_nd_old, std::unique_ptr< amrex::MultiFab > &z_phys_nd_new, std::unique_ptr< amrex::MultiFab > &z_phys_nd_stg, std::unique_ptr< amrex::MultiFab > &detJ_cc_old, std::unique_ptr< amrex::MultiFab > &detJ_cc_new, std::unique_ptr< amrex::MultiFab > &detJ_cc_stg, const amrex::Real dtau, const amrex::Real beta_s, const amrex::Real facinv, amrex::Vector< std::unique_ptr< amrex::MultiFab >> &mapfac, amrex::YAFluxRegister *fr_as_crse, amrex::YAFluxRegister *fr_as_fine, bool l_use_moisture, bool l_reflux, bool l_implicit_substepping)
@ qt
Definition: ERF_Kessler.H:27