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 )
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
79 USE modi_get_sso_stdev_n
96 TYPE(
diag_t),
INTENT(INOUT) :: D
99 TYPE(
sso_t),
INTENT(INOUT) :: USS
101 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
102 INTEGER,
INTENT(IN) :: KI
103 INTEGER,
INTENT(IN) :: KS
105 REAL,
DIMENSION(:),
INTENT(OUT),
OPTIONAL :: PSEA
106 REAL,
DIMENSION(:),
INTENT(OUT),
OPTIONAL :: PWATER
107 REAL,
DIMENSION(:),
INTENT(OUT),
OPTIONAL :: PNATURE
108 REAL,
DIMENSION(:),
INTENT(OUT),
OPTIONAL :: PTOWN
110 REAL,
DIMENSION(:),
INTENT(OUT),
OPTIONAL :: PT2M
111 REAL,
DIMENSION(:),
INTENT(OUT),
OPTIONAL :: PQ2M
113 REAL,
DIMENSION(:),
INTENT(OUT),
OPTIONAL :: PQS
114 REAL,
DIMENSION(:),
INTENT(OUT),
OPTIONAL :: PZ0
115 REAL,
DIMENSION(:),
INTENT(OUT),
OPTIONAL :: PZ0H
116 REAL,
DIMENSION(:),
INTENT(OUT),
OPTIONAL :: PZ0EFF
118 REAL,
DIMENSION(:),
INTENT(OUT),
OPTIONAL :: PZ0_SEA
119 REAL,
DIMENSION(:),
INTENT(OUT),
OPTIONAL :: PZ0_WATER
120 REAL,
DIMENSION(:),
INTENT(OUT),
OPTIONAL :: PZ0_NATURE
121 REAL,
DIMENSION(:),
INTENT(OUT),
OPTIONAL :: PZ0_TOWN
123 REAL,
DIMENSION(:),
INTENT(OUT),
OPTIONAL :: PZ0H_SEA
124 REAL,
DIMENSION(:),
INTENT(OUT),
OPTIONAL :: PZ0H_WATER
125 REAL,
DIMENSION(:),
INTENT(OUT),
OPTIONAL :: PZ0H_NATURE
126 REAL,
DIMENSION(:),
INTENT(OUT),
OPTIONAL :: PZ0H_TOWN
128 REAL,
DIMENSION(:),
INTENT(OUT),
OPTIONAL :: PQS_SEA
129 REAL,
DIMENSION(:),
INTENT(OUT),
OPTIONAL :: PQS_WATER
130 REAL,
DIMENSION(:),
INTENT(OUT),
OPTIONAL :: PQS_NATURE
131 REAL,
DIMENSION(:),
INTENT(OUT),
OPTIONAL :: PQS_TOWN
133 REAL,
DIMENSION(:),
INTENT(OUT),
OPTIONAL :: PPSNG
134 REAL,
DIMENSION(:),
INTENT(OUT),
OPTIONAL :: PPSNV
136 REAL,
DIMENSION(:),
INTENT(OUT),
OPTIONAL :: PZS
138 REAL,
DIMENSION(:,:),
INTENT(OUT),
OPTIONAL :: PSERIES
140 REAL,
DIMENSION(:),
INTENT(OUT),
OPTIONAL :: PTWSNOW
141 REAL,
DIMENSION(:),
INTENT(OUT),
OPTIONAL :: PSSO_STDEV
143 REAL,
DIMENSION(:),
INTENT(OUT),
OPTIONAL :: PLON
144 REAL,
DIMENSION(:),
INTENT(OUT),
OPTIONAL :: PLAT
146 REAL,
DIMENSION(:),
INTENT(OUT),
OPTIONAL :: PBARE
147 REAL,
DIMENSION(:),
INTENT(OUT),
OPTIONAL :: PLAI_TREE
148 REAL,
DIMENSION(:),
INTENT(OUT),
OPTIONAL :: PH_TREE
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
168 REAL(KIND=JPRB) :: ZHOOK_HANDLE
174 IF (
lhook)
CALL dr_hook(
'GET_SURF_VAR_N',0,zhook_handle)
179 IF (
PRESENT(psea) .OR.
PRESENT(pwater) .OR.
PRESENT(pnature) .OR.
PRESENTTHEN 181 CALL get_frac_n(u, hprogram, ki, zfield1, zfield2, zfield3, zfield4)
183 IF (
PRESENT(psea) ) psea = zfield1
184 IF (
PRESENT(pwater) ) pwater = zfield2
185 IF (
PRESENT(pnature)) pnature = zfield3
186 IF (
PRESENT(ptown) ) ptown = zfield4
194 IF (
PRESENT(pt2m) .OR.
PRESENT(pq2m) )
THEN 197 zfield1, zfield1, zfield1, zfield1, zfield1, zfield2,
201 IF (
PRESENT(pt2m) ) pt2m = zfield2
202 IF (
PRESENT(pq2m) ) pq2m = zfield3
210 IF (
PRESENT(pz0) .OR.
PRESENT(pz0h) )
THEN 212 CALL get_z0_n(dgo, d, hprogram, ki, zfield1, zfield2)
214 IF (
PRESENT(pz0) ) pz0 = zfield1
215 IF (
PRESENT(pz0h) ) pz0h = zfield2
223 IF (
PRESENT(pqs) )
THEN 225 CALL get_qs_n(dgo, d, hprogram, ki, pqs)
233 IF (
PRESENT(pqs_sea) .OR.
PRESENT(pz0_sea) .OR.
PRESENT(pz0h_sea) )
THEN 237 IF ( .NOT.
PRESENT(psea) )
THEN 239 CALL abor1_sfx(
'GET_SURF_VARN: ARGUMENT PSEA MISSING')
243 ki_sea =
count(psea(:) > 0.0)
246 CALL get_1d_mask(ki_sea, ki, psea, imask(1:ki_sea))
249 hprogram, ki_sea, zfield1(1:ki_sea), zfield2(1:ki_sea
251 IF(
PRESENT(pqs_sea))
THEN 254 pqs_sea(imask(ji)) = zfield1(ji)
258 IF(
PRESENT(pz0_sea))
THEN 261 pz0_sea(imask(ji)) = zfield2(ji)
265 IF(
PRESENT(pz0h_sea))
THEN 268 pz0h_sea(imask(ji)) = zfield3(ji)
276 IF (
PRESENT(pqs_water) .OR.
PRESENT(pz0_water) .OR.
PRESENT(pz0h_water)
THEN 280 IF ( .NOT.
PRESENT(pwater) )
THEN 281 CALL abor1_sfx(
'GET_SURF_VARN: ARGUMENT PWATER MISSING')
284 ki_water =
count(pwater(:) > 0.0)
287 CALL get_1d_mask(ki_water, ki, pwater, imask(1:ki_water))
290 hprogram, ki_water, u%CWATER, zfield1(1:ki_water
293 IF(
PRESENT(pqs_water))
THEN 296 pqs_water(imask(ji)) = zfield1(ji)
300 IF(
PRESENT(pz0_water))
THEN 303 pz0_water(imask(ji)) = zfield2(ji)
307 IF(
PRESENT(pz0h_water))
THEN 310 pz0h_water(imask(ji)) = zfield3(ji)
318 IF (
PRESENT(pqs_nature) .OR.
PRESENT(ppsng) .OR.
PRESENT(ppsnv) .OR.
PRESENT 319 PRESENT(ptwsnow) .OR.
PRESENT(pbare) .OR.
PRESENT(plai_tree) .OR.
PRESENTTHEN 324 IF ( .NOT.
PRESENT(pnature) )
THEN 326 CALL abor1_sfx(
'GET_SURF_VARN: ARGUMENT PNATURE MISSING')
330 ki_nature =
count(pnature(:) > 0.0)
333 CALL get_1d_mask(ki_nature, ki, pnature, imask(1:ki_nature))
335 IF (ki_nature>0)
THEN 342 IF(
PRESENT(pqs_nature))
THEN 345 pqs_nature(imask(ji)) = zfield1(ji)
349 IF(
PRESENT(pz0_nature))
THEN 352 pz0_nature(imask(ji)) = zfield5(ji)
356 IF(
PRESENT(pz0h_nature))
THEN 359 pz0h_nature(imask(ji)) = zfield6(ji)
363 IF (
PRESENT(ppsng))
THEN 366 ppsng(imask(ji)) = zfield2(ji)
370 IF (
PRESENT(ppsnv))
THEN 373 ppsnv(imask(ji)) = zfield3(ji)
377 IF (
PRESENT(pz0eff) )
THEN 380 pz0eff(imask(ji)) = zfield4(ji)
384 IF(
PRESENT(ptwsnow))
THEN 387 ptwsnow(imask(ji)) = zfield7(ji)
393 IF(
PRESENT(pbare))
THEN 396 pbare(imask(ji)) = zfield8(ji)
398 pbare(:) = pbare(:) * u%XNATURE(:)
403 IF (
PRESENT(plai_tree) .OR.
PRESENT(ph_tree) )
THEN 405 CALL get_veg_n(hprogram, ki_nature, u, im%O, im%S, im%NP, im%NPE, zfield1
407 IF (
PRESENT(plai_tree))
THEN 410 plai_tree(imask(ji)) = zfield1(ji)
412 plai_tree(:) = plai_tree(:) * u%XNATURE(:)
415 IF (
PRESENT(ph_tree))
THEN 418 ph_tree(imask(ji)) = zfield2(ji)
428 IF (
PRESENT(pqs_town) .OR.
PRESENT(pz0_town) .OR.
PRESENT(pz0h_town) )
THEN 432 IF ( .NOT.
PRESENT(ptown) )
THEN 434 CALL abor1_sfx(
'GET_SURF_VARN: ARGUMENT PTOWN MISSING')
438 ki_town =
count(ptown(:) > 0.0)
441 CALL get_1d_mask(ki_town, ki, ptown, imask(1:ki_town))
444 zfield1(1:ki_town), zfield2(1:ki_town), zfield3(1
446 IF(
PRESENT(pqs_town))
THEN 449 pqs_town(imask(ji)) = zfield1(ji)
453 IF(
PRESENT(pz0_town))
THEN 456 pz0_town(imask(ji)) = zfield2(ji)
460 IF(
PRESENT(pz0h_town))
THEN 463 pz0h_town(imask(ji)) = zfield3(ji)
471 IF (
PRESENT(pzs))
THEN 473 CALL get_zs_n(u, hprogram, ki, zfield1)
481 IF (
PRESENT(pseries))
THEN 483 IF ( .NOT.
PRESENT(pwater) )
THEN 484 CALL abor1_sfx(
'GET_SURF_VARN: ARGUMENT PWATER REQUIRED FOR WATER SERIES' 487 IF (
count(pwater(:) > 0.0) > 0.0 )
THEN 501 IF (
PRESENT(psso_stdev))
THEN 511 IF (
PRESENT(plon).OR.
PRESENT(plat))
THEN 513 CALL get_coord_n(ug, hprogram, ki, zfield1, zfield2)
515 IF (
PRESENT(plon) ) plon = zfield1
516 IF (
PRESENT(plat) ) plat = zfield2
520 IF (
lhook)
CALL dr_hook(
'GET_SURF_VAR_N',1,zhook_handle)
subroutine get_series_n(F, HPROGRAM, KI, KS, PFIELD)
subroutine get_flux_n(DGO, D, HPROGRAM, KI, PRN, PH, PLE, PLEI, PGFLUX, PT2M, PQ2
subroutine get_qs_n(DGO, D, HPROGRAM, KI, PQS)
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)
subroutine get_z0_n(DGO, D, HPROGRAM, KI, PZ0, PZ0H)
subroutine get_frac_n(U, HPROGRAM, KI, PSEA, PWATER, PNATURE, PTOWN)
subroutine get_var_sea_n(DGO, D, HPROGRAM, KI, PQS, PZ0, PZ0H)
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)
subroutine get_1d_mask(KSIZE, KFRAC, PFRAC, KMASK)
subroutine get_veg_n(HPROGRAM, KI, U, IO, S, NP, NPE, PLAI, PVH)
subroutine get_zs_n(U, HPROGRAM, KI, PZS)
subroutine get_coord_n(UG, HPROGRAM, KI, PLON, PLAT)