00001
00002
00003
00004 subroutine balan(sib,nsl_old,wwwliq_old,wwwice_old,cas_q)
00005
00006 use kinds
00007 use sibtype
00008 use sib_const_module, only: &
00009 nsoil, &
00010 snofac, &
00011 dtt, &
00012 dti, &
00013 tau, &
00014 denh2o, &
00015 denice
00016
00017 use physical_parameters, only: &
00018 hltm
00019
00020 use eau_params, only : &
00021 lfus
00022
00023
00024 implicit none
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089 type(sib_t), intent(inout) :: sib
00090
00091
00092
00093
00094
00095 integer(kind=int_kind),intent(in) :: nsl_old
00096 real(kind=dbl_kind),intent(in),
00097 dimension(-nsnow+1:nsoil) :: wwwliq_old
00098 real(kind=dbl_kind),intent(in),
00099 dimension(-nsnow+1:nsoil) :: wwwice_old
00100
00101 real(kind=dbl_kind),intent(in) :: cas_q
00102
00103
00104
00105
00106
00107
00108
00109 real(kind=dbl_kind) :: dstor
00110
00111
00112 real(kind=dbl_kind) :: dqsoil
00113
00114
00115 real(kind=dbl_kind) :: dqsnow
00116 real(kind=dbl_kind) :: dqvegsnow
00117 real(kind=dbl_kind) :: snownew
00118 real(kind=dbl_kind) :: snowold
00119
00120 real(kind=dbl_kind) :: evap
00121
00122
00123
00124
00125
00126 real(kind=dbl_kind) :: transp
00127
00128 real(kind=dbl_kind) :: runoff
00129
00130 real(kind=dbl_kind) :: sbeg,send
00131
00132 real(kind=dbl_kind) :: precip
00133
00134 real(kind=dbl_kind) :: cas_q_new
00135
00136 real(kind=dbl_kind) :: rhs,lhs
00137
00138
00139 integer(kind=int_kind) :: i
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152 dstor = (sib%prog%capac(1) - sib%diag%capac_old(1)) + &
00153 (sib%prog%capac(2) - sib%diag%capac_old(2))
00154
00155
00156 dqsoil = 0.0
00157 do i=1,nsoil
00158 dqsoil = dqsoil + (sib%prog%www_liq(i) - wwwliq_old(i)) + &
00159 (sib%prog%www_ice(i) - wwwice_old(i))
00160 enddo
00161
00162
00163
00164 snowold = 0.0
00165 do i=-nsnow+1,0
00166 snowold = snowold + wwwliq_old(i) + wwwice_old(i)
00167 enddo
00168
00169
00170
00171 snownew = 0.0
00172 do i=-nsnow+1,0
00173 snownew = snownew + sib%prog%www_liq(i) + sib%prog%www_ice(i)
00174 enddo
00175
00176
00177 dqsnow = sib%prog%snow_mass - sib%diag%snow_mass_old
00178 dqvegsnow = sib%prog%snow_veg - sib%diag%snow_veg_old
00179
00180
00181
00182
00183
00184 evap = sib%diag%fws * dtt / hltm
00185
00186
00187 runoff = (sib%diag%roffo + sib%diag%roff)
00188
00189
00190 precip = (sib%prog%lspr + sib%prog%cupr) * dtt
00191
00192
00193
00194 sib%diag%wbal = precip - (evap + runoff) - &
00195 (dqsoil + dqsnow + dqvegsnow + dstor) - sib%diag%cas_w_storage * dtt / hltm
00196
00197
00198
00199 if(abs(sib%diag%wbal) > 0.5_dbl_kind) then
00200 print*,'WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW'
00201 print'(2(a,g16.6))','WATER IMBALANCE: hour=',tau,'imbalance=' &
00202 ,sib%diag%wbal,' kg/m^2'
00203 print'(a)','TERMS: input - output - storage (all units kg/m^2)'
00204 print'(3(a,g14.6))','input=',precip,' output=',evap+runoff &
00205 ,' storage=',dqsoil + dqsnow + dstor + dqvegsnow + sib%diag%cas_w_storage * dtt / hltm
00206 print'(2(a,g16.6))','evap(fws)=',evap,' runoff=',runoff
00207 print*,' '
00208 print'(a,4g14.6)','output (eci,egi,egs,ess):',sib%diag%eci/hltm &
00209 ,sib%diag%egi/hltm,sib%diag%egs/hltm &
00210 ,sib%diag%ess*snofac/hltm
00211 print'(a,5f14.6)','storage (interception, soil, snow,vapor, canopy snow):' &
00212 ,dstor,dqsoil,dqsnow,sib%diag%cas_w_storage * dtt / hltm, dqvegsnow
00213 print'(a,2f14.6)','runoff (overland, subsfc):' &
00214 ,sib%diag%roffo ,sib%diag%roff
00215
00216 print*,'soil moisture'
00217 sbeg = 0.0
00218 send = 0.0
00219 do i=1,nsoil
00220 print'(i4,2(a,g14.6))',i,&
00221 ' beg liq=',wwwliq_old(i), ' end liq=',sib%prog%www_liq(i)
00222 sbeg = sbeg + wwwliq_old(i)
00223 send = send + sib%prog%www_liq(i)
00224 enddo
00225 print'(2(a,g14.6))','sum beg=',sbeg,' sum end=',send
00226
00227 print*,'Dcapac1: ',sib%prog%capac(1) - sib%diag%capac_old(1),sib%prog%capac(1)
00228 print*,'Dcapac2: ',sib%prog%capac(2) - sib%diag%capac_old(2),sib%prog%capac(2)
00229
00230
00231 sbeg = 0.0
00232 send = 0.0
00233 print*,'soil ice'
00234 do i=1,nsoil
00235 print'(i4,2(a,g14.6))',i,' beg ice=',wwwice_old(i),' end ice=' &
00236 ,sib%prog%www_ice(i)
00237 sbeg = sbeg + wwwice_old(i)
00238 send = send + sib%prog%www_ice(i)
00239 enddo
00240 print'(2(a,g14.6))','sum beg=',sbeg,' sum end=',send
00241
00242 print*,'snow',nsl_old,sib%prog%nsl,sib%diag%snow_mass_old,sib%prog%snow_mass
00243 sbeg = 0.0
00244 send = 0.0
00245 do i=-nsnow+1,0
00246 print'(i4,2(a,g14.6))',i,' beg ice=',wwwice_old(i),' end ice=' ,sib%prog%www_ice(i)
00247 sbeg = sbeg + wwwice_old(i)
00248 send = send + sib%prog%www_ice(i)
00249 enddo
00250
00251 print'(2(a,g14.6))','sum beg=',sbeg,' sum end=',send
00252 sbeg = 0.0
00253 send = 0.0
00254 do i=-nsnow+1,0
00255 print'(i4,2(a,g14.6))',i,' beg liq=',wwwliq_old(i),' end liq=' ,sib%prog%www_liq(i)
00256 sbeg = sbeg + wwwliq_old(i)
00257 send = send + sib%prog%www_liq(i)
00258 enddo
00259 print'(2(a,g14.6))','sum beg=',sbeg,' sum end=',send
00260
00261
00262
00263 endif
00264
00265
00266
00267
00268
00269
00270
00271
00272
00273 rhs = sib%diag%cas_w_storage + &
00274 sib%diag%cas_e_storage + &
00275 sib%diag%fss + &
00276 sib%diag%fws
00277
00278 lhs = (sib%diag%hg + sib%diag%hc + sib%diag%hs + &
00279 sib%diag%ect + sib%diag%eci + sib%diag%egi + &
00280 sib%diag%egs + sib%diag%ess) * dti
00281
00282 sib%diag%abal = lhs - rhs
00283
00284
00285 sib%diag%cbal = sib%diag%radtt(1) - sib%diag%chf - &
00286 ( sib%diag%ect + sib%diag%eci + sib%diag%hc ) * dti
00287
00288
00289 sib%diag%gbal = sib%diag%radtt(2) + sib%diag%radtt(3) &
00290 - sib%diag%shf &
00291 - (sib%diag%hg + sib%diag%hs + sib%diag%egi + sib%diag%egs + sib%diag%ess ) * dti
00292
00293
00294
00295 rhs = sib%diag%cas_e_storage + sib%diag%cas_w_storage + &
00296 sib%diag%fss + sib%diag%fws + sib%diag%chf + sib%diag%shf
00297
00298 lhs = sib%diag%radtt(1) + sib%diag%radtt(2) + sib%diag%radtt(3)
00299
00300 sib%diag%ebal = lhs - rhs
00301
00302 if (abs(sib%diag%ebal) > 0.001) then
00303
00304 print*,'EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE'
00305 print*, 'point',sib%stat%pt_num
00306 print'(4(a,g14.6))','ENERGY IMBALANCE: hour =',tau,'rhs=' &
00307 ,rhs,' lhs=',lhs,' imbalance=',sib%diag%ebal
00308 print*,'imbalance amount=',sib%diag%ebal,' (W/m^2)'
00309 print*,'canopy air space balance=',sib%diag%abal,' (W/m^2)'
00310 print*,'canopy balance=',sib%diag%cbal,' (W/m^2)'
00311 print*,'ground balance=',sib%diag%gbal,' (W/m^2) AREAS:',sib%diag%areas
00312 print'(2(a,g14.6))','sib%diag%ect=',sib%diag%ect*dti,' sib%diag%eci=' &
00313 ,sib%diag%eci*dti
00314 print'(2(a,g14.6))','sib%diag%egi=',sib%diag%egi*dti,' sib%diag%egs=' &
00315 ,sib%diag%egs*dti
00316 print'(2(a,g14.6))','sib%diag%ess=',sib%diag%ess*dti,' sib%diag%hc=' &
00317 ,sib%diag%hc*dti
00318 print'(2(a,g14.6))','sib%diag%hg=',sib%diag%hg*dti,' sib%diag%hs=' &
00319 ,sib%diag%hs*dti
00320 print'(3(a,g14.6))','radt(1)=',sib%diag%radt(1),' radt(2)=', &
00321 sib%diag%radt(2),' radt(3)=',sib%diag%radt(3)
00322 print'(3(a,g14.6))','radtt(1)=',sib%diag%radtt(1),' radtt(2)=', &
00323 sib%diag%radtt(2),' radtt(3)=',sib%diag%radtt(3)
00324 print'(2(a,g14.6))','sib%diag%chf=',sib%diag%chf,' sib%diag%shf=', &
00325 sib%diag%shf
00326 print*,'EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE'
00327 print*,'snow layers: ',-sib%prog%nsl
00328
00329
00330
00331 endif
00332
00333
00334 end subroutine balan