79 integer :: ivt ,ist ,ikl,ikv ,isl ,isn ,ikh
80 integer :: misl_2,nisl_2
81 real(kind=real8) :: zDepth
82 real(kind=real8) :: d__eta,eta__1,eta__2,Khyd_1,Khyd_2
83 real(kind=real8) :: RHsMin=0.001
84 real(kind=real8) :: PsiMax
85 real(kind=real8) :: a_Khyd,b_Khyd
137 dz_dsv(isl)=(((1-misl_2) * 0.001 &
138 & + misl_2 * 0.003) * 10**(nisl_2)) * 4.
259 write(*,
'(/a)')
'ROOT PROFILES (Jackson, 1996) :'
263 DO isl = 0, -
nsoil, -1
267 zdepth = zdepth +
dz_dsv(isl)*100
272 write(*,
'(a,i2,a,i3,a,99f10.5:)') &
273 &
' RF__SV(', ivt,
',',-
nsoil,
':0) =',
rf__sv(ivt,:)
277 &
' NOTE: If root fraction is not close to 0 around 2 m deep,', &
278 &/,
' Then you should redefine the soil layer thicknesses.', &
279 &/,
' See the code for more details.')
295 psimax = -(log(rhsmin))/7.2e-5
307 6000
format(
' Type | etaSat | No | eta__1 | eta__2 |', &
308 &
' Khyd_1 | Khyd_x | Khyd_2 | Khyd_y |', &
309 & /,
' -----+-----------+----+-----------+-----------+', &
310 &
'-----------+-----------+-----------+-----------+')
317 & *(eta__1 **(2. *
bchdsv(ist)+3.))
319 & *(eta__2 **(2. *
bchdsv(ist)+3.))
321 a_khyd = (khyd_2-khyd_1)/d__eta
322 b_khyd = khyd_1-a_khyd *eta__1
332 6001
format(i5,
' |',e10.2,
' |',i3,
' |', &
335 eta__1 = eta__1 + d__eta
336 eta__2 = eta__2 + d__eta
346 subroutine sisvat(jjtime,kcolw)
629 real(kind=real8) d_Bufs,Bufs_N
630 real(kind=real8) Buf_ro,Bros_N
632 real(kind=real8) Buf_G1,BG1__N
633 real(kind=real8) Buf_G2,BG2__N
651 integer :: ist__s,ist__w
658 real(kind=real8) :: drip
659 real(kind=real8) :: drr_Ca,rrCa_n
660 real(kind=real8) :: dsn_Ca,snCa_n
661 real(kind=real8) :: roSMin = 30.
662 real(kind=real8) :: roSn_1 = 109.
663 real(kind=real8) :: roSn_2 = 6.
664 real(kind=real8) :: roSn_3 = 26.
665 real(kind=real8) :: Dendr1 = 17.12
666 real(kind=real8) :: Dendr2 = 128.
667 real(kind=real8) :: Dendr3 = -20.
669 real(kind=real8) :: Spher1 = 7.87
670 real(kind=real8) :: Spher2 = 38.
671 real(kind=real8) :: Spher3 = 50.
672 real(kind=real8) :: Spher4 = 90.
673 real(kind=real8) :: Polair
675 real(kind=real8) :: Salt_f,PorRef
684 real(kind=real8) :: T__Min = 200.00
688 real(kind=real8) :: EmiVeg = 0.98
689 real(kind=real8) :: EmiSol = 0.94
690 real(kind=real8) :: EmiSno = 0.99
691 real(kind=real8) :: EmiWat = 0.99
693 real(kind=real8) :: epsLMO = 1.e-18
694 real(kind=real8) :: vk2
695 real(kind=real8) :: u2star
697 real(kind=real8) :: Z0mSea,Z0hSea
698 real(kind=real8) :: Z0mLnd
701 real(kind=real8) :: A_Fact
703 real(kind=real8) :: Z0m_nu
704 real(kind=real8) :: Z0mBSn
705 real(kind=real8) :: Z0mBS0 = 0.5e-6
715 real(kind=real8) :: Z0_ICE = 0.0010
716 real(kind=real8) :: Z0m_Sn
718 real(kind=real8) :: SnoWat
722 real(kind=real8) :: SameOK
723 real(kind=real8) :: G1same
724 real(kind=real8) :: G2same
725 real(kind=real8) :: typ__1
726 real(kind=real8) :: zroNEW
727 real(kind=real8) :: G1_NEW
728 real(kind=real8) :: G2_NEW
729 real(kind=real8) :: zroOLD
730 real(kind=real8) :: G1_OLD
731 real(kind=real8) :: G2_OLD
732 real(kind=real8) :: SizNEW
733 real(kind=real8) :: SphNEW
734 real(kind=real8) :: SizOLD
735 real(kind=real8) :: SphOLD
736 real(kind=real8) :: Siz_av
737 real(kind=real8) :: Sph_av
738 real(kind=real8) :: Den_av
739 real(kind=real8) :: DendOK
740 real(kind=real8) :: G1diff
741 real(kind=real8) :: G2diff
742 real(kind=real8) :: G1
743 real(kind=real8) :: G2
857 600
format(/,
'### SISVAT ERROR, Soil IR Upward not defined ###', &
858 & /,
'### Initialize and Store IRs_SV ###')
894 & /, a18,
'| Grid Point ',2i4, &
896 &
' | Z0m =',f12.6,
' | Albedo = ',f6.3,
' |', &
897 & /,
' -------+',7(
'---------+'),2(
'--------+'))
920 lsdzsv(ikl,ikv) = ist__s &
987 rrca_n =
rrcasv(ikl,ikv) +drr_ca
989 drip = rrca_n -
rrmxsv(ikl,ikv)
990 drip = max(
zer0,drip)
991 rrca_n = rrca_n -drip
992 IF (rrca_n.LT.1.e-30) rrca_n = 0.
1004 snca_n =
sncasv(ikl,ikv) +dsn_ca
1005 drip = snca_n -
rrmxsv(ikl,ikv)
1006 drip = max(
zer0,drip)
1007 snca_n = snca_n -drip
1093 bufs_n =
bufssv(ikl,ikv) +d_bufs
1100 6601
format(/,
'Buffer *: ',3e15.6)
1108 buf_ro = max( rosmin, &
1110 & +rosn_3*sqrt(
vv10sv(ikl,ikv)))
1113 bros_n = (1. - polair) * buf_ro &
1133 bros_n = bros_n * (1.0-
fallok(ikl,ikv)) &
1134 & + 300. *
fallok(ikl,ikv)
1138 brossv(ikl,ikv) =(bros_n * d_bufs &
1140 & / max(
eps6,bufs_n)
1147 6602
format(
'rho *: ',3e15.6,
' dsnbSV: ',e15.6)
1152 & min(dendr1*
vv__sv(ikl,ikv)-dendr2, &
1154 buf_g2 = min( spher4, &
1155 & max(spher1*
vv__sv(ikl,ikv)+spher2, &
1157 buf_g1 = (1. - polair) * buf_g1 &
1159 buf_g2 = (1. - polair) * buf_g2 &
1169 6603
format(
'G1,G2 *: ',3e15.6)
1230 bg1__n =((1. -
fallok(ikl,ikv))* g1 &
1231 & +
fallok(ikl,ikv) * 99.) &
1232 & * d_bufs/max(
eps6,d_bufs)
1233 bg2__n =((1. -
fallok(ikl,ikv))* g2 &
1234 & +
fallok(ikl,ikv) * 30.) &
1235 & * d_bufs/max(
eps6,d_bufs)
1248 6604
format(
'G1,G2 F*: ',3e15.6,
' T__Veg: ',e15.6)
1252 sameok = max(
zer0, &
1255 g1same = (d_bufs*buf_g1+
bufssv(ikl,ikv)*
bg1ssv(ikl,ikv)) &
1257 g2same = (d_bufs*buf_g2+
bufssv(ikl,ikv)*
bg2ssv(ikl,ikv)) &
1263 zronew =( typ__1 *d_bufs &
1264 & + (1.-typ__1) *
bufssv(ikl,ikv)) &
1266 g1_new = typ__1 *buf_g1 &
1267 & + (1.-typ__1) *
bg1ssv(ikl,ikv)
1268 g2_new = typ__1 *buf_g2 &
1269 & + (1.-typ__1) *
bg2ssv(ikl,ikv)
1270 zroold =((1.-typ__1) *d_bufs &
1271 & + typ__1 *
bufssv(ikl,ikv)) &
1273 g1_old = (1.-typ__1) *buf_g1 &
1274 & + typ__1 *
bg1ssv(ikl,ikv)
1275 g2_old = (1.-typ__1) *buf_g2 &
1276 & + typ__1 *
bg2ssv(ikl,ikv)
1284 siz_av = ( zronew *siznew+zroold*sizold)
1285 sph_av = min( zronew *sphnew+zroold*sphold &
1287 den_av = min((siz_av - ( sph_av *
dscdsv &
1292 dendok = max(
zer0, &
1303 g1diff =( -dendok *den_av &
1304 & +(1.-dendok)*sph_av) *
g1_dsv
1305 g2diff = dendok *sph_av *
g1_dsv &
1306 & +(1.-dendok)*siz_av
1307 g1 = sameok *g1same &
1308 & +(1.-sameok)*g1diff
1309 g2 = sameok *g2same &
1310 & +(1.-sameok)*g2diff
1313 & * bufs_n/max(
eps6,bufs_n)
1315 & * bufs_n/max(
eps6,bufs_n)
1324 6605
format(
'B1,Typ : ',2e15.6,11
x,
'OK,Den,Sph,Siz: ',4e15.6 &
1325 & ,/,
' ',30
x ,11
x,
'sam,dif,G1 : ',3e15.6)
1350 6606
format(
'G1,G2 N*: ',2e15.6,i15,e27.6)
1372 6004
format(i3,
' dsn+Buf=',f6.2,6
x,
'z dz *ro =',10f6.2, &
1454 6006
format(i3,
' dsn+Buf=',f6.2,6
x,
'* dz *ro =',10f6.2, &
1527 lsnmsk = min( 1,
isnosv(ikl,ikv))
1529 evg_sv(ikl,ikv)= emiveg*(1-lsnmsk)+emisno*lsnmsk
1530 eso_sv(ikl,ikv)= emisol*(1-lsnmsk)+emisno*lsnmsk
1532 & (((emisol*
tau_sv(ikl,ikv) &
1534 & + emiwat *(1-
lsmask(ikl,ikv)))*(1-lsnmsk)&
1559 snowat = min(
isnosv(ikl,ikv),0)
1584 & int(
ro__sv(ikl,ikv,isn)-900.))))
1591 lismsk = min(
iicesv(ikl,ikv) ,1 )
1592 lismsk = max(
lsmask(ikl,ikv),lismsk)
1593 icemsk = max(0,sign(1 ,
icindx(ikl,ikv)-1) )
1624 growth =min(max(0,7-
ivgtsv(ikl,ikv)),1)
1637 z0mlnd =max( z0mlnd , &
1639 & +z0_ice * icemsk )
1643 z0mlnd =max( z0mlnd , 5.e-5 )
1654 z0mbsn = u2star *0.536e-3 - 61.8e-6
1655 z0mbsn = max(z0mbs0 ,z0mbsn)
1659 z0ensv(ikl,ikv) = z0m_nu &
1744 z0mnsv(ikl,ikv) = z0mlnd &
1746 & +
z0ensv(ikl,ikv)) *snomsk
1751 & +z0msea *(1-lismsk) &
1818 z0hnsv(ikl,ikv) = z0hsea *(1-lismsk)&
1819 & +
z0hnsv(ikl,ikv) * lismsk
1841 6661
format(20
x,7f9.6)
1851 6600
format(/,
' ** SISVAT *0 ' &
1852 & ,
' za__SV = ',e12.4,
' Z0m_SV = ',e12.4 &
1853 & ,
' sqrCm0 = ',e12.4,
' Za/Z0m = ',e12.4 &
1855 & ,
' Z0SaSV = ',e12.4,
' Z0h_SV = ',e12.4 &
1856 & ,
' sqrCh0 = ',e12.4,
' Za/Z0h = ',e12.4)
1999 6007
format(i3,
' dsn+Buf=',f6.2,6
x,
'q dz *ro =',10f6.2, &
2117 4
format(i3,a3,i5,i3,
'h',i3,
' Vegetation: ',9(i6,2f8.3,i3))
2136 &
' |Net Solar| IR Down | IR Up | HS/Dwn=+|', &
2137 &
' HL/Dwn=+| Temper. | | Snow | Rain |', &
2138 & /,
' | [W/m2] | [W/m2] | [W/m2] | [W/m2] |', &
2139 &
' [W/m2] | [K] | | [mm/h] | [mm/h] |', &
2140 & /,
' -------+',7(
'---------+'),2(
'--------+'), &
2141 & /,
' SISVAT |',f8.1,
' |',f8.1,
' |',f8.1,
' |',f8.1,
' |', &
2142 & f8.1,
' |A',f7.2,
' |', 8
x ,
' |',2(f7.2,
' |'), &
2143 & /,
' Canopy |',f8.1,
' |', 8
x ,
' |',f8.1,
' |',f8.1,
' |', &
2144 & f8.1,
' |',f8.2,
' |', 8
x ,
' |',2( 7
x ,
' |') &
2145 & /,
' Soil |',f8.1,
' |', 8
x ,
' |', 8
x ,
' |',f8.1,
' |', &
2146 & f8.1,
' |',f8.2,
' |', 8
x ,
' |',2( 7
x ,
' |'))
2167 &
' -----------------+-------------------+', &
2168 &
'-----------------+-+-----------------+', &
2169 &
'-------------------+', &
2170 & /,
' SOIL/SNOW/VEGET. | |', &
2171 &
' Power, Forcing | |', &
2176 & /,
' |', 11
x ,
' |', &
2177 & f9.2,
' [W/m2] |', 11
x ,
' |', &
2179 & /,
' -----------------+-------------------+', &
2180 &
'-----------------+-------------------+', &
2181 &
'-------------------+', &
2182 & /,
' SOIL/SNOW (TSo) | Energy/dt, Time 0 |', &
2183 &
' Power, Forcing | Sum Tim.0+Forc. |', &
2184 &
' Energy/dt, Time 1 |', &
2188 & /,
' |', f11.2,
' [W/m2] |', &
2189 & f9.2,
' [W/m2] |', f11.2,
' [W/m2] |', &
2190 & f11.2,
' [W/m2] |', &
2191 & /,
' -----------------+-------------------+', &
2192 &
'-----------------+-------------------+', &
2193 &
'-------------------+', &
2194 & /,
' SNOW (qSn) | Energy/dt, Time 0 |', &
2195 &
' Power, Excess | D(Tim.1-0-Forc.)|', &
2196 &
' Energy/dt, Time 1 |', &
2200 & /,
' |', f12.2,
'[W/m2] |', &
2201 & f9.2,
' [W/m2] |', f11.2,
' [W/m2] |', &
2202 & f12.2,
'[W/m2] | ', &
2203 & /,
' -----------------+-------------------+', &
2204 &
'-----------------+-------------------+', &
2205 &
'-------------------+')
2219 6001
format(a18,3i4,
' (EB1' ,f15.6, &
2220 &
') - [(EB0 ',f15.6,
')', &
2221 & /,55
x,
'+(ATM->Snow/Soil',f15.6,
')] ', &
2222 &
'= EBAL' ,f15.6,
' [W/m2]', &
2223 & /,55
x,
' (ATM->SISVAT' ,f18.6, &
2224 & /,55
x,
'- Veg. ImBal.', f18.6,
') ', &
2225 & /,55
x,
'- ATM->SnoSol', f18.6,
') ', &
2226 &
'= ????' ,f15.6,
' [W/m2]')
2247 5010
format(
' SNOW | Snow, Time 0 |', &
2248 &
' Snow, Forcing | Sum |', &
2249 &
' Snow, Time 1 |', &
2253 & /,
' |', f13.3,
' [mm] |', &
2254 &
' A', f9.3,
' [mm] |', f13.3,
' [mm] |', &
2255 & f13.3,
' [mm] |', &
2256 & /,
' |', 13
x ,
' |', &
2257 &
' E', f9.3,
' [mm] |', 13
x ,
' |', &
2259 & /,
' |', 13
x ,
' |', &
2260 &
' S', f9.3,
' [mm] |', 13
x ,
' |', &
2262 & /,
' |', 13
x ,
' |', &
2263 &
'(M', f9.3,
' [mm])| (included in A) |', &
2265 & /,
' |', 13
x ,
' |', &
2266 &
' R', f9.3,
' [mm] |', 13
x ,
' |', &
2271 & /,
' -----------------+-------------------+', &
2272 &
'-----------------+-------------------+', &
2273 &
'-------------------+')
2290 6010
format(a18,3i4,
' (MB1' ,f12.6, &
2291 &
') - [(MB0 ',f12.6, 15
x,
')', &
2292 & /,51
x,
'+(ATM Forcing',f12.6,
' - ',f12.6,
')', &
2293 & /,51
x,
'+(BLS Forcing',f12.6,
' - ',f12.6,
')', &
2294 & /,51
x,
'-(Depo/Sublim',f12.6, 15
x,
')', &
2295 & /,51
x,
' !Melting ',f12.6,
' included in A!', &
2296 & /,51
x,
'+(Run OFF ',f12.6, 15
x,
')', &
2298 & /,29
x,
'= *BAL' ,f12.6,
' [mm w.e.]')
2316 5003
format(
' SOIL/SNOW (qSo) | Water, Time 0 |', &
2317 &
' Water, Forcing | Sum |', &
2318 &
' Water, Time 1 |', &
2322 & /,
' |', f13.3,
' [mm] |', &
2323 & f11.3,
' [mm] |', f13.3,
' [mm] |', &
2324 & f13.3,
' [mm] |', &
2325 & /,
' -----------------+-------------------+', &
2326 &
'-----------------+-------------------+', &
2327 &
'-------------------+', &
2328 & /,
' SOIL/SNOW/VEGET. | Water, Time 0 |', &
2329 &
' Water, Forcing | Sum |', &
2330 &
' Water, Time 1 |', &
2334 & /,
' |', f13.3,
' [mm] |', &
2335 & f11.3,
' [mm] |', f13.3,
' [mm] |', &
2336 & f13.3,
' [mm] |', &
2337 & /,
' -----------------+-------------------+', &
2338 &
'-----------------+-------------------+', &
2339 &
'-------------------+')
2352 6002
format(30
x,
' NEW Soil Water',3
x,
' Canopy Water',3
x, &
2353 &
' OLD SVAT Water',4
x,
' FRC SVAT Water', &
2354 & /,a18,3i4,f15.6,
' + ' ,f15.6,
' - ' ,f15.6, &
2355 &
' - ',f15.6,
' ', 15
x ,
' ', &
2356 & /,31
x,
'= ',f12.6,
' [mm] (Water Balance)', &
2357 & /,30
x,
' NEW Soil Water',3
x,
' ',3
x, &
2358 &
' OLD Soil Water',4
x,
' FRC Soil Water', &
2359 & /,30
x,f15.6,
' ' , 15
x ,
' - ' ,f15.6, &
2360 &
' - ',f15.6,
' ', 15
x ,
' ', &
2361 & /,31
x,
'= ',f12.6,
' [mm] (3 terms SUM)')
2371 5004
format(
' -----+--------+--+-----+--------+----+---+', &
2372 &
'--------+----+---+--------+------+-+--------+--------+', &
2373 & /,
' n | z | dz | ro | eta |', &
2374 &
' T | G1 | G2 | Extinc | | HISTORY|', &
2375 & /,
' | [m] | [m] | [kg/m3]| [m3/m3]|', &
2376 &
' [K] | [-] | [-] | [-] | | [-] |', &
2377 & /,
' -----+--------+--------+--------+--------+', &
2378 &
'--------+--------+--------+--------+--------+--------+')
2380 5005
format(
' | | | |W',f6.3,
' |', &
2381 &
' | | |A',f6.3,
' | | |')
2389 5015
format((i5,
' |',2(f7.3,
' |'), f7.1,
' |', &
2390 & f7.3,
' |' , f7.2,
' |', 2(f7.1,
' |'), f7.3,
' |', &
2391 & 7
x ,
' |' , i5,
' |' ))
2393 5006
format(
' -----+--------+--------+--------+--------+', &
2394 &
'--------+--------+--------+--------+--------+--------+')
2398 5007
format(
' Brgh |',4(8
x,
'|'), f7.2,
' | [micm] |',4(8
x,
'|'), &
2399 & /,
' VEGE |',4(8
x,
'|'),2(f7.2,
' |'), 2(8
x,
'|'), &
2400 & f7.3,
' |', 8
x,
'|' )
2402 5014
format(
' -----+--------+--------+--------+--------+', &
2403 &
'--------+--------+--------+--------+--------+--------+', &
2404 & /,
' n | | dz | | eta |', &
2405 &
' T | | | | Root W.| W.Flow |', &
2406 & /,
' | | [m] | | [m3/m3]|', &
2407 &
' [K] | | | | [mm/d] | [mm/h] |', &
2408 & /,
' -----+--------+--------+--------+--------+', &
2409 &
'--------+--------+--------+--------+--------+--------+')
2418 5008
format((i5,
' |', 7
x ,
' |' , f7.3,
' |' , 7
x ,
' |', &
2419 & f7.3,
' |' , f7.2,
' |', 2( 7
x ,
' |'), 7
x ,
' |', &
2420 & f7.3,
' |' , f7.2,
' |'))
2423 5009
format(
' |',9(8
x,
'|'),f7.3,
' |')
2561 integer :: ikl,ikv ,isn ,isnMAX
2562 integer :: Mobilm,Mobiln
2564 real(kind=real8) :: DendOK
2565 real(kind=real8) :: SaltOK
2566 real(kind=real8) :: MeltOK
2567 real(kind=real8) :: SnowOK
2568 real(kind=real8) :: SaltM1,SaltM2,SaltMo
2569 real(kind=real8) :: SaltMx = -5.83e-2
2570 real(kind=real8) :: ShearX
2571 real(kind=real8) :: SaltSU,Salt_U
2572 real(kind=real8) :: ArgFac,Fac_Mo
2573 real(kind=real8) :: FacRBS = 2.868
2574 real(kind=real8) :: FacTBS = 0.085
2575 real(kind=real8) :: ArguSi
2576 real(kind=real8) :: hdrift = 1.00e+1
2577 real(kind=real8) :: h_mmWE = 0.01e00
2583 real(kind=real8) :: dzweqo,dzweqn,bsno_x
2584 real(kind=real8) :: hsno_x
2585 real(kind=real8) :: ro_new
2588 real(kind=real8) :: MIN_Mo
2667 5000
format(/,
' Blowing Snow Model Initialization ', &
2668 & /,
' Vt / u*t =',f8.2,
' (Neutral Assumption)', &
2669 & /,
' ', 8
x ,
' (Budd assumes 26.5)',/)
2690 IF (.NOT.
blomod)
GO TO 1000
2708 & -
tsissv(ikl,ikv,isn) )))&
2709 & * min(
un_1,dendok &
2712 snowok = min(1 , max(
isnosv(ikl,ikv) +1 -isn ,0))
2719 saltok = min(
un_1 , saltok + meltok) * snowok
2720 saltm1 = -0.750e-2 *
g1snsv(ikl,ikv,isn) &
2721 & -0.500e-2 *
g2snsv(ikl,ikv,isn)+ 0.500e00
2725 saltm2 = -0.833d-2 *
g1snsv(ikl,ikv,isn) &
2726 & -0.583d-2 *
g2snsv(ikl,ikv,isn)+ 0.833d00
2727 saltmo = (dendok * saltm1 + (1.-dendok) * saltm2 )
2733 saltmo = max(saltmo,min_mo)
2735 saltmo = saltok * saltmo + (1.-saltok) * min(saltmo,saltmx)
2739 saltsu = (1.00d0+saltmo) *
facsbs
2751 6010
format(/,
'SISVAT_BSn',6
x &
2752 & ,6
x,i3,2
x,
'G1 =',f6.3,
' G2 =',f7.3 &
2753 & ,
' ro [kg/m3] =',f9.3,
' Age* [Day] =',f9.3 &
2754 & , /,27
x,
'SaltM1 =',f6.3,
' SaltM2 =',f7.3 &
2755 & ,
' Mobility I.=',f9.3,
' Vt [m/s] =',f9.3 &
2756 & , /,27
x,
' ', 6
x ,
' ', 7
x &
2757 & ,
' ', 9
x ,
' Vn10 [m/s] =',f9.3)
2773 fac_mo = exp( argfac )
2777 saltsu = max(
eps6 , saltsu)
2778 saltsu = exp(fac_mo*log(saltsu))
2780 saltsi(ikl,ikv,isn) = (saltsu-exp(argusi)) *facrbs
2786 snowok = 1 -min(1,iabs(isn-
isnosv(ikl,ikv)))
2787 salt_u = -log(saltsu) *
facubs
2791 & + (1.-snowok)*
usthsv(ikl,ikv)
2806 6011
format( 27
x,
'Fac_Mo =',f6.3,
' Por_BS =',f7.3 &
2807 & ,
' Drift I.=',f9.3,
' ut*_0[m/s] =',f9.3)
2824 isnmax = max( 1,
isnosv(ikl,ikv) )
2825 isnmax = min( isn, isnmax )
2827 mobilm = 1 - min(1 ,
mobile(ikl,ikv) -1 -mobiln)
2830 mobile(ikl,ikv) = mobilm * mobiln &
2831 & + (1-mobilm)*
mobile(ikl,ikv)
2852 & + 0.50 *
dzsnsv(ikl,ikv,isn) * (3.25 -
saltsi(ikl,ikv,isn))
2855 & *min(1,max(0 , isn +1 -
mobile(ikl,ikv))) &
2856 & *min(1,max(0 ,
isnosv(ikl,ikv) -isn +1 )) &
2862 & + 0.50 *
dzsnsv(ikl,ikv,isn) * (3.25 -
saltsi(ikl,ikv,isn))
2892 & *min(1,max(0 , isn +1 -
mobile(ikl,ikv))) &
2893 & *min(1,max(0 ,
isnosv(ikl,ikv ) -isn +1 ))
2925 & 18
x,
'MB0',6
x,
'Sno1WE [mm]=',f9.3,19
x,
'0 dbs_SV [mm]=',f9.6)
2938 snowok = min(1,max(
isnosv(ikl,ikv)+1-isn ,0))
2941 dzweqn = dzweqo +bsno_x
2942 dzweqn = max(dzweqn, h_mmwe *snowok)
2944 dzsnsv(ikl,ikv,isn) = dzweqn &
2963 & 18
x,
'MB1',6
x,
'Sno1WE [mm]=',f9.3,19
x,
'1 dbs_SV [mm]=',f9.6)
2967 & 18
x,
'MB ',5
x,
'(After [mm]=',f6.0,
')-(Erosion[mm]=', f7.3, &
2968 &
')-(Before [mm]=', f9.3, &
2969 &
')= Budget [mm]=', f9.6)
2988 6003
format(/,41
x,
'tdepos [-] =',f6.3,40
x,
'Mobil',i3 &
2989 & ,/,27
x,
'Salt.Index sdrift' &
2990 & ,
' zdepos ro__snow ro_bsnow roN_snow' &
2991 & ,
' dz__snow dz_bsnow dzN_snow' &
2993 & ,/,27
x,
' [kg/m3] [kg/m3] [kg/m3]' &
2994 & ,
' [m] [m] [m]' &
3027 dzagr2(ikl,ikv) = hsno_x / ro_new
3082 6004
format((27
x,i3,f7.2,2f10.6,3f10.3,4f10.6))
3103 6008
format(i3,
' dsn+Buf=',f6.2,6
x,
'A dz *ro =',10f6.2, &
3212 integer :: ikl,ikv , isot
3214 real(kind=real8) :: eta_Du,usthDu
3236 usthdu = sqrt(
un_1+1.21*exp(0.68* log(eta_du) )) &
3241 & usthdu * max(0,1-
isnosv(ikl,ikv))
3312 integer :: ikl ,ikv ,n
3313 real(kind=real8) :: OCN_OK
3318 real(kind=real8) :: SalIce = 10.
3319 real(kind=real8) :: SalWat = 35.
3348 & -(salice/salwat)*(1.-1.e-3*salwat) )
3361 ocn_ok = (1 -
lsmask(ikl,ikv) ) &
3362 & *max(0,1 -
isnosv(ikl,ikv) )
3404 & +
dsn_sv(ikl,ikv) * ocn_ok
3516 integer :: ikl,ikv ,isn ,i
3522 integer :: icemix = 0
3524 real(kind=real8) :: staggr
3526 real(kind=real8) :: OKthin
3527 real(kind=real8) :: dz_dif
3528 real(kind=real8) :: thickL
3531 real(kind=real8) :: dzepsi = 0.0015
3532 real(kind=real8) :: dzxmin = 0.0020
3533 real(kind=real8) :: dz_min = 0.0050
3534 real(kind=real8) :: dz_max = 0.0300
3607 isno_n =
isnosv(ikl,ikv)-isn+1
3608 iice_n =
iicesv(ikl,ikv)-isn
3609 iiceok = min(1,max(0,iice_n +1))
3617 dz_dif = max(
zer0, &
3619 & *((1-iiceok)*isno_n*isno_n &
3620 & + iiceok *2. **iice_n) &
3621 & -
dzsnsv(ikl,ikv, isn) )
3626 okthin = max(
zer0, &
3628 & dz_dif-
dzthin(ikl,ikv))) &
3631 &
isnosv(ikl,ikv)-isn +1 )) &
3637 & *
g1snsv(ikl,ikv,max(1,isn-1))))&
3645 & sign(
un_1,dzxmin &
3646 & -
dzsnsv(ikl,ikv, isn ))))
3659 4150
format(/,
'-',a18,i5,
' ',70(
'-'), &
3660 & /,
' Thinest ',i3,
':',f9.3)
3665 okthin = max(
zer0, &
3668 & -
dzsnsv(ikl,ikv,isn))) &
3680 & -
dzsnsv(ikl,ikv,isn)))) &
3684 & *(1 -min(abs(
isnosv(ikl,ikv) &
3685 & -
iicesv(ikl,ikv)-1),1)) &
3689 &
iicesv(ikl,ikv)+1-isn))) &
3693 & *
g1snsv(ikl,ikv,max(1,isn-1)))) &
3697 & sign(
un_1,dzxmin &
3698 & -
dzsnsv(ikl,ikv, isn ))))
3708 4151
format(
' Thinest ',i3,
':',f9.3,
' Max =',i3,f12.3)
3712 470
format(
'Before _zCr1: G1 = ',10f8.1,(/,19
x,10f8.1))
3714 472
format(
' G2 = ',10f8.1,(/,19
x,10f8.1))
3747 lstlay = min(1,max( 0,
isnosv(ikl,ikv) -1))
3749 & -(1-lstlay)* max(
zer0, &
3754 & sign(
un_1,dz_min &
3757 & * min( max(0 ,
isnosv(ikl,ikv)+1&
3769 & *min(1,max(0,
i_thin(ikl,ikv)+1-isn))
3776 410
format(/,
' Agregation of too THIN Layers')
3781 411
format(
' dz_ref [cm]:',10f8.2 ,/,(
' ',10f8.2) )
3782 412
format(
' dz_dif [cm]:',10f8.2 ,/,(
' ',10f8.2) )
3783 413
format(
' dzsnSV [cm]:',10f8.2 ,/,(
' ',10f8.2) )
3784 414
format(
' ',10(i5,3
x),/,(
' ',10(i5,3
x)))
3791 4111
format(
' isnoSV :', i8 )
3792 4112
format(
' i_thin :', i8 )
3793 4113
format(
' LIndsv :', i8 )
3794 4114
format(
' Agrege :', f8.2)
3795 4115
format(
' dzagr1 :', f8.2)
3796 4116
format(
' dzagr2 :', f8.2)
3800 471
format(
'Before _zAg1: G1 = ',10f8.1,(/,19
x,10f8.1))
3832 isn = min(isn,isn+
lindsv(ikl,ikv))
3835 & -max(0,sign(1,
iicesv(ikl,ikv) -isn +icemix)) &
3837 & *max(0,sign(1,
iicesv(ikl,ikv) -1 ))
3867 staggr = min(1,max(0,i +1 -
isn1(ikl,ikv) ))
3915 5991
format(/,
'First Agregation / Layer',i3, &
3916 & /,
' i',11
x,
'T',9
x,
'rho',10
x,
'dz',11
x,
'H')
3920 5995
format(i3,3f12.3,i12)
3939 isno_n =
isnosv(ikl,ikv)-isn+1
3940 iice_n =
iicesv(ikl,ikv)-isn
3941 iiceok = min(1,max(0,iice_n +1))
3942 dz_dif =(
dzsnsv(ikl,ikv,isn) &
3943 & - dz_max *((1-iiceok)*isno_n*isno_n &
3944 & + iiceok *2. **iice_n) ) &
3946 okthin = max(
zer0, &
3948 & dz_dif-
dzthin(ikl,ikv))) &
3951 &
isnosv(ikl,ikv)-isn +1 ))
3962 thickl = max(
zer0, &
3965 & * max(0,1-max(0 ,
isnosv(ikl,ikv) &
3967 agrege(ikl,ikv) = thickl &
3968 & * max(0,1-max(0 ,
nlaysv(ikl,ikv) &
3971 nlay_s(ikl,ikv) = thickl &
3972 & * max(0,1-max(0 ,
nlaysv(ikl,ikv) &
3982 4152
format(/,
' Thickest',i3,
':',f9.3,
' Split =',f4.0)
3992 staggr = min(1,max(0,isn-
i_thin(ikl,ikv) -1)) &
3993 & * min(1,max(0,
isnosv(ikl,ikv)-isn+2))
3995 & + (1. - staggr) *
istosv(ikl,ikv ,isn )
3997 & + (1. - staggr) *
dzsnsv(ikl,ikv ,isn )
3999 & + (1. - staggr) *
tsissv(ikl,ikv ,isn )
4001 & + (1. - staggr) *
ro__sv(ikl,ikv ,isn )
4003 & + (1. - staggr) *
eta_sv(ikl,ikv ,isn )
4005 & + (1. - staggr) *
g1snsv(ikl,ikv ,isn )
4007 & + (1. - staggr) *
g2snsv(ikl,ikv ,isn )
4009 & + (1. - staggr) *
agsnsv(ikl,ikv ,isn )
4042 & *max(0,sign(1,
iicesv(ikl,ikv) &
4058 6000
format(i3,6
x, &
4059 &
'dzsnSV dz_min dz_dif ', &
4060 &
'OKthin dzthin i_thin')
4070 isno_n =
isnosv(ikl,ikv)-isn+1
4071 iice_n =
iicesv(ikl,ikv)-isn
4072 iiceok = min(1,max(0,iice_n +1))
4081 & -
dzsnsv(ikl,ikv ,isn) &
4082 & /max(
eps6,((1-iiceok)*isno_n*isno_n &
4083 & + iiceok *2. **iice_n))
4088 okthin = max(
zer0, &
4090 & dz_dif -
dzthin(ikl,ikv)))&
4093 &
isnosv(ikl,ikv)-isn +1 ))
4103 6001
format(i3,5f12.6,i9)
4114 4153
format(/,
' Thinest ',i3,
':',f9.3)
4120 473
format(
'Before _zCr2: G1 = ',10f8.1,(/,19
x,10f8.1))
4154 lstlay = min(1,max( 0,
isnosv(ikl,ikv)-1 ))
4155 agrege(ikl,ikv) = min(1, &
4161 & -(1-lstlay)*max(
zer0, &
4174 & *min(1,max(0,
i_thin(ikl,ikv)+1-isn))
4181 4120
format(
' Agregation of too MUCH Layers')
4193 474
format(
'Before _zAg2: G1 = ',10f8.1,(/,19
x,10f8.1))
4225 isn = min(isn,isn+
lindsv(ikl,ikv))
4228 & -max(0,sign(1,
iicesv(ikl,ikv) -isn +icemix)) &
4230 & *max(0,sign(1,
iicesv(ikl,ikv) -1 ))
4260 staggr = min(1,max(0,i +1 -
isn1(ikl,ikv) ))
4305 475
format(
'At End _zSn : G1 = ',10f8.1,(/,19
x,10f8.1))
4431 integer :: ikl,ikv ,isn ,is0 ,is1
4433 real(kind=real8) :: Dtyp_0,Dtyp_1
4434 real(kind=real8) :: DenSph
4436 real(kind=real8) :: DendOK
4437 real(kind=real8) :: dTypMx = 200.0
4438 real(kind=real8) :: dTypSp = 0.5
4439 real(kind=real8) :: dTypRo = 0.5
4440 real(kind=real8) :: dTypDi = 10.0
4441 real(kind=real8) :: dTypHi = 100.0
4450 isn = max(1 ,
i_thin(ikl,ikv))
4456 is0 = max(1,
i_thin(ikl,ikv)-1 )
4457 densph = max(
zer0, &
4461 dendok = max(
zer0, &
4468 & * dendok *((abs(
g1snsv(ikl,ikv,isn) &
4469 & -
g1snsv(ikl,ikv,is0)) &
4470 & +abs(
g2snsv(ikl,ikv,isn) &
4471 & -
g2snsv(ikl,ikv,is0))) *dtypsp &
4472 & +abs(
ro__sv(ikl,ikv,isn) &
4473 & -
ro__sv(ikl,ikv,is0)) *dtypro)&
4475 & *(1.-dendok)*((abs(
g1snsv(ikl,ikv,isn) &
4476 & -
g1snsv(ikl,ikv,is0)) &
4477 & +abs(
g2snsv(ikl,ikv,isn) &
4478 & -
g2snsv(ikl,ikv,is0))) *dtypdi &
4479 & +abs(
ro__sv(ikl,ikv,isn) &
4480 & -
ro__sv(ikl,ikv,is0)) *dtypro)
4484 & +abs(
istosv(ikl,ikv,isn) &
4485 & -
istosv(ikl,ikv,is0)) *dtyphi)&
4486 & + (1 -abs(isn-is0)) * 1.e+6 &
4487 & + max(0,1-abs(
iicesv(ikl,ikv) &
4494 is1 = min(
i_thin(ikl,ikv)+1, &
4495 & max(1,
isnosv(ikl,ikv) ))
4496 densph = max(
zer0, &
4500 dendok = max(
zer0, &
4507 & * dendok *((abs(
g1snsv(ikl,ikv,isn) &
4508 & -
g1snsv(ikl,ikv,is1)) &
4509 & +abs(
g2snsv(ikl,ikv,isn) &
4510 & -
g2snsv(ikl,ikv,is1))) *dtypsp &
4511 & +abs(
ro__sv(ikl,ikv,isn) &
4512 & -
ro__sv(ikl,ikv,is1)) *dtypro)&
4514 & *(1.-dendok)*((abs(
g1snsv(ikl,ikv,isn) &
4515 & -
g1snsv(ikl,ikv,is1)) &
4516 & +abs(
g2snsv(ikl,ikv,isn) &
4517 & -
g2snsv(ikl,ikv,is1))) *dtypdi &
4518 & +abs(
ro__sv(ikl,ikv,isn) &
4519 & -
ro__sv(ikl,ikv,is1)) *dtypro)
4523 & +abs(
istosv(ikl,ikv,isn) &
4524 & -
istosv(ikl,ikv,is1)) *dtyphi)&
4525 & + (1 -abs(isn-is1)) * 1.e+6 &
4526 & + max(0,1-abs(
iicesv(ikl,ikv) &
4535 isno_1 = (1 -min(abs(
isnosv(ikl,ikv) &
4536 & -
iicesv(ikl,ikv)-1),1))&
4537 & * (1 -min(abs(
isnosv(ikl,ikv) &
4552 & (ikl,ikv,isagra,isagrb,weagra &
4553 & ,dzagra,dzagrb,t_agra,t_agrb &
4554 & ,roagra,roagrb,etagra,etagrb &
4555 & ,g1agra,g1agrb,g2agra,g2agrb &
4556 & ,agagra,agagrb,agreg1 &
4636 real(kind=real8) :: dzagrb
4637 real(kind=real8) :: T_agrb
4638 real(kind=real8) :: roagrb
4639 real(kind=real8) :: etagrb
4640 real(kind=real8) :: G1agrb
4641 real(kind=real8) :: G2agrb
4642 real(kind=real8) :: agagrb
4649 real(kind=real8) :: WEagra
4650 real(kind=real8) :: Agreg1
4651 real(kind=real8) :: dzagra
4652 real(kind=real8) :: T_agra
4653 real(kind=real8) :: roagra
4654 real(kind=real8) :: etagra
4655 real(kind=real8) :: G1agra
4656 real(kind=real8) :: G2agra
4657 real(kind=real8) :: agagra
4666 real(kind=real8) :: rh
4667 real(kind=real8) :: dz
4668 real(kind=real8) :: dzro_1
4669 real(kind=real8) :: dzro_2
4670 real(kind=real8) :: dzro
4671 real(kind=real8) :: ro
4672 real(kind=real8) :: wn
4673 real(kind=real8) :: tn
4674 real(kind=real8) :: ag
4675 real(kind=real8) :: SameOK
4676 real(kind=real8) :: G1same
4677 real(kind=real8) :: G2same
4678 real(kind=real8) :: typ__1
4679 real(kind=real8) :: zroNEW
4680 real(kind=real8) :: G1_NEW
4681 real(kind=real8) :: G2_NEW
4682 real(kind=real8) :: zroOLD
4683 real(kind=real8) :: G1_OLD
4684 real(kind=real8) :: G2_OLD
4685 real(kind=real8) :: SizNEW
4686 real(kind=real8) :: SphNEW
4687 real(kind=real8) :: SizOLD
4688 real(kind=real8) :: SphOLD
4689 real(kind=real8) :: Siz_av
4690 real(kind=real8) :: Sph_av
4691 real(kind=real8) :: Den_av
4692 real(kind=real8) :: DendOK
4693 real(kind=real8) :: G1diff
4694 real(kind=real8) :: G2diff
4695 real(kind=real8) :: G1
4696 real(kind=real8) :: G2
4707 dz = dzagra + dzagrb
4708 dzro_1 = roagra * dzagra
4709 dzro_2 = roagrb * dzagrb
4710 dzro = dzro_1 + dzro_2
4713 wn = (dzro_1*etagra + dzro_2*etagrb ) &
4715 tn = (dzro_1*t_agra + dzro_2*t_agrb ) &
4717 ag = (dzro_1*agagra + dzro_2*agagrb ) &
4724 nh = max(isagra ,isagrb ) &
4736 5995
format(
' WE2,WEa =',2f9.1,
' nha,b =',2i2,
' nh__OK,nh =',2i2)
4745 sameok = max(
zer0, &
4747 g1same = (dzro_1*g1agra + dzro_2*g1agrb ) &
4749 g2same = (dzro_1*g2agra + dzro_2*g2agrb ) &
4755 zronew = typ__1 *dzro_1 &
4756 & + (1.-typ__1) *dzro_2
4757 g1_new = typ__1 *g1agra &
4758 & + (1.-typ__1) *g1agrb
4759 g2_new = typ__1 *g2agra &
4760 & + (1.-typ__1) *g2agrb
4761 zroold = (1.-typ__1) *dzro_1 &
4763 g1_old = (1.-typ__1) *g1agra &
4765 g2_old = (1.-typ__1) *g2agra &
4774 siz_av = (zronew*siznew+zroold*sizold) &
4776 sph_av = (zronew*sphnew+zroold*sphold) &
4778 den_av = (siz_av -( sph_av *
dscdsv &
4779 & +(1.-sph_av)*
dfcdsv)) &
4782 dendok = max(
zer0, &
4793 g1diff =( -dendok *den_av &
4794 & +(1.-dendok)*sph_av) *
g1_dsv
4795 g2diff = dendok *sph_av *
g1_dsv &
4796 & +(1.-dendok)*siz_av
4797 g1 = sameok *g1same &
4798 & +(1.-sameok)*g1diff
4799 g2 = sameok *g2same &
4800 & +(1.-sameok)*g2diff
4806 isagra = agreg1 *nh +(1.-agreg1 ) *isagra
4807 dzagra = agreg1 *dz +(1.-agreg1 ) *dzagra
4808 t_agra = agreg1 *tn +(1.-agreg1 ) *t_agra
4809 roagra = agreg1 *ro +(1.-agreg1 ) *roagra
4810 etagra = agreg1 *wn +(1.-agreg1 ) *etagra
4811 g1agra = agreg1 *g1 +(1.-agreg1 ) *g1agra
4812 g2agra = agreg1 *g2 +(1.-agreg1 ) *g2agra
4813 agagra = agreg1 *ag +(1.-agreg1 ) *agagra
4937 real(kind=real8) :: coalbm
4941 integer :: isn ,ikl,ikv
4946 real(kind=real8) :: sbeta1 = 0.0192
4947 real(kind=real8) :: sbeta2 = 0.4000
4948 real(kind=real8) :: sbeta3 = 0.1098
4949 real(kind=real8) :: sbeta4 = 1.0000
4950 real(kind=real8) :: sbeta5 = 2.00e1
4956 real(kind=real8) :: AlbMin = 0.94
4957 real(kind=real8) :: AlbMax = 0.99
4958 real(kind=real8) :: HSnoSV = 0.01
4959 real(kind=real8) :: HIceSV = 0.10
4961 real(kind=real8) :: doptmx = 2.3e-3
4963 real(kind=real8) :: SignG1,Sph_OK
4964 real(kind=real8) :: dalbed
4972 real(kind=real8) :: RoFrez,SignRo,SnowOK,OpSqrt
4973 real(kind=real8) :: albSn1,a_SII1
4974 real(kind=real8) :: albSn2,a_SII2
4975 real(kind=real8) :: albSn3,a_SII3
4976 real(kind=real8) :: albSno
4978 real(kind=real8) :: albSII,albWIc
4979 real(kind=real8) :: doptic,Snow_H,SIce_H,SnownH,SIcenH
4980 real(kind=real8) :: exarg1,exarg2,exarg3,sign_0,sExt_0
4981 real(kind=real8) :: albedo_old
4982 real(kind=real8) :: ro_ave,dz_ave
5022 sph_ok = max(
zer0,signg1)
5024 snopsv(ikl,ikv,isn) = 1.e-4 * &
5077 isn = max(1,
isnosv(ikl,ikv))
5080 snowok = max(
zer0,signro)
5082 opsqrt = sqrt(
snopsv(ikl,ikv,isn))
5084 albsn1 = 0.96-1.580*opsqrt
5085 albsn1 = max(albsn1,albmin)
5087 albsn1 = max(albsn1,
zer0)
5088 albsn1 = min(albsn1,
un_1)
5090 albsn2 = 0.95-15.40*opsqrt
5091 albsn2 = max(albsn2,
zer0)
5092 albsn2 = min(albsn2,
un_1)
5094 doptic = min(
snopsv(ikl,ikv,isn),doptmx)
5095 albsn3 = 346.3*doptic -32.31*opsqrt +0.88
5096 albsn3 = max(albsn3,
zer0)
5097 albsn3 = min(albsn3,
un_1)
5106 albsn1 = snowok*albsn1+(1.0-snowok)*max(albsno,
ai3dsv)
5107 albsn2 = snowok*albsn2+(1.0-snowok)*max(albsno,
ai3dsv)
5108 albsn3 = snowok*albsn3+(1.0-snowok)*max(albsno,
ai3dsv)
5117 snownh = snow_h / hsnosv
5118 snownh = min(
un_1, snownh)
5119 sicenh = sice_h / (hicesv &
5122 sicenh = min(
un_1, sicenh)
5130 DO isn =
isnosv(ikl,ikv),1,-1
5131 ro_ave = ro_ave +
ro__sv(ikl,ikv,isn) *
dzsnsv(ikl,ikv,isn) * snowok
5132 dz_ave = dz_ave +
dzsnsv(ikl,ikv,isn) * snowok
5133 snowok = max(
zer0,sign(
un_1,1.-dz_ave))
5136 ro_ave = ro_ave / max(dz_ave,
eps6)
5137 snowok = max(
zer0,sign(
un_1,700.-ro_ave))
5139 snownh = snowok + snownh * (1. - snowok)
5148 & * exp(-
rusnsv(ikl,ikv) &
5149 & * (1. -
sws_sv(ikl,ikv) &
5150 & * (1 -min(1,iabs(isn-
isnosv(ikl,ikv))))) &
5154 snowok = max(
zer0,signro)
5156 albwic = (1. - snowok) * albwic + snowok &
5167 a_sii1 = albwic +(albsn1-albwic) *snownh
5168 a_sii1 = min(a_sii1 ,albsn1)
5170 a_sii2 = albwic +(albsn2-albwic) *snownh
5171 a_sii2 = min(a_sii2 ,albsn2)
5173 a_sii3 = albwic +(albsn3-albwic) *snownh
5174 a_sii3 = min(a_sii3 ,albsn3)
5259 albedo_old =
albisv(ikl,ikv)
5262 & +
albssv(ikl,ikv) *(1.0 - sicenh))
5274 albedo_old =
albisv(ikl,ikv)
5316 snowok = max(
zer0,signro)
5318 rofrez = 1.e-3 *
ro__sv(ikl,ikv,isn) * (1.0-
eta_sv(ikl,ikv,isn))
5321 exarg1 = snowok *1.e2 *max(sbeta1*rofrez/opsqrt,sbeta2)&
5322 & +(1.0-snowok) *sbeta5
5323 exarg2 = snowok *1.e2 *max(sbeta3*rofrez/opsqrt,sbeta4)&
5324 & +(1.0-snowok) *sbeta5
5325 exarg3 = snowok *1.e2 *sbeta5 &
5326 & +(1.0-snowok) *sbeta5
5350 & * exp(min(0.0,-exarg1 *
dzsnsv(ikl,ikv,isn)))
5356 & * exp(min(0.0,-exarg2 *
dzsnsv(ikl,ikv,isn)))
5362 & * exp(min(0.0,-exarg3 *
dzsnsv(ikl,ikv,isn)))
5377 sex_sv(ikl,ikv,isn) = 0.0
5555 integer :: ikl,ikv ,kri
5557 real(kind=real8) :: exdRad,k_drad
5558 real(kind=real8) :: e_prad,e1pRad
5559 real(kind=real8) :: zv_fac,zv1fac,deadLF
5560 real(kind=real8) :: T_Rad0,A_Rad0
5561 real(kind=real8) :: r0_Rad,t0_Rad,nu_Rad
5562 real(kind=real8) :: Tr_Rad,Re_Rad,r__Rad,t__Rad,t1_Rad
5563 real(kind=real8) :: arggam, gamma
5564 real(kind=real8) :: gammaL
5565 real(kind=real8) :: denSig,Sig__c
5566 real(kind=real8) :: DDifH1,DDifC1
5567 real(kind=real8) :: DDifH2,DDifC2
5568 real(kind=real8) :: denS_s,denS_a,den_c1,DDif_L
5569 real(kind=real8) :: u0_Vis,absg_V,absv_V
5570 real(kind=real8) :: u0_nIR,absgnI,absvnI
5571 real(kind=real8) :: argexg,argexk
5572 real(kind=real8) :: residu,d_DDif,dDDifs,dDDifa
5604 e_prad = 2.5 *
coszsv(ikl,ikv)
5608 e1prad = 1.-exp(- e_prad )
5613 zv1fac = 1. - zv_fac
5614 deadlf = 1. -
glf_sv(ikl,ikv)
5620 a_rad0 = 0.25 + 0.697 * e1prad
5621 t_rad0 = 1. - a_rad0
5632 re_rad = zv1fac *re_rad + zv_fac *
reviss
5633 tr_rad = zv1fac *tr_rad + zv_fac *
trviss
5637 r__rad = (2. *re_rad + tr_rad) / 3.
5638 t__rad = ( re_rad + 2. *tr_rad) / 3.
5641 arggam = t1_rad*t1_rad-r__rad*r__rad
5642 arggam = max(arggam,
zer0)
5643 gamma = sqrt(arggam)
5644 gammal = min( gamma*
lai_sv(ikl,ikv),40.0)
5645 ddifh1 = exp( gammal )
5646 ddifh2 = exp(-gammal )
5652 r0_rad = 0.5 *((re_rad+tr_rad) *k_drad &
5653 & +(re_rad-tr_rad) / 3.)
5654 t0_rad = 0.5 *((re_rad+tr_rad) *k_drad &
5655 & -(re_rad-tr_rad) / 3.)
5657 nu_rad = t1_rad-r__rad*
albisv(ikl,ikv)
5658 den_c1 = gamma*(ddifh1+ddifh2) &
5659 & +nu_rad*(ddifh1-ddifh2)
5661 densig = gamma*gamma - k_drad*k_drad
5662 dens_s = sign(
un_1,densig)
5663 dens_a = abs( densig)
5664 densig = max(
eps6,dens_a) * dens_s
5665 sig__c = (r__rad* r0_rad &
5666 & +t0_rad*(k_drad+t1_rad)) / densig
5668 ddifc1 = ((gamma-nu_rad)*(t_rad0-sig__c*a_rad0)*ddifh2 &
5669 & +((k_drad-nu_rad)* sig__c &
5670 & +t0_rad+r__rad *
albisv(ikl,ikv)) *a_rad0 *exdrad)&
5672 ddifc2 = t_rad0 - ddifc1-sig__c*a_rad0
5676 ddif_l = ddifc1*ddifh1 + ddifc2*ddifh2 &
5677 & + sig__c*a_rad0 *exdrad
5678 u0_vis = ((gamma+t1_rad)*ddifc1 &
5679 & -(gamma-t1_rad)*ddifc2 &
5680 & -((k_drad-t1_rad)*sig__c &
5681 & +t0_rad )*a_rad0) &
5682 & / max(r__rad,
eps6)
5683 u0_vis = min(0.99,max(
eps6,u0_vis))
5684 absg_v = (1.-
albisv(ikl,ikv))*(a_rad0*exdrad &
5686 absv_v = (1.-u0_vis )- absg_v
5701 a_rad0 = 0.80 + 0.185 * e1prad
5702 t_rad0 = 1. - a_rad0
5713 re_rad = zv1fac *re_rad + zv_fac *
renirs
5714 tr_rad = zv1fac *tr_rad + zv_fac *
trnirs
5718 r__rad = (2. *re_rad + tr_rad) / 3.
5719 t__rad = ( re_rad + 2. *tr_rad) / 3.
5722 arggam = t1_rad*t1_rad-r__rad*r__rad
5723 arggam = max(arggam,
zer0)
5724 gamma = sqrt(arggam)
5725 ddifh1 = exp( gamma*
lai_sv(ikl,ikv))
5726 ddifh2 = exp(-gamma*
lai_sv(ikl,ikv))
5732 r0_rad = 0.5 *((re_rad+tr_rad) *k_drad &
5733 & +(re_rad-tr_rad) / 3.)
5734 t0_rad = 0.5 *((re_rad+tr_rad) *k_drad &
5735 & -(re_rad-tr_rad) / 3.)
5737 nu_rad = t1_rad-r__rad*
albisv(ikl,ikv)
5738 den_c1 = gamma*(ddifh1+ddifh2) &
5739 & +nu_rad*(ddifh1-ddifh2)
5741 densig = gamma*gamma - k_drad*k_drad
5742 dens_s = sign(
un_1,densig)
5743 dens_a = abs( densig)
5744 densig = max(
eps6,dens_a) * dens_s
5745 sig__c = (r__rad* r0_rad &
5746 & +t0_rad*(k_drad+t1_rad)) / densig
5748 ddifc1 = ((gamma-nu_rad)*(t_rad0-sig__c*a_rad0)*ddifh2 &
5749 & +((k_drad-nu_rad)* sig__c &
5750 & +t0_rad+r__rad *
albisv(ikl,ikv)) *a_rad0 *exdrad)&
5752 ddifc2 = t_rad0 - ddifc1-sig__c*a_rad0
5756 ddif_l = ddifc1*ddifh1 + ddifc2*ddifh2 &
5757 & + sig__c*a_rad0 *exdrad
5758 u0_nir = ((gamma+t1_rad)*ddifc1 &
5759 & -(gamma-t1_rad)*ddifc2 &
5760 & -((k_drad-t1_rad)*sig__c &
5761 & +t0_rad )*a_rad0) &
5762 & / max(r__rad,
eps6)
5763 u0_nir = min(0.99,max(
eps6,u0_nir))
5764 absgni = (1.-
albisv(ikl,ikv))*(a_rad0*exdrad &
5766 absvni = (1.-u0_nir )- absgni
5772 alb_sv(ikl,ikv) = (u0_vis+u0_nir)*0.5d0
5773 socasv(ikl,ikv) = (absv_v+absvni)*0.5d0
5774 sososv(ikl,ikv) = (absg_v+absgni)*0.5d0
5796 residu =
c1__sv(ikl,ikv) *exp( argexg) &
5797 & +
c2__sv(ikl,ikv) *exp(-argexg) &
5801 d_ddif =
c1__sv(ikl,ikv)*
gamasv(ikl,ikv)*exp( argexg) &
5804 dddifs = sign(
un_1,d_ddif)
5805 dddifa = abs( d_ddif)
5806 d_ddif = max(
eps6,dddifa) * dddifs
5909 integer :: ikl,ikv ,ist ,ist__s ,ist__w
5910 real(kind=real8) :: d_TaTs ,CD_m
5911 real(kind=real8) :: uustar ,thstar ,qqstar
5912 real(kind=real8) :: thstarv,thstars,thstara
5913 real(kind=real8) :: zeta ,zeta_S ,zeta_A
5914 real(kind=real8) :: fCdCdP = 3.09
5915 real(kind=real8) :: Cd_min = 1.05
5916 real(kind=real8) :: cCdUns = -5.00
5917 real(kind=real8) :: RapCm0
5929 ist__s = min(ist, 1)
5937 rapcm0 = rapcm0 *rapcm0
5939 cd_m = max(cd_min*rapcm0, &
5940 & fcdcdp*rapcm0*
vv__sv(ikl,ikv) ) &
5941 & *(1.+max(min(d_tats,
zer0),ccduns) &
5954 us__sv(ikl,ikv) = sqrt(uustar)
5967 thstarv = thstar +
tat_sv(ikl,ikv) *(0.608*qqstar)
5968 thstars = sign(
un_1,thstarv)
5969 thstara = abs( thstarv)
5970 thstarv = max(
eps6,thstara) *thstars
5977 zeta_s = sign(
un_1 ,zeta)
5979 zeta = zeta_s * max(
eps6 ,zeta_a)
6083 integer :: ikl,ikv ,icount
6087 real(kind=real8) :: VVa_OK
6088 real(kind=real8) :: Theta0 = 288.0
6093 real(kind=real8) :: uustar,thstar
6094 real(kind=real8) :: qqstar,ssstar
6095 real(kind=real8) :: thstarv,thstars
6096 real(kind=real8) :: thstara
6097 real(kind=real8) :: zetam ,zetah
6098 real(kind=real8) :: zeta0m,zeta0h
6099 real(kind=real8) :: psim_s,xpsimi
6100 real(kind=real8) :: psim_i,psim_z
6103 real(kind=real8) :: psih_s,xpsihi
6104 real(kind=real8) :: psih_i,psih_z
6105 real(kind=real8) :: psim_0,psih_0
6106 real(kind=real8) :: dustar,u0star
6108 real(kind=real8) :: sss__F,sss__N
6109 real(kind=real8) :: usuth0
6116 real(kind=real8) :: stab_s
6117 real(kind=real8) :: zetMAX = 1.e6
6118 real(kind=real8) :: coef_m = 20.
6119 real(kind=real8) :: coef_h = 15.
6200 u0star = max(
eps6,u0star)
6201 uustar = u0star * u0star
6202 thstar =
uts_sv(ikl,ikv) / u0star
6203 qqstar =
uqs_sv(ikl,ikv) / u0star
6204 ssstar =
uss_sv(ikl,ikv) / u0star
6212 thstarv = thstar + theta0 *(0.608*qqstar) &
6214 thstars = sign(
un_1,thstarv)
6215 thstara = abs( thstarv)
6216 thstarv = max(
eps6,thstara)*thstars
6221 lmo_sv(ikl,ikv) = theta0 * max(
eps6,uustar) &
6228 zetam = min(zetmax,zetah)
6232 & *sign(
un_1, zetam ))
6238 stab_s = max(
zer0,sign(
un_1,zetam))
6241 xpsimi = sqrt(sqrt(
un_1-coef_m*min(
zer0,zetam)))
6242 psim_i = 2. *log(
half*(
un_1+xpsimi)) &
6243 & +log(
half*(
un_1+xpsimi*xpsimi)) &
6245 psim_z = stab_s*psim_s+(1.-stab_s)*psim_i
6251 xpsimi = sqrt(sqrt(
un_1-coef_m*min(
zer0,zeta0m)))
6252 psim_i = 2. *log(
half*(
un_1+xpsimi)) &
6253 & +log(
half*(
un_1+xpsimi*xpsimi)) &
6255 psim_0 = stab_s*psim_s+(1.-stab_s)*psim_i
6307 &
write(6,6600)
z0m_sv(ikl,ikv) , psim_z &
6308 & ,
lmo_sv(ikl,ikv) , uustar &
6309 & ,
sqrcm0(ikl,ikv) , psim_0 &
6310 & ,
lmomom(ikl,ikv) , thstarv
6311 6600
format(/,
' ** SISVATeSBL *0 ' &
6312 & ,
' Z0m_SV = ',e12.4,
' psim_z = ',e12.4 &
6313 & ,
' LMO_SV = ',e12.4,
' uustar = ',e12.4 &
6315 & ,
' sqrCm0 = ',e12.4,
' psim_0 = ',e12.4 &
6316 & ,
' LMOmom = ',e12.4,
' thstarv = ',e12.4)
6325 vva_ok = max(0.000001,
vvasbl(ikl,ikv))
6327 sss__f = (
sqrcm0(ikl,ikv) - psim_z + psim_0)
6328 usuth0 = sss__n /sss__f
6461 stab_s = max(
zer0,sign(
un_1,zetam))
6464 xpsimi = sqrt(sqrt(
un_1-coef_m*min(
zer0,zetam)))
6465 psim_i = 2. *log(
half*(
un_1+xpsimi)) &
6466 & +log(
half*(
un_1+xpsimi*xpsimi)) &
6468 psim_z = stab_s*psim_s+(1.-stab_s)*psim_i
6471 xpsimi = sqrt(sqrt(
un_1-coef_m*min(
zer0,zeta0m)))
6472 psim_i = 2. *log(
half*(
un_1+xpsimi)) &
6473 & +log(
half*(
un_1+xpsimi*xpsimi)) &
6475 psim_0 = stab_s*psim_s+(1.-stab_s)*psim_i
6479 stab_s = max(
zer0,sign(
un_1,zetah))
6482 xpsihi = sqrt(sqrt(
un_1-coef_h*min(
zer0,zetah)))
6483 psih_i = 2. *log(
half*(
un_1+xpsihi))
6484 psih_z = stab_s*psih_s+(1.-stab_s)*psih_i
6487 xpsihi = sqrt(sqrt(
un_1-coef_h*min(
zer0,zeta0h)))
6488 psih_i = 2. *log(
half*(
un_1+xpsihi))
6489 psih_0 = stab_s*psih_s+(1.-stab_s)*psih_i
6510 dustar = max(dustar,abs(
us__sv(ikl,ikv)-u0star))
6667 integer :: ikl,ikv ,ist ,ist__s ,ist__w
6668 real(kind=real8) :: CD_m_0 ,CD_h_0 ,ram0 ,rah0 ,rahMIN
6669 real(kind=real8) :: d_TaTs ,RiB__D ,RiBulk
6670 real(kind=real8) :: bmstab ,Am1_FU ,Am2_FU ,Fm_Uns
6671 real(kind=real8) :: bhstab ,Ah1_FU ,Ah2_FU ,Fh_Uns,dFh_Un
6672 real(kind=real8) :: Aux_FS ,FStabl ,dFSdRi ,Stabil,Fm_loc
6673 real(kind=real8) :: uustar ,thstar ,qqstar
6674 real(kind=real8) :: thstarv,thstars,thstara
6675 real(kind=real8) :: zeta ,zeta_S ,zeta_A
6677 real(kind=real8) :: zetMAX = 4.28
6690 ist__s = min(ist, 1)
6697 ram0 = 1.0 / (cd_m_0 *
vv__sv(ikl,ikv))
6698 rah0 = 1.0 / (cd_h_0 *
vv__sv(ikl,ikv))
6717 bmstab = ist__s * (13.7 -0.34 /sqrt(cd_m_0)) &
6719 bmstab = 10. * bmstab * cd_m_0 &
6721 am1_fu = bmstab * sqrt(abs(ribulk))
6722 am2_fu = am1_fu +1.0 +10.*abs(ribulk)
6723 fm_uns = (am1_fu +1.0)/ am2_fu
6732 bhstab = ist__s * ( 6.3 -0.18 /sqrt(cd_h_0)) &
6734 bhstab = 10. * bhstab * cd_h_0 &
6736 ah1_fu = bhstab * sqrt(abs(ribulk))
6737 ah2_fu = ah1_fu +1.0 +10.*abs(ribulk)
6738 fh_uns = (ah1_fu +1.0)/ ah2_fu
6739 dfh_un =((ah1_fu +2.0)/(ah2_fu*ah2_fu)) * 5.
6743 aux_fs = 1.0 + 5.* ribulk
6744 fstabl = aux_fs*aux_fs
6745 dfsdri = aux_fs *10.
6749 stabil = sign(
un_1,d_tats)
6750 fm_loc = fstabl * max(
zer0,stabil) &
6751 & - fm_uns * min(
zer0,stabil)
6752 fh__sv(ikl,ikv) = fstabl * max(
zer0,stabil) &
6753 & - fh_uns * min(
zer0,stabil)
6754 dfh_sv(ikl,ikv) = dfsdri * max(
zer0,stabil) &
6755 & - dfh_un * min(
zer0,stabil)
6766 ram_sv(ikl,ikv) = ram0 * fm_loc
6768 rahmin = max(
rah_sv(ikl,ikv), abs(d_tats)*60./
za__sv(ikl,ikv))
6771 & * rahmin /
rah_sv(ikl,ikv)
6797 us__sv(ikl,ikv) = sqrt(uustar)
6810 thstarv = thstar +
tat_sv(ikl,ikv) *(0.608*qqstar &
6812 thstars = sign(
un_1,thstarv)
6813 thstara = abs( thstarv)
6814 thstarv = max(
eps6,thstara) *thstars
6821 zeta = min(zetmax,zeta)
6824 zeta_s = sign(
un_1 ,zeta)
6826 zeta = zeta_s * max(
eps6 ,zeta_a)
6952 integer :: nitmax = 5
6954 real(kind=real8) :: d_Tveg
6955 real(kind=real8) :: dTvMAX = 5.
6956 real(kind=real8) :: dHvdTv
6957 real(kind=real8) :: Hv_Tv0
6958 real(kind=real8) :: Hv_MAX
6959 real(kind=real8) :: Hv_MIN = 0.1
6960 real(kind=real8) :: Hswich
6961 real(kind=real8) :: tau_Ca
6962 real(kind=real8) :: IR_net
6963 real(kind=real8) :: EvFrac
6964 real(kind=real8) :: SnoMsk = 0.0
6965 real(kind=real8) :: den_qs,arg_qs
6967 real(kind=real8) :: qsatvg
6968 real(kind=real8) :: dqs_dT
6969 real(kind=real8) :: FacEvp,FacEvT
6970 real(kind=real8) :: Fac_Ev
6971 real(kind=real8) :: F_Stom
6972 real(kind=real8) :: R0Stom
6973 real(kind=real8) :: R_Stom
6974 real(kind=real8) :: LAI_OK
6975 real(kind=real8) :: rrCaOK,snCaOK
6976 real(kind=real8) :: dEvpOK
7021 tau_ca = 1. -
tau_sv(ikl,ikv)
7050 den_qs =
tvegsv(ikl,ikv) - 35.8
7051 arg_qs = 17.27 *(
tvegsv(ikl,ikv) -273.16) &
7053 qsatvg = .0038 * exp(arg_qs) *0.875
7054 dqs_dt = qsatvg * 4099.2 /(den_qs *den_qs)
7071 r_stom =(r0stom / max(
laiesv(ikl,ikv), r0stom/
stxdsv))&
7079 & + (1.-evfrac)*((1-snomsk)*
rrcasv(ikl,ikv) &
7084 facevp = fac_ev *evfrac /
rah_sv(ikl,ikv)
7086 devpdt(ikl,ikv) = facevp* dqs_dt
7087 facevt = fac_ev * (1.-evfrac) /(
rah_sv(ikl,ikv)&
7088 & +r_stom *
sigmsv(ikl,ikv))
7090 devtdt(ikl,ikv) = facevt* dqs_dt
7100 lai_ok = max(
zer0, &
7128 d_tveg = hv_tv0 / dhvdtv
7129 d_tveg = sign(
un_1,d_tveg) &
7130 & *min( abs(d_tveg) ,dtvmax)
7132 hv_max = max(hv_max,abs(hv_tv0 ))
7153 IF (hv_max.gt.hv_min.and.nit.lt.nitmax)
GO TO 101
7181 rrcaok = max(
rrcasv(ikl,ikv), 0.)
7182 sncaok = max(
sncasv(ikl,ikv), 0.)
7183 devpok = (rrcaok-
rrcasv(ikl,ikv) &
7188 & +(1.-snomsk)*
lhvh2o * devpok &
7337 real(kind=real8) :: deltak
7338 real(kind=real8) :: Exp_SA, Imp_SA
7339 real(kind=real8) :: ExpTOP, ImpTOP
7340 real(kind=real8) :: ExpHSL, ImpHSL
7341 real(kind=real8) :: epsi15= 1.0e-15
7342 integer :: is1 , is2
7350 integer :: ikl,ikv ,isl
7353 integer :: ist__s,ist__w,ist
7356 real(kind=real8) :: eps__3= 1.e-3
7357 real(kind=real8) :: etaMid,psiMid
7358 real(kind=real8) :: mu_eta
7359 real(kind=real8) :: mu_exp=-0.4343
7360 real(kind=real8) :: mu_min= 0.172
7361 real(kind=real8) :: mu_max= 2.000
7362 real(kind=real8) :: mu_aux
7363 real(kind=real8) :: dTSurf
7364 real(kind=real8) :: den_qs,arg_qs
7365 real(kind=real8) :: esat_i
7366 real(kind=real8) :: etaSol
7367 real(kind=real8) :: d__eta
7368 real(kind=real8) :: Elem_A
7369 real(kind=real8) :: ElemaA,ElemsA
7370 real(kind=real8) :: Elem_C
7371 real(kind=real8) :: ElemaC,ElemsC
7372 real(kind=real8) :: Ts_Min = 175.
7373 real(kind=real8) :: Ts_Max = 300.
7379 integer,
parameter :: nt_srf=10
7380 integer :: it_srf,itEuBk
7381 real(kind=real8) :: agpsrf,xgpsrf
7382 real(kind=real8) :: dt_srf,dt_ver
7476 ist__s = min(ist, 1)
7482 etamid = max(etamid,
eps6)
7485 mu_eta = 3.82 *(psimid)**mu_exp
7486 mu_eta = min(max(mu_eta, mu_min), mu_max)
7488 mu_eta = ist__s *mu_eta +ist__w *
vk_dsv
7512 ist__s = min(ist, 1)
7515 mu_eta = 3.82 *(psimid)**mu_exp
7516 mu_eta = min(max(mu_eta, mu_min), mu_max)
7518 mu_eta = ist__s *mu_eta +ist__w *
vk_dsv
7533 & *
dz_dsv( isl-1)/mu_eta)
7548 & * max(0,min(
isnosv(ikl,ikv)-isl+1,1))
7559 & 2. *mu_aux*
mu_sno(ikl,ikv)&
7561 & +
dzsnsv(ikl,ikv,isl-1)*mu_aux )
7652 & +elem_c *
tsisva(ikl,ikv,isl+1)) &
7653 & +(1.0d+0 -
explic *(elem_a+elem_c))*
tsisva(ikl,ikv,isl)&
7655 & *(
sex_sv(ikl,ikv,isl+1) &
7656 & -
sex_sv(ikl,ikv,isl )) &
7690 & *
tsissv(ikl,ikv,isl) &
7691 & *
tsissv(ikl,ikv,isl) &
7719 den_qs =
tsissv(ikl,ikv,isl)- 35.8
7720 arg_qs = 17.27 *(
tsissv(ikl,ikv,isl)-273.16) &
7722 qsatsg(ikl,ikv) = .0038 * exp(arg_qs) *0.875
7723 dqs_dt(ikl,ikv) =
qsatsg(ikl,ikv)* 4099.2 /(den_qs *den_qs)
7741 agpsrf =
dt__sv*( 1.0-xgpsrf ) &
7742 & /( 1.0-xgpsrf**nt_srf)
7757 dt_ver = dt_ver +dt_srf
7801 dt_srf = xgpsrf *dt_srf
7820 & +ist__w *
qsatsg(ikl,ikv)
7827 & +ist__w *
f_hshl(ikl,ikv) &
7852 elemsc = elem_c *
dtc_sv(ikl,ikv,isl)
7856 diag_c(ikl,ikv,isl) = -elemac *imp_sa
7858 & + elemsc *imphsl &
7862 & +(1.0d+0 -
explic *elem_a &
7863 & -exphsl *elemsc)*
tsisva(ikl,ikv,isl)&
7864 & +exp_sa *elemac *
tsisva(ikl,ikv,isl+1)
7867 & *(
sex_sv(ikl,ikv,isl+1) &
7868 & -
sex_sv(ikl,ikv,isl )) &
7894 elem_a =
dsdtsv(ikl,ikv) &
7899 elemsa = elem_a *
dtc_sv(ikl,ikv,jsl)
7900 diag_a(ikl,ikv,isn) = -elemsa *imp_sa
7905 & *
kz__sv(ikl,ikv,is1 ) &
7906 & /max(epsi15,
zza_sv(ikl,ikv,is1 )-
zza_sv(ikl,ikv,isl))
7910 term_d(ikl,ikv,isn) = elemsa *exp_sa *
tsisva(ikl,ikv,isn-1) &
7911 & +(1.0d+0 -elemaa *
explic &
7928 & *
kz__sv(ikl,ikv,isl+1) &
7935 & +(1.0d+0 -
explic *elem_a &
7954 & *
kz__sv(ikl,ikv,isl+1) &
7957 diag_c(ikl,ikv,isn) = -imptop *elem_c
7961 & +(1.0d+0 -
explic *elem_a &
7963 & +exptop *elem_c *
tsisva(ikl,ikv,isn+1)
7989 DO isl=-
nsoil+1,ishigh
8006 DO isl=-
nsoil+1,ishigh
8019 DO isl=ishigh-1,-
nsoil,-1
8061 & * min(abs(dtsurf),5.e-2*
dt__sv)
8263 integer :: ikl,ikv ,isl
8264 integer :: nitmax = 5
8266 real(kind=real8) :: psidif
8267 real(kind=real8) :: Root_W
8268 real(kind=real8) :: RootOK
8269 real(kind=real8) :: d_psiv
8270 real(kind=real8) :: dpvMAX = 20.
8271 real(kind=real8) :: BWater
8272 real(kind=real8) :: BW_MAX
8273 real(kind=real8) :: BW_MIN = 4.e-8
8274 real(kind=real8) :: dBwdpv
8275 real(kind=real8) :: Bswich
8276 real(kind=real8) :: EvFrac
8277 real(kind=real8) :: den_qs,arg_qs
8279 real(kind=real8) :: qsatvg
8280 real(kind=real8) :: EvTran
8281 real(kind=real8) :: dEdpsi
8282 real(kind=real8) :: Fac_Ev,FacEvT
8283 real(kind=real8) :: denomE
8284 real(kind=real8) :: F_Stom
8285 real(kind=real8) :: dFdpsi
8286 real(kind=real8) :: denomF
8287 real(kind=real8) :: F___OK
8288 real(kind=real8) :: R0Stom
8289 real(kind=real8) :: R_Stom
8290 real(kind=real8) :: dRdpsi
8291 real(kind=real8) :: numerR
8340 & +
psi_sv( ikl,ikv ,isl))
8347 rootok = max(
zer0, sign(
un_1,psidif))
8348 rootsv(ikl,ikv,isl) = root_w*max(
zer0,psidif)
8364 den_qs =
tvegsv(ikl,ikv) - 35.8
8365 arg_qs = 17.27 *(
tvegsv(ikl,ikv) -273.16) &
8367 qsatvg = .0038 * exp(arg_qs) *0.875
8385 f___ok = max(
zer0,sign(
un_1,denomf))
8386 denomf = max(
eps6, denomf)
8388 dfdpsi = -f_stom / denomf
8391 r_stom = numerr * f_stom
8393 drdpsi = r_stom * dfdpsi
8402 facevt = fac_ev * (1.-evfrac) / denome
8403 evtran = facevt *(qsatvg -
qat_sv(ikl,ikv))
8404 dedpsi =(evtran / denome) * drdpsi
8410 bwater =(
plantw(ikl,ikv) &
8411 & - evtran )* f___ok
8413 bswich = max(
zer0, &
8414 & sign(
un_1, abs(bwater) &
8421 dbwdpv =
dpdpsi(ikl,ikv) &
8423 dbwdpv = sign(
un_1, dbwdpv) &
8424 & * max(
eps_21,abs(dbwdpv))
8430 d_psiv = bwater / dbwdpv
8431 d_psiv = sign(
un_1,d_psiv) &
8432 & *min( abs(d_psiv) ,dpvmax)
8434 bw_max = max(bw_max,abs(bwater))
8451 IF (bw_max.gt.bw_min.and.nit.lt.nitmax)
GO TO 101
8579 integer :: ikl,ikv ,isn
8586 real(kind=real8) :: dTSnow
8587 real(kind=real8) :: OKmelt
8588 real(kind=real8) :: EnMelt
8589 real(kind=real8) :: SnHLat
8592 real(kind=real8) :: dzVap0,dzVap1
8593 real(kind=real8) :: rosDry
8594 real(kind=real8) :: PorVol
8595 real(kind=real8) :: PClose
8599 real(kind=real8) :: rWater
8600 real(kind=real8) :: drrNEW
8601 real(kind=real8) :: rdzNEW
8602 real(kind=real8) :: rdzsno
8603 real(kind=real8) :: EnFrez
8604 real(kind=real8) :: WaFrez
8605 real(kind=real8) :: RapdOK
8606 real(kind=real8) :: ThinOK
8607 real(kind=real8) :: dzepsi = 0.0001
8608 real(kind=real8) :: dz_Min = 1.e-3
8612 real(kind=real8) :: z_Melt
8613 real(kind=real8) :: rusnew
8617 real(kind=real8) :: zc,zt
8622 integer :: isnnew,isinew,isnUpD,isnitr
8765 & *
dzsnsv(ikl,ikv,isn) &
8780 dzmelt(ikl,ikv) = enmelt / max(snhlat,
eps6 )
8783 & -
dzsnsv(ikl,ikv ,isn)))) &
8784 & *min(1 , max(0 ,1+
isnosv(ikl,ikv)-isn))
8806 & *max(0,2-
istosv(ikl,ikv,isn) )
8808 & int(1.-okmelt) *
istosv(ikl,ikv,isn) &
8809 & +int(okmelt) *((1-k_face) *
istdsv(2) &
8817 layrok = min( 1, max(0 ,
isnosv(ikl,ikv)-isn+1))
8819 wafrez = -( enfrez * layrok /
lhfh2o)
8825 rdznew = wafrez + rdzsno
8839 rosdry =(1. -
eta_sv(ikl,ikv,isn))*
ro__sv(ikl,ikv,isn)
8840 porvol = 1. - rosdry /
rhoice
8841 porvol = max(porvol ,
zer0 )
8850 & + rosdry *
dzsnsv(ikl,ikv,isn)
8851 eta_sv(ikl,ikv,isn) = rwater / max(
eps6,rdznew)
8856 pclose = max(
zer0, &
8860 & + max(
ispisv(ikl,ikv),isn) *int(pclose)
8862 & min(1 ,
ispisv(ikl,ikv) &
8885 & * max(0 , min(1 ,
isnosv(ikl,ikv) +1 -isn ))
8886 isnupd = max(isnupd, isnnew)
8887 isnitr = max(isnitr, isnnew)
8888 isinew = isn*isnupd *max(0, 1-isinew) &
8896 dzsnsv(ikl,ikv,isn+isnnew) =(1-isnnew)*
dzsnsv(ikl,ikv,isn+isnnew)
8897 ro__sv(ikl,ikv,isn+isnnew) =(1-isnnew)*
ro__sv(ikl,ikv,isn+isnnew)
8898 eta_sv(ikl,ikv,isn+isnnew) =(1-isnnew)*
eta_sv(ikl,ikv,isn+isnnew)
8899 g1snsv(ikl,ikv,isn+isnnew) =(1-isnnew)*
g1snsv(ikl,ikv,isn+isnnew)
8900 g2snsv(ikl,ikv,isn+isnnew) =(1-isnnew)*
g2snsv(ikl,ikv,isn+isnnew)
8904 & -isnupd *max(0,min(
ispisv(ikl,ikv)-isinew,1))
8908 IF (isnitr.GT.0)
GO TO 1000
8918 nh = nh + isn* min(
istosv(ikl,ikv,isn)-1,1)*max(0,1-nh)
8924 & * max(0,min(1,nh+1-isn))
8979 & * min(1,
ispisv(ikl,ikv))
9046 & *
hls_sv(ikl,ikv) * min(isn , 1 ) &
9049 dzvap1= min(
zer0,
dzsnsv(ikl,ikv,isn) + dzvap0)
9124 lastok = min(1 , max(0 ,
iicesv(ikl,ikv)-
isnosv(ikl,ikv)+2) &
9126 & +min(1 ,
isnosv(ikl,ikv)) )
9129 z_melt = lastok *rapdok*thinok
9131 z_melt = z_melt *
dzsnsv(ikl,ikv,1)
9495 logical :: vector = .
true.
9497 integer :: isn ,isnp
9499 real(kind=real8) :: G1_bak,G2_bak
9500 real(kind=real8) :: dTsndz
9501 real(kind=real8) :: sWater
9502 real(kind=real8) :: exp1Wa
9503 real(kind=real8) :: dDENDR
9504 real(kind=real8) :: DENDRn
9505 real(kind=real8) :: SPHERn
9506 real(kind=real8) :: Wet_OK
9507 real(kind=real8) :: OK__DE
9508 real(kind=real8) :: OK__wd
9509 real(kind=real8) :: G1__wd
9510 real(kind=real8) :: G2__wd
9511 real(kind=real8) :: OKlowT
9512 real(kind=real8) :: facVap
9513 real(kind=real8) :: OK_ldd
9514 real(kind=real8) :: G1_ldd
9515 real(kind=real8) :: G2_ldd
9516 real(kind=real8) :: DiamGx
9517 real(kind=real8) :: DiamOK
9518 real(kind=real8) :: No_Big
9519 real(kind=real8) :: dSPHER
9520 real(kind=real8) :: SPHER0
9521 real(kind=real8) :: SPHbig
9522 real(kind=real8) :: G1_lds
9523 real(kind=real8) :: OK_mdT
9524 real(kind=real8) :: OKmidT
9525 real(kind=real8) :: OKhigT
9526 real(kind=real8) :: OK_mdd
9527 real(kind=real8) :: G1_mdd
9528 real(kind=real8) :: G2_mdd
9529 real(kind=real8) :: G1_mds
9530 real(kind=real8) :: OK_hdd
9531 real(kind=real8) :: G1_hdd
9532 real(kind=real8) :: G2_hdd
9533 real(kind=real8) :: OK_hds
9534 real(kind=real8) :: G1_hds
9535 real(kind=real8) :: T1__OK,T2__OK
9536 real(kind=real8) :: T3_xOK,T3__OK,T3_nOK
9537 real(kind=real8) :: ro1_OK,ro2_OK
9538 real(kind=real8) :: dT1_OK,dT2_OK,dT3xOK,dT3_OK
9539 real(kind=real8) :: dT4xOK,dT4_OK,dT4nOK,AngSno
9540 real(kind=real8) :: G2_hds,SphrOK,HISupd
9541 real(kind=real8) :: H1a_OK,H1b_OK,H1__OK
9542 real(kind=real8) :: H23aOK,H23bOK,H23_OK
9543 real(kind=real8) :: H2__OK,H3__OK
9544 real(kind=real8) :: H45_OK,H4__OK,H5__OK
9545 real(kind=real8) :: ViscSn,OK_Liq,OK_Ang,OKxLiq
9546 real(kind=real8) :: dSnMas,dzsnew,rosnew,rosmax
9548 real(kind=real8) :: epsi5 = 1.0e-5
9549 real(kind=real8) :: epsi15 = 1.0e-15
9551 real(kind=real8) :: vdiam2 = 0.5
9552 real(kind=real8) :: vdiam3 = 3.0
9553 real(kind=real8) :: vdiam4 = 2.0
9554 real(kind=real8) :: vsphe1 = 1.0
9555 real(kind=real8) :: vsphe2 = 1.0e9
9556 real(kind=real8) :: vsphe3 = 0.5
9557 real(kind=real8) :: vsphe4 = 0.1
9561 real(kind=real8) :: vtang1 = 40.0
9562 real(kind=real8) :: vtang2 = 6.0
9563 real(kind=real8) :: vtang3 = 22.0
9564 real(kind=real8) :: vtang4 = 0.7
9565 real(kind=real8) :: vtang5 = 0.3
9566 real(kind=real8) :: vtang6 = 6.0
9567 real(kind=real8) :: vtang7 = 1.0
9568 real(kind=real8) :: vtang8 = 0.8
9569 real(kind=real8) :: vtang9 = 16.0
9570 real(kind=real8) :: vtanga = 0.2
9571 real(kind=real8) :: vtangb = 0.2
9572 real(kind=real8) :: vtangc = 18.0
9574 real(kind=real8) :: vrang1 = 0.40
9575 real(kind=real8) :: vrang2 = 0.15
9577 real(kind=real8) :: vgang1 = 0.70
9578 real(kind=real8) :: vgang2 = 0.25
9579 real(kind=real8) :: vgang3 = 0.40
9580 real(kind=real8) :: vgang4 = 0.50
9581 real(kind=real8) :: vgang5 = 0.10
9582 real(kind=real8) :: vgang6 = 0.15
9583 real(kind=real8) :: vgang7 = 0.10
9584 real(kind=real8) :: vgang8 = 0.55
9585 real(kind=real8) :: vgang9 = 0.65
9586 real(kind=real8) :: vganga = 0.20
9587 real(kind=real8) :: vgangb = 0.85
9588 real(kind=real8) :: vgangc = 0.15
9590 real(kind=real8) :: vgran6 = 51.
9591 real(kind=real8) :: vtelv1 = 5.e-1
9592 real(kind=real8) :: vvap1 = -6.e3
9593 real(kind=real8) :: vvap2 = 0.4
9594 real(kind=real8) :: vgrat1 = 0.05
9595 real(kind=real8) :: vgrat2 = 0.15
9596 real(kind=real8) :: vfi = 0.09
9598 real(kind=real8) :: vvisc1 = 0.70
9599 real(kind=real8) :: vvisc2 = 1.11e5
9600 real(kind=real8) :: vvisc3 = 23.00
9601 real(kind=real8) :: vvisc4 = 0.10
9602 real(kind=real8) :: vvisc5 = 1.00
9603 real(kind=real8) :: vvisc6 = 2.00
9604 real(kind=real8) :: vvisc7 = 10.00
9605 real(kind=real8) :: rovisc = 0.25
9606 real(kind=real8) :: vdz3 = 0.30
9608 real(kind=real8) :: OK__ws
9609 real(kind=real8) :: G1__ws
9610 real(kind=real8) :: G2__ws
9611 real(kind=real8) :: husi_0 = 20.
9612 real(kind=real8) :: husi_1 = 0.23873
9613 real(kind=real8) :: husi_2 = 4.18880
9614 real(kind=real8) :: husi_3 = 0.33333
9615 real(kind=real8) :: vtail1 = 1.28e-08
9616 real(kind=real8) :: vtail2 = 4.22e-10
9617 real(kind=real8) :: frac_j
9619 real(kind=real8) :: vdent1 = 2.e8
9620 integer :: nvdent1 = 3
9621 integer :: nvdent2 = 16
9656 & *(1. -
eta_sv(ikl,ikv,isn))
9658 & *
ro__sv(ikl,ikv,isn) &
9668 isnp = min(isn+1,
isnosv(ikl,ikv))
9670 dtsndz = abs( (
tsissv(ikl,ikv,isnp)-
tsissv(ikl,ikv,isn-1)) *2.e-2&
9692 exp1wa= swater**nvdent1
9693 ddendr=max(exp1wa/nvdent2,vdent1*exp(vvap1/
tf_sno))
9703 dendrn= dendrn -ddendr *frac_j
9704 sphern= sphern +ddendr *frac_j
9707 & sign(
un_1, dendrn &
9710 g1__wd=ok__de * ( -dendrn*
g1_dsv) &
9713 & +(1.-ok__de)*(
adsdsv-min(sphern,vsphe1))
9726 sphern= sphern +ddendr *frac_j
9734 & *(husi_2 *(
g2snsv(ikl,ikv,isn)/husi_0)**3 &
9735 & +(vtail1 +vtail2 *exp1wa )*
dt__sv)) &
9746 & sign(
un_1, vgrat1 &
9749 facvap=exp(vvap1/
tsissv(ikl,ikv,isn))
9759 dendrn= dendrn-vdent1*facvap*frac_j
9760 sphern= sphern+vsphe2*facvap*frac_j
9763 & sign(
un_1, dendrn &
9766 g1_ldd= ok__de * ( -dendrn*
g1_dsv) &
9769 & +(1.-ok__de)*(
adsdsv-min(sphern,vsphe1))
9774 diamgx=
g2snsv(ikl,ikv,isn)*0.1
9776 istook=min( abs(
istosv(ikl,ikv,isn)- &
9778 diamok=max(
zer0, sign(
un_1,vdiam2-diamgx))
9779 no_big= istook+diamok
9780 no_big=min(no_big,
un_1)
9782 dspher= vsphe2*facvap*frac_j
9783 spher0= sphern+dspher
9784 sphbig= sphern+dspher &
9786 sphbig= min(vsphe3,sphbig)
9787 sphern= no_big * spher0 &
9788 & + (1.-no_big)* sphbig
9791 sphern= max(epsi15,sphern)
9799 & sign(
un_1, vgrat2 &
9801 okmidt= ok_mdt *(1.-oklowt)
9802 okhigt= (1. -ok_mdt) *(1.-oklowt)
9804 facvap=vdent1*exp(vvap1/
tsissv(ikl,ikv,isn)) &
9805 & * (1.e2 *dtsndz)**vvap2
9815 dendrn= dendrn - facvap*frac_j
9816 sphern= sphern - facvap*frac_j
9819 & sign(
un_1, dendrn &
9822 g1_mdd= ok__de * ( -dendrn*
g1_dsv) &
9830 sphern= sphern-facvap*frac_j
9835 facvap=vdent1*exp(vvap1/
tsissv(ikl,ikv,isn)) &
9836 & * (1.e2 *dtsndz)**vvap2
9846 dendrn= dendrn - facvap*frac_j
9847 sphern= sphern - facvap*frac_j
9850 & sign(
un_1, dendrn &
9853 g1_hdd= ok__de * ( -dendrn*
g1_dsv) &
9866 sphern= sphern - facvap*frac_j
9875 t3__ok = t3_xok * (1. - t2__ok)
9876 t3_nok = (1. - t3_xok) * (1. - t2__ok)
9879 dt1_ok = max(
zer0,sign(
un_1,vgang1-dtsndz ))
9880 dt2_ok = max(
zer0,sign(
un_1,vgang2-dtsndz ))
9881 dt3xok = max(
zer0,sign(
un_1,vgang3-dtsndz ))
9882 dt3_ok = dt3xok * (1. - dt2_ok)
9883 dt4xok = max(
zer0,sign(
un_1,vgang4-dtsndz ))
9884 dt4_ok = dt4xok * (1. - dt3_ok) &
9886 dt4nok = (1. - dt4xok) * (1. - dt3_ok) &
9893 & *(t2__ok*(vtang4+vtang5*(
tf_sno -
tsissv(ikl,ikv,isn)) &
9895 & +t3__ok*(vtang7-vtang8*(
tf_sno-vtang2-
tsissv(ikl,ikv,isn)) &
9897 & +t3_nok*(vtanga-vtangb*(
tf_sno-vtang3-
tsissv(ikl,ikv,isn)) &
9903 & *( ro2_ok*(1. - (
ro_dry(ikl,ikv,isn)-vrang2) &
9904 & /(vrang1-vrang2)) &
9909 & *( dt1_ok*(dt2_ok*vgang5*(dtsndz-vgang6) &
9910 & /(vgang2-vgang6) &
9913 & +dt4nok*vgangb ) &
9916 & * dt1_ok*(dt3_ok*vgang8*(dtsndz-vgang2) &
9917 & /(vgang3-vgang2) &
9918 & +dt4_ok*vganga*(dtsndz-vgang3) &
9919 & /(vgang4-vgang3) &
9920 & +dt4nok*vgangc*(dtsndz-vgang4) &
9923 g2_hds =
g2snsv(ikl,ikv,isn) + 1.d2 *angsno*vfi *frac_j
9929 g1_bak =
g1snsv(ikl,ikv,isn)
9930 g2_bak =
g2snsv(ikl,ikv,isn)
9932 g1snsv(ikl,ikv,isn) = wet_ok * ( ok__wd *g1__wd &
9933 & +(1.-ok__wd)* ok__ws *g1__ws &
9934 & +(1.-ok__wd)*(1.-ok__ws)*g1_bak) &
9936 & *( oklowt *( ok_ldd *g1_ldd &
9937 & +(1.-ok_ldd) *g1_lds) &
9938 & + okmidt *( ok_mdd *g1_mdd &
9939 & +(1.-ok_mdd) *g1_mds) &
9940 & + okhigt *( ok_hdd *g1_hdd &
9941 & +(1.-ok_hdd)* ok_hds *g1_hds &
9942 & +(1.-ok_hdd)*(1.-ok_hds)*g1_bak))
9945 IF (
g1snsv(ikl,ikv,isn).GE.0.0.AND.
g1snsv(ikl,ikv,isn)<0.1) &
9947 & g2_hds =
g2snsv(ikl,ikv,isn) + 1.d1 *angsno*vfi *frac_j
9951 g2snsv(ikl,ikv,isn) = wet_ok * ( ok__wd *g2__wd &
9952 & +(1.-ok__wd)* ok__ws *g2_bak &
9953 & +(1.-ok__wd)*(1.-ok__ws)*g2__ws) &
9955 & *( oklowt *( ok_ldd *g2_ldd &
9956 & +(1.-ok_ldd) *g2_bak) &
9957 & + okmidt *( ok_mdd *g2_mdd &
9958 & +(1.-ok_mdd) *g2_bak) &
9959 & + okhigt *( ok_hdd *g2_hdd &
9960 & +(1.-ok_hdd)* ok_hds *g2_bak &
9961 & +(1.-ok_hdd)*(1.-ok_hds)*g2_hds))
10080 h1b_ok = 1 - min(1 ,
istosv(ikl,ikv,isn))
10081 h1__ok = h1a_ok*h1b_ok
10083 & +
g1snsv(ikl,ikv,isn)))
10087 h23_ok = h23aok*h23bok
10088 h2__ok = 1 - min(1 ,
istosv(ikl,ikv,isn))
10089 h3__ok = 1 - min(1 , abs(
istosv(ikl,ikv,isn)-
istdsv(1)))
10091 h4__ok = 1 - min(1 , abs(
istosv(ikl,ikv,isn)-
istdsv(2)))
10092 h5__ok = 1 - min(1 , abs(
istosv(ikl,ikv,isn)-
istdsv(3)))
10095 & sphrok*(h1__ok *
istdsv(1) &
10096 & +(1.-h1__ok)* h23_ok *(h2__ok*
istdsv(2) &
10098 & +(1.-h1__ok)*(1.-h23_ok) *h45_ok*(h4__ok*
istdsv(4) &
10100 istosv(ikl,ikv,isn)=int(hisupd) + &
10101 & int(1.-min(
un_1,hisupd)) *
istosv(ikl,ikv,isn)
10115 IF (
g1snsv(ikl,ikv,isn).ge.0.)
THEN
10116 IF(
g1snsv(ikl,ikv,isn).lt.vsphe4.and.
istosv(ikl,ikv,isn).eq.0)
THEN
10119 &
etasno(ikl,ikv,isn)/
dzsnsv(ikl,ikv,isn).gt.vtelv1)
THEN
10120 IF (
istosv(ikl,ikv,isn).eq.0) &
10150 viscsn = vvisc1 *vvisc2 &
10151 & *exp(vvisc3 *
ro_dry(ikl,ikv,isn) &
10153 & *
ro_dry(ikl,ikv,isn)/rovisc
10174 & * max(0 ,sign(1 ,
istosv(ikl,ikv,isn) &
10177 & viscsn*( ok_liq/(vvisc5+vvisc6*
etasno(ikl,ikv,isn) &
10180 & *( ok_ang*exp(min(
adsdsv,
g2snsv(ikl,ikv,isn)-vdiam4)) &
10182 & *( okxliq* vvisc7 &
10193 & /max(viscsn ,
eps6)))
10195 & /max(
eps6,dzsnew)
10196 rosmax = 1.d0 /( (1.d0 -
eta_sv(ikl,ikv,isn)) /
rhoice &
10198 rosnew = min(rosnew ,rosmax)
10200 & /max(
eps6,rosnew)
10201 ro__sv(ikl,ikv,isn)= rosnew
10395 integer :: ist ,ikl,ikv
10396 integer :: ikm ,ikp
10398 integer :: ist__s,ist__w
10406 real(kind=real8) :: etaMid
10407 real(kind=real8) :: Dhydif
10409 real(kind=real8) :: Khyd_f
10410 real(kind=real8) :: Khydav
10412 real(kind=real8) :: Wg_MAX
10413 real(kind=real8) :: SatRat
10415 real(kind=real8) :: Elem_A
10416 real(kind=real8) :: Elem_B
10417 real(kind=real8) :: Elem_C
10418 real(kind=real8) :: FreeDr
10511 ist__s = min(ist, 1)
10512 ist__w = 1 - ist__s
10516 dhydif = ist__s * dhydif &
10519 khydav = ist__s *
ks_dsv(ist) &
10522 wg_max =
rhowat *dhydif &
10676 ist__s = min(ist, 1)
10677 ist__w = 1 - ist__s
10685 & *(etamid **(
bchdsv(ist)+2.))
10698 dhydtz(ikl,ikv,isl) = 0.0
10723 elem_a =
dhydtz(ikl,ikv,isl) &
10725 elem_b = - (
dhydtz(ikl,ikv,isl) &
10726 & +
dhydtz(ikl,ikv,isl+1) &
10729 elem_c =
dhydtz(ikl,ikv,isl+1) &
10758 freedr =
iwafsv(ikl,ikv) * min(ist,1)
10763 elem_b = - (
dhydtz(ikl,ikv,isl+1) &
10766 elem_c =
dhydtz(ikl,ikv,isl+1) &
10768 diag_a(ikl,ikv,isl) = 0.
10791 elem_a =
dhydtz(ikl,ikv,isl) &
10793 elem_b = - (
dhydtz(ikl,ikv,isl) &
10800 diag_c(ikl,ikv,isl) = 0.
10856 DO isl=-1,-
nsoil,-1
10878 & + max(
zer0,satrat)
10890 DO isl= 0,-
nsoil,-1
10915 freedr =
iwafsv(ikl,ikv) * min(ist,1)
11172 character(len=6) :: labWEq
11179 integer :: ikl,ikv ,isn
11180 real(kind=real8) :: SnoWEQ,IceWEQ
11188 open(
unit=45,status=
'unknown',file=
'SISVAT_wEq.ve')
11202 snoweq = snoweq +
ro__sv(ikl,ikv,isn) *
dzsnsv(ikl,ikv,isn)
11211 IF (
iicesv(ikl,ikv).gt.0)
THEN
11214 DO isn = 1 ,
iicesv(ikl,ikv)
11215 iceweq = iceweq +
ro__sv(ikl,ikv,isn) *
dzsnsv(ikl,ikv,isn)
11224 IF (istart.eq.1)
THEN
11227 45
format(a18,10(
'-'),
'Pt.',3i4,60(
'-'))
11230 write(45,450) labweq,iceweq,
iicesv(ikl,ikv),snoweq &
11231 & ,iceweq+snoweq,
isnosv(ikl,ikv) &
11235 450
format(a6,3
x,
' I+S =',f11.4,
'(',i2,
') +',f11.4,
' =', &
11236 & f11.4,
'(',i2,
')', &
11237 &
' drr =', f7.4, &
11238 &
' dsn =', f7.4, &
real(kind=real8), dimension(:,:), allocatable, save hs___d
real(kind=real8), dimension(:,:), allocatable, save brossv
real(kind=real8), dimension(:,:), allocatable, save sol_sv
real(kind=real8), dimension(:,:), allocatable, save g2agr1
real(kind=real8), dimension(:,:), allocatable, save vv__sv
real(kind=real8), dimension(:,:), allocatable, save rrmxsv
real(kind=real8), dimension(0:nvgt), save stodsv
real(kind=real8), dimension(:,:,:), allocatable, save dtc_sv
real(kind=real8), save cpdair
real(kind=real8), save ea_min
real(kind=real8), dimension(:,:), allocatable, save alb0sv
real(kind=real8), dimension(:,:), allocatable, save hl___d
real(kind=real8), save dr_2sn
real(kind=real8), dimension(:,:), allocatable, save qat_sv
real(kind=real8), dimension(:,:), allocatable, save tsurf0
real(kind=real8), dimension(:,:,:), allocatable, save diag_a
integer, dimension(:,:), allocatable, save nosnow
real(kind=real8), dimension(0:nvgt), save trnird
real(kind=real8), dimension(:,:), allocatable, save etanew
real(kind=real8), dimension(:,:), allocatable, save devtdt
real(kind=real8), save difsol
real(kind=real8), dimension(:,:), allocatable, save t_agr2
real(kind=real8), save rcd10n
real(kind=real8), dimension(:), allocatable, save dzi_sv
real(kind=real8), dimension(:,:), allocatable, save fsisva
real(kind=real8), dimension(:,:,:), allocatable, save zdepos
real(kind=real8), dimension(:,:), allocatable, save c1__sv
real(kind=real8), dimension(:,:), allocatable, save z0e_sv
real(kind=real8), save sncamx
real(kind=real8), dimension(:,:,:), allocatable, save zza_sv
real(kind=real8), dimension(:,:), allocatable, save z0h_sv
real(kind=real8), dimension(:,:,:), allocatable, save term_d
real(kind=real8), dimension(:,:,:), allocatable, save zzsnsv
real(kind=real8), dimension(:,:), allocatable, save bufssv
real(kind=real8), dimension(:,:), allocatable, save dzmelt
real(kind=real8), dimension(:,:), allocatable, save agrege
real(kind=real8), dimension(:,:), allocatable, save qsnosv
integer, dimension(:,:), allocatable, save nlay_s
integer, dimension(:), allocatable, save ii__ap
real(kind=real8), dimension(:,:), allocatable, save g2agr2
real(kind=real8), dimension(:,:,:), allocatable, save mu__dz
real(kind=real8), save un_1
real(kind=real8), dimension(:,:), allocatable, save irs__d
real(kind=real8), dimension(:,:), allocatable, save irsokl
integer, dimension(:,:), allocatable, save i_thin
real(kind=real8), dimension(:,:), allocatable, save sososv
real(kind=real8), dimension(:,:), allocatable, save sext_1
real(kind=real8), dimension(:,:), allocatable, save irupsv
real(kind=real8), dimension(0:nsot), save psidsv
real(kind=real8), dimension(-nsol:0), save dz_dsv
real(kind=real8), dimension(:,:,:), allocatable, save diag_a
real(kind=real8), dimension(:,:), allocatable, save rrcasv
real(kind=real8), dimension(:,:), allocatable, save t_agr2
subroutine sisvat_weq(labWEq, istart)
real(kind=real8), save half
real(kind=real8), dimension(:,:), allocatable, save us__sv
real(kind=real8), dimension(:,:), allocatable, save agagr1
real(kind=real8), dimension(:,:), allocatable, save hss_sv
real(kind=real8), dimension(:,:), allocatable, save dsdtsv
real(kind=real8), dimension(:,:), allocatable, save tsrfsv
real(kind=real8), dimension(:,:), allocatable, save dfh_sv
real(kind=real8), dimension(:,:), allocatable, save rcdmsv
real(kind=real8), dimension(0:nvgt), save trvisd
real(kind=real8), dimension(:,:), allocatable, save dsn_sv
real(kind=real8), dimension(:,:), allocatable, save mu_sno
real(kind=real8), dimension(:,:), allocatable, save swf_sv
real(kind=real8), dimension(:,:), allocatable, save g1agr1
real(kind=real8), dimension(:,:), allocatable, save xdrift
real(kind=real8), save reviss
real(kind=real8), dimension(0:nvgt), save pr_dsv
real(kind=real8), save pscdsv
real(kind=real8), save df_3sn
real(kind=real8), save stxdsv
real(kind=real8), dimension(:,:), allocatable, save sigcsv
real(kind=real8), dimension(:,:), allocatable, save dbs_sv
real(kind=real8), dimension(:,:), allocatable, save rht_sv
real(kind=real8), dimension(:,:,:), allocatable, save ro_dry
real(kind=real8), dimension(:,:), allocatable, save dpdpsi
real(kind=real8), dimension(:,:), allocatable, save fac_dt
real(kind=real8), dimension(:,:), allocatable, save tbr_sv
real(kind=real8), save lhfh2o
real(kind=real8), dimension(:,:), allocatable, save dta_ts
real(kind=real8), dimension(:,:), allocatable, save etagr2
real(kind=real8), dimension(:,:), allocatable, save ram_sv
real(kind=real8), dimension(:,:), allocatable, save coalb1
real(kind=real8), save p0_kap
real(kind=real8), dimension(:,:), allocatable, save dbsaux
integer, dimension(:), allocatable, save islmsv
real(kind=real8), dimension(:,:,:), allocatable, save khydsv
real(kind=real8), dimension(:,:,:), allocatable, save sex_sv
real(kind=real8), dimension(:,:), allocatable, save z0hnsv
real(kind=real8), dimension(:), allocatable, save dzavsv
real(kind=real8), dimension(:,:), allocatable, save albssv
real(kind=real8), dimension(:,:), allocatable, save dhsdtv
real(kind=real8), dimension(:,:), allocatable, save dirsdt
real(kind=real8), save dt__sv
real(kind=real8), dimension(0:nsot), save s2__sv
real(kind=real8), dimension(:,:,:), allocatable, save ro__sv
integer, dimension(:,:), allocatable, save isagr1
real(kind=real8), dimension(:,:), allocatable, save rusnsv
real(kind=real8), dimension(:,:), allocatable, save plantw
real(kind=real8), dimension(:,:), allocatable, save hsv_sv
real(kind=real8), dimension(:,:), allocatable, save roagr2
real(kind=real8), save so2dsv
real(kind=real8), dimension(:,:), allocatable, save c2__sv
real(kind=real8), save g1_dsv
real(kind=real8), save pinmbr
real(kind=real8), dimension(:,:,:), allocatable, save roa_sv
real(kind=real8), dimension(:,:), allocatable, save z0mnsv
real(kind=real8), dimension(:,:), allocatable, save psiarg
real(kind=real8), dimension(:,:), allocatable, save zwecsv
real(kind=real8), dimension(:,:), allocatable, save sosokl
real(kind=real8), dimension(:,:), allocatable, save rhu_av
real(kind=real8), dimension(:,:), allocatable, save tveg_0
real(kind=real8), dimension(:,:), allocatable, save lx_h2o
integer, dimension(:,:), allocatable, save lwrisv
real(kind=real8), dimension(:,:,:), allocatable, save saltsi
real(kind=real8), save eps_21
real(kind=real8), save explic
real(kind=real8), dimension(:,:), allocatable, save crilai
real(kind=real8), dimension(:,:), allocatable, save etabak
integer, dimension(5), save istdsv
real(kind=real8), dimension(0:nvgt), save trnirl
real(kind=real8), dimension(0:nsot), save rocssv
real(kind=real8), dimension(:,:), allocatable, save snmass
real(kind=real8), save vonkrm
real(kind=real8), dimension(:,:), allocatable, save f_hshl
real(kind=real8), dimension(:,:,:), allocatable, save aux__p
real(kind=real8), save facsbs
real(kind=real8), dimension(:,:,:), allocatable, save aux__q
real(kind=real8), dimension(:,:), allocatable, save albisv
real(kind=real8), dimension(:,:), allocatable, save dridts
real(kind=real8), dimension(:,:), allocatable, save dzagr2
real(kind=real8), save adsdsv
real(kind=real8), dimension(0:nvgt), save trvisl
real(kind=real8), dimension(:,:), allocatable, save usthsv
real(kind=real8), dimension(:,:,:), allocatable, save tsissv
real(kind=real8), dimension(:,:), allocatable, save tau_sv
real(kind=real8), save sheabs
real(kind=real8), dimension(:,:), allocatable, save glf0sv
real(kind=real8), dimension(:,:), allocatable, save psi
real(kind=real8), dimension(:,:), allocatable, save fallok
real(kind=real8), dimension(:,:), allocatable, save dhldtv
real(kind=real8), dimension(:,:,:), allocatable, save dhydtz
real(kind=real8), dimension(0:nvgt), save revisd
real(kind=real8), dimension(:,:), allocatable, save devpdt
real(kind=real8), dimension(:,:), allocatable, save ird_sv
real(kind=real8), dimension(:,:), allocatable, save eteubk
real(kind=real8), dimension(:,:,:), allocatable, save aux__p
real(kind=real8), save dr_1sn
real(kind=real8), dimension(:,:), allocatable, save hlv_sv
real(kind=real8), dimension(:,:), allocatable, save dzthin
real(kind=real8), save dfcdsv
real(kind=real8), dimension(:,:), allocatable, save hls_kl
real(kind=real8), dimension(:,:), allocatable, save sws_sv
real(kind=real8), dimension(:,:), allocatable, save richar
real(kind=real8), save dfc3sn
real(kind=real8), dimension(:,:), allocatable, save alb_sv
real(kind=real8), dimension(:,:), allocatable, save weagre
integer, dimension(:,:), allocatable, save isnosv
real(kind=real8), dimension(:,:), allocatable, save coalb3
integer, dimension(:,:), allocatable, save isagr1
real(kind=real8), save ai3dsv
real(kind=real8), save trnirs
real(kind=real8), dimension(:,:), allocatable, save emi_sv
real(kind=real8), save so1dsv
subroutine sisvat(SnoMod, BloMod, jjtime)
real(kind=real8), dimension(:,:), allocatable, save agagr1
real(kind=real8), dimension(0:nsot), save s1__sv
real(kind=real8), dimension(:,:), allocatable, save gamasv
real(kind=real8), save renirs
real(kind=real8), dimension(:,:), allocatable, save za__sv
real(kind=real8), save a_stab
real(kind=real8), dimension(:), allocatable, save dziisv
real(kind=real8), dimension(:,:), allocatable, save vvasbl
real(kind=real8), save lro__i
real(kind=real8), save lhvh2o
real(kind=real8), dimension(:,:), allocatable, save cds
real(kind=real8), dimension(:,:,:), allocatable, save tsisva
integer, dimension(:), allocatable, save i___sv
real(kind=real8), dimension(:,:), allocatable, save g2agr1
real(kind=real8), dimension(:), allocatable, save dz_8sv
real(kind=real8), dimension(:,:), allocatable, save etagr1
real(kind=real8), dimension(:,:,:), allocatable, save agsnsv
real(kind=real8), save rhowat
real(kind=real8), dimension(0:nvgt), save f__ust
real(kind=real8), save grav_f
real(kind=real8), dimension(:,:), allocatable, save eexcsv
real(kind=real8), save crodzw
integer, dimension(:), allocatable, save isnpsv
real(kind=real8), dimension(:,:,:), allocatable, save etaaux
real(kind=real8), save totsol
real(kind=real8), dimension(:,:), allocatable, save g1agr1
real(kind=real8), dimension(:,:,:), allocatable, save g1snsv
real(kind=real8), dimension(:), allocatable, save dz34sv
real(kind=real8), dimension(0:nsot, 0:nkhy), save akdtsv
real(kind=real8), dimension(:,:), allocatable, save roagr2
real(kind=real8), dimension(:,:), allocatable, save eso_sv
real(kind=real8), save smndsv
real(kind=real8), dimension(:,:,:), allocatable, save pktasv
real(kind=real8), dimension(0:nsot), save claypc
real(kind=real8), dimension(:,:), allocatable, save hlsokl
real(kind=real8), dimension(:,:), allocatable, save rah_sv
real(kind=real8), dimension(:,:), allocatable, save shusol
real(kind=real8), save ru_dsv
real(kind=real8), dimension(:,:), allocatable, save fh__sv
real(kind=real8), dimension(:,:), allocatable, save alb3sv
real(kind=real8), dimension(:,:,:), allocatable, save eta_sv
real(kind=real8), dimension(:,:), allocatable, save uts_sv
real(kind=real8), dimension(:,:), allocatable, save slorsv
real(kind=real8), dimension(:,:), allocatable, save agrege
integer, dimension(:,:), allocatable, save ivgtsv
real(kind=real8), save rhoice
real(kind=real8), save cristr
integer, dimension(:,:), allocatable, save ispisv
real(kind=real8), dimension(:,:), allocatable, save alb1sv
real(kind=real8), dimension(:,:), allocatable, save sqrcm0
real(kind=real8), dimension(:,:), allocatable, save lsdzsv
real(kind=real8), dimension(:,:,:), allocatable, save diag_c
integer, dimension(:,:), allocatable, save isn1
real(kind=real8), dimension(:,:), allocatable, save sornof
real(kind=real8), dimension(:), allocatable, save dtz_sv
real(kind=real8), dimension(:,:), allocatable, save hssokl
integer, dimension(:,:), allocatable, save iwafsv
real(kind=real8), save dr_3sn
real(kind=real8), dimension(:,:,:), allocatable, save diag_b
subroutine sisvat_bsn(BloMod)
real(kind=real8), dimension(:,:), allocatable, save zdrift
real(kind=real8), dimension(0:nsot), save etaust
real(kind=real8), dimension(:,:), allocatable, save a0__sv
real(kind=real8), dimension(:,:), allocatable, save cdh
real(kind=real8), dimension(0:nvgt), save rbtdsv
real(kind=real8), dimension(:,:,:), allocatable, save g2snsv
!$Header!c c INCLUDE fxyprim h c c c Fonctions in line c c REAL fyprim REAL rj c c il faut la calculer avant d appeler ces fonctions c c c Fonctions a changer selon x(x) et y(y) choisis.c-----------------------------------------------------------------c c.....ici
real(kind=real8), dimension(:,:), allocatable, save evg_sv
real(kind=real8), dimension(:,:), allocatable, save evt_sv
real(kind=real8), dimension(:,:), allocatable, save g2agr2
real(kind=real8), dimension(:,:,:), allocatable, save dzsnsv
real(kind=real8), dimension(:,:,:), allocatable, save snopsv
real(kind=real8), dimension(:,:), allocatable, save laiesv
integer, dimension(:,:), allocatable, save lindsv
real(kind=real8), dimension(:,:), allocatable, save eexdum
real(kind=real8), dimension(:,:,:), allocatable, save diag_c
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL ulevSTD CALL &zphi philevSTD CALL &zx_rh rhlevSTD!DO klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon du jour ou toutes les read_climoz CALL true
real(kind=real8), dimension(:,:), allocatable, save z_snsv
real(kind=real8), dimension(0:nvgt), save z0mdsv
real(kind=real8), save df_2sn
real(kind=real8), dimension(:,:), allocatable, save bg1ssv
real(kind=real8), save cn_dsv
real(kind=real8), dimension(:,:), allocatable, save irdwsv
real(kind=real8), save ahstab
real(kind=real8), save dscdsv
real(kind=real8), dimension(:,:), allocatable, save agagr2
real(kind=real8), dimension(:,:), allocatable, save sigmsv
real(kind=real8), dimension(:,:), allocatable, save vv10sv
real(kind=real8), dimension(:,:), allocatable, save z0m_sv
real(kind=real8), save trviss
real(kind=real8), dimension(:,:), allocatable, save dza__1
real(kind=real8), dimension(:,:), allocatable, save drr_sv
real(kind=real8), dimension(:,:), allocatable, save t_agr1
subroutine snoptp(jjtime)
real(kind=real8), dimension(:,:), allocatable, save esnbsv
real(kind=real8), dimension(:,:), allocatable, save faceta
real(kind=real8), save dfc2sn
real(kind=real8), dimension(:,:), allocatable, save bg2ssv
real(kind=real8), dimension(:,:), allocatable, save qsatsg
real(kind=real8), dimension(:,:), allocatable, save alb2sv
real(kind=real8), dimension(:,:), allocatable, save shumsv
real(kind=real8), save rcwdsv
real(kind=real8), dimension(:,:), allocatable, save dzagr1
integer, dimension(:,:), allocatable, save lsmask
real(kind=real8), save implic
real(kind=real8), dimension(:,:), allocatable, save tvegsv
real(kind=real8), dimension(0:nvgt), save renirl
real(kind=real8), dimension(:,:), allocatable, save dqs_dt
real(kind=real8), save ddcdsv
real(kind=real8), save facubs
real(kind=real8), dimension(:,:), allocatable, save lmo_sv
real(kind=real8), dimension(:,:), allocatable, save dirdtv
integer, dimension(:,:), allocatable, save iicesv
real(kind=real8), dimension(:,:), allocatable, save cld_sv
real(kind=real8), dimension(:,:,:), allocatable, save rootsv
real(kind=real8), dimension(:,:), allocatable, save g1agr2
real(kind=real8), dimension(:,:), allocatable, save evp_sv
real(kind=real8), dimension(0:nsot), save ks_dsv
real(kind=real8), dimension(:,:), allocatable, save rcdhsv
real(kind=real8), save zz_dsv
real(kind=real8), save rocdsv
real(kind=real8), save dfc1sn
integer, dimension(:,:), allocatable, save isagr2
real(kind=real8), dimension(:,:), allocatable, save coalb2
real(kind=real8), save lhsh2o
integer, dimension(:,:), allocatable, save isagr2
real(kind=real8), save cdidsv
real(kind=real8), dimension(:,:), allocatable, save rnofsv
real(kind=real8), save vk_dsv
real(kind=real8), dimension(:,:), allocatable, save etagr2
real(kind=real8), dimension(:,:), allocatable, save glf_sv
real(kind=real8), dimension(:,:), allocatable, save roagr1
real(kind=real8), dimension(:,:), allocatable, save exnrsv
real(kind=real8), save laidsv
real(kind=real8), save so3dsv
real(kind=real8), save ai2dsv
real(kind=real8), dimension(:,:), allocatable, save rf__sv
real(kind=real8), save eps6
real(kind=real8), dimension(:,:,:), allocatable, save aux__q
real(kind=real8), dimension(:,:), allocatable, save sext_2
real(kind=real8), save tf_sno
integer, dimension(:,:), allocatable, save mobile
integer, dimension(:), allocatable, save n___sv
real(kind=real8), dimension(:,:), allocatable, save sqrch0
real(kind=real8), dimension(:,:), allocatable, save dzagr2
real(kind=real8), dimension(:,:), allocatable, save sext_3
real(kind=real8), dimension(0:nvgt), save revisl
real(kind=real8), dimension(:,:), allocatable, save dldtsv
real(kind=real8), save zer0
real(kind=real8), dimension(:,:), allocatable, save tat_sv
real(kind=real8), dimension(0:nsot, 0:nkhy), save bkdtsv
real(kind=real8), dimension(:,:,:), allocatable, save etasno
real(kind=real8), save stefbo
real(kind=real8), dimension(:,:), allocatable, save coszsv
real(kind=real8), dimension(:,:), allocatable, save z0ensv
real(kind=real8), save ws0dsv
integer, dimension(:), allocatable, save islpsv
real(kind=real8), dimension(0:nsot), save etadsv
real(kind=real8), dimension(:), allocatable, save dzmisv
real(kind=real8), save hc_wat
real(kind=real8), dimension(:,:), allocatable, save agagr2
real(kind=real8), dimension(:,:), allocatable, save sncasv
real(kind=real8), dimension(:,:,:), allocatable, save sdrift
real(kind=real8), dimension(:,:), allocatable, save g1agr2
real(kind=real8), dimension(:,:), allocatable, save f___hl
real(kind=real8), dimension(:,:), allocatable, save iru_sv
integer, dimension(:,:), allocatable, save icindx
real(kind=real8), dimension(:,:,:), allocatable, save term_d
real(kind=real8), save dirsol
real(kind=real8), dimension(:,:), allocatable, save dsnbsv
integer, dimension(:,:,:), allocatable, save istosv
real(kind=real8), save ocndsv
subroutine sisvat_zag(isagra, isagrb, WEagra, dzagra, dzagrb, T_agra, T_agrb, roagra, roagrb, etagra, etagrb, G1agra, G1agrb, G2agra, G2agrb, agagra, agagrb, Agreg1)
real(kind=real8), dimension(:,:), allocatable, save irv_sv
real(kind=real8), dimension(0:nvgt), save renird
real(kind=real8), dimension(0:nsot), save bchdsv
real(kind=real8), dimension(:,:), allocatable, save bdzssv
real(kind=real8), dimension(:,:), allocatable, save cdm
real(kind=real8), dimension(0:nsot), save ustdmn
character(len=3), dimension(0:12) labmon
real(kind=real8), dimension(:), allocatable, save dz78sv
real(kind=real8), dimension(:,:), allocatable, save tdepos
real(kind=real8), save df_1sn
real(kind=real8), dimension(:,:), allocatable, save weagre
real(kind=real8), dimension(:,:), allocatable, save hlv_kl
real(kind=real8), dimension(:,:,:), allocatable, save psi_sv
real(kind=real8), save por_bs
!$Header!integer nvarmx s s unit
real(kind=real8), save ai1dsv
integer, dimension(:), allocatable, save j___sv
integer, dimension(:,:), allocatable, save nlaysv
real(kind=real8), dimension(:,:), allocatable, save dzagr1
real(kind=real8), save bsnoro
real(kind=real8), save epsn
real(kind=real8), dimension(:,:), allocatable, save rhusol
real(kind=real8), dimension(:,:), allocatable, save lmomom
real(kind=real8), dimension(:,:), allocatable, save uss_sv
real(kind=real8), dimension(:,:), allocatable, save uqs_sv
real(kind=real8), dimension(0:nsot), save etamsv
real(kind=real8), dimension(:,:), allocatable, save zwe_sv
real(kind=real8), dimension(:,:), allocatable, save etagr1
real(kind=real8), dimension(:,:), allocatable, save hls_sv
real(kind=real8), dimension(:,:), allocatable, save socasv
real(kind=real8), dimension(:,:), allocatable, save lai0sv
real(kind=real8), dimension(:,:), allocatable, save psiv_0
real(kind=real8), dimension(:,:), allocatable, save psivsv
real(kind=real8), dimension(:,:), allocatable, save t_agr1
integer, dimension(:), allocatable, save jj__ap
real(kind=real8), dimension(:,:,:), allocatable, save diag_b
real(kind=real8), dimension(:,:), allocatable, save roagr1
real(kind=real8), save ea_max
integer, dimension(:,:), allocatable, save isotsv
real(kind=real8), dimension(:,:), allocatable, save rcds
real(kind=real8), dimension(:,:), allocatable, save k___sv
real(kind=real8), dimension(:,:,:), allocatable, save kz__sv
real(kind=real8), dimension(0:nvgt), save dh_dsv
real(kind=real8), dimension(:,:), allocatable, save lai_sv
real(kind=real8), dimension(:,:), allocatable, save irs_sv