Subroutine vom_daily_init
1127 :
1128 : !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1129 : !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1130 : !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1131 :
1132 : subroutine vom_daily_init ()
1133 : use vom_vegwat_mod
1134 : implicit none
1135 :
1136 : INTEGER :: ii
1137 :
1138 : rsurft_(:) = rsurftnew(:)
1139 : rsurfg_(:) = rsurfgnew(:)
1140 : lambdat_d = o_lambdatf * (SUM(pcapnew(1:pos_slt)) / pos_slt) ** o_wstexp ! (3.45)
1141 : lambdag_d = o_lambdagf * pcapnew(1) ** o_wsgexp ! (3.44)
1142 : ! * vector with values varying by 1%
1143 : jmax25t_d(:) = jmax25t_d(2) * (/1.0d0-i_incrjmax,1.0d0,1.0d0+i_incrjmax/)
1144 : ! * making sure that the values don't become too low, otherwise
1145 : ! they could never pick up again
1146 : jmax25t_d(:) = MAX(jmax25t_d(:), 50.0d-6)
1147 : jmax25g_d(:) = jmax25g_d(2) * (/1.0d0-i_incrjmax,1.0d0,1.0d0+i_incrjmax/)
1148 : jmax25g_d(:) = MAX(jmax25g_d(:), 50.0d-6)
1149 :
1150 : ! * adjust lai-values trees
1151 : lai_lt(:) = lai_lt(2) * (/1.0d0-i_incrlait,1.0d0,1.0d0+i_incrlait/)
1152 : lai_lt(:) = MAX( lai_lt(:), 0.1d0 ) !minimum value, else lai doesn't pick up anymore
1153 :
1154 : ! * adjust lai-values grasses
1155 : lai_lg(:) = lai_lg(2) * (/1.0d0-i_incrlaig,1.0d0,1.0d0+i_incrlaig/)
1156 : lai_lg(:) = MAX( lai_lg(:), 0.1d0 ) !minimum value, else lai doesn't pick up anymore
1157 :
1158 : if( i_read_pc == 1) then
1159 : pcg_d(:) = perc_cov_veg(nday)
1160 :
1161 : !adjust value if perennial + seasonal > 1
1162 : if( (pcg_d(1) + o_cai) .gt. 1.0) then
1163 : pcg_d(:) = 1.d0 - o_cai
1164 : end if
1165 :
1166 : else
1167 : pcg_d(:) = pcg_d(2) + (/-i_incrcovg,0.0d0,i_incrcovg/) ! perc. change grass cover
1168 : pcg_d(:) = MAX(pcg_d(:), 0.d0)
1169 : pcg_d(3) = MIN(MAX(c_pcgmin, pcg_d(3)), 1.d0 - o_cai)
1170 : end if
1171 :
1172 :
1173 : ! * Foliage turnover costs
1174 : select case(i_lai_function)
1175 : case(1)
1176 : ! * (3.38) foliage turnover costs, assuming LAI/pc of 2.5
1177 : do ii = 1,3
1178 : tcg_d(ii,:) = i_tcf * pcg_d(:) * 2.5d0 !grasses
1179 : end do
1180 : q_tct_d(:) = i_tcf * o_cai * 2.5d0 !trees
1181 : case(2)
1182 : ! * foliage turnover costs, varying lai
1183 : do ii = 1,3
1184 : tcg_d(ii, :) = i_tcf * pcg_d(:) * lai_lg(ii) !grasses
1185 : end do
1186 : q_tct_d(:) = i_tcf * o_cai * lai_lt(:) !trees
1187 : end select
1188 :
1189 :
1190 : ! * (3.40), (Out[190]) root respiration [mol/s]
1191 : rrt_d = 2.55d-7 * SUM(rsurft_(1:pos_slt))
1192 :
1193 :
1194 : ! * (3.42, 2.45e-10 from (Out[165])) costs of water distribution and storage
1195 : q_cpcct_d = i_cpccf * o_cai * o_rtdepth + o_mdstore * 2.45d-10
1196 : cpccg_d(:) = i_cpccf * pcg_d(:) * o_rgdepth ! (3.42) water transport costs
1197 :
1198 :
1199 : ! * (3.40), (Out[190]) root respiration grasses [mol/s]
1200 : rrg_d = 2.55d-7 * SUM(rsurfg_(1:pos_slg))
1201 : ! * resetting the minimum steady-state tissue water content to
1202 : ! its maximum value
1203 : mqsstmin = q_mqx
1204 :
1205 : ! * used for daily recalculation
1206 : if (optmode .eq. 0) then
1207 : tairmax_d(nday) = -9999.d0
1208 : tairmin_d(nday) = 9999.d0
1209 : rain_d(nday) = 0.d0
1210 : par_d(nday) = 0.d0
1211 : srad_d(nday) = 0.d0
1212 : endif
1213 :
1214 : if (optmode .eq. 0) then
1215 : vd_d = 0.d0
1216 : etmt_d = 0.d0
1217 : etmg_d = 0.d0
1218 : esoil_d = 0.d0
1219 : spgfcf_d = 0.d0
1220 : infx_d = 0.d0
1221 : rlt_d = 0.d0
1222 : rlg_d = 0.d0
1223 : endif
1224 :
1225 : return
1226 : end subroutine vom_daily_init