SURFEX v8.1
General documentation of Surfex
init_from_data_teb_vegn.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 init_from_data_teb_veg_n (DTV, K, P, PEK, KDECADE, OUPDATE, OFIX, OTIME, OALB)
7 ! ##############################################################
8 !
9 !!**** *CONVERT_COVER* convert surface cover classes into secondary
10 !! physiographic variables for ISBA
11 !!
12 !! PURPOSE
13 !! -------
14 !!
15 !! METHOD
16 !! ------
17 !!
18 !! EXTERNAL
19 !! --------
20 !!
21 !! IMPLICIT ARGUMENTS
22 !! ------------------
23 !!
24 !! REFERENCE
25 !! ---------
26 !!
27 !! AUTHOR
28 !! ------
29 !!
30 !! V. Masson Meteo-France
31 !!
32 !! MODIFICATION
33 !! ------------
34 !!
35 !! Original 01/2004
36 !
37 !! P Le Moigne 09/2005 AGS modifs of L. Jarlan
38 !----------------------------------------------------------------------------
39 !
40 !* 0. DECLARATION
41 ! -----------
42 !
43 USE modd_data_isba_n, ONLY : data_isba_t
45 !
46 USE modi_soil_albedo
47 !
48 USE yomhook ,ONLY : lhook, dr_hook
49 USE parkind1 ,ONLY : jprb
50 !
51 IMPLICIT NONE
52 !
53 !* 0.1 Declaration of arguments
54 ! ------------------------
55 !
56 !
57 TYPE(data_isba_t), INTENT(INOUT) :: DTV
58 !
59 INTEGER, INTENT(IN) :: KDECADE
60 !
61 LOGICAL, INTENT(IN) :: OUPDATE
62 LOGICAL, INTENT(IN) :: OFIX
63 LOGICAL, INTENT(IN) :: OTIME
64 LOGICAL, INTENT(IN) :: OALB
65 !
66 TYPE(isba_k_t), INTENT(INOUT) :: K
67 TYPE(isba_p_t), INTENT(INOUT) :: P
68 TYPE(isba_pe_t), INTENT(INOUT) :: PEK
69 !
70 REAL, DIMENSION(:), ALLOCATABLE :: ZWG1
71 REAL, DIMENSION(:), ALLOCATABLE :: ZWGSAT
72 !
73 INTEGER :: ITIME
74 INTEGER :: ILUOUT
75 REAL(KIND=JPRB) :: ZHOOK_HANDLE
76 !-------------------------------------------------------------------------------
77 !
78 !* 1. TIME INITIALIZATION
79 ! -------------------
80 !
81 ! data every month
82 IF (lhook) CALL dr_hook('INIT_FROM_DATA_TEB_VEG_N',0,zhook_handle)
83 IF (dtv%NTIME==12) THEN
84  itime = (kdecade+2)/3
85 ELSEIF (dtv%NTIME==1) THEN
86  itime = 1
87 ENDIF
88 !
89 !
90 IF (ofix) THEN
91 !
92 
93  IF (SIZE(p%XH_TREE)>0) p%XH_TREE(:) = dtv%XPAR_H_TREE(:,1)
94 !
95  p%XZ0_O_Z0H(:) = dtv%XPAR_Z0_O_Z0H(:,1)
96 !
97 !---------------------------------------------------------------------------------
98 !
99 !* soil layers
100 ! -----------
101 !
102  p%XDG(:,:) = dtv%XPAR_DG(:,:,1)
103 !
104 !* cumulative root fraction
105 !
106  IF (SIZE(p%XROOTFRAC)>0) p%XROOTFRAC(:,:) = dtv%XPAR_ROOTFRAC(:,:,1)
107 !
108 !* soil ice for runoff
109 !
110  p%XD_ICE(:) = dtv%XPAR_DICE(:,1)
111 !
112  IF (SIZE(p%XDMAX)>0) p%XDMAX(:) = dtv%XPAR_DMAX(:,1)
113 
114  IF (SIZE(p%XRE25)>0) p%XRE25(:) = dtv%XPAR_RE25(:,1)
115 
116 
117 ENDIF
118 !
119 !
120 !* 2. SECONDARY VARIABLES
121 ! -------------------
122 !
123 !* 2.1 fields on natural surfaces only, taking into account patches/
124 ! -------------------------------
125 !
126 IF (otime) THEN
127 !
128 ! vegetation fraction
129 ! -------------------
130 !
131  pek%XVEG(:) = dtv%XPAR_VEG (:,itime,1)
132 !
133 ! Leaf Aera Index
134 ! ---------------
135 !
136  pek%XLAI(:) = dtv%XPAR_LAI (:,itime,1)
137 !
138 ! roughness length
139 ! ----------------
140 !
141  pek%XZ0(:) = dtv%XPAR_Z0 (:,itime,1)
142 !
143 !emis-eco
144 !--------
145 !
146  pek%XEMIS(:) = dtv%XPAR_EMIS (:,itime,1)
147 !
148  IF (.NOT.oupdate) THEN
149 !---------------------------------------------------------------------------------
150 !
151 !* 1/Rsmin
152 !
153  pek%XRSMIN(:) = dtv%XPAR_RSMIN(:,1)
154 !
155 !* other vegetation parameters
156 !
157  pek%XGAMMA(:) = dtv%XPAR_GAMMA(:,1)
158  pek%XWRMAX_CF(:) = dtv%XPAR_WRMAX_CF(:,1)
159 !
160 !
161  pek%XRGL(:) = dtv%XPAR_RGL(:,1)
162  pek%XCV(:) = dtv%XPAR_CV(:,1)
163 !
164 !---------------------------------------------------------------------------------
165  pek%XALBNIR_VEG(:) = dtv%XPAR_ALBNIR_VEG(:,1,1)
166  pek%XALBVIS_VEG(:) = dtv%XPAR_ALBVIS_VEG(:,1,1)
167  pek%XALBUV_VEG(:) = dtv%XPAR_ALBUV_VEG(:,1,1)
168 !
169  IF (SIZE(pek%XGMES)>0) pek%XGMES(:) = dtv%XPAR_GMES(:,1)
170 
171  IF (SIZE(pek%XBSLAI)>0) pek%XBSLAI(:) = dtv%XPAR_BSLAI(:,1)
172 
173  IF (SIZE(pek%XSEFOLD)>0) pek%XSEFOLD(:) = dtv%XPAR_SEFOLD(:,1)
174 
175  IF (SIZE(pek%XGC)>0) pek%XGC(:) = dtv%XPAR_GC(:,1)
176 !
177  IF (SIZE(pek%XLAIMIN)>0) pek%XLAIMIN(:) = dtv%XPAR_LAIMIN(:,1)
178 !
179  IF (SIZE(pek%XCE_NITRO)>0) pek%XCE_NITRO(:) = dtv%XPAR_CE_NITRO(:,1)
180 !
181  IF (SIZE(pek%XCF_NITRO)>0) pek%XCF_NITRO(:) = dtv%XPAR_CF_NITRO(:,1)
182 !
183  IF (SIZE(pek%XCNA_NITRO)>0) pek%XCNA_NITRO(:) = dtv%XPAR_CNA_NITRO(:,1)
184 !
185  IF (SIZE(pek%XF2I)>0) pek%XF2I(:) = dtv%XPAR_F2I(:,1)
186 !
187  IF (SIZE(pek%LSTRESS)>0) pek%LSTRESS(:) = dtv%LPAR_STRESS(:,1)
188 !
189  ENDIF
190 ENDIF
191 !
192 IF (oalb) THEN
193  !
194  ALLOCATE(zwgsat(SIZE(k%XALBVIS_DRY)))
195  ALLOCATE(zwg1(SIZE(k%XALBVIS_DRY)))
196  zwgsat(:) = 0.
197  zwg1(:) = 0.
198  CALL soil_albedo('DRY',zwgsat, zwg1, k, pek, "ALL" )
199  DEALLOCATE(zwgsat,zwg1)
200  !
201 ENDIF
202 !
203 IF (lhook) CALL dr_hook('INIT_FROM_DATA_TEB_VEG_N',1,zhook_handle)
204 !
205 !-------------------------------------------------------------------------------
206 !
207 END SUBROUTINE init_from_data_teb_veg_n
integer, parameter jprb
Definition: parkind1.F90:32
subroutine soil_albedo(HALBEDO, PWSAT, PWG1, KK, PEK, HBAND)
Definition: soil_albedo.F90:7
logical lhook
Definition: yomhook.F90:15
subroutine init_from_data_teb_veg_n(DTV, K, P, PEK, KDECADE, OUPD