@@ -23,7 +23,6 @@ module zm_conv
23
23
private ! Make default type private
24
24
!- ---------------------------------------------------------------------------
25
25
! public methods
26
- public zmconv_readnl ! read zmconv_nl namelist
27
26
public zm_convi ! ZM schemea
28
27
public zm_convr ! ZM schemea
29
28
public zm_conv_evap ! evaporation of precip from ZM schemea
@@ -32,133 +31,14 @@ module zm_conv
32
31
type (zm_const_t), public :: zm_const ! derived type to hold ZM constants
33
32
type (zm_param_t), public :: zm_param ! derived type to hold ZM tunable parameters
34
33
!- ---------------------------------------------------------------------------
35
- ! private data
36
- real (r8 ), parameter :: unset_r8 = huge (1.0_r8 )
37
- integer , parameter :: unset_int = huge (1 )
38
-
34
+ ! private variables
39
35
real (r8 ), parameter :: capelmt = 70._r8 ! threshold value for cape for deep convection
40
36
real (r8 ), parameter :: trigdcapelmt = 0._r8 ! threshold value of dcape for deep convection
41
37
42
38
! ===================================================================================================
43
39
contains
44
40
! ===================================================================================================
45
41
46
- subroutine zmconv_readnl (nlfile )
47
- !- ---------------------------------------------------------------------------
48
- ! Purpose: read namelist parameters for ZM deep convection
49
- !- ---------------------------------------------------------------------------
50
- use namelist_utils, only: find_group_name
51
- use units, only: getunit, freeunit
52
- use zm_conv_types, only: zm_param_mpi_broadcast
53
- use mpishorthand
54
- !- ---------------------------------------------------------------------------
55
- ! Arguments
56
- character (len=* ), intent (in ) :: nlfile ! filepath for file containing namelist input
57
- !- ---------------------------------------------------------------------------
58
- ! Local variables
59
- integer :: unitn, ierr
60
- character (len=* ), parameter :: subname = ' zmconv_readnl'
61
-
62
- real (r8 ) :: zmconv_tau = unset_r8
63
- real (r8 ) :: zmconv_alfa = unset_r8
64
- real (r8 ) :: zmconv_ke = unset_r8
65
- real (r8 ) :: zmconv_dmpdz = unset_r8
66
- logical :: zmconv_tpert_fix = .false.
67
- real (r8 ) :: zmconv_tp_fac = unset_r8
68
- real (r8 ) :: zmconv_tiedke_add = unset_r8
69
- real (r8 ) :: zmconv_c0_lnd = unset_r8
70
- real (r8 ) :: zmconv_c0_ocn = unset_r8
71
- integer :: zmconv_cape_cin = unset_int
72
- integer :: zmconv_mx_bot_lyr_adj = unset_int
73
- logical :: zmconv_trig_dcape = .false.
74
- logical :: zmconv_trig_ull = .false.
75
- logical :: zmconv_clos_dyn_adj = .false.
76
- logical :: zmconv_microp = .false.
77
- real (r8 ) :: zmconv_auto_fac = unset_r8
78
- real (r8 ) :: zmconv_accr_fac = unset_r8
79
- real (r8 ) :: zmconv_micro_dcs = unset_r8
80
- real (r8 ) :: zmconv_MCSP_heat_coeff = 0._r8
81
- real (r8 ) :: zmconv_MCSP_moisture_coeff = 0._r8
82
- real (r8 ) :: zmconv_MCSP_uwind_coeff = 0._r8
83
- real (r8 ) :: zmconv_MCSP_vwind_coeff = 0._r8
84
- !- ---------------------------------------------------------------------------
85
- namelist / zmconv_nl/ zmconv_tau, zmconv_alfa, zmconv_ke, zmconv_dmpdz, &
86
- zmconv_tpert_fix, zmconv_tp_fac, zmconv_tiedke_add, &
87
- zmconv_c0_lnd, zmconv_c0_ocn, &
88
- zmconv_cape_cin, zmconv_mx_bot_lyr_adj, &
89
- zmconv_trig_dcape, zmconv_trig_ull, zmconv_clos_dyn_adj, &
90
- zmconv_microp, zmconv_auto_fac, zmconv_accr_fac, zmconv_micro_dcs, &
91
- zmconv_MCSP_heat_coeff, zmconv_MCSP_moisture_coeff, &
92
- zmconv_MCSP_uwind_coeff, zmconv_MCSP_vwind_coeff
93
- !- ---------------------------------------------------------------------------
94
-
95
- if (masterproc) then
96
- unitn = getunit()
97
- open ( unitn, file= trim (nlfile), status= ' old' )
98
- call find_group_name(unitn, ' zmconv_nl' , status= ierr)
99
- if (ierr == 0 ) then
100
- read (unitn, zmconv_nl, iostat= ierr)
101
- if (ierr /= 0 ) then
102
- call endrun(subname // ' :: ERROR reading namelist' )
103
- end if
104
- end if
105
- close (unitn)
106
- call freeunit(unitn)
107
-
108
- ! set zm_param values
109
- zm_param% tau = zmconv_tau
110
- zm_param% ke = zmconv_ke
111
- zm_param% dmpdz = zmconv_dmpdz
112
- zm_param% tpert_fix = zmconv_tpert_fix
113
- zm_param% tpert_fac = zmconv_tp_fac
114
- zm_param% tiedke_add = zmconv_tiedke_add
115
- zm_param% c0_lnd = zmconv_c0_lnd
116
- zm_param% c0_ocn = zmconv_c0_ocn
117
- zm_param% num_cin = zmconv_cape_cin
118
- zm_param% mx_bot_lyr_adj = zmconv_mx_bot_lyr_adj
119
- zm_param% trig_dcape = zmconv_trig_dcape
120
- zm_param% trig_ull = zmconv_trig_ull
121
- zm_param% clos_dyn_adj = zmconv_clos_dyn_adj
122
-
123
- ! ZM microphysics parameters
124
- zm_param% zm_microp = zmconv_microp
125
- zm_param% auto_fac = zmconv_auto_fac
126
- zm_param% accr_fac = zmconv_accr_fac
127
- zm_param% micro_dcs = zmconv_micro_dcs
128
-
129
- ! mesoscale coherent structure parameterization (MCSP) parameters
130
- zm_param% mcsp_t_coeff = zmconv_MCSP_heat_coeff
131
- zm_param% mcsp_q_coeff = zmconv_MCSP_moisture_coeff
132
- zm_param% mcsp_u_coeff = zmconv_MCSP_uwind_coeff
133
- zm_param% mcsp_v_coeff = zmconv_MCSP_vwind_coeff
134
- if ( abs (zm_param% mcsp_t_coeff)>0._r8 .or. abs (zm_param% mcsp_q_coeff)>0._r8 .or. &
135
- abs (zm_param% mcsp_u_coeff)>0._r8 .or. abs (zm_param% mcsp_v_coeff)>0._r8 ) then
136
- zm_param% mcsp_enabled = .true.
137
- else
138
- zm_param% mcsp_enabled = .false.
139
- end if
140
-
141
- if ( zmconv_alfa /= unset_r8 ) then
142
- zm_param% alfa = zmconv_alfa
143
- else
144
- zm_param% alfa = 0.1_r8
145
- end if
146
-
147
- end if ! masterproc
148
-
149
- !- ---------------------------------------------------------------------------
150
- ! Broadcast namelist variables
151
- #ifdef SPMD
152
- call zm_param_mpi_broadcast(zm_param)
153
- #endif
154
-
155
- !- ---------------------------------------------------------------------------
156
- return
157
-
158
- end subroutine zmconv_readnl
159
-
160
- ! ===================================================================================================
161
-
162
42
subroutine zm_convi (limcnv_in , no_deep_pbl_in )
163
43
!- ---------------------------------------------------------------------------
164
44
! Purpose: initialize quantities for ZM convection scheme
0 commit comments