SURFEX v8.1
General documentation of Surfex
pgd_teb_greenroof_par.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 pgd_teb_greenroof_par (DTCO, DTV, UG, U, USS, IO, S, K, KDIM, HPROGRAM)
7 ! ##############################################################
8 !
9 !!**** *PGD_TEB_GREENROOF_PAR* monitor for averaging and interpolations of cover fractions
10 !!
11 !! PURPOSE
12 !! -------
13 !!
14 !! METHOD
15 !! ------
16 !!
17 !
18 !! EXTERNAL
19 !! --------
20 !!
21 !! IMPLICIT ARGUMENTS
22 !! ------------------
23 !!
24 !! REFERENCE
25 !! ---------
26 !!
27 !! AUTHOR
28 !! ------
29 !!
30 !! A. Lemonsu Meteo-France
31 !!
32 !! MODIFICATION
33 !! ------------
34 !!
35 !! Original 09/2009
36 !! A. Lemonsu / C. de Munck 04/2011 : TEB GreenRoof
37 !!
38 !----------------------------------------------------------------------------
39 !
40 !* 0. DECLARATION
41 ! -----------
42 !
43 !
44 !
46 USE modd_data_isba_n, ONLY : data_isba_t
48 USE modd_surf_atm_n, ONLY : surf_atm_t
49 USE modd_sso_n, ONLY : sso_t
51 USE modd_isba_n, ONLY : isba_s_t, isba_k_t
52 !
53 USE modd_data_cover_par, ONLY : nvegtype
54 USE modd_surf_par, ONLY : xundef
56 !
57 USE modd_pgdwork, ONLY : catype
58 !
59 USE modi_read_nam_pgd_teb_greenroof
62 !
63 USE mode_pos_surf
64 !
65 !
66 USE yomhook ,ONLY : lhook, dr_hook
67 USE parkind1 ,ONLY : jprb
68 !
69 IMPLICIT NONE
70 !
71 !* 0.1 Declaration of arguments
72 ! ------------------------
73 !
74 !
75 TYPE(data_cover_t), INTENT(INOUT) :: DTCO
76 TYPE(data_isba_t), INTENT(INOUT) :: DTV
77 TYPE(surf_atm_grid_t), INTENT(INOUT) :: UG
78 TYPE(surf_atm_t), INTENT(INOUT) :: U
79 TYPE(sso_t), INTENT(INOUT) :: USS
80 TYPE(isba_options_t), INTENT(INOUT) :: IO
81 TYPE(isba_s_t), INTENT(INOUT) :: S
82 TYPE(isba_k_t), INTENT(INOUT) :: K
83 !
84 INTEGER, INTENT(IN) :: KDIM
85 !
86  CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! Type of program
87 !
88 !
89 !* 0.2 Declaration of local variables
90 ! ------------------------------
91 !
92 INTEGER :: ILUOUT ! output listing logical unit
93 INTEGER :: ILUNAM ! namelist file logical unit
94 LOGICAL :: GFOUND ! true if namelist is found
95 !
96 INTEGER :: JLAYER ! loop counter on layers
97 INTEGER :: JLAYER_GR ! loop counter on green roof layers
98 INTEGER :: JTIME ! loop counter on time
99 INTEGER :: JPATCH ! loop counter on patch
100 INTEGER :: JVEGTYPE ! loop counter on vegtypes
101 !
102 !
103 INTEGER, PARAMETER :: JPGROUND_MAX = 20
104 INTEGER, PARAMETER :: JPVEGTYPE_MAX = 12
105 !
106 ! declaration of namelist variables
107 INTEGER :: ILAYER_GR ! number of green roof physical layers
108 INTEGER :: ITIME_GR ! ntime for green roof parameters
109  CHARACTER(LEN=5) :: YTYP_GR ! type of green roof
110 !
111 ! uniform value
112 !
113 REAL,DIMENSION(NLAYER_GR_MAX) :: ZUNIF_OM_GR ! fraction of organic matter (OM) in green roof layer
114 REAL,DIMENSION(NLAYER_GR_MAX) :: ZUNIF_CLAY_GR ! fraction of clay for the non-OM part of the green roof layer
115 REAL,DIMENSION(NLAYER_GR_MAX) :: ZUNIF_SAND_GR ! fraction of sand for the non-OM part of the green roof layer
116 REAL,DIMENSION(NTIME_GR_MAX) :: ZUNIF_LAI_GR ! LAI of green roof vegetation
117 !
118 ! name of files containing data
119 !
120  CHARACTER(LEN=28),DIMENSION(NLAYER_GR_MAX) :: YFNAM_OM_GR ! fraction of organic matter (OM) in green roof layer
121  CHARACTER(LEN=28),DIMENSION(NLAYER_GR_MAX) :: YFNAM_CLAY_GR ! fraction of clay for the non-OM part of the green roof layer
122  CHARACTER(LEN=28),DIMENSION(NLAYER_GR_MAX) :: YFNAM_SAND_GR ! fraction of sand for the non-OM part of the green roof layer
123  CHARACTER(LEN=28),DIMENSION(NTIME_GR_MAX) :: YFNAM_LAI_GR ! LAI of green roof
124 !
125 ! type of files containing data
126 !
127  CHARACTER(LEN=6 ),DIMENSION(NLAYER_GR_MAX) :: YFTYP_OM_GR ! fraction of organic matter (OM) in green roof layer
128  CHARACTER(LEN=6 ),DIMENSION(NLAYER_GR_MAX) :: YFTYP_CLAY_GR ! fraction of clay for the non-OM part of the green roof layer
129  CHARACTER(LEN=6 ),DIMENSION(NLAYER_GR_MAX) :: YFTYP_SAND_GR ! fraction of sand for the non-OM part of the green roof layer
130  CHARACTER(LEN=6 ),DIMENSION(NTIME_GR_MAX) :: YFTYP_LAI_GR ! LAI of green roof
131 !
132 REAL(KIND=JPRB) :: ZHOOK_HANDLE
133 !-------------------------------------------------------------------------------
134 !
135 !* 1. Initializations
136 ! ---------------
137 !
138 IF (lhook) CALL dr_hook('PGD_TEB_GREENROOF_PAR',0,zhook_handle)
139 !
140 ilayer_gr = 0
141 itime_gr = 0
142 ytyp_gr = ' '
143 !
144 zunif_om_gr = xundef
145 zunif_clay_gr = xundef
146 zunif_sand_gr = xundef
147 zunif_lai_gr = xundef
148 !
149 yfnam_om_gr = ' '
150 yfnam_clay_gr = ' '
151 yfnam_sand_gr = ' '
152 yfnam_lai_gr = ' '
153 !
154 yftyp_om_gr = ' '
155 yftyp_clay_gr = ' '
156 yftyp_sand_gr = ' '
157 yftyp_lai_gr = ' '
158 !
159 !-------------------------------------------------------------------------------
160 !
161 !* 2. Input files for green roof characteristics
162 ! -------------------------------------------
163 !
164  CALL read_nam_pgd_teb_greenroof(hprogram, itime_gr,ilayer_gr,ytyp_gr, &
165  zunif_om_gr, zunif_clay_gr, zunif_sand_gr, zunif_lai_gr, &
166  yfnam_om_gr, yfnam_clay_gr, yfnam_sand_gr, yfnam_lai_gr, &
167  yftyp_om_gr, yftyp_clay_gr, yftyp_sand_gr, yftyp_lai_gr)
168 !
169 dtv%NTIME = itime_gr
170 io%NGROUND_LAYER = ilayer_gr
171 io%CTYP_COV = ytyp_gr
172 !
173 !* Coherence of options for the green roof type
174 ! -------------------------------------------
175 !
176  CALL test_nam_var_surf(iluout,'CTYP_GR',io%CTYP_COV,'GRASS','SEDUM')
177 !
178 !
179 ALLOCATE(s%XSOC (kdim,io%NGROUND_LAYER))
180 ALLOCATE(k%XCLAY (kdim,io%NGROUND_LAYER))
181 ALLOCATE(k%XSAND (kdim,io%NGROUND_LAYER))
182 ALLOCATE(dtv%XPAR_LAI (kdim,dtv%NTIME ,1))
183 !
184 !-------------------------------------------------------------------------------
185 !
186 !* 3.2 Uniform fields are prescribed
187 ! -----------------------------
188 !
189 CATYPE = 'ARI'
190 !
191 !
192 DO jlayer_gr=1,io%NGROUND_LAYER
193  CALL pgd_field(dtco, ug, u, uss, &
194  hprogram,'OM_GR: fraction of OM in GR layer','BLD',yfnam_om_gr(jlayer_gr), &
195  yftyp_om_gr(jlayer_gr), zunif_om_gr(jlayer_gr), s%XSOC(:,jlayer_gr))
196 ENDDO
197 !
198 DO jlayer_gr=1,io%NGROUND_LAYER
199  CALL pgd_field(dtco, ug, u, uss, &
200  hprogram,'CLAY_GR: fraction of CLAY in the non-OM part of GR layer','BLD',yfnam_clay_gr(jlayer_gr), &
201  yftyp_clay_gr(jlayer_gr), zunif_clay_gr(jlayer_gr), k%XCLAY(:,jlayer_gr))
202 ENDDO
203 !
204 DO jlayer_gr=1,io%NGROUND_LAYER
205  CALL pgd_field(dtco, ug, u, uss, &
206  hprogram,'SAND_GR: fraction of SAND in the non-OM part of GR layer','BLD',yfnam_sand_gr(jlayer_gr), &
207  yftyp_sand_gr(jlayer_gr), zunif_sand_gr(jlayer_gr), k%XSAND(:,jlayer_gr))
208 ENDDO
209 !
210 DO jtime=1,dtv%NTIME
211  CALL pgd_field(dtco, ug, u, uss, &
212  hprogram,'LAI_GR: LAI of green roof','BLD',yfnam_lai_gr(jtime), &
213  yftyp_lai_gr(jtime),zunif_lai_gr(jtime),dtv%XPAR_LAI(:,jtime,1))
214 !
215 ENDDO
216 !
217 !
218 IF (lhook) CALL dr_hook('PGD_TEB_GREENROOF_PAR',1,zhook_handle)
219 !
220 !-------------------------------------------------------------------------------
221 !
222 END SUBROUTINE pgd_teb_greenroof_par
character(len=3) catype
subroutine pgd_teb_greenroof_par(DTCO, DTV, UG, U, USS, IO, S, K,
real, parameter xundef
integer, parameter jprb
Definition: parkind1.F90:32
subroutine read_nam_pgd_teb_greenroof(HPROGRAM, KTIME_GR, KLAYER_GR
integer, parameter nlayer_gr_max
logical lhook
Definition: yomhook.F90:15
integer, parameter ntime_gr_max