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