@@ -112,7 +112,7 @@ module parameters_tunable
112112 " Cx_max " , " Richardson_num_min " , &
113113 " Richardson_num_max " , " a3_coef_min " , &
114114 " a_const " , " bv_efold " , &
115- " wpxp_Ri_exp " / )
115+ " wpxp_Ri_exp " , " z_displace " / )
116116
117117 real ( kind = core_rknd ), parameter , private :: &
118118 init_value = - 999._core_rknd ! Initial value for the parameters, used to detect missing values
@@ -145,7 +145,7 @@ subroutine set_default_parameters( &
145145 C_invrs_tau_N2_wpxp , C_invrs_tau_N2_clear_wp3 , &
146146 C_invrs_tau_wpxp_Ri , C_invrs_tau_wpxp_N2_thresh , &
147147 Cx_min , Cx_max , Richardson_num_min , Richardson_num_max , &
148- wpxp_Ri_exp , a3_coef_min , a_const , bv_efold )
148+ wpxp_Ri_exp , a3_coef_min , a_const , bv_efold , z_displace )
149149
150150 implicit none
151151
@@ -172,7 +172,7 @@ subroutine set_default_parameters( &
172172 C_invrs_tau_N2_xp2, C_invrs_tau_N2_wpxp, C_invrs_tau_N2_clear_wp3, &
173173 C_invrs_tau_wpxp_Ri, C_invrs_tau_wpxp_N2_thresh, &
174174 Cx_min, Cx_max, Richardson_num_min, Richardson_num_max, &
175- wpxp_Ri_exp, a3_coef_min, a_const, bv_efold
175+ wpxp_Ri_exp, a3_coef_min, a_const, bv_efold, z_displace
176176
177177
178178 ! NOTE: In CLUBB standalone, as well as some host models, the hardcoded
@@ -355,6 +355,7 @@ subroutine set_default_parameters( &
355355 ! cloud fraction in the mixed Brunt Vaisala frequency
356356 wpxp_Ri_exp = .5_core_rknd ! Exponent determining the influence of
357357 ! the Richardson number on invrs_tau_wpxp
358+ z_displace = 25.0_core_rknd
358359
359360 return
360361
@@ -470,7 +471,7 @@ subroutine setup_parameters( &
470471 C_invrs_tau_N2_xp2, C_invrs_tau_N2_wpxp, C_invrs_tau_N2_clear_wp3, &
471472 C_invrs_tau_wpxp_Ri, C_invrs_tau_wpxp_N2_thresh, &
472473 Cx_min, Cx_max, Richardson_num_min, Richardson_num_max, &
473- wpxp_Ri_exp, a3_coef_min, a_const, bv_efold
474+ wpxp_Ri_exp, a3_coef_min, a_const, bv_efold, z_displace
474475
475476 !- ------------------- Begin code --------------------
476477
@@ -518,7 +519,7 @@ subroutine setup_parameters( &
518519 C_invrs_tau_N2_wpxp, C_invrs_tau_N2_clear_wp3, & ! intent(out)
519520 C_invrs_tau_wpxp_Ri, C_invrs_tau_wpxp_N2_thresh, & ! intent(out)
520521 Cx_min, Cx_max, Richardson_num_min, Richardson_num_max, & ! intent(out)
521- wpxp_Ri_exp, a3_coef_min, a_const, bv_efold ) ! intent(out)
522+ wpxp_Ri_exp, a3_coef_min, a_const, bv_efold, z_displace ) ! intent(out)
522523
523524
524525 ! It was decided after some experimentation, that the best
@@ -944,7 +945,7 @@ subroutine read_parameters( iunit, filename, &
944945 C_invrs_tau_N2_wpxp , C_invrs_tau_N2_clear_wp3 , &
945946 C_invrs_tau_wpxp_Ri , C_invrs_tau_wpxp_N2_thresh , &
946947 Cx_min , Cx_max , Richardson_num_min , Richardson_num_max , &
947- wpxp_Ri_exp , a3_coef_min , a_const , bv_efold , &
948+ wpxp_Ri_exp , a3_coef_min , a_const , bv_efold , z_displace , &
948949 params )
949950
950951 ! Description:
@@ -985,7 +986,7 @@ subroutine read_parameters( iunit, filename, &
985986 C_invrs_tau_N2_xp2, C_invrs_tau_N2_wpxp, C_invrs_tau_N2_clear_wp3, &
986987 C_invrs_tau_wpxp_Ri, C_invrs_tau_wpxp_N2_thresh, &
987988 Cx_min, Cx_max, Richardson_num_min, Richardson_num_max, &
988- wpxp_Ri_exp, a3_coef_min, a_const, bv_efold
989+ wpxp_Ri_exp, a3_coef_min, a_const, bv_efold, z_displace
989990
990991 ! Output variables
991992 real ( kind = core_rknd ), intent (out ), dimension (nparams) :: params
@@ -1021,7 +1022,7 @@ subroutine read_parameters( iunit, filename, &
10211022 C_invrs_tau_N2_xp2, C_invrs_tau_N2_wpxp, C_invrs_tau_N2_clear_wp3, &
10221023 C_invrs_tau_wpxp_Ri, C_invrs_tau_wpxp_N2_thresh, &
10231024 Cx_min, Cx_max, Richardson_num_min, Richardson_num_max, &
1024- wpxp_Ri_exp, a3_coef_min, a_const, bv_efold
1025+ wpxp_Ri_exp, a3_coef_min, a_const, bv_efold, z_displace
10251026
10261027 ! ---- Begin Code ----
10271028
@@ -1063,7 +1064,7 @@ subroutine read_parameters( iunit, filename, &
10631064 C_invrs_tau_N2_wpxp, C_invrs_tau_N2_clear_wp3, & ! intent(in)
10641065 C_invrs_tau_wpxp_Ri, C_invrs_tau_wpxp_N2_thresh, & ! intent(in)
10651066 Cx_min, Cx_max, Richardson_num_min, Richardson_num_max, & ! intent(in)
1066- wpxp_Ri_exp, a3_coef_min, a_const, bv_efold, & ! intent(in)
1067+ wpxp_Ri_exp, a3_coef_min, a_const, bv_efold, z_displace, & ! intent(in)
10671068 params ) ! intent(out)
10681069
10691070! l_error = .false.
@@ -1205,7 +1206,8 @@ subroutine read_param_minmax &
12051206 ia3_coef_min, &
12061207 ia_const, &
12071208 ibv_efold, &
1208- iwpxp_Ri_exp
1209+ iwpxp_Ri_exp, &
1210+ iz_displace
12091211
12101212 implicit none
12111213
@@ -1255,7 +1257,7 @@ subroutine read_param_minmax &
12551257 C_invrs_tau_N2_xp2_minmax, C_invrs_tau_N2_wpxp_minmax, C_invrs_tau_N2_clear_wp3_minmax, &
12561258 C_invrs_tau_wpxp_Ri_minmax, C_invrs_tau_wpxp_N2_thresh_minmax, Cx_min_minmax, &
12571259 Cx_max_minmax, Richardson_num_min_minmax, Richardson_num_max_minmax, &
1258- wpxp_Ri_exp_minmax, a3_coef_min_minmax, a_const_minmax, bv_efold_minmax
1260+ wpxp_Ri_exp_minmax, a3_coef_min_minmax, a_const_minmax, bv_efold_minmax, z_displace_minmax
12591261
12601262 namelist / init_minmax/ &
12611263 C1_minmax, C1b_minmax, C1c_minmax, C2rt_minmax, C2thl_minmax, C2rtthl_minmax, C4_minmax, &
@@ -1281,7 +1283,7 @@ subroutine read_param_minmax &
12811283 C_invrs_tau_N2_xp2_minmax, C_invrs_tau_N2_wpxp_minmax, C_invrs_tau_N2_clear_wp3_minmax, &
12821284 C_invrs_tau_wpxp_Ri_minmax, C_invrs_tau_wpxp_N2_thresh_minmax, Cx_min_minmax, &
12831285 Cx_max_minmax, Richardson_num_min_minmax, Richardson_num_max_minmax, a3_coef_min_minmax, &
1284- a_const_minmax, bv_efold_minmax, wpxp_Ri_exp_minmax
1286+ a_const_minmax, bv_efold_minmax, z_displace_minmax, wpxp_Ri_exp_minmax
12851287
12861288
12871289! ----- Begin code -------------
@@ -1393,6 +1395,7 @@ subroutine read_param_minmax &
13931395 params_minmax(:,ia_const) = a_const_minmax
13941396 params_minmax(:,ibv_efold) = bv_efold_minmax
13951397 params_minmax(:,iwpxp_Ri_exp) = wpxp_Ri_exp_minmax
1398+ params_minmax(:,iz_displace) = z_displace_minmax
13961399
13971400 ! Error checks: if a minimum value is entered, it must have a
13981401 ! corresponding maximum value of greater value; the min and max values
@@ -1560,7 +1563,7 @@ subroutine pack_parameters &
15601563 C_invrs_tau_N2_wpxp, C_invrs_tau_N2_clear_wp3, &
15611564 C_invrs_tau_wpxp_Ri, C_invrs_tau_wpxp_N2_thresh, &
15621565 Cx_min, Cx_max, Richardson_num_min, Richardson_num_max, &
1563- wpxp_Ri_exp, a3_coef_min, a_const, bv_efold, params )
1566+ wpxp_Ri_exp, a3_coef_min, a_const, bv_efold, z_displace, params )
15641567
15651568 ! Description:
15661569 ! Takes the list of scalar variables and puts them into a 1D vector.
@@ -1676,7 +1679,8 @@ subroutine pack_parameters &
16761679 ia3_coef_min, &
16771680 ia_const, &
16781681 ibv_efold, &
1679- iwpxp_Ri_exp
1682+ iwpxp_Ri_exp, &
1683+ iz_displace
16801684
16811685 implicit none
16821686
@@ -1703,7 +1707,7 @@ subroutine pack_parameters &
17031707 C_invrs_tau_N2_xp2, C_invrs_tau_N2_wpxp, C_invrs_tau_N2_clear_wp3, &
17041708 C_invrs_tau_wpxp_Ri, C_invrs_tau_wpxp_N2_thresh, &
17051709 Cx_min, Cx_max, Richardson_num_min, Richardson_num_max, &
1706- wpxp_Ri_exp, a3_coef_min, a_const, bv_efold
1710+ wpxp_Ri_exp, a3_coef_min, a_const, bv_efold, z_displace
17071711
17081712 ! Output variables
17091713 real ( kind = core_rknd ), intent (out ), dimension (nparams) :: params
@@ -1809,6 +1813,7 @@ subroutine pack_parameters &
18091813 params(ia_const) = a_const
18101814 params(ibv_efold) = bv_efold
18111815 params(iwpxp_Ri_exp) = wpxp_Ri_exp
1816+ params(iz_displace) = z_displace
18121817
18131818
18141819 return
@@ -1840,7 +1845,7 @@ subroutine unpack_parameters &
18401845 C_invrs_tau_N2_wpxp, C_invrs_tau_N2_clear_wp3, &
18411846 C_invrs_tau_wpxp_Ri, C_invrs_tau_wpxp_N2_thresh, &
18421847 Cx_min, Cx_max, Richardson_num_min, Richardson_num_max, &
1843- wpxp_Ri_exp, a3_coef_min, a_const, bv_efold )
1848+ wpxp_Ri_exp, a3_coef_min, a_const, bv_efold, z_displace )
18441849
18451850 ! Description:
18461851 ! Takes the 1D vector and returns the list of scalar variables.
@@ -1957,6 +1962,7 @@ subroutine unpack_parameters &
19571962 ia_const, &
19581963 ibv_efold, &
19591964 iwpxp_Ri_exp, &
1965+ iz_displace, &
19601966 nparams
19611967
19621968 implicit none
@@ -1987,7 +1993,7 @@ subroutine unpack_parameters &
19871993 C_invrs_tau_N2_xp2, C_invrs_tau_N2_wpxp, C_invrs_tau_N2_clear_wp3, &
19881994 C_invrs_tau_wpxp_Ri, C_invrs_tau_wpxp_N2_thresh, &
19891995 Cx_min, Cx_max, Richardson_num_min, Richardson_num_max, &
1990- wpxp_Ri_exp, a3_coef_min, a_const, bv_efold
1996+ wpxp_Ri_exp, a3_coef_min, a_const, bv_efold, z_displace
19911997
19921998 C1 = params(iC1)
19931999 C1b = params(iC1b)
@@ -2103,6 +2109,7 @@ subroutine unpack_parameters &
21032109 a_const = params(ia_const)
21042110 bv_efold = params(ibv_efold)
21052111 wpxp_Ri_exp = params(iwpxp_Ri_exp)
2112+ z_displace = params(iz_displace)
21062113
21072114 return
21082115 end subroutine unpack_parameters
@@ -2132,7 +2139,7 @@ subroutine init_parameters_999( &
21322139 C_invrs_tau_N2_wpxp , C_invrs_tau_N2_clear_wp3 , &
21332140 C_invrs_tau_wpxp_Ri , C_invrs_tau_wpxp_N2_thresh , &
21342141 Cx_min , Cx_max , Richardson_num_min , Richardson_num_max , &
2135- wpxp_Ri_exp , a3_coef_min , a_const , bv_efold )
2142+ wpxp_Ri_exp , a3_coef_min , a_const , bv_efold , z_displace )
21362143
21372144 ! Description:
21382145 ! Set all tunable parameters to NaN
@@ -2166,7 +2173,7 @@ subroutine init_parameters_999( &
21662173 C_invrs_tau_N2_xp2, C_invrs_tau_N2_wpxp, C_invrs_tau_N2_clear_wp3, &
21672174 C_invrs_tau_wpxp_Ri, C_invrs_tau_wpxp_N2_thresh, &
21682175 Cx_min, Cx_max, Richardson_num_min, Richardson_num_max, &
2169- wpxp_Ri_exp, a3_coef_min, a_const, bv_efold
2176+ wpxp_Ri_exp, a3_coef_min, a_const, bv_efold, z_displace
21702177
21712178 ! --- Begin Code ---
21722179
@@ -2271,6 +2278,7 @@ subroutine init_parameters_999( &
22712278 a_const = init_value
22722279 bv_efold = init_value
22732280 wpxp_Ri_exp = init_value
2281+ z_displace = init_value
22742282 return
22752283
22762284 end subroutine init_parameters_999
0 commit comments