SURFEX v8.1
General documentation of Surfex
read_pgd_isban.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_isba_n (CHI, DTCO, DTV, DTZ, GB, IG, ISS, IO, S, K, &
7  UG, U, USS, GCP, SV, HPROGRAM, OLAND_USE, TPDATE_END)
8 ! #########################################
9 !
10 !!**** *READ_PGD_ISBA_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 !! B. Decharme 06/2009 : add topographic index statistics
39 !! A.L. Gibelin 04/2009 : dimension NBIOMASS for ISBA-A-gs
40 !! B. Decharme 07/2012 : files of data for permafrost area and for SOC top and sub soil
41 !! 11/2013 : same for groundwater distribution
42 !! 11/2014 : Read XSOILGRID as a series of real
43 !! P. Samuelsson 10/2014 : MEB
44 !! 10/2016 B. Decharme : bug surface/groundwater coupling
45 !-------------------------------------------------------------------------------
46 !
47 !* 0. DECLARATIONS
48 ! ------------
49 !
50 !
51 USE modd_ch_isba_n, ONLY : ch_isba_t
53 USE modd_data_isba_n, ONLY : data_isba_t
54 USE modd_data_tsz0_n, ONLY : data_tsz0_t
55 USE modd_gr_biog_n, ONLY : gr_biog_t
56 USE modd_sfx_grid_n, ONLY : grid_t
57 USE modd_sso_n, ONLY : sso_t
59 USE modd_isba_n, ONLY : isba_s_t, isba_k_t
61 USE modd_surf_atm_n, ONLY : surf_atm_t
62 USE modd_sso_n, ONLY : sso_t
64 USE modd_sv_n, ONLY : sv_t
65 !
67 !
68 USE modd_data_cover_par, ONLY : jpcover
69 !
70 USE modd_surf_par, ONLY : xundef
71 USE modd_isba_par, ONLY : xoptimgrid
72 !
73 USE modi_read_nam_pgd_isba
74 !
75 USE modi_init_io_surf_n
76 USE modi_end_io_surf_n
77 !
79 USE modi_pack_init
80 USE modi_pack_sso
81 USE modi_read_pgd_isba_par_n
82 USE modi_read_pgd_tsz0_par_n
83 !
84 USE yomhook ,ONLY : lhook, dr_hook
85 USE parkind1 ,ONLY : jprb
86 !
87 USE modi_get_type_dim_n
88 USE modi_read_lecoclimap
89 !
90 USE modi_abor1_sfx
91 !
92 USE modi_get_luout
94 USE modi_get_surf_mask_n
95 !
96 IMPLICIT NONE
97 !
98 !* 0.1 Declarations of arguments
99 ! -------------------------
100 !
101 !
102 TYPE(ch_isba_t), INTENT(INOUT) :: CHI
103 TYPE(data_cover_t), INTENT(INOUT) :: DTCO
104 TYPE(data_isba_t), INTENT(INOUT) :: DTV
105 TYPE(data_tsz0_t), INTENT(INOUT) :: DTZ
106 TYPE(gr_biog_t), INTENT(INOUT) :: GB
107 TYPE(grid_t), INTENT(INOUT) :: IG
108 TYPE(sso_t), INTENT(INOUT) :: ISS
109 TYPE(isba_options_t), INTENT(INOUT) :: IO
110 TYPE(isba_s_t), INTENT(INOUT) :: S
111 TYPE(isba_k_t), INTENT(INOUT) :: K
112 TYPE(surf_atm_grid_t), INTENT(INOUT) :: UG
113 TYPE(surf_atm_t), INTENT(INOUT) :: U
114 TYPE(sso_t), INTENT(INOUT) :: USS
115 TYPE(grid_conf_proj_t),INTENT(INOUT) :: GCP
116 TYPE(sv_t), INTENT(INOUT) :: SV
117 !
118  CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! calling program
119 LOGICAL, INTENT(IN) :: OLAND_USE !
120 TYPE(date), INTENT(IN) :: TPDATE_END
121 !
122 !* 0.2 Declarations of local variables
123 ! -------------------------------
124 !
125 INTEGER, DIMENSION(:), POINTER :: IMASK ! mask for packing from complete field to nature field
126 !
127 REAL, DIMENSION(:,:), ALLOCATABLE :: ZWORK
128 !
129  CHARACTER(LEN=12) :: YRECFM ! Name of the article to be read
130  CHARACTER(LEN=4 ) :: YLVL
131 !
132 INTEGER :: ISIZE_LMEB_PATCH ! Number of patches with MEB=true
133 INTEGER :: ILU ! expected physical size of full surface array
134 INTEGER :: ILUOUT ! output listing logical unit
135 INTEGER :: IRESP ! Error code after redding
136 INTEGER :: JLAYER ! loop counter on layers
137 INTEGER :: IVERSION, IBUGFIX ! surface version
138 !
139 INTEGER :: IPATCH ! number of patches
140 INTEGER :: IGROUND_LAYER ! number of soil layers
141 INTEGER :: JVEGTYPE
142  CHARACTER(LEN=3) :: YISBA ! ISBA option
143  CHARACTER(LEN=4) :: YPEDOTF ! Pedo transfert function for DIF
144  CHARACTER(LEN=3) :: YPHOTO ! photosynthesis option
145 LOGICAL :: GTR_ML ! new radiative transfert
146  CHARACTER(LEN=4) :: YALBEDO
147 REAL :: ZRM_PATCH ! threshold to remove little fractions of patches
148  CHARACTER(LEN=28) :: YSAND ! file name for sand fraction
149  CHARACTER(LEN=28) :: YCLAY ! file name for clay fraction
150  CHARACTER(LEN=28) :: YSOC_TOP ! file name for organic carbon top soil
151  CHARACTER(LEN=28) :: YSOC_SUB ! file name for organic carbon sub soil
152  CHARACTER(LEN=28) :: YCTI ! file name for topographic index
153  CHARACTER(LEN=28) :: YRUNOFFB ! file name for runoffb parameter
154  CHARACTER(LEN=28) :: YWDRAIN ! file name for wdrain parameter
155  CHARACTER(LEN=28) :: YPERM ! file name for permafrost distribution
156  CHARACTER(LEN=6) :: YSANDFILETYPE ! sand data file type
157  CHARACTER(LEN=6) :: YCLAYFILETYPE ! clay data file type
158  CHARACTER(LEN=6) :: YSOCFILETYPE ! organic carbon data file type
159  CHARACTER(LEN=6) :: YCTIFILETYPE ! topographic index data file type
160  CHARACTER(LEN=6) :: YRUNOFFBFILETYPE ! subgrid runoff data file type
161  CHARACTER(LEN=6) :: YWDRAINFILETYPE ! subgrid drainage data file type
162  CHARACTER(LEN=6) :: YPERMFILETYPE ! permafrost distribution data file type
163 REAL :: XUNIF_SAND ! uniform value of sand fraction (-)
164 REAL :: XUNIF_CLAY ! uniform value of clay fraction (-)
165 REAL :: XUNIF_SOC_TOP ! uniform value of organic carbon top soil (kg/m2)
166 REAL :: XUNIF_SOC_SUB ! uniform value of organic carbon sub soil (kg/m2)
167 REAL :: XUNIF_RUNOFFB ! uniform value of subgrid runoff coefficient
168 REAL :: XUNIF_WDRAIN ! uniform subgrid drainage parameter
169 REAL :: XUNIF_PERM ! uniform permafrost distribution
170 LOGICAL :: LIMP_SAND ! Imposed maps of Sand
171 LOGICAL :: LIMP_CLAY ! Imposed maps of Clay
172 LOGICAL :: LIMP_SOC ! Imposed maps of organic carbon
173 LOGICAL :: LIMP_CTI ! Imposed maps of topographic index statistics
174 LOGICAL :: LIMP_PERM ! Imposed maps of permafrost distribution
175 REAL, DIMENSION(150) :: ZSOILGRID ! Soil grid reference for DIF
176  CHARACTER(LEN=28) :: YPH ! file name for pH
177  CHARACTER(LEN=28) :: YFERT ! file name for fertilisation rate
178  CHARACTER(LEN=6) :: YPHFILETYPE ! pH data file type
179  CHARACTER(LEN=6) :: YFERTFILETYPE ! fertilisation data file type
180 REAL :: XUNIF_PH ! uniform value of pH
181 REAL :: XUNIF_FERT ! uniform value of fertilisation rate
182 LOGICAL :: GMEB ! Multi-energy balance (MEB)
183 !
184 LOGICAL :: GECOSG
185 !
186 REAL(KIND=JPRB) :: ZHOOK_HANDLE
187 !
188 !-------------------------------------------------------------------------------
189 !
190 !* 1D physical dimension
191 !
192 IF (lhook) CALL dr_hook('READ_PGD_ISBA_N',0,zhook_handle)
193 yrecfm='SIZE_NATURE'
194  CALL get_type_dim_n(dtco, u, 'NATURE',ig%NDIM)
195 !
196 yrecfm='VERSION'
197  CALL read_surf(hprogram,yrecfm,iversion,iresp)
198 !
199 yrecfm='BUG'
200  CALL read_surf(hprogram,yrecfm,ibugfix,iresp)
201 !
202 !* 2. Dimension initializations:
203 ! -------------------------
204 !
205 !* soil scheme
206 !
207 yrecfm='ISBA'
208  CALL read_surf(hprogram,yrecfm,io%CISBA,iresp)
209 !
210 IF (iversion>=7) THEN
211  !
212  !* Pedo-transfert function
213  !
214  yrecfm='PEDOTF'
215  CALL read_surf(hprogram,yrecfm,io%CPEDOTF,iresp)
216  !
217 ELSE
218  io%CPEDOTF = 'CH78'
219 ENDIF
220 !
221 !* type of photosynthesis
222 !
223 yrecfm='PHOTO'
224  CALL read_surf(hprogram,yrecfm,io%CPHOTO,iresp)
225 !
226 !* new radiative transfert
227 !
228 IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=2) THEN
229  !
230  yrecfm='TR_ML'
231  CALL read_surf(hprogram,yrecfm,io%LTR_ML,iresp)
232  !
233 ELSE
234  io%LTR_ML = .false.
235 ENDIF
236 !
237 IF (iversion>8 .OR. iversion==8 .AND. ibugfix>=1) THEN
238  !
239  yrecfm='ALBEDO'
240  CALL read_surf(hprogram,yrecfm,io%CALBEDO,iresp)
241  !
242 ELSE
243  !
244  CALL read_nam_pgd_isba(hprogram, ipatch, iground_layer, &
245  yisba, ypedotf, yphoto, gtr_ml, yalbedo, zrm_patch, &
246  yclay, yclayfiletype, xunif_clay, limp_clay, &
247  ysand, ysandfiletype, xunif_sand, limp_sand, &
248  ysoc_top, ysoc_sub, ysocfiletype, xunif_soc_top, &
249  xunif_soc_sub, limp_soc, ycti, yctifiletype, limp_cti, &
250  yperm, ypermfiletype, xunif_perm, limp_perm, gmeb, &
251  yrunoffb, yrunoffbfiletype, xunif_runoffb, &
252  ywdrain, ywdrainfiletype , xunif_wdrain, zsoilgrid, &
253  yph, yphfiletype, xunif_ph, yfert, yfertfiletype, &
254  xunif_fert )
255  io%CALBEDO = yalbedo
256  !
257 ENDIF
258 !
259 !* threshold to remove little fractions of patches
260 !
261 IF (iversion>7 .OR. iversion==7 .AND. ibugfix>=3) THEN
262  !
263  yrecfm='RM_PATCH'
264  CALL read_surf(hprogram,yrecfm,io%XRM_PATCH,iresp)
265  !
266 ELSE
267  io%XRM_PATCH = 0.0
268 ENDIF
269 !
270 !* number of soil layers
271 !
272 yrecfm='GROUND_LAYER'
273  CALL read_surf(hprogram,yrecfm,io%NGROUND_LAYER,iresp)
274 !
275 !* Reference grid for DIF
276 !
277 IF(io%CISBA=='DIF') THEN
278  ALLOCATE(io%XSOILGRID(io%NGROUND_LAYER))
279  io%XSOILGRID=xundef
280  IF (iversion>=8) THEN
281  DO jlayer=1,io%NGROUND_LAYER
282  WRITE(ylvl,'(I4)') jlayer
283  yrecfm='SOILGRID'//adjustl(ylvl(:len_trim(ylvl)))
284  CALL read_surf(hprogram,yrecfm,io%XSOILGRID(jlayer),iresp)
285  ENDDO
286  ELSEIF (iversion==7 .AND. ibugfix>=2) THEN
287  yrecfm='SOILGRID'
288  CALL read_surf(hprogram,yrecfm,io%XSOILGRID,iresp,hdir='-')
289  ELSE
290  io%XSOILGRID(1:io%NGROUND_LAYER)=xoptimgrid(1:io%NGROUND_LAYER)
291  ENDIF
292 ELSE
293  ALLOCATE(io%XSOILGRID(0))
294 ENDIF
295 !
296 !* number of biomass pools
297 !
298 IF (iversion>=6) THEN
299  yrecfm='NBIOMASS'
300  CALL read_surf(hprogram,yrecfm,io%NNBIOMASS,iresp)
301 ELSE
302  SELECT CASE (io%CPHOTO)
303  CASE ('AST')
304  io%NNBIOMASS = 1
305  CASE ('NIT')
306  io%NNBIOMASS = 3
307  CASE ('NCB')
308  io%NNBIOMASS = 6
309  END SELECT
310 ENDIF
311 !
312 !* number of tiles
313 !
314 yrecfm='PATCH_NUMBER'
315  CALL read_surf(hprogram,yrecfm,io%NPATCH,iresp)
316 !
317 !* logical vector indicating for which patches MEB should be applied
318 !
319 ALLOCATE(io%LMEB_PATCH(io%NPATCH))
320 !
321 IF (iversion>=8) THEN
322 !
323  yrecfm='MEB_PATCH'
324  CALL read_surf(hprogram,yrecfm,io%LMEB_PATCH(:),iresp,hdir='-')
325 !
326  isize_lmeb_patch = count(io%LMEB_PATCH(:))
327 !
328  IF (isize_lmeb_patch>0)THEN
329  yrecfm='FORC_MEASURE'
330  CALL read_surf(hprogram,yrecfm,io%LFORC_MEASURE,iresp)
331  yrecfm='MEB_LITTER'
332  CALL read_surf(hprogram,yrecfm,io%LMEB_LITTER,iresp)
333  yrecfm='MEB_GNDRES'
334  CALL read_surf(hprogram,yrecfm,io%LMEB_GNDRES,iresp)
335  ELSE
336  io%LFORC_MEASURE=.false.
337  io%LMEB_LITTER =.false.
338  io%LMEB_GNDRES =.false.
339  ENDIF
340 !
341 ELSE
342  io%LMEB_PATCH(:)=.false.
343  io%LFORC_MEASURE=.false.
344  io%LMEB_LITTER =.false.
345  io%LMEB_GNDRES =.false.
346 ENDIF
347 !
348 !
349 !* 3. Physiographic data fields:
350 ! -------------------------
351 !
352 !
353 !* 3.1 Cover classes :
354 ! -------------
355 !
356 ALLOCATE(s%LCOVER(jpcover))
357 ALLOCATE(s%XZS(ig%NDIM))
358 !
359 ALLOCATE(ig%XLAT (ig%NDIM))
360 ALLOCATE(ig%XLON (ig%NDIM))
361 ALLOCATE(ig%XMESH_SIZE (ig%NDIM))
362 !
363 ALLOCATE(iss%XZ0EFFJPDIR(ig%NDIM))
364 !
365  CALL pack_init(dtco, u, ug, hprogram, 'NATURE', ig, s%LCOVER, s%XCOVER, s%XZS, iss%XZ0EFFJPDIR )
366 !
367 !* clay fraction : attention, seul un niveau est present dans le fichier
368 !* on rempli tout les niveaux de XCLAY avec les valeurs du fichiers
369 !
370 ALLOCATE(k%XCLAY(ig%NDIM,io%NGROUND_LAYER))
371 yrecfm='CLAY'
372  CALL read_surf(hprogram,yrecfm,k%XCLAY(:,1),iresp)
373 DO jlayer=2,io%NGROUND_LAYER
374  k%XCLAY(:,jlayer) = k%XCLAY(:,1)
375 END DO
376 !
377 !* sand fraction
378 !
379 ALLOCATE(k%XSAND(ig%NDIM,io%NGROUND_LAYER))
380 yrecfm='SAND'
381  CALL read_surf(hprogram,yrecfm,k%XSAND(:,1),iresp)
382 DO jlayer=2,io%NGROUND_LAYER
383  k%XSAND(:,jlayer) = k%XSAND(:,1)
384 END DO
385 !
386 !* Soil organic carbon profile
387 !
388 IF (iversion>7 .OR. (iversion==7 .AND. ibugfix>=3)) THEN
389  yrecfm='SOCP'
390  CALL read_surf(hprogram,yrecfm,io%LSOCP,iresp)
391 ELSE
392  io%LSOCP=.false.
393 ENDIF
394 !
395 IF(io%LSOCP)THEN
396 !
397  ALLOCATE(s%XSOC (ig%NDIM,io%NGROUND_LAYER))
398 !
399  yrecfm='SOC_TOP'
400  CALL read_surf(hprogram,yrecfm,s%XSOC(:,1),iresp)
401  yrecfm='SOC_SUB'
402  CALL read_surf(hprogram,yrecfm,s%XSOC(:,2),iresp)
403 !
404  DO jlayer=2,io%NGROUND_LAYER
405  s%XSOC (:,jlayer)=s%XSOC (:,2)
406  END DO
407 !
408 ELSE
409 !
410  ALLOCATE(s%XSOC (0,1))
411 !
412 ENDIF
413 !
414 !* permafrost distribution
415 !
416 IF (iversion>7 .OR. (iversion==7 .AND. ibugfix>=3)) THEN
417  yrecfm='PERMAFROST'
418  CALL read_surf(hprogram,yrecfm,io%LPERM,iresp)
419 ELSE
420  io%LPERM=.false.
421 ENDIF
422 !
423 IF(io%LPERM)THEN
424 !
425  ALLOCATE(k%XPERM (ig%NDIM))
426 !
427  yrecfm='PERM'
428  CALL read_surf(hprogram,yrecfm,k%XPERM(:),iresp)
429 !
430 ELSE
431 !
432  ALLOCATE(k%XPERM (0))
433 !
434 ENDIF
435 !
436 !SOILNOX
437 !
438 IF (iversion>7 .OR. (iversion==7 .AND. ibugfix>=3)) THEN
439  yrecfm='NO'
440  CALL read_surf(hprogram,yrecfm,io%LNOF,iresp)
441 ELSE
442  io%LNOF = .false.
443 ENDIF
444 !
445 IF (chi%LCH_NO_FLUX) THEN
446  !
447  IF (io%LNOF) THEN
448  !
449  ALLOCATE(s%XPH(ig%NDIM))
450  yrecfm='PH'
451  CALL read_surf(hprogram,yrecfm,s%XPH(:),iresp)
452  !
453  ALLOCATE(s%XFERT(ig%NDIM))
454  yrecfm='FERT'
455  CALL read_surf(hprogram,yrecfm,s%XFERT(:),iresp)
456  !
457  ELSE
458  CALL abor1_sfx("READ_PGD_ISBAn: WITH LCH_NO_FLUX=T, PH AND FERT FIELDS ARE GIVEN AT PGD STEP")
459  ENDIF
460  !
461 ELSE
462  ALLOCATE(s%XPH (0))
463  ALLOCATE(s%XFERT(0))
464 END IF
465 !
466 !* subgrid-scale orography parameters to compute dynamical roughness length
467 !
468 ALLOCATE(iss%XAOSIP(ig%NDIM))
469 ALLOCATE(iss%XAOSIM(ig%NDIM))
470 ALLOCATE(iss%XAOSJP(ig%NDIM))
471 ALLOCATE(iss%XAOSJM(ig%NDIM))
472 ALLOCATE(iss%XHO2IP(ig%NDIM))
473 ALLOCATE(iss%XHO2IM(ig%NDIM))
474 ALLOCATE(iss%XHO2JP(ig%NDIM))
475 ALLOCATE(iss%XHO2JM(ig%NDIM))
476 ALLOCATE(iss%XSSO_SLOPE(ig%NDIM))
477 ALLOCATE(iss%XSSO_STDEV(ig%NDIM))
478 !
479  CALL pack_sso(uss,hprogram,u%NR_NATURE, iss)
480 !
481 !* orographic runoff coefficient
482 !
483 ALLOCATE(k%XRUNOFFB(ig%NDIM))
484 yrecfm='RUNOFFB'
485  CALL read_surf(hprogram,yrecfm,k%XRUNOFFB,iresp)
486 !
487 !* subgrid drainage coefficient
488 !
489 ALLOCATE(k%XWDRAIN(ig%NDIM))
490 IF (iversion<=3) THEN
491  k%XWDRAIN = 0.
492 ELSE
493  yrecfm='WDRAIN'
494  CALL read_surf(hprogram,yrecfm,k%XWDRAIN,iresp)
495 ENDIF
496 !
497 !* topographic index statistics
498 !
499 IF(io%CRUNOFF=='SGH ' .AND. iversion>=5) THEN
500 !
501  yrecfm='CTI'
502  CALL read_surf(hprogram,yrecfm,io%LCTI,iresp)
503 !
504  IF (.NOT.io%LCTI) CALL abor1_sfx("READ_PGD_ISBA_n:WITH CRUNOFF=SGH, CTI MAPS MUST BE GIVEN TO PGD")
505  !
506  ALLOCATE(s%XTI_MIN(ig%NDIM))
507  ALLOCATE(s%XTI_MAX(ig%NDIM))
508  ALLOCATE(s%XTI_MEAN(ig%NDIM))
509  ALLOCATE(s%XTI_STD(ig%NDIM))
510  ALLOCATE(s%XTI_SKEW(ig%NDIM))
511 !
512  yrecfm='TI_MIN'
513  CALL read_surf(hprogram,yrecfm,s%XTI_MIN,iresp)
514 !
515  yrecfm='TI_MAX'
516  CALL read_surf(hprogram,yrecfm,s%XTI_MAX,iresp)
517 !
518  yrecfm='TI_MEAN'
519  CALL read_surf(hprogram,yrecfm,s%XTI_MEAN,iresp)
520 !
521  yrecfm='TI_STD'
522  CALL read_surf(hprogram,yrecfm,s%XTI_STD,iresp)
523 !
524  yrecfm='TI_SKEW'
525  CALL read_surf(hprogram,yrecfm,s%XTI_SKEW,iresp)
526 !
527 ELSE
528 !
529  ALLOCATE(s%XTI_MIN(0))
530  ALLOCATE(s%XTI_MAX(0))
531  ALLOCATE(s%XTI_MEAN(0))
532  ALLOCATE(s%XTI_STD(0))
533  ALLOCATE(s%XTI_SKEW(0))
534 !
535 ENDIF
536 !
537 !-------------------------------------------------------------------------------
538 !
539 !* biogenic chemical emissions
540 !
541 IF (chi%LCH_BIO_FLUX) THEN
542  ALLOCATE(zwork(u%NSIZE_FULL,1))
543  !
544  CALL end_io_surf_n(hprogram)
545  CALL init_io_surf_n(dtco, u, hprogram,'FULL ','SURF ','READ ')
546  !
547  CALL get_luout(hprogram,iluout)
548  ALLOCATE(imask(ig%NDIM))
549  ilu=0
550  CALL get_surf_mask_n(dtco, u, 'NATURE',ig%NDIM,imask,ilu,iluout)
551  ALLOCATE(gb%XISOPOT(ig%NDIM))
552  ALLOCATE(gb%XMONOPOT(ig%NDIM))
553  !
554  zwork(:,:) = 0.
555  yrecfm='E_ISOPOT'
556  CALL read_surf(hprogram,yrecfm,zwork,iresp)
557  CALL pack_same_rank(imask,zwork(:,1),gb%XISOPOT(:))
558  !
559  zwork(:,:) = 0.
560  yrecfm='E_MONOPOT'
561  CALL read_surf(hprogram,yrecfm,zwork,iresp)
562  CALL pack_same_rank(imask,zwork(:,1),gb%XMONOPOT(:))
563  !
564  CALL end_io_surf_n(hprogram)
565  CALL init_io_surf_n(dtco, u, hprogram,'NATURE','ISBA ','READ ')
566  !
567  DEALLOCATE(zwork)
568 ELSE
569  ALLOCATE(gb%XISOPOT (0))
570  ALLOCATE(gb%XMONOPOT(0))
571 END IF
572 !
573 !-------------------------------------------------------------------------------
574 !
575 !* 4. Physiographic data fields not to be computed by ecoclimap
576 ! ---------------------------------------------------------
577 !
578  CALL read_lecoclimap(hprogram,io%LECOCLIMAP,gecosg)
579 !
580  CALL read_pgd_isba_par_n(dtco, u, gcp, dtv, ig%NDIM, io, hprogram,ig%NDIM, oland_use, s%TTIME%TDATE, tpdate_end)
581 IF (u%CNATURE == 'TSZ0') CALL read_pgd_tsz0_par_n(dtz, hprogram)
582 !
583 IF (lhook) CALL dr_hook('READ_PGD_ISBA_N',1,zhook_handle)
584 !-------------------------------------------------------------------------------
585 !
586 END SUBROUTINE read_pgd_isba_n
subroutine get_type_dim_n(DTCO, U, HTYPE, KDIM)
subroutine read_pgd_isba_n(CHI, DTCO, DTV, DTZ, GB, IG, ISS, IO,
subroutine pack_init(DTCO, U, UG, HPROGRAM, HSURF, G, OCOVER, PCOV
Definition: pack_init.F90:7
subroutine read_pgd_isba_par_n(DTCO, U, GCP, DTI, KDIM, IO, HPROG
subroutine read_nam_pgd_isba(HPROGRAM, KPATCH, KGROUND_LAYER,
subroutine read_pgd_tsz0_par_n(DTZ, HPROGRAM)
subroutine abor1_sfx(YTEXT)
Definition: abor1_sfx.F90:7
real, parameter xundef
subroutine get_surf_mask_n(DTCO, U, HTYPE, KDIM, KMASK, KLU, KLUOUT)
subroutine read_lecoclimap(HPROGRAM, OECOCLIMAP, OECOSG, HDIR)
integer, parameter jprb
Definition: parkind1.F90:32
subroutine end_io_surf_n(HPROGRAM)
Definition: end_io_surfn.F90:7
subroutine get_luout(HPROGRAM, KLUOUT)
Definition: get_luout.F90:7
logical lhook
Definition: yomhook.F90:15
subroutine pack_sso(USS, HPROGRAM, KMASK, ISS)
Definition: pack_sso.F90:7
subroutine init_io_surf_n(DTCO, U, HPROGRAM, HMASK, HSCHEME, HACTION
static int count
Definition: memory_hook.c:21