SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
read_nam_pgd_teb_greenroof.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 read_nam_pgd_teb_greenroof(HPROGRAM, KTIME_GR,KLAYER_GR,HTYP_GR, &
7  punif_om_gr, punif_clay_gr, punif_sand_gr, punif_lai_gr,&
8  hfnam_om_gr, hfnam_clay_gr, hfnam_sand_gr, hfnam_lai_gr,&
9  hftyp_om_gr, hftyp_clay_gr, hftyp_sand_gr, hftyp_lai_gr )
10 ! ##############################################################
11 !
12 !!**** *READ_NAM_PGD_TEB_GREENROOF* reading of greenroof namelist
13 !!
14 !! PURPOSE
15 !! -------
16 !!
17 !! METHOD
18 !! ------
19 !!
20 !
21 !! EXTERNAL
22 !! --------
23 !!
24 !! IMPLICIT ARGUMENTS
25 !! ------------------
26 !!
27 !! REFERENCE
28 !! ---------
29 !!
30 !! AUTHOR
31 !! ------
32 !! A. Lemonsu / C. de Munck : TEB GreenRoof namelist
33 !!
34 !!
35 !! MODIFICATION
36 !! ------------
37 !!
38 !! Original 07/2011
39 !!
40 !----------------------------------------------------------------------------
41 !
42 !* 0. DECLARATION
43 ! -----------
44 !
45 USE modd_surf_par, ONLY : xundef
46 USE modd_teb_veg, ONLY : ntime_gr_max, nlayer_gr_max
47 !
48 USE modi_get_luout
49 USE modi_open_namelist
50 USE modi_close_namelist
51 !
52 USE modi_abor1_sfx
53 USE mode_pos_surf
54 !
55 !
56 USE yomhook ,ONLY : lhook, dr_hook
57 USE parkind1 ,ONLY : jprb
58 !
59 IMPLICIT NONE
60 !
61 !* 0.1 Declaration of arguments
62 ! ------------------------
63 !
64  CHARACTER(LEN=6), INTENT(IN) :: hprogram ! Type of program
65 INTEGER, INTENT(OUT) :: ktime_gr
66 INTEGER, INTENT(OUT) :: klayer_gr
67  CHARACTER(LEN=5), INTENT(OUT) :: htyp_gr
68 REAL,DIMENSION(:), INTENT(OUT) :: punif_om_gr
69 REAL,DIMENSION(:), INTENT(OUT) :: punif_clay_gr
70 REAL,DIMENSION(:), INTENT(OUT) :: punif_sand_gr
71 REAL,DIMENSION(:), INTENT(OUT) :: punif_lai_gr
72  CHARACTER(LEN=28),DIMENSION(:), INTENT(OUT) :: hfnam_om_gr
73  CHARACTER(LEN=28),DIMENSION(:), INTENT(OUT) :: hfnam_clay_gr
74  CHARACTER(LEN=28),DIMENSION(:), INTENT(OUT) :: hfnam_sand_gr
75  CHARACTER(LEN=28),DIMENSION(:), INTENT(OUT) :: hfnam_lai_gr
76  CHARACTER(LEN=6),DIMENSION(:), INTENT(OUT) :: hftyp_om_gr
77  CHARACTER(LEN=6),DIMENSION(:), INTENT(OUT) :: hftyp_clay_gr
78  CHARACTER(LEN=6),DIMENSION(:), INTENT(OUT) :: hftyp_sand_gr
79  CHARACTER(LEN=6),DIMENSION(:), INTENT(OUT) :: hftyp_lai_gr
80 
81 !* 0.2 Declaration of local variables
82 ! ------------------------------
83 !
84 INTEGER :: iluout ! output listing logical unit
85 INTEGER :: ilunam ! namelist file logical unit
86 LOGICAL :: gfound ! true if namelist is found
87 !
88 !* 0.3 Declaration of namelists
89 ! ------------------------
90 !
91 INTEGER :: nlayer_gr !
92 INTEGER :: ntime_gr !
93  CHARACTER(LEN=5) :: ctyp_gr ! type of green roof
94 !
95 ! uniform value
96 !
97 REAL,DIMENSION(NLAYER_GR_MAX) :: xunif_om_gr ! fraction of organic matter (OM) in green roof layer
98 REAL,DIMENSION(NLAYER_GR_MAX) :: xunif_clay_gr ! fraction of clay for the non-OM part of the green roof layer
99 REAL,DIMENSION(NLAYER_GR_MAX) :: xunif_sand_gr ! fraction of sand for the non-OM part of the green roof layer
100 REAL,DIMENSION(NTIME_GR_MAX) :: xunif_lai_gr ! LAI of green roof vegetation
101 !
102 ! name of files containing data
103 !
104  CHARACTER(LEN=28),DIMENSION(NLAYER_GR_MAX) :: cfnam_om_gr ! fraction of organic matter (OM) in green roof layer
105  CHARACTER(LEN=28),DIMENSION(NLAYER_GR_MAX) :: cfnam_clay_gr ! fraction of clay for the non-OM part of the green roof layer
106  CHARACTER(LEN=28),DIMENSION(NLAYER_GR_MAX) :: cfnam_sand_gr ! fraction of sand for the non-OM part of the green roof layer
107  CHARACTER(LEN=28),DIMENSION(NTIME_GR_MAX) :: cfnam_lai_gr ! LAI of green roof
108 !
109 ! type of files containing data
110 !
111  CHARACTER(LEN=6 ),DIMENSION(NLAYER_GR_MAX) :: cftyp_om_gr ! fraction of organic matter (OM) in green roof layer
112  CHARACTER(LEN=6 ),DIMENSION(NLAYER_GR_MAX) :: cftyp_clay_gr ! fraction of clay for the non-OM part of the green roof layer
113  CHARACTER(LEN=6 ),DIMENSION(NLAYER_GR_MAX) :: cftyp_sand_gr ! fraction of sand for the non-OM part of the green roof layer
114  CHARACTER(LEN=6 ),DIMENSION(NTIME_GR_MAX) :: cftyp_lai_gr ! LAI of green roof
115 !
116 REAL(KIND=JPRB) :: zhook_handle
117 !
118 namelist/nam_data_teb_greenroof/ ntime_gr,nlayer_gr, &
119  ctyp_gr, &
120  xunif_om_gr, xunif_clay_gr, xunif_sand_gr, xunif_lai_gr, &
121  cfnam_om_gr, cfnam_clay_gr, cfnam_sand_gr, cfnam_lai_gr, &
122  cftyp_om_gr, cftyp_clay_gr, cftyp_sand_gr, cftyp_lai_gr
123 !
124 !-------------------------------------------------------------------------------
125 !
126 !* 1. Initializations
127 ! ---------------
128 !
129 IF (lhook) CALL dr_hook('PGD_TEB_GREENROOF_PAR',0,zhook_handle)
130 !
131 ntime_gr = 1
132 nlayer_gr = 6
133  ctyp_gr = 'GRASS' ! Grasses - graminoïds
134 !
135 xunif_om_gr = xundef
136 xunif_clay_gr = xundef
137 xunif_sand_gr = xundef
138 xunif_lai_gr = xundef
139 !
140  cfnam_om_gr = ' '
141  cfnam_clay_gr = ' '
142  cfnam_sand_gr = ' '
143  cfnam_lai_gr = ' '
144 !
145  cftyp_om_gr = ' '
146  cftyp_clay_gr = ' '
147  cftyp_sand_gr = ' '
148  cftyp_lai_gr = ' '
149 !
150 !-------------------------------------------------------------------------------
151 !
152 !* 2. Reading of green roof namelist
153 ! ------------------------------
154 !
155  CALL get_luout(hprogram,iluout)
156  CALL open_namelist(hprogram,ilunam)
157  CALL posnam(ilunam,'NAM_DATA_TEB_GREENROOF',gfound,iluout)
158 IF (gfound) READ(unit=ilunam,nml=nam_data_teb_greenroof)
159 !
160  CALL close_namelist(hprogram,ilunam)
161 !
162 !--------------------------------------------------
163 IF (ntime_gr/=1 .AND. ntime_gr/=12) THEN
164  CALL abor1_sfx('NTIME_GR must be either equal to 1 (uniform LAI) or 12 (monthly LAI)')
165 END IF
166 !--------------------------------------------------
167 !
168 ktime_gr = ntime_gr
169 klayer_gr = nlayer_gr
170 htyp_gr = ctyp_gr
171 punif_om_gr = xunif_om_gr
172 punif_clay_gr = xunif_clay_gr
173 punif_sand_gr = xunif_sand_gr
174 punif_lai_gr = xunif_lai_gr
175 hfnam_om_gr = cfnam_om_gr
176 hfnam_clay_gr = cfnam_clay_gr
177 hfnam_sand_gr = cfnam_sand_gr
178 hfnam_lai_gr = cfnam_lai_gr
179 hftyp_om_gr = cftyp_om_gr
180 hftyp_clay_gr = cftyp_clay_gr
181 hftyp_sand_gr = cftyp_sand_gr
182 hftyp_lai_gr = cftyp_lai_gr
183 !
184 IF (lhook) CALL dr_hook('READ_NAM_PGD_TEB_GREENROOF',1,zhook_handle)
185 !
186 !-------------------------------------------------------------------------------
187 !
188 END SUBROUTINE read_nam_pgd_teb_greenroof
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 abor1_sfx(YTEXT)
Definition: abor1_sfx.F90:6
subroutine close_namelist(HPROGRAM, KLUNAM)
subroutine posnam(KULNAM, HDNAML, OFOUND, KLUOUT)
subroutine get_luout(HPROGRAM, KLUOUT)
Definition: get_luout.F90:6
subroutine open_namelist(HPROGRAM, KLUNAM, HFILE)