SURFEX v8.1
General documentation of Surfex
get_surf_varn.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 get_surf_var_n (FM, IM, SM, TM, WM, DGO, D, UG, U, USS, &
7  HPROGRAM, KI, KS,PSEA, PWATER, PNATURE, PTOWN, &
8  PT2M, PQ2M, PQS, PZ0, PZ0H, PZ0EFF, PZ0_SEA, &
9  PZ0_WATER, PZ0_NATURE, PZ0_TOWN, PZ0H_SEA, &
10  PZ0H_WATER, PZ0H_NATURE, PZ0H_TOWN, PQS_SEA, &
11  PQS_WATER, PQS_NATURE, PQS_TOWN, PPSNG, PPSNV, &
12  PZS, PSERIES, PTWSNOW, PSSO_STDEV, PLON, PLAT, &
13  PBARE, PLAI_TREE, PH_TREE )
14 ! #######################################################################
15 !
16 !!**** *GET_SURF_VAR_n* - gets some surface fields on atmospheric grid
17 !!
18 !! PURPOSE
19 !! -------
20 !!
21 !! This program returns some surface variables neede by the atmosphere
22 !!
23 !!** METHOD
24 !! ------
25 !!
26 !! Several functions are called in order to initialize surface variables
27 !! needed by the atmospheric model. These functions fill the required arrays by
28 !! the diagnosed values computed during the run. Since all arrays are optional,
29 !! this program may be called with any of the arguments described above.
30 !!
31 !! EXTERNAL
32 !! --------
33 !!
34 !! IMPLICIT ARGUMENTS
35 !! ------------------
36 !!
37 !! REFERENCE
38 !! ---------
39 !!
40 !! AUTHOR
41 !! ------
42 !! P. Le Moigne *Meteo France*
43 !!
44 !! MODIFICATIONS
45 !! -------------
46 !! Original 02/2006
47 ! S. Riette 06/2010 PSSO_STDEV and PTWSNOW added
48 ! B. Decharme 09/2012 Argument added in GET_FLUX_n
49 ! B. Decharme 05/2013 Argument added in GET_FLUX_n for debug in ARP/AL/AR
50 !-------------------------------------------------------------------------------
51 !
52 !* 0. DECLARATIONS
53 ! ------------
54 !
59 USE modd_surf_atm_n, ONLY : surf_atm_t
60 USE modd_sso_n, ONLY : sso_t
61 !
62 USE modd_surf_par, ONLY : xundef
63 USE modi_get_luout
64 USE modi_get_flux_n
65 USE modi_get_frac_n
66 USE modi_get_z0_n
67 USE modi_get_qs_n
68 USE modi_get_var_sea_n
69 USE modi_get_var_water_n
70 USE modi_get_var_nature_n
71 USE modi_get_var_town_n
72 USE modi_get_zs_n
73 USE modi_get_series_n
74 !
75 USE yomhook ,ONLY : lhook, dr_hook
76 USE parkind1 ,ONLY : jprb
77 !
78 USE modi_abor1_sfx
79 USE modi_get_sso_stdev_n
80 USE modi_get_1d_mask
81 USE modi_get_coord_n
82 USE modi_get_veg_n
83 !
84 IMPLICIT NONE
85 !
86 !* 0.1 Declarations of arguments
87 ! -------------------------
88 !
89 TYPE(flake_model_t), INTENT(INOUT) :: FM
90 TYPE(isba_model_t), INTENT(INOUT) :: IM
91 TYPE(seaflux_model_t), INTENT(INOUT) :: SM
92 TYPE(teb_model_t), INTENT(INOUT) :: TM
93 TYPE(watflux_model_t), INTENT(INOUT) :: WM
94 !
95 TYPE(diag_options_t), INTENT(INOUT) :: DGO
96 TYPE(diag_t), INTENT(INOUT) :: D
97 TYPE(surf_atm_grid_t), INTENT(INOUT) :: UG
98 TYPE(surf_atm_t), INTENT(INOUT) :: U
99 TYPE(sso_t), INTENT(INOUT) :: USS
100 !
101  CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM
102 INTEGER, INTENT(IN) :: KI ! number of points
103 INTEGER, INTENT(IN) :: KS ! number of points
104 !
105 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PSEA ! sea fraction
106 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PWATER ! water fraction
107 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PNATURE ! nature fraction
108 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PTOWN ! town fraction
109 !
110 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PT2M ! Air temperature at 2 meters (K)
111 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PQ2M ! Air humidity at 2 meters (kg/kg)
112 !
113 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PQS
114 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PZ0 ! surface roughness length (m)
115 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PZ0H ! surface roughness length for heat (m)
116 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PZ0EFF ! effective roughness length for heat (m)
117 !
118 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PZ0_SEA ! surface roughness length over sea (m)
119 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PZ0_WATER ! surface roughness length over water (m)
120 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PZ0_NATURE ! surface roughness length over nature(m)
121 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PZ0_TOWN ! surface roughness length over town (m)
122 !
123 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PZ0H_SEA ! surface roughness length for heat over sea (m)
124 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PZ0H_WATER ! surface roughness length for heat over water (m)
125 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PZ0H_NATURE ! surface roughness length for heat over nature(m)
126 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PZ0H_TOWN ! surface roughness length for heat over town (m)
127 !
128 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PQS_SEA ! surface humidity over sea (kg/kg)
129 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PQS_WATER ! surface humidity over water (kg/kg)
130 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PQS_NATURE ! surface humidity over nature (kg/kg)
131 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PQS_TOWN ! surface humidity over town (kg/kg)
132 !
133 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PPSNG ! snow fraction over ground (-)
134 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PPSNV ! snow fraction over vegetation (-)
135 !
136 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PZS ! surface orography (m)
137 !
138 REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PSERIES ! any surface field for which
139 ! ! mesoNH series are required
140 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PTWSNOW ! Snow total reservoir
141 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PSSO_STDEV ! S.S.O. standard deviation (m)
142 !
143 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PLON ! longitude
144 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PLAT ! latitude
145 !
146 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PBARE ! bare soil fraction on grid mesh (-)
147 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PLAI_TREE ! Leaf Area Index on grid mesh (-)
148 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PH_TREE ! Height of trees on grid mesh (-)
149 !
150 !-------------------------------------------------------------------------------
151 !
152 !
153 !* 0.2 Declarations of local variables
154 ! -------------------------------
155 !
156 REAL, DIMENSION(KI) :: ZFIELD1, ZFIELD2, ZFIELD3, ZFIELD4, ZFIELD5, ZFIELD6
157 REAL, DIMENSION(KI) :: ZFIELD7, ZFIELD8
158 REAL, DIMENSION(KI,KS) :: ZSERIES
159 INTEGER, DIMENSION(KI) :: IMASK
160 !
161 INTEGER :: KI_SEA ! dimension of sea tile
162 INTEGER :: KI_WATER ! dimension of water tile
163 INTEGER :: KI_NATURE ! dimension of nature tile
164 INTEGER :: KI_TOWN ! dimension of town tile
165 !
166 INTEGER :: JI ! loop index over tiles
167 INTEGER :: ILUOUT ! unit number
168 REAL(KIND=JPRB) :: ZHOOK_HANDLE
169 !
170 !-------------------------------------------------------------------------------
171 !
172 !* 0. Logical unit for writing out
173 !
174 IF (lhook) CALL dr_hook('GET_SURF_VAR_N',0,zhook_handle)
175  CALL get_luout(hprogram,iluout)
176 !
177 !* 1. Fraction of each tile
178 !
179 IF (PRESENT(psea) .OR. PRESENT(pwater) .OR. PRESENT(pnature) .OR. PRESENT(ptown)) THEN
180  !
181  CALL get_frac_n(u, hprogram, ki, zfield1, zfield2, zfield3, zfield4)
182  !
183  IF (PRESENT(psea) ) psea = zfield1
184  IF (PRESENT(pwater) ) pwater = zfield2
185  IF (PRESENT(pnature)) pnature = zfield3
186  IF (PRESENT(ptown) ) ptown = zfield4
187  !
188 END IF
189 !
190 !-------------------------------------------------------------------------------
191 !
192 !* 2. Parameters at 2 meters
193 !
194 IF ( PRESENT(pt2m) .OR. PRESENT(pq2m) ) THEN
195  !
196  CALL get_flux_n(dgo, d, hprogram, ki, &
197  zfield1, zfield1, zfield1, zfield1, zfield1, zfield2, &
198  zfield3, zfield4, zfield4, zfield4, zfield4, zfield4, &
199  zfield4, zfield4, zfield4 )
200  !
201  IF (PRESENT(pt2m) ) pt2m = zfield2
202  IF (PRESENT(pq2m) ) pq2m = zfield3
203  !
204 END IF
205 !
206 !-------------------------------------------------------------------------------
207 !
208 !* 3. Roughness lengths
209 !
210 IF ( PRESENT(pz0) .OR. PRESENT(pz0h) ) THEN
211  !
212  CALL get_z0_n(dgo, d, hprogram, ki, zfield1, zfield2)
213  !
214  IF (PRESENT(pz0) ) pz0 = zfield1
215  IF (PRESENT(pz0h) ) pz0h = zfield2
216  !
217 END IF
218 !
219 !-------------------------------------------------------------------------------
220 !
221 !* 3. Specific humidity
222 !
223 IF ( PRESENT(pqs) ) THEN
224  !
225  CALL get_qs_n(dgo, d, hprogram, ki, pqs)
226  !
227 END IF
228 !
229 !-------------------------------------------------------------------------------
230 !
231 !* 4. Surface humidity for each tile (qs is not aggregated)
232 !
233 IF ( PRESENT(pqs_sea) .OR. PRESENT(pz0_sea) .OR. PRESENT(pz0h_sea) ) THEN
234  !
235  ! Get parameters over sea tile
236  !
237  IF ( .NOT.PRESENT(psea) ) THEN
238  !
239  CALL abor1_sfx('GET_SURF_VARN: ARGUMENT PSEA MISSING')
240  !
241  ENDIF
242  !
243  ki_sea = count(psea(:) > 0.0)
244  !
245  imask(:)=0
246  CALL get_1d_mask(ki_sea, ki, psea, imask(1:ki_sea))
247  !
248  CALL get_var_sea_n(sm%SD%O, sm%SD%D, &
249  hprogram, ki_sea, zfield1(1:ki_sea), zfield2(1:ki_sea), zfield3(1:ki_sea))
250  !
251  IF(PRESENT(pqs_sea))THEN
252  pqs_sea(:) = xundef
253  DO ji = 1, ki_sea
254  pqs_sea(imask(ji)) = zfield1(ji)
255  END DO
256  ENDIF
257  !
258  IF(PRESENT(pz0_sea))THEN
259  pz0_sea(:) = xundef
260  DO ji = 1, ki_sea
261  pz0_sea(imask(ji)) = zfield2(ji)
262  END DO
263  ENDIF
264  !
265  IF(PRESENT(pz0h_sea))THEN
266  pz0h_sea(:) = xundef
267  DO ji = 1, ki_sea
268  pz0h_sea(imask(ji)) = zfield3(ji)
269  END DO
270  ENDIF
271  !
272 ENDIF
273  !
274  !-------------------------------------------------------------------------------
275  !
276 IF ( PRESENT(pqs_water) .OR. PRESENT(pz0_water) .OR. PRESENT(pz0h_water) ) THEN
277  !
278  ! Get parameters over water tile
279  !
280  IF ( .NOT.PRESENT(pwater) ) THEN
281  CALL abor1_sfx('GET_SURF_VARN: ARGUMENT PWATER MISSING')
282  ENDIF
283  !
284  ki_water = count(pwater(:) > 0.0)
285  !
286  imask(:)=0
287  CALL get_1d_mask(ki_water, ki, pwater, imask(1:ki_water))
288  !
289  CALL get_var_water_n(fm%DFO, fm%DF, wm%DWO, wm%DW, &
290  hprogram, ki_water, u%CWATER, zfield1(1:ki_water), &
291  zfield2(1:ki_water), zfield3(1:ki_water))
292  !
293  IF(PRESENT(pqs_water))THEN
294  pqs_water(:) = xundef
295  DO ji = 1, ki_water
296  pqs_water(imask(ji)) = zfield1(ji)
297  END DO
298  ENDIF
299  !
300  IF(PRESENT(pz0_water))THEN
301  pz0_water(:) = xundef
302  DO ji = 1, ki_water
303  pz0_water(imask(ji)) = zfield2(ji)
304  END DO
305  ENDIF
306  !
307  IF(PRESENT(pz0h_water))THEN
308  pz0h_water(:) = xundef
309  DO ji = 1, ki_water
310  pz0h_water(imask(ji)) = zfield3(ji)
311  END DO
312  ENDIF
313  !
314 ENDIF
315  !
316  !-------------------------------------------------------------------------------
317  !
318 IF ( PRESENT(pqs_nature) .OR. PRESENT(ppsng) .OR. PRESENT(ppsnv) .OR. PRESENT(pz0eff).OR. &
319  PRESENT(ptwsnow) .OR. PRESENT(pbare) .OR. PRESENT(plai_tree) .OR. PRESENT(ph_tree) ) THEN
320  !
321  ! Get parameters over nature tile
322  !
323  !
324  IF ( .NOT.PRESENT(pnature) ) THEN
325  !
326  CALL abor1_sfx('GET_SURF_VARN: ARGUMENT PNATURE MISSING')
327  !
328  ENDIF
329  !
330  ki_nature = count(pnature(:) > 0.0)
331  !
332  imask(:)=0
333  CALL get_1d_mask(ki_nature, ki, pnature, imask(1:ki_nature))
334  !
335  IF (ki_nature>0) THEN
336  CALL get_var_nature_n(im%S, im%ID%O, im%ID%D, im%ID%DM, hprogram, ki_nature, &
337  zfield1(1:ki_nature), zfield2(1:ki_nature), zfield3(1:ki_nature), &
338  zfield4(1:ki_nature), zfield5(1:ki_nature), zfield6(1:ki_nature), &
339  zfield7(1:ki_nature), zfield8(1:ki_nature))
340  ENDIF
341  !
342  IF(PRESENT(pqs_nature))THEN
343  pqs_nature (:) = xundef
344  DO ji = 1, ki_nature
345  pqs_nature(imask(ji)) = zfield1(ji)
346  END DO
347  ENDIF
348  !
349  IF(PRESENT(pz0_nature))THEN
350  pz0_nature (:) = xundef
351  DO ji = 1, ki_nature
352  pz0_nature(imask(ji)) = zfield5(ji)
353  END DO
354  ENDIF
355  !
356  IF(PRESENT(pz0h_nature))THEN
357  pz0h_nature (:) = xundef
358  DO ji = 1, ki_nature
359  pz0h_nature(imask(ji)) = zfield6(ji)
360  END DO
361  ENDIF
362  !
363  IF (PRESENT(ppsng)) THEN
364  ppsng (:) = xundef
365  DO ji = 1, ki_nature
366  ppsng(imask(ji)) = zfield2(ji)
367  END DO
368  ENDIF
369  !
370  IF (PRESENT(ppsnv)) THEN
371  ppsnv (:) = xundef
372  DO ji = 1, ki_nature
373  ppsnv(imask(ji)) = zfield3(ji)
374  END DO
375  ENDIF
376  !
377  IF ( PRESENT(pz0eff) ) THEN
378  pz0eff (:) = xundef
379  DO ji = 1, ki_nature
380  pz0eff(imask(ji)) = zfield4(ji)
381  END DO
382  ENDIF
383  !
384  IF(PRESENT(ptwsnow)) THEN
385  ptwsnow (:) = xundef
386  DO ji = 1, ki_nature
387  ptwsnow(imask(ji)) = zfield7(ji)
388  ENDDO
389  ENDIF
390  !
391  !* bare soil fraction
392  !
393  IF(PRESENT(pbare)) THEN
394  pbare (:) = xundef
395  DO ji = 1, ki_nature
396  pbare(imask(ji)) = zfield8(ji)
397  ENDDO
398  pbare(:) = pbare(:) * u%XNATURE(:) ! averages bare soil fraction on whole grid mesh
399  ENDIF
400  !
401  !* LAI and height of trees
402  !
403  IF (PRESENT(plai_tree) .OR. PRESENT(ph_tree) ) THEN
404  !
405  CALL get_veg_n(hprogram, ki_nature, u, im%O, im%S, im%NP, im%NPE, zfield1(1:ki_nature), zfield2(1:ki_nature))
406  !
407  IF (PRESENT(plai_tree)) THEN
408  plai_tree(:) = xundef
409  DO ji = 1, ki_nature
410  plai_tree(imask(ji)) = zfield1(ji)
411  ENDDO
412  plai_tree(:) = plai_tree(:) * u%XNATURE(:) ! averages tree LAI on whole grid mesh
413  END IF
414  !
415  IF (PRESENT(ph_tree)) THEN
416  ph_tree(:) = 0.
417  DO ji = 1, ki_nature
418  ph_tree(imask(ji)) = zfield2(ji)
419  ENDDO
420  END IF
421  !
422  END IF
423  !
424 ENDIF
425  !
426  !-------------------------------------------------------------------------------
427  !
428 IF ( PRESENT(pqs_town) .OR. PRESENT(pz0_town) .OR. PRESENT(pz0h_town) ) THEN
429  !
430  ! Get parameters over town tile
431  !
432  IF ( .NOT.PRESENT(ptown) ) THEN
433  !
434  CALL abor1_sfx('GET_SURF_VARN: ARGUMENT PTOWN MISSING')
435  !
436  ENDIF
437  !
438  ki_town = count(ptown(:) > 0.0)
439  !
440  imask(:)=0
441  CALL get_1d_mask(ki_town, ki, ptown, imask(1:ki_town))
442  !
443  CALL get_var_town_n(tm%TD%O, tm%TD%D, hprogram, ki_town, &
444  zfield1(1:ki_town), zfield2(1:ki_town), zfield3(1:ki_town))
445  !
446  IF(PRESENT(pqs_town))THEN
447  pqs_town(:) = xundef
448  DO ji = 1, ki_town
449  pqs_town(imask(ji)) = zfield1(ji)
450  END DO
451  ENDIF
452  !
453  IF(PRESENT(pz0_town))THEN
454  pz0_town(:) = xundef
455  DO ji = 1, ki_town
456  pz0_town(imask(ji)) = zfield2(ji)
457  END DO
458  ENDIF
459  !
460  IF(PRESENT(pz0h_town))THEN
461  pz0h_town(:) = xundef
462  DO ji = 1, ki_town
463  pz0h_town(imask(ji)) = zfield3(ji)
464  END DO
465  ENDIF
466  !
467 END IF
468 !
469 !* 5. Orography
470 !
471 IF (PRESENT(pzs)) THEN
472  !
473  CALL get_zs_n(u, hprogram, ki, zfield1)
474  !
475  pzs = zfield1
476  !
477 END IF
478 !
479 !* 6. Series
480 !
481 IF (PRESENT(pseries)) THEN
482  !
483  IF ( .NOT.PRESENT(pwater) ) THEN
484  CALL abor1_sfx('GET_SURF_VARN: ARGUMENT PWATER REQUIRED FOR WATER SERIES')
485  ENDIF
486  !
487  IF ( count(pwater(:) > 0.0) > 0.0 ) THEN
488  !
489  CALL get_series_n(fm%F, hprogram, ki, ks, zseries)
490  !
491  pseries = zseries
492  !
493  ELSE
494  pseries = xundef
495  ENDIF
496  !
497 END IF
498 !
499 !* 7. Subgrid orography standard deviation
500 !
501 IF (PRESENT(psso_stdev)) THEN
502  !
503  CALL get_sso_stdev_n(uss, 'ASCII ', ki, zfield1)
504  !
505  psso_stdev = zfield1
506  !
507 END IF
508 !
509 !* 8. Longitude et Latitude
510 !
511 IF (PRESENT(plon).OR.PRESENT(plat)) THEN
512  !
513  CALL get_coord_n(ug, hprogram, ki, zfield1, zfield2)
514  !
515  IF (PRESENT(plon) ) plon = zfield1
516  IF (PRESENT(plat) ) plat = zfield2
517  !
518 END IF
519 !
520 IF (lhook) CALL dr_hook('GET_SURF_VAR_N',1,zhook_handle)
521 !==============================================================================
522 !
523 END SUBROUTINE get_surf_var_n
subroutine get_series_n(F, HPROGRAM, KI, KS, PFIELD)
Definition: get_seriesn.F90:8
subroutine get_flux_n(DGO, D, HPROGRAM, KI, PRN, PH, PLE, PLEI, PGFLUX, PT2M, PQ2
Definition: get_fluxn.F90:8
subroutine get_qs_n(DGO, D, HPROGRAM, KI, PQS)
Definition: get_qsn.F90:7
subroutine get_sso_stdev_n(USS, HPROGRAM, KI, PSSO_STDEV)
subroutine get_var_nature_n(S, DGO, D, DMI, HPROGRAM, KI, PQS, PSNG, PSNV, PZ0EFF, PZ0,
subroutine get_var_town_n(DGO, D, HPROGRAM, KI, PQS, PZ0, PZ0H)
subroutine abor1_sfx(YTEXT)
Definition: abor1_sfx.F90:7
real, parameter xundef
subroutine get_z0_n(DGO, D, HPROGRAM, KI, PZ0, PZ0H)
Definition: get_z0n.F90:7
subroutine get_frac_n(U, HPROGRAM, KI, PSEA, PWATER, PNATURE, PTOWN)
Definition: get_fracn.F90:8
integer, parameter jprb
Definition: parkind1.F90:32
subroutine get_var_sea_n(DGO, D, HPROGRAM, KI, PQS, PZ0, PZ0H)
Definition: get_var_sean.F90:7
subroutine get_surf_var_n(FM, IM, SM, TM, WM, DGO, D, UG, U, USS,
subroutine get_var_water_n(DFO, DF, DWO, DW, HPROGRAM, KI, HWATER, PQS, PZ0, PZ0H)
subroutine get_luout(HPROGRAM, KLUOUT)
Definition: get_luout.F90:7
subroutine get_1d_mask(KSIZE, KFRAC, PFRAC, KMASK)
Definition: get_1d_mask.F90:6
logical lhook
Definition: yomhook.F90:15
subroutine get_veg_n(HPROGRAM, KI, U, IO, S, NP, NPE, PLAI, PVH)
Definition: get_vegn.F90:7
subroutine get_zs_n(U, HPROGRAM, KI, PZS)
Definition: get_zsn.F90:8
subroutine get_coord_n(UG, HPROGRAM, KI, PLON, PLAT)
Definition: get_coordn.F90:8
static int count
Definition: memory_hook.c:21