SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
isba_budget_init.F90
Go to the documentation of this file.
1 !SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
2 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SFX_LIC for details. version 1.
5 ! #########
6 SUBROUTINE isba_budget_init (DGEI, &
7  hisba, hsnow_isba, &
8  pwg, pwgi, pwr, psnowswe, pdg, pdzg, &
9  pwg_ini, pwgi_ini, pwr_ini, pswe_ini )
10 ! ###############################################################################
11 !
12 !!**** *ISBA_BUDGET_INIT * - initialize water and energy budget for ISBA
13 !!
14 !! PURPOSE
15 !! -------
16 !
17 !!** METHOD
18 !! ------
19 !!
20 !! REFERENCE
21 !! ---------
22 !!
23 !!
24 !! AUTHOR
25 !! ------
26 !! B. Decharme
27 !!
28 !! MODIFICATIONS
29 !! -------------
30 !! Original 10/2012
31 !!
32 !!------------------------------------------------------------------
33 !
34 !
36 !
37 USE modd_surf_par, ONLY : xundef
38 USE modd_csts, ONLY : xrholw
39 !
40 !
41 USE yomhook ,ONLY : lhook, dr_hook
42 USE parkind1 ,ONLY : jprb
43 !
44 IMPLICIT NONE
45 !
46 !* 0.1 declarations of arguments
47 !
48 !
49 TYPE(diag_evap_isba_t), INTENT(INOUT) :: dgei
50 !
51  CHARACTER(LEN=*), INTENT(IN) :: hisba ! type of ISBA version:
52 ! ! '2-L' (default)
53 ! ! '3-L'
54 ! ! 'DIF'
55  CHARACTER(LEN=*), INTENT(IN) :: hsnow_isba ! 'DEF' = Default F-R snow scheme
56 ! ! (Douville et al. 1995)
57 ! ! '3-L' = 3-L snow scheme (option)
58 ! ! (Boone and Etchevers 2000)
59 ! ! 'CRO' = Crocus snow scheme
60 !
61 REAL, DIMENSION(:,:), INTENT(IN) :: pwg ! liquid water content by layer (m3/m3)
62 REAL, DIMENSION(:,:), INTENT(IN) :: pwgi ! ice content by layer (m3/m3)
63 REAL, DIMENSION(:), INTENT(IN) :: pwr ! liquid water on veg canopy (kg m-2)
64 REAL, DIMENSION(:,:), INTENT(IN) :: psnowswe ! snow water equivalent by layer (kg m-2)
65 REAL, DIMENSION(:,:), INTENT(IN) :: pdg ! soil layer depth (m)
66 REAL, DIMENSION(:,:), INTENT(IN) :: pdzg ! soil layer thickness (m)
67 !
68 REAL, DIMENSION(:), INTENT(OUT) :: pwg_ini ! total wg at t-1 (kg m-2)
69 REAL, DIMENSION(:), INTENT(OUT) :: pwgi_ini ! total wgi at t-1 (kg m-2)
70 REAL, DIMENSION(:), INTENT(OUT) :: pwr_ini ! total wr at t-1 (kg m-2)
71 REAL, DIMENSION(:), INTENT(OUT) :: pswe_ini ! total swe at t-1 (kg m-2)
72 !
73 !* 0.2 declarations of local variables
74 !
75 INTEGER :: ini, inl, inls
76 INTEGER :: ji, jl
77 REAL(KIND=JPRB) :: zhook_handle
78 !
79 !-------------------------------------------------------------------------------------
80 !
81 IF (lhook) CALL dr_hook('ISBA_BUDGET_INIT',0,zhook_handle)
82 !
83 ini =SIZE(pwg,1)
84 inl =SIZE(pwg,2)
85 inls=SIZE(psnowswe,2)
86 !
87 pwg_ini(:) = xundef
88 pwgi_ini(:) = xundef
89 pswe_ini(:) = xundef
90 pwr_ini(:) = xundef
91 !
92 !
93 ! * Water budget
94 ! ------------
95 !
96 IF(dgei%LWATER_BUDGET)THEN
97 !
98 ! total wr at t-1
99  pwr_ini(:)=pwr(:)
100 !
101 ! total swe at t-1
102  pswe_ini(:)=0.0
103  DO jl=1,inls
104  DO ji=1,ini
105  pswe_ini(ji)=pswe_ini(ji)+psnowswe(ji,jl)
106  ENDDO
107  ENDDO
108 !
109 ! total wg and wgi at t-1
110  pwg_ini(:)= 0.0
111  pwgi_ini(:)= 0.0
112  IF(hisba=='DIF')THEN
113  DO jl=1,inl
114  DO ji=1,ini
115  IF(pwg(ji,jl)/=xundef)THEN
116  pwg_ini(ji)=pwg_ini(ji)+pwg(ji,jl)*pdzg(ji,jl)*xrholw
117  pwgi_ini(ji)=pwgi_ini(ji)+pwgi(ji,jl)*pdzg(ji,jl)*xrholw
118  ENDIF
119  ENDDO
120  ENDDO
121  ELSE
122  pwg_ini(:)=pwg(:,2)*pdg(:,2)*xrholw
123  pwgi_ini(:)=pwgi(:,2)*pdg(:,2)*xrholw
124  IF(hisba=='3-L')THEN
125  pwg_ini(:)=pwg_ini(:)+pwg(:,3)*(pdg(:,3)-pdg(:,2))*xrholw
126  ENDIF
127  ENDIF
128 !
129 ENDIF
130 !
131 ! * Energy budget
132 ! -------------
133 !
134 ! not yet implemented
135 !
136 !
137 IF (lhook) CALL dr_hook('ISBA_BUDGET_INIT',1,zhook_handle)
138 !-------------------------------------------------------------------------------------
139 !
140 END SUBROUTINE isba_budget_init
subroutine isba_budget_init(DGEI, HISBA, HSNOW_ISBA, PWG, PWGI, PWR, PSNOWSWE, PDG, PDZG, PWG_INI, PWGI_INI, PWR_INI, PSWE_INI)