ERF
Energy Research and Forecasting: An Atmospheric Modeling Code
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
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::Vector<amrex::MultiFab >& S_scratch,
29  const amrex::MultiFab& cc_src,
30  const amrex::MultiFab& xmom_src,
31  const amrex::MultiFab& ymom_src,
32  const amrex::MultiFab& zmom_src,
33  const amrex::Geometry geom,
34  const amrex::Real gravity,
35  const amrex::Real dtau, const amrex::Real beta_s,
36  const amrex::Real facinv,
37  amrex::Vector<std::unique_ptr<amrex::MultiFab>>& mapfac,
38  amrex::YAFluxRegister* fr_as_crse,
39  amrex::YAFluxRegister* fr_as_fine,
40  bool l_use_moisture, bool l_reflux,
41  bool l_implicit_substepping);
42 
43 /**
44  * Function for computing the fast RHS with fixed terrain
45  *
46  */
47 void erf_fast_rhs_T (int step, int nrk, int level, int finest_level,
48  amrex::Vector<amrex::MultiFab >& S_slow_rhs,
49  const amrex::Vector<amrex::MultiFab >& S_prev,
50  amrex::Vector<amrex::MultiFab >& S_stage_data,
51  const amrex::MultiFab& S_stage_prim,
52  const amrex::MultiFab& qt,
53  const amrex::MultiFab& pi_stage,
54  const amrex::MultiFab& fast_coeffs,
55  amrex::Vector<amrex::MultiFab >& S_data,
56  amrex::Vector<amrex::MultiFab >& S_scratch,
57  const amrex::MultiFab& cc_src,
58  const amrex::MultiFab& xmom_src,
59  const amrex::MultiFab& ymom_src,
60  const amrex::MultiFab& zmom_src,
61  const amrex::Geometry geom,
62  const amrex::Real gravity,
63  std::unique_ptr<amrex::MultiFab>& z_phys_nd,
64  std::unique_ptr<amrex::MultiFab>& detJ_cc,
65  const amrex::Real dtau, const amrex::Real beta_s,
66  const amrex::Real facinv,
67  amrex::Vector<std::unique_ptr<amrex::MultiFab>>& mapfac,
68  amrex::YAFluxRegister* fr_as_crse,
69  amrex::YAFluxRegister* fr_as_fine,
70  bool l_use_moisture, bool l_reflux,
71  bool l_implicit_substepping);
72 
73 /**
74  * Function for computing the fast RHS with moving terrain
75  *
76  */
77 void erf_fast_rhs_MT (int step, int nrk, int level, int finest_level,
78  amrex::Vector<amrex::MultiFab >& S_slow_rhs,
79  const amrex::Vector<amrex::MultiFab >& S_prev,
80  amrex::Vector<amrex::MultiFab >& S_stg_data,
81  const amrex::MultiFab& S_stg_prim,
82  const amrex::MultiFab& qt,
83  const amrex::MultiFab& pi_stage,
84  const amrex::MultiFab& fast_coeffs,
85  amrex::Vector<amrex::MultiFab >& S_data,
86  amrex::Vector<amrex::MultiFab >& S_scratch,
87  const amrex::MultiFab& cc_src,
88  const amrex::MultiFab& xmom_src,
89  const amrex::MultiFab& ymom_src,
90  const amrex::MultiFab& zmom_src,
91  const amrex::Geometry geom,
92  const amrex::Real gravity,
93  const bool use_lagged_delta_rt,
94  std::unique_ptr<amrex::MultiFab>& z_t_rk,
95  const amrex::MultiFab* z_t_pert,
96  std::unique_ptr<amrex::MultiFab>& z_phys_nd_old,
97  std::unique_ptr<amrex::MultiFab>& z_phys_nd_new,
98  std::unique_ptr<amrex::MultiFab>& z_phys_nd_stg,
99  std::unique_ptr<amrex::MultiFab>& detJ_cc_old,
100  std::unique_ptr<amrex::MultiFab>& detJ_cc_new,
101  std::unique_ptr<amrex::MultiFab>& detJ_cc_stg,
102  const amrex::Real dtau, const amrex::Real beta_s,
103  const amrex::Real facinv,
104  amrex::Vector<std::unique_ptr<amrex::MultiFab>>& mapfac,
105  amrex::YAFluxRegister* fr_as_crse,
106  amrex::YAFluxRegister* fr_as_fine,
107  bool l_use_moisture, bool l_reflux,
108  bool l_implicit_substepping);
109 
110 /**
111  * Function for computing the coefficients for the tridiagonal solver used in the fast
112  * integrator (the acoustic substepping).
113  */
114 void make_fast_coeffs (int level,
115  amrex::MultiFab& fast_coeffs,
116  amrex::Vector<amrex::MultiFab >& S_stage_data,
117  const amrex::MultiFab& S_stage_prim,
118  const amrex::MultiFab& pi_stage,
119  const amrex::Geometry geom,
120  const bool use_moisture,
121  const MeshType mesh_type,
122  const amrex::Real gravity,
123  const amrex::Real c_p,
124  std::unique_ptr<amrex::MultiFab>& detJ_cc,
125  const amrex::MultiFab* r0,
126  const amrex::MultiFab* pi0,
127  const amrex::Real dtau,
128  const amrex::Real beta_s,
129  amrex::GpuArray<ERF_BC, AMREX_SPACEDIM*2> &phys_bc_type);
130 
131 #endif
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::Vector< amrex::MultiFab > &S_scratch, 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::Vector< amrex::MultiFab > &S_scratch, 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 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_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::Vector< amrex::MultiFab > &S_scratch, 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