SURFEX v8.1
General documentation of Surfex
read_pgd_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 read_pgd_teb_garden_n (OCH_BIO_FLUX, DTCO, DTV, GB, U, &
7  IO, K, KDIM, TOP, HPROGRAM,KVERSION,KBUGFIX)
8 ! #########################################
9 !
10 !!**** *READ_PGD_TEB_GARDEN_n* - routine to initialise ISBA physiographic variables
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 !! V. Masson *Meteo France*
32 !!
33 !! MODIFICATIONS
34 !! -------------
35 !! Original 01/2003
36 !! P. Le Moigne 12/2004 : add type of photosynthesis
37 !! B. Decharme 2008 : add XWDRAIN
38 !-------------------------------------------------------------------------------
39 !
40 !* 0. DECLARATIONS
41 ! ------------
42 !
44 !
45 USE modd_data_isba_n, ONLY : data_isba_t
46 USE modd_gr_biog_n, ONLY : gr_biog_t
47 !
48 USE modd_surf_atm_n, ONLY : surf_atm_t
49 !
51 USE modd_isba_n, ONLY : isba_k_t
52 !
54 !
55 USE modd_surf_par, ONLY : xundef
56 USE modd_isba_par, ONLY : xoptimgrid
57 !
58 USE modi_read_pgd_teb_garden_par_n
60 !
61 USE yomhook ,ONLY : lhook, dr_hook
62 USE parkind1 ,ONLY : jprb
63 !
64 USE modi_get_type_dim_n
65 !
66 IMPLICIT NONE
67 !
68 !* 0.1 Declarations of arguments
69 ! -------------------------
70 !
71 LOGICAL, INTENT(IN) :: OCH_BIO_FLUX
72 !
73 TYPE(data_cover_t), INTENT(INOUT) :: DTCO
74 TYPE(data_isba_t), INTENT(INOUT) :: DTV
75 TYPE(gr_biog_t), INTENT(INOUT) :: GB
76 TYPE(surf_atm_t), INTENT(INOUT) :: U
77 TYPE(isba_options_t), INTENT(INOUT) :: IO
78 TYPE(isba_k_t), INTENT(INOUT) :: K
79 INTEGER, INTENT(INOUT) :: KDIM
80 TYPE(teb_options_t), INTENT(INOUT) :: TOP
81 !
82  CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! calling program
83 INTEGER, INTENT(IN) :: KVERSION ! version of SURFEX of the file being read
84 INTEGER, INTENT(IN) :: KBUGFIX
85 !
86 !* 0.2 Declarations of local variables
87 ! -------------------------------
88 !
89 INTEGER :: IRESP ! Error code after redding
90 !
91  CHARACTER(LEN=12) :: YRECFM ! Name of the article to be read
92 !
93 INTEGER :: JLAYER ! loop counter on layers
94 REAL(KIND=JPRB) :: ZHOOK_HANDLE
95 !
96 !-------------------------------------------------------------------------------
97 !
98 !* 1D physical dimension
99 !
100 IF (lhook) CALL dr_hook('READ_PGD_TEB_GARDEN_N',0,zhook_handle)
101 yrecfm='SIZE_TOWN'
102  CALL get_type_dim_n(dtco, u, 'TOWN ',kdim)
103 !
104 !
105 !* clay fraction : attention, seul un niveau est present dans le fichier
106 !* on rempli tout les niveaux de XCLAY avec les valeurs du fichiers
107 !
108 yrecfm='TWN_CLAY'
109 IF (kversion>7 .OR. kversion==7 .AND. kbugfix>=3) yrecfm='GD_CLAY'
110  CALL read_surf(hprogram,yrecfm,k%XCLAY(:,1),iresp)
111 DO jlayer=2,io%NGROUND_LAYER
112  k%XCLAY(:,jlayer)=k%XCLAY(:,1)
113 END DO
114 !
115 !* sand fraction
116 !
117 yrecfm='TWN_SAND'
118 IF (kversion>7 .OR. kversion==7 .AND. kbugfix>=3) yrecfm='GD_SAND'
119  CALL read_surf(hprogram,yrecfm,k%XSAND(:,1),iresp)
120 DO jlayer=2,io%NGROUND_LAYER
121  k%XSAND(:,jlayer)=k%XSAND(:,1)
122 END DO
123 !
124 !* orographic runoff coefficient
125 !
126 yrecfm='TWN_RUNOFFB'
127 IF (kversion>7 .OR. kversion==7 .AND. kbugfix>=3) yrecfm='GD_RUNOFFB'
128  CALL read_surf(hprogram,yrecfm,k%XRUNOFFB,iresp)
129 !
130 !* subgrid drainage coefficient
131 !
132 IF (kversion<=3) THEN
133  k%XWDRAIN = 0.
134 ELSE
135  yrecfm='TWN_WDRAIN'
136  IF (kversion>7 .OR. kversion==7 .AND. kbugfix>=3) yrecfm='GD_WDRAIN'
137  CALL read_surf(hprogram,yrecfm,k%XWDRAIN,iresp)
138 ENDIF
139 !
140 !-------------------------------------------------------------------------------
141 !
142 !* biogenic chemical emissions
143 !
144 IF (och_bio_flux) THEN
145  ALLOCATE(gb%XISOPOT(kdim))
146  yrecfm='E_ISOPOT'
147  CALL read_surf(hprogram,yrecfm,gb%XISOPOT,iresp)
148  !
149  ALLOCATE(gb%XMONOPOT(kdim))
150  yrecfm='E_MONOPOT'
151  CALL read_surf(hprogram,yrecfm,gb%XMONOPOT,iresp)
152 ELSE
153  ALLOCATE(gb%XISOPOT (0))
154  ALLOCATE(gb%XMONOPOT(0))
155 END IF
156 !
157 !-------------------------------------------------------------------------------
158 !
159 !* 4. Physiographic data fields not to be computed by ecoclimap
160 ! ---------------------------------------------------------
161 !
162 IF (kversion>=7) THEN
163  yrecfm='PAR_GARDEN'
164  CALL read_surf(hprogram,yrecfm,io%LPAR,iresp)
165 ELSEIF (.NOT.top%LECOCLIMAP) THEN
166  io%LPAR = .true.
167 ELSE
168  io%LPAR = .false.
169 ENDIF
170 !
171 io%LECOCLIMAP = (.NOT. io%LPAR)
172 !
173 ALLOCATE(dtv%LDATA_LAI (1))
174 ALLOCATE(dtv%LDATA_VEG (1))
175 ALLOCATE(dtv%LDATA_Z0 (1))
176 ALLOCATE(dtv%LDATA_EMIS (1))
177 ALLOCATE(dtv%LDATA_ALBNIR_VEG (1))
178 ALLOCATE(dtv%LDATA_ALBVIS_VEG (1))
179 ALLOCATE(dtv%LDATA_ALBUV_VEG (1))
180 ALLOCATE(dtv%LDATA_ALBNIR_SOIL(1))
181 ALLOCATE(dtv%LDATA_ALBVIS_SOIL(1))
182 ALLOCATE(dtv%LDATA_ALBUV_SOIL (1))
183 !
184 IF (.NOT.io%LPAR) THEN
185  dtv%LDATA_LAI = .false.
186  dtv%LDATA_VEG = .false.
187  dtv%LDATA_Z0 = .false.
188  dtv%LDATA_EMIS = .false.
189  dtv%LDATA_ALBNIR_VEG = .false.
190  dtv%LDATA_ALBVIS_VEG = .false.
191  dtv%LDATA_ALBUV_VEG = .false.
192  dtv%LDATA_ALBNIR_SOIL= .false.
193  dtv%LDATA_ALBVIS_SOIL= .false.
194  dtv%LDATA_ALBUV_SOIL = .false.
195 ELSE
196  dtv%LDATA_LAI = .true.
197  dtv%LDATA_VEG = .true.
198  dtv%LDATA_Z0 = .true.
199  dtv%LDATA_EMIS = .true.
200  dtv%LDATA_ALBNIR_VEG = .true.
201  dtv%LDATA_ALBVIS_VEG = .true.
202  dtv%LDATA_ALBUV_VEG = .true.
203  dtv%LDATA_ALBNIR_SOIL= .true.
204  dtv%LDATA_ALBVIS_SOIL= .true.
205  dtv%LDATA_ALBUV_SOIL = .true.
206 ENDIF
207 !
208 IF (io%LPAR) CALL read_pgd_teb_garden_par_n(dtv, io, kdim, hprogram)
209 !
210 IF (lhook) CALL dr_hook('READ_PGD_TEB_GARDEN_N',1,zhook_handle)
211 !
212 !
213 !-------------------------------------------------------------------------------
214 !
215 END SUBROUTINE read_pgd_teb_garden_n
subroutine get_type_dim_n(DTCO, U, HTYPE, KDIM)
real, parameter xundef
integer, parameter jprb
Definition: parkind1.F90:32
subroutine read_pgd_teb_garden_n(OCH_BIO_FLUX, DTCO, DTV, GB, U,
logical lhook
Definition: yomhook.F90:15