SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
init_teb_greenroofn.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_greenroof_n (DTCO, U, DGMTO, TOP, TVG, GRM, &
7  hprogram,hinit,ki,ksw,psw_bands,kpatch)
8 !#############################################################
9 !
10 !!**** *INIT_TEB_GREENROOF_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 !
41 !
43 USE modd_surf_atm_n, ONLY : surf_atm_t
48 !
51 !
52 
53 !
54 USE modd_data_cover_par, ONLY: nvegtype
55 USE modd_surf_par, ONLY: xundef, nundef
56 !
57 USE modd_surf_atm, ONLY: lcpl_arp
58 !
59 USE modi_get_luout
60 USE modi_read_prep_greenroof_snow
61 USE modi_allocate_teb_greenroof
62 USE modi_abor1_sfx
63 USE modi_read_teb_greenroof_n
64 USE modi_init_veg_garden_n
66 USE modi_init_from_data_greenroof_n
67 USE modi_avg_albedo_emis_greenroof
68 !
69 USE yomhook ,ONLY : lhook, dr_hook
70 USE parkind1 ,ONLY : jprb
71 !
72 IMPLICIT NONE
73 !
74 !* 0.1 Declarations of arguments
75 ! -------------------------
76 !
77 !
78 TYPE(data_cover_t), INTENT(INOUT) :: dtco
79 TYPE(surf_atm_t), INTENT(INOUT) :: u
80 TYPE(diag_misc_teb_options_t), INTENT(INOUT) :: dgmto
81 TYPE(teb_options_t), INTENT(INOUT) :: top
82 TYPE(teb_veg_options_t), INTENT(INOUT) :: tvg
83 TYPE(teb_greenroof_model_t), INTENT(INOUT) :: grm
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 !* 0.2 Declarations of local variables
93 ! -------------------------------
94 !
95 INTEGER :: iluout ! unit of output listing file
96 !
97 INTEGER :: idecade ! decade of simulation
98 !
99  CHARACTER(LEN=3) :: ypatch ! patch identificator
100 !
101 REAL, DIMENSION(KI) :: zwg1 ! work array for surface water content
102 REAL, DIMENSION(KI) :: ztg1 ! work array for surface temperature
103 REAL, DIMENSION(KI,KSW) :: zdir_alb ! direct albedo for each band
104 REAL, DIMENSION(KI,KSW) :: zsca_alb ! diffuse albedo for each band
105 REAL, DIMENSION(KI) :: zemis ! emissivity
106 REAL, DIMENSION(KI) :: ztsrad ! radiative temperature
107 !
108 REAL(KIND=JPRB) :: zhook_handle
109 !
110 !-------------------------------------------------------------------------------
111 !
112 ! Initialisation for IO
113 !
114 IF (lhook) CALL dr_hook('INIT_TEB_GREENROOF_N',0,zhook_handle)
115  CALL get_luout(hprogram,iluout)
116 !
117 !-------------------------------------------------------------------------------
118 !
119 !* 1. Reading of snow configuration:
120 ! ------------------------------
121 !
122 !* initialization of snow scheme (TSNOW defined in MODD_TEB_GREENROOF_n)
123 !
124 IF (hinit=='PRE') THEN
125  CALL read_prep_greenroof_snow(hprogram,grm%TGR%CUR%TSNOW%SCHEME,grm%TGR%CUR%TSNOW%NLAYER)
126 !
127  IF (grm%TGR%CUR%TSNOW%SCHEME.NE.'3-L' .AND. grm%TGR%CUR%TSNOW%SCHEME.NE.'CRO' &
128  .AND. grm%TGRO%CISBA_GR=='DIF') THEN
129  CALL abor1_sfx("INIT_TEB_GREENROOF_n: WITH CISBA_GR = DIF, CSNOW MUST BE 3-L OR CRO")
130  ENDIF
131  IF (lhook) CALL dr_hook('INIT_TEB_GREENROOF_N',1,zhook_handle)
132  RETURN
133 ENDIF
134 !-------------------------------------------------------------------------------
135 !
136  CALL allocate_teb_greenroof(grm%TGR, tvg, &
137  ki, grm%TGRO%NLAYER_GR)
138 !
139 !-------------------------------------------------------------------------------
140 !
141 IF( 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_GREENROOF_N',1,zhook_handle)
149  RETURN
150 ENDIF
151 !
152 !-------------------------------------------------------------------------------
153 !
154 !* 2. 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_greenroof_n(dtco, u, tvg, grm, &
164  hprogram,ypatch)
165 !
166 !
167  CALL init_veg_garden_n(ki, top%LCANOPY, tvg%CROUGH, grm%TGR%CUR%TSNOW, &
168  tvg%CPHOTO, grm%TGRP%XLAIMIN, grm%TGRP%XH_TREE, grm%TGRP%XVEGTYPE, &
169  grm%TGRPE%CUR%XLAI, grm%TGRPE%CUR%XZ0, grm%TGRPE%CUR%XVEG, &
170  grm%TGRPE%CUR%XEMIS, grm%TGRO%LTR_ML_GR, grm%TGR%CUR%XFAPARC, &
171  grm%TGR%CUR%XFAPIRC, grm%TGR%CUR%XLAI_EFFC, grm%TGR%CUR%XMUS, &
172  grm%TGRP%XALBNIR_SOIL, grm%TGRP%XALBVIS_SOIL, grm%TGRP%XALBUV_SOIL, &
173  grm%TGRPE%CUR%XALBNIR, grm%TGRPE%CUR%XALBVIS, grm%TGRPE%CUR%XALBUV, &
174  dgmto%LSURF_DIAG_ALBEDO, grm%TGR%CUR%XPSN, grm%TGR%CUR%XPSNG, &
175  grm%TGR%CUR%XPSNV, grm%TGR%CUR%XPSNV_A, &
176  zdir_alb, zsca_alb, zemis, ztsrad )
177 !
178 zwg1(:) = grm%TGR%CUR%XWG(:,1)
179 ztg1(:) = grm%TGR%CUR%XTG(:,1)
180 !
181 IF (.NOT. grm%TGRO%LPAR_GREENROOF) THEN
182  CALL soil_albedo(tvg%CALBEDO, &
183  grm%TGRP%XWSAT(:,1),zwg1, &
184  grm%TGRP%XALBVIS_DRY,grm%TGRP%XALBNIR_DRY,grm%TGRP%XALBUV_DRY, &
185  grm%TGRP%XALBVIS_WET,grm%TGRP%XALBNIR_WET,grm%TGRP%XALBUV_WET, &
186  grm%TGRP%XALBVIS_SOIL,grm%TGRP%XALBNIR_SOIL,grm%TGRP%XALBUV_SOIL )
187 ELSE
188  IF (top%TTIME%TDATE%MONTH /= nundef) THEN
189  idecade = 3 * ( top%TTIME%TDATE%MONTH - 1 ) + min(top%TTIME%TDATE%DAY-1,29) / 10 + 1
190  ELSE
191  idecade = 1
192  END IF
193  CALL init_from_data_greenroof_n(grm%DTGR, grm%TGRO, &
194  idecade,tvg%CPHOTO, &
195  palbnir_soil=grm%TGRP%XALBNIR_SOIL, &
196  palbvis_soil=grm%TGRP%XALBVIS_SOIL, &
197  palbuv_soil=grm%TGRP%XALBUV_SOIL )
198 END IF
199 !
200 !
201  CALL avg_albedo_emis_greenroof(grm%TGR, &
202  tvg%CALBEDO, &
203  grm%TGRPE%CUR%XVEG,grm%TGRPE%CUR%XZ0,grm%TGRPE%CUR%XLAI,ztg1, &
204  psw_bands, &
205  grm%TGRP%XALBNIR_VEG,grm%TGRP%XALBVIS_VEG,grm%TGRP%XALBUV_VEG, &
206  grm%TGRP%XALBNIR_SOIL,grm%TGRP%XALBVIS_SOIL,grm%TGRP%XALBUV_SOIL, &
207  grm%TGRPE%CUR%XEMIS, grm%TGR%CUR%TSNOW, &
208  grm%TGRPE%CUR%XALBNIR,grm%TGRPE%CUR%XALBVIS,grm%TGRPE%CUR%XALBUV, &
209  zdir_alb, zsca_alb, &
210  zemis,ztsrad )
211 !
212 !-------------------------------------------------------------------------------
213 !
214 IF (lhook) CALL dr_hook('INIT_TEB_GREENROOF_N',1,zhook_handle)
215 !
216 !-------------------------------------------------------------------------------
217 !
218 !
219 
220 END SUBROUTINE init_teb_greenroof_n
subroutine allocate_teb_greenroof(TGR, TVG, KLU, KLAYER_GR)
subroutine read_prep_greenroof_snow(HPROGRAM, HSNOW, KSNOW_LAYER, HFILE, HFILETYPE, HFILEPGD, HFILEPGDTYPE, OUNIF)
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 init_teb_greenroof_n(DTCO, U, DGMTO, TOP, TVG, GRM, HPROGRAM, HINIT, KI, KSW, PSW_BANDS, KPATCH)
subroutine init_from_data_greenroof_n(DTGR, TGRO, KDECADE, HPHOTO, POM_GR, PSAND_GR, PCLAY_GR, 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 get_luout(HPROGRAM, KLUOUT)
Definition: get_luout.F90:6
subroutine avg_albedo_emis_greenroof(TGR, 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_teb_greenroof_n(DTCO, U, TVG, GRM, HPROGRAM, HPATCH)