SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
init_teb_gardenn.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_teb_garden_n (DTCO, DGU, UG, U, DGMTO, TOP, GDM, &
7  hprogram,hinit,ki,ksw,psw_bands,kpatch)
8 !#############################################################
9 !
10 !!**** *INIT_TEB_GARDEN_n* - routine to initialize ISBA
11 !!
12 !! PURPOSE
13 !! -------
14 !!
15 !!** METHOD
16 !! ------
17 !!
18 !! EXTERNAL
19 !! --------
20 !!
21 !!
22 !! IMPLICIT ARGUMENTS
23 !! ------------------
24 !!
25 !! REFERENCE
26 !! ---------
27 !!
28 !!
29 !! AUTHOR
30 !! ------
31 !! A. Lemonsu *Meteo France*
32 !!
33 !! MODIFICATIONS
34 !! -------------
35 !! Original 09/2009
36 !-------------------------------------------------------------------------------
37 !
38 !* 0. DECLARATIONS
39 ! ------------
40 !
44 USE modd_surf_atm_n, ONLY : surf_atm_t
48 !
51 !
52 
53 USE modd_data_cover_par, ONLY: nvegtype
54 USE modd_surf_par, ONLY: xundef, nundef
55 
56 USE modd_surf_atm, ONLY: lcpl_arp
57 !
58 USE modi_get_luout
59 USE modi_read_prep_garden_snow
60 USE modi_allocate_teb_garden
61 USE modi_abor1_sfx
62 USE modi_read_teb_garden_n
63 USE modi_init_veg_garden_n
65 USE modi_init_from_data_grdn_n
66 USE modi_avg_albedo_emis_garden
67 !
68 USE yomhook ,ONLY : lhook, dr_hook
69 USE parkind1 ,ONLY : jprb
70 !
71 IMPLICIT NONE
72 !
73 !* 0.1 Declarations of arguments
74 ! -------------------------
75 !
76 !
77 TYPE(data_cover_t), INTENT(INOUT) :: dtco
78 TYPE(diag_surf_atm_t), INTENT(INOUT) :: dgu
79 TYPE(surf_atm_grid_t), INTENT(INOUT) :: ug
80 TYPE(surf_atm_t), INTENT(INOUT) :: u
81 TYPE(diag_misc_teb_options_t), INTENT(INOUT) :: dgmto
82 TYPE(teb_options_t), INTENT(INOUT) :: top
83 TYPE(teb_garden_model_t), INTENT(INOUT) :: gdm
84 !
85  CHARACTER(LEN=6), INTENT(IN) :: hprogram ! program calling surf. schemes
86  CHARACTER(LEN=3), INTENT(IN) :: hinit ! choice of fields to initialize
87 INTEGER, INTENT(IN) :: ki ! number of points
88 INTEGER, INTENT(IN) :: ksw ! number of short-wave spectral bands
89 REAL, DIMENSION(KSW), INTENT(IN) :: psw_bands ! middle wavelength of each band
90 INTEGER, INTENT(IN) :: kpatch
91 !
92 !
93 !
94 !* 0.2 Declarations of local variables
95 ! -------------------------------
96 !
97 INTEGER :: iluout ! unit of output listing file
98 !
99 INTEGER :: idecade ! decade of simulation
100 !
101  CHARACTER(LEN=3) :: ypatch ! patch identificator
102 !
103 REAL, DIMENSION(KI) :: zwg1 ! work array for surface water content
104 REAL, DIMENSION(KI) :: ztg1 ! work array for surface temperature
105 REAL, DIMENSION(KI,KSW) :: zdir_alb ! direct albedo for each band
106 REAL, DIMENSION(KI,KSW) :: zsca_alb ! diffuse albedo for each band
107 REAL, DIMENSION(KI) :: zemis ! emissivity
108 REAL, DIMENSION(KI) :: ztsrad ! radiative temperature
109 !
110 REAL(KIND=JPRB) :: zhook_handle
111 !
112 !-------------------------------------------------------------------------------
113 !
114 ! Initialisation for IO
115 !
116 IF (lhook) CALL dr_hook('INIT_TEB_GARDEN_N',0,zhook_handle)
117  CALL get_luout(hprogram,iluout)
118 !
119 !* 1. Reading of snow configuration:
120 ! ------------------------------
121 !
122 !* initialization of snow scheme (TSNOW defined in MODD_TEB_GARDEN_n)
123 !
124 IF (hinit=='PRE') THEN
125  CALL read_prep_garden_snow(hprogram,gdm%TGD%CUR%TSNOW%SCHEME,gdm%TGD%CUR%TSNOW%NLAYER)
126 !
127  IF (gdm%TGD%CUR%TSNOW%SCHEME.NE.'3-L' .AND. &
128  gdm%TGD%CUR%TSNOW%SCHEME.NE.'CRO' .AND. gdm%TVG%CISBA=='DIF') THEN
129  CALL abor1_sfx("INIT_TEB_GARDEN_n: WITH CISBA = DIF, CSNOW MUST BE 3-L OR CRO")
130  ENDIF
131  IF (lhook) CALL dr_hook('INIT_TEB_GARDEN_N',1,zhook_handle)
132  RETURN
133 ENDIF
134 !-------------------------------------------------------------------------------
135 !
136  CALL allocate_teb_garden(gdm%TGD, gdm%TVG, &
137  ki, gdm%TGDO%NGROUND_LAYER)
138 !
139 !-------------------------------------------------------------------------------
140 !
141 IF( gdm%TVG%CCPSURF=='DRY' .AND. lcpl_arp ) THEN
142  CALL abor1_sfx('CCPSURF=DRY must not be used with LCPL_ARP')
143 ENDIF
144 !
145 !-------------------------------------------------------------------------------
146 !
147 IF (hinit/='ALL') THEN
148  IF (lhook) CALL dr_hook('INIT_TEB_GARDEN_N',1,zhook_handle)
149  RETURN
150 ENDIF
151 !
152 !-------------------------------------------------------------------------------
153 !
154 !* 10. Prognostic and semi-prognostic fields
155 ! -------------------------------------
156 !
157 !* allocation of urban green area variables
158 !
159 !
160  ypatch=' '
161  IF (top%NTEB_PATCH>1) WRITE(ypatch,fmt='(A,I1,A)') 'T',kpatch,'_'
162 !
163  CALL read_teb_garden_n(dtco, dgu, u, gdm, &
164  hprogram,ypatch)
165 !
166 !
167  CALL init_veg_garden_n(ki, top%LCANOPY, gdm%TVG%CROUGH, gdm%TGD%CUR%TSNOW, &
168  gdm%TVG%CPHOTO, gdm%TGDP%XLAIMIN, gdm%TGDP%XH_TREE, gdm%TGDP%XVEGTYPE, &
169  gdm%TGDPE%CUR%XLAI, gdm%TGDPE%CUR%XZ0, gdm%TGDPE%CUR%XVEG, gdm%TGDPE%CUR%XEMIS, &
170  gdm%TVG%LTR_ML, gdm%TGD%CUR%XFAPARC, gdm%TGD%CUR%XFAPIRC, gdm%TGD%CUR%XLAI_EFFC, &
171  gdm%TGD%CUR%XMUS, gdm%TGDP%XALBNIR_SOIL, gdm%TGDP%XALBVIS_SOIL, &
172  gdm%TGDP%XALBUV_SOIL, gdm%TGDPE%CUR%XALBNIR, gdm%TGDPE%CUR%XALBVIS, &
173  gdm%TGDPE%CUR%XALBUV, dgmto%LSURF_DIAG_ALBEDO, gdm%TGD%CUR%XPSN, &
174  gdm%TGD%CUR%XPSNG, gdm%TGD%CUR%XPSNV, gdm%TGD%CUR%XPSNV_A, &
175  zdir_alb, zsca_alb, zemis, ztsrad )
176 !
177 zwg1(:) = gdm%TGD%CUR%XWG(:,1)
178 ztg1(:) = gdm%TGD%CUR%XTG(:,1)
179 !
180 IF (.NOT. gdm%TGDO%LPAR_GARDEN) THEN
181  CALL soil_albedo(gdm%TVG%CALBEDO, &
182  gdm%TGDP%XWSAT(:,1),zwg1, &
183  gdm%TGDP%XALBVIS_DRY,gdm%TGDP%XALBNIR_DRY,gdm%TGDP%XALBUV_DRY, &
184  gdm%TGDP%XALBVIS_WET,gdm%TGDP%XALBNIR_WET,gdm%TGDP%XALBUV_WET, &
185  gdm%TGDP%XALBVIS_SOIL,gdm%TGDP%XALBNIR_SOIL,gdm%TGDP%XALBUV_SOIL )
186 ELSE
187  IF (top%TTIME%TDATE%MONTH /= nundef) THEN
188  idecade = 3 * ( top%TTIME%TDATE%MONTH - 1 ) + min(top%TTIME%TDATE%DAY-1,29) / 10 + 1
189  ELSE
190  idecade = 1
191  END IF
192  CALL init_from_data_grdn_n(gdm%DTGD, &
193  idecade,gdm%TVG%CPHOTO, &
194  palbnir_soil=gdm%TGDP%XALBNIR_SOIL, &
195  palbvis_soil=gdm%TGDP%XALBVIS_SOIL, &
196  palbuv_soil=gdm%TGDP%XALBUV_SOIL )
197 END IF
198 !
199  CALL avg_albedo_emis_garden(gdm%TGD, gdm%TVG%CALBEDO, &
200  gdm%TGDPE%CUR%XVEG,gdm%TGDPE%CUR%XZ0,gdm%TGDPE%CUR%XLAI,ztg1, &
201  psw_bands, &
202  gdm%TGDP%XALBNIR_VEG,gdm%TGDP%XALBVIS_VEG,gdm%TGDP%XALBUV_VEG, &
203  gdm%TGDP%XALBNIR_SOIL,gdm%TGDP%XALBVIS_SOIL,gdm%TGDP%XALBUV_SOIL, &
204  gdm%TGDPE%CUR%XEMIS, gdm%TGD%CUR%TSNOW, &
205  gdm%TGDPE%CUR%XALBNIR,gdm%TGDPE%CUR%XALBVIS,gdm%TGDPE%CUR%XALBUV, &
206  zdir_alb, zsca_alb, &
207  zemis,ztsrad )
208 !
209 !
210 !
211 !-------------------------------------------------------------------------------
212 !
213 IF (lhook) CALL dr_hook('INIT_TEB_GARDEN_N',1,zhook_handle)
214 !
215 !-------------------------------------------------------------------------------
216 !
217 !
218 END SUBROUTINE init_teb_garden_n
subroutine read_teb_garden_n(DTCO, DGU, U, GDM, HPROGRAM, HPATCH)
subroutine init_from_data_grdn_n(DTGD, KDECADE, HPHOTO, PVEG, PLAI, PRSMIN, PGAMMA, PWRMAX_CF, PRGL, PCV, PDG, PD_ICE, PZ0, PZ0_O_Z0H, PALBNIR_VEG, PALBVIS_VEG, PALBUV_VEG, PEMIS, PVEGTYPE, PROOTFRAC, PGMES, PBSLAI, PLAIMIN, PSEFOLD, PGC, PDMAX, PF2I, OSTRESS, PH_TREE, PRE25, PCE_NITRO, PCF_NITRO, PCNA_NITRO, PALBNIR_SOIL, PALBVIS_SOIL, PALBUV_SOIL)
subroutine init_veg_garden_n(KI, OCANOPY, HROUGH, TPSNOW, HPHOTO, PLAIMIN, PH_TREE, PVEGTYPE, PLAI, PZ0, PVEG, PEMIS, OTR_ML, PFAPARC, PFAPIRC, PLAI_EFFC, PMUS, PALBNIR_SOIL, PALBVIS_SOIL, PALBUV_SOIL, PALBNIR, PALBVIS, PALBUV, OSURF_DIAG_ALBEDO, PPSN, PPSNG, PPSNV, PPSNV_A, PDIR_ALB, PSCA_ALB, PEMIS_OUT, PTSRAD)
subroutine abor1_sfx(YTEXT)
Definition: abor1_sfx.F90:6
subroutine avg_albedo_emis_garden(TGD, HALBEDO, PVEG, PZ0, PLAI, PTG1, PSW_BANDS, PALBNIR_VEG, PALBVIS_VEG, PALBUV_VEG, PALBNIR_SOIL, PALBVIS_SOIL, PALBUV_SOIL, PEMIS_ECO, TPSNOW, PALBNIR_ECO, PALBVIS_ECO, PALBUV_ECO, PDIR_ALB, PSCA_ALB, PEMIS, PTSRAD)
subroutine read_prep_garden_snow(HPROGRAM, HSNOW, KSNOW_LAYER, HFILE, HFILETYPE, HFILEPGD, HFILEPGDTYPE, OUNIF)
subroutine get_luout(HPROGRAM, KLUOUT)
Definition: get_luout.F90:6
subroutine init_teb_garden_n(DTCO, DGU, UG, U, DGMTO, TOP, GDM, HPROGRAM, HINIT, KI, KSW, PSW_BANDS, KPATCH)
subroutine allocate_teb_garden(TGD, TVG, KLU, KGROUND_LAYER)