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