ERF
Energy Research and Forecasting: An Atmospheric Modeling Code
ERF_Morrison_Fortran_Interface.H
Go to the documentation of this file.
1 // MorrisonFortranInterface.h
2 
3 #ifndef MORRISON_FORTRAN_INTERFACE_H
4 #define MORRISON_FORTRAN_INTERFACE_H
5 
6 #include <stdbool.h>
7 
8 #ifdef __cplusplus
9 extern "C" {
10 #endif
11 
12 /**
13  * Initialize the Morrison microphysics scheme
14  *
15  * @param morr_rimed_ice: 0 for graupel, 1 for hail configuration
16  */
17 void morr_two_moment_init_c(int morr_rimed_ice, int morr_noice);
18 
19 /**
20  * Set the constant droplet concentration (NDCNST) for Morrison microphysics
21  *
22  * @param ndcnst_in: Droplet number concentration in cm^-3
23  */
24 void set_morrison_ndcnst_c(double ndcnst_in);
25 
26 /**
27  * C interface to the Fortran MP_MORR_TWO_MOMENT routine.
28  *
29  * @note: All array dimensions must match between C++ and Fortran calls.
30  * @note: Arrays must be allocated in C++ before passing to this routine.
31  */
33  int itimestep,
34  // 3D arrays for hydrometeors and state variables
35  double* th, double* qv, double* qc, double* qr, double* qi, double* qs, double* qg,
36  double* ni, double* ns, double* nr, double* ng,
37  // 3D arrays for thermodynamics
38  double* rho, double* pii, double* p, double dt_in, double* dz, double* w,
39  // 2D arrays for precipitation
40  double* rainnc, double* rainncv, double* sr,
41  double* snownc, double* snowncv, double* graupelnc, double* graupelncv,
42  // Radar reflectivity
43  double* refl_10cm, bool diagflag, int do_radar_ref,
44  // Cumulus tendencies
45  double* qrcuten, double* qscuten, double* qicuten,
46  // WRF-Chem
47  bool f_qndrop, double* qndrop,
48  // Terrain height
49  double* ht,
50  // Domain dimensions
51  int ids, int ide, int jds, int jde, int kds, int kde,
52  int ims, int ime, int jms, int jme, int kms, int kme,
53  int its, int ite, int jts, int jte, int kts, int kte,
54  // Optional WRF-Chem related
55  bool wetscav_on, double* rainprod, double* evapprod,
56  double* qlsink, double* precr, double* preci, double* precs, double* precg
57 );
58 
59 #ifdef __cplusplus
60 }
61 #endif
62 
63 #endif // MORRISON_FORTRAN_INTERFACE_H
void mp_morr_two_moment_c(int itimestep, double *th, double *qv, double *qc, double *qr, double *qi, double *qs, double *qg, double *ni, double *ns, double *nr, double *ng, double *rho, double *pii, double *p, double dt_in, double *dz, double *w, double *rainnc, double *rainncv, double *sr, double *snownc, double *snowncv, double *graupelnc, double *graupelncv, double *refl_10cm, bool diagflag, int do_radar_ref, double *qrcuten, double *qscuten, double *qicuten, bool f_qndrop, double *qndrop, double *ht, int ids, int ide, int jds, int jde, int kds, int kde, int ims, int ime, int jms, int jme, int kms, int kme, int its, int ite, int jts, int jte, int kts, int kte, bool wetscav_on, double *rainprod, double *evapprod, double *qlsink, double *precr, double *preci, double *precs, double *precg)
void set_morrison_ndcnst_c(double ndcnst_in)
void morr_two_moment_init_c(int morr_rimed_ice, int morr_noice)
@ rho
Definition: ERF_Kessler.H:22
@ qv
Definition: ERF_Kessler.H:28
@ ng
Definition: ERF_Morrison.H:48
@ nr
Definition: ERF_Morrison.H:45
@ ni
Definition: ERF_Morrison.H:46
@ ns
Definition: ERF_Morrison.H:47
@ qc
Definition: ERF_SatAdj.H:36