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  // rainnc is the total that fell, snownc snow alone and graupelnc graupel
41  // alone; rainonlync is rain alone (cloud water and cloud ice count only
42  // in the total)
43  double* rainnc, double* rainncv, double* sr,
44  double* snownc, double* snowncv, double* graupelnc, double* graupelncv,
45  double* rainonlync,
46  // Radar reflectivity
47  double* refl_10cm, bool diagflag, int do_radar_ref,
48  // Cumulus tendencies
49  double* qrcuten, double* qscuten, double* qicuten,
50  // WRF-Chem
51  bool f_qndrop, double* qndrop,
52  // Terrain height
53  // double* ht,
54  // Domain dimensions
55  int ids, int ide, int jds, int jde, int kds, int kde,
56  int ims, int ime, int jms, int jme, int kms, int kme,
57  int its, int ite, int jts, int jte, int kts, int kte,
58  // Optional WRF-Chem related
59  bool wetscav_on, double* rainprod, double* evapprod,
60  double* qlsink, double* precr, double* preci, double* precs, double* precg
61 );
62 
63 #ifdef __cplusplus
64 }
65 #endif
66 
67 #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 *rainonlync, double *refl_10cm, bool diagflag, int do_radar_ref, double *qrcuten, double *qscuten, double *qicuten, bool f_qndrop, double *qndrop, 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)
Real w
Definition: ERF_Plotfile2DInterpolator.cpp:23
@ rho
Definition: ERF_Kessler.H:25
@ qv
Definition: ERF_Kessler.H:31
@ ng
Definition: ERF_Morrison.H:51
@ nr
Definition: ERF_Morrison.H:48
@ ni
Definition: ERF_Morrison.H:49
@ ns
Definition: ERF_Morrison.H:50
@ qg
Definition: ERF_Morrison.H:114
@ qr
Definition: ERF_Morrison.H:112
@ qi
Definition: ERF_Morrison.H:111
@ qs
Definition: ERF_Morrison.H:113
@ qc
Definition: ERF_Morrison.H:110
@ dz
Definition: ERF_AdvanceWDM6.cpp:273
@ p
Definition: ERF_WSM6.H:301