SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
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, DTGR, UG, U, USS, TGRO, TG, &
7  hprogram)
8 ! ##############################################################
9 !
10 !!**** *PGD_TEB_GREENROOF_PAR* monitor for averaging and interpolations of cover fractions
11 !!
12 !! PURPOSE
13 !! -------
14 !!
15 !! METHOD
16 !! ------
17 !!
18 !
19 !! EXTERNAL
20 !! --------
21 !!
22 !! IMPLICIT ARGUMENTS
23 !! ------------------
24 !!
25 !! REFERENCE
26 !! ---------
27 !!
28 !! AUTHOR
29 !! ------
30 !!
31 !! A. Lemonsu Meteo-France
32 !!
33 !! MODIFICATION
34 !! ------------
35 !!
36 !! Original 09/2009
37 !! A. Lemonsu / C. de Munck 04/2011 : TEB GreenRoof
38 !!
39 !----------------------------------------------------------------------------
40 !
41 !* 0. DECLARATION
42 ! -----------
43 !
44 !
45 !
49 USE modd_surf_atm_n, ONLY : surf_atm_t
52 USE modd_teb_grid_n, ONLY : teb_grid_t
53 !
54 USE modd_data_cover_par, ONLY : nvegtype
55 USE modd_surf_par, ONLY : xundef
56 USE modd_teb_veg, ONLY : nlayer_gr_max, ntime_gr_max
57 !
58 USE modd_pgdwork, ONLY : catype
59 !
60 USE modi_read_nam_pgd_teb_greenroof
61 USE modi_pgd_field
63 !
64 USE mode_pos_surf
65 !
66 !
67 USE yomhook ,ONLY : lhook, dr_hook
68 USE parkind1 ,ONLY : jprb
69 !
70 IMPLICIT NONE
71 !
72 !* 0.1 Declaration of arguments
73 ! ------------------------
74 !
75 !
76 TYPE(data_cover_t), INTENT(INOUT) :: dtco
77 TYPE(data_teb_greenroof_t), INTENT(INOUT) :: dtgr
78 TYPE(surf_atm_grid_t), INTENT(INOUT) :: ug
79 TYPE(surf_atm_t), INTENT(INOUT) :: u
80 TYPE(surf_atm_sso_t), INTENT(INOUT) :: uss
81 TYPE(teb_greenroof_options_t), INTENT(INOUT) :: tgro
82 TYPE(teb_grid_t), INTENT(INOUT) :: tg
83 !
84  CHARACTER(LEN=6), INTENT(IN) :: hprogram ! Type of program
85 !
86 !
87 !* 0.2 Declaration of local variables
88 ! ------------------------------
89 !
90 INTEGER :: iluout ! output listing logical unit
91 INTEGER :: ilunam ! namelist file logical unit
92 LOGICAL :: gfound ! true if namelist is found
93 !
94 INTEGER :: jlayer ! loop counter on layers
95 INTEGER :: jlayer_gr ! loop counter on green roof layers
96 INTEGER :: jtime ! loop counter on time
97 INTEGER :: jpatch ! loop counter on patch
98 INTEGER :: jvegtype ! loop counter on vegtypes
99 !
100 !
101 INTEGER, PARAMETER :: jpground_max = 20
102 INTEGER, PARAMETER :: jpvegtype_max = 12
103 !
104 ! declaration of namelist variables
105 INTEGER :: ilayer_gr ! number of green roof physical layers
106 INTEGER :: itime_gr ! ntime for green roof parameters
107  CHARACTER(LEN=5) :: ytyp_gr ! type of green roof
108 !
109 ! uniform value
110 !
111 REAL,DIMENSION(NLAYER_GR_MAX) :: zunif_om_gr ! fraction of organic matter (OM) in green roof layer
112 REAL,DIMENSION(NLAYER_GR_MAX) :: zunif_clay_gr ! fraction of clay for the non-OM part of the green roof layer
113 REAL,DIMENSION(NLAYER_GR_MAX) :: zunif_sand_gr ! fraction of sand for the non-OM part of the green roof layer
114 REAL,DIMENSION(NTIME_GR_MAX) :: zunif_lai_gr ! LAI of green roof vegetation
115 !
116 ! name of files containing data
117 !
118  CHARACTER(LEN=28),DIMENSION(NLAYER_GR_MAX) :: yfnam_om_gr ! fraction of organic matter (OM) in green roof layer
119  CHARACTER(LEN=28),DIMENSION(NLAYER_GR_MAX) :: yfnam_clay_gr ! fraction of clay for the non-OM part of the green roof layer
120  CHARACTER(LEN=28),DIMENSION(NLAYER_GR_MAX) :: yfnam_sand_gr ! fraction of sand for the non-OM part of the green roof layer
121  CHARACTER(LEN=28),DIMENSION(NTIME_GR_MAX) :: yfnam_lai_gr ! LAI of green roof
122 !
123 ! type of files containing data
124 !
125  CHARACTER(LEN=6 ),DIMENSION(NLAYER_GR_MAX) :: yftyp_om_gr ! fraction of organic matter (OM) in green roof layer
126  CHARACTER(LEN=6 ),DIMENSION(NLAYER_GR_MAX) :: yftyp_clay_gr ! fraction of clay for the non-OM part of the green roof layer
127  CHARACTER(LEN=6 ),DIMENSION(NLAYER_GR_MAX) :: yftyp_sand_gr ! fraction of sand for the non-OM part of the green roof layer
128  CHARACTER(LEN=6 ),DIMENSION(NTIME_GR_MAX) :: yftyp_lai_gr ! LAI of green roof
129 !
130 REAL(KIND=JPRB) :: zhook_handle
131 !-------------------------------------------------------------------------------
132 !
133 !* 1. Initializations
134 ! ---------------
135 !
136 IF (lhook) CALL dr_hook('PGD_TEB_GREENROOF_PAR',0,zhook_handle)
137 !
138 ilayer_gr = 0
139 itime_gr = 0
140 ytyp_gr = ' '
141 !
142 zunif_om_gr = xundef
143 zunif_clay_gr = xundef
144 zunif_sand_gr = xundef
145 zunif_lai_gr = xundef
146 !
147 yfnam_om_gr = ' '
148 yfnam_clay_gr = ' '
149 yfnam_sand_gr = ' '
150 yfnam_lai_gr = ' '
151 !
152 yftyp_om_gr = ' '
153 yftyp_clay_gr = ' '
154 yftyp_sand_gr = ' '
155 yftyp_lai_gr = ' '
156 !
157 !-------------------------------------------------------------------------------
158 !
159 !* 2. Input files for green roof characteristics
160 ! -------------------------------------------
161 !
162  CALL read_nam_pgd_teb_greenroof(hprogram, itime_gr,ilayer_gr,ytyp_gr, &
163  zunif_om_gr, zunif_clay_gr, zunif_sand_gr, zunif_lai_gr, &
164  yfnam_om_gr, yfnam_clay_gr, yfnam_sand_gr, yfnam_lai_gr, &
165  yftyp_om_gr, yftyp_clay_gr, yftyp_sand_gr, yftyp_lai_gr)
166 !
167 tgro%NTIME_GR = itime_gr
168 tgro%NLAYER_GR = ilayer_gr
169 tgro%CTYP_GR = ytyp_gr
170 !
171 !* Coherence of options for the green roof type
172 ! -------------------------------------------
173 !
174  CALL test_nam_var_surf(iluout,'CTYP_GR',tgro%CTYP_GR,'GRASS','SEDUM')
175 !
176 !
177 ALLOCATE(dtgr%XPAR_OM_GR (tg%NDIM,tgro%NLAYER_GR))
178 ALLOCATE(dtgr%XPAR_CLAY_GR (tg%NDIM,tgro%NLAYER_GR))
179 ALLOCATE(dtgr%XPAR_SAND_GR (tg%NDIM,tgro%NLAYER_GR))
180 ALLOCATE(dtgr%XPAR_LAI_GR (tg%NDIM,tgro%NTIME_GR ))
181 !
182 !-------------------------------------------------------------------------------
183 !
184 !* 3.2 Uniform fields are prescribed
185 ! -----------------------------
186 !
187  catype = 'ARI'
188 !
189 !
190 DO jlayer_gr=1,tgro%NLAYER_GR
191  CALL pgd_field(dtco, ug, u, uss, &
192  hprogram,'OM_GR: fraction of OM in GR layer','BLD',yfnam_om_gr(jlayer_gr), &
193  yftyp_om_gr(jlayer_gr), zunif_om_gr(jlayer_gr), dtgr%XPAR_OM_GR(:,jlayer_gr))
194 ENDDO
195 !
196 DO jlayer_gr=1,tgro%NLAYER_GR
197  CALL pgd_field(dtco, ug, u, uss, &
198  hprogram,'CLAY_GR: fraction of CLAY in the non-OM part of GR layer','BLD',yfnam_clay_gr(jlayer_gr), &
199  yftyp_clay_gr(jlayer_gr), zunif_clay_gr(jlayer_gr), dtgr%XPAR_CLAY_GR(:,jlayer_gr))
200 ENDDO
201 !
202 DO jlayer_gr=1,tgro%NLAYER_GR
203  CALL pgd_field(dtco, ug, u, uss, &
204  hprogram,'SAND_GR: fraction of SAND in the non-OM part of GR layer','BLD',yfnam_sand_gr(jlayer_gr), &
205  yftyp_sand_gr(jlayer_gr), zunif_sand_gr(jlayer_gr), dtgr%XPAR_SAND_GR(:,jlayer_gr))
206 ENDDO
207 !
208 DO jtime=1,tgro%NTIME_GR
209  CALL pgd_field(dtco, ug, u, uss, &
210  hprogram,'LAI_GR: LAI of green roof','BLD',yfnam_lai_gr(jtime), &
211  yftyp_lai_gr(jtime),zunif_lai_gr(jtime),dtgr%XPAR_LAI_GR(:,jtime))
212 !
213 ENDDO
214 !
215 !
216 IF (lhook) CALL dr_hook('PGD_TEB_GREENROOF_PAR',1,zhook_handle)
217 !
218 !-------------------------------------------------------------------------------
219 !
220 END SUBROUTINE pgd_teb_greenroof_par
subroutine pgd_field(DTCO, UG, U, USS, HPROGRAM, HFIELD, HAREA, HFILE, HFILETYPE, PUNIF, PFIELD, OPRESENT)
Definition: pgd_field.F90:6
subroutine read_nam_pgd_teb_greenroof(HPROGRAM, KTIME_GR, KLAYER_GR, HTYP_GR, PUNIF_OM_GR, PUNIF_CLAY_GR, PUNIF_SAND_GR, PUNIF_LAI_GR, HFNAM_OM_GR, HFNAM_CLAY_GR, HFNAM_SAND_GR, HFNAM_LAI_GR, HFTYP_OM_GR, HFTYP_CLAY_GR, HFTYP_SAND_GR, HFTYP_LAI_GR)
subroutine pgd_teb_greenroof_par(DTCO, DTGR, UG, U, USS, TGRO, TG, HPROGRAM)