/[lmdze]/trunk/Sources/phylmd/phyetat0.f
ViewVC logotype

Contents of /trunk/Sources/phylmd/phyetat0.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 155 - (show annotations)
Wed Jul 8 17:03:45 2015 UTC (8 years, 10 months ago) by guez
File size: 20425 byte(s)
Do not write any longer to startphy.nc nor read from restartphy.nc the
NetCDF variable ALBLW: it was the same than ALBE. ALBE was for the
visible and ALBLW for the near infrared. In physiq, use only variables
falbe and albsol, removed falblw and albsollw. See revision 888 of
LMDZ.

Removed unused arguments pdp of SUBROUTINE lwbv, ptave of SUBROUTINE
lwv, kuaer of SUBROUTINE lwvd, nq of SUBROUTINE initphysto.

1 module phyetat0_m
2
3 use dimphy, only: klon
4
5 IMPLICIT none
6
7 REAL, save:: rlat(klon), rlon(klon)
8 ! latitude and longitude of a point of the scalar grid identified
9 ! by a simple index, in degrees
10
11 private klon
12
13 contains
14
15 SUBROUTINE phyetat0(pctsrf, tsol, tsoil, tslab, seaice, qsurf, qsol, &
16 snow, albe, evap, rain_fall, snow_fall, solsw, sollw, fder, &
17 radsol, frugs, agesno, zmea, zstd, zsig, zgam, zthe, zpic, zval, &
18 t_ancien, q_ancien, ancien_ok, rnebcon, ratqs, clwcon, run_off_lic_0, &
19 sig1, w01)
20
21 ! From phylmd/phyetat0.F, version 1.4 2005/06/03 10:03:07
22 ! Author: Z.X. Li (LMD/CNRS)
23 ! Date: 1993/08/18
24 ! Objet : lecture de l'état initial pour la physique
25
26 use dimphy, only: zmasq, klev
27 USE dimsoil, ONLY : nsoilmx
28 USE indicesol, ONLY : epsfra, is_lic, is_oce, is_sic, is_ter, nbsrf
29 use netcdf, only: nf90_global, nf90_inq_varid, NF90_NOERR, &
30 NF90_NOWRITE
31 use netcdf95, only: nf95_close, nf95_get_att, nf95_get_var, &
32 nf95_inq_varid, nf95_inquire_variable, NF95_OPEN
33 USE temps, ONLY : itau_phy
34
35 REAL pctsrf(klon, nbsrf)
36 REAL tsol(klon, nbsrf)
37 REAL tsoil(klon, nsoilmx, nbsrf)
38 REAL tslab(klon), seaice(klon)
39 REAL qsurf(klon, nbsrf)
40 REAL, intent(out):: qsol(:) ! (klon)
41 REAL snow(klon, nbsrf)
42 REAL albe(klon, nbsrf)
43 REAL evap(klon, nbsrf)
44 REAL, intent(out):: rain_fall(klon)
45 REAL snow_fall(klon)
46 real solsw(klon)
47 REAL, intent(out):: sollw(klon)
48 real fder(klon)
49 REAL radsol(klon)
50 REAL frugs(klon, nbsrf)
51 REAL agesno(klon, nbsrf)
52 REAL zmea(klon)
53 REAL, intent(out):: zstd(klon)
54 REAL, intent(out):: zsig(klon)
55 REAL zgam(klon)
56 REAL zthe(klon)
57 REAL zpic(klon)
58 REAL zval(klon)
59 REAL t_ancien(klon, klev), q_ancien(klon, klev)
60 LOGICAL, intent(out):: ancien_ok
61 real rnebcon(klon, klev), ratqs(klon, klev), clwcon(klon, klev)
62 REAL run_off_lic_0(klon)
63 real, intent(out):: sig1(klon, klev) ! section adiabatic updraft
64
65 real, intent(out):: w01(klon, klev)
66 ! vertical velocity within adiabatic updraft
67
68 ! Local:
69 REAL fractint(klon)
70 REAL xmin, xmax
71 INTEGER ncid, varid, ndims
72 INTEGER ierr, i, nsrf
73 CHARACTER(len=2) str2
74
75 !---------------------------------------------------------------
76
77 print *, "Call sequence information: phyetat0"
78
79 ! Fichier contenant l'état initial :
80 call NF95_OPEN("startphy.nc", NF90_NOWRITE, ncid)
81
82 call nf95_get_att(ncid, nf90_global, "itau_phy", itau_phy)
83
84 ! Lecture des latitudes (coordonnees):
85
86 call NF95_INQ_VARID(ncid, "latitude", varid)
87 call NF95_GET_VAR(ncid, varid, rlat)
88
89 ! Lecture des longitudes (coordonnees):
90
91 call NF95_INQ_VARID(ncid, "longitude", varid)
92 call NF95_GET_VAR(ncid, varid, rlon)
93
94 ! Lecture du masque terre mer
95
96 call NF95_INQ_VARID(ncid, "masque", varid)
97 call nf95_get_var(ncid, varid, zmasq)
98
99 ! Lecture des fractions pour chaque sous-surface
100
101 ! initialisation des sous-surfaces
102
103 pctsrf = 0.
104
105 ! fraction de terre
106
107 ierr = NF90_INQ_VARID(ncid, "FTER", varid)
108 IF (ierr == NF90_NOERR) THEN
109 call nf95_get_var(ncid, varid, pctsrf(:, is_ter))
110 else
111 PRINT *, 'phyetat0: Le champ <FTER> est absent'
112 ENDIF
113
114 ! fraction de glace de terre
115
116 ierr = NF90_INQ_VARID(ncid, "FLIC", varid)
117 IF (ierr == NF90_NOERR) THEN
118 call nf95_get_var(ncid, varid, pctsrf(:, is_lic))
119 else
120 PRINT *, 'phyetat0: Le champ <FLIC> est absent'
121 ENDIF
122
123 ! fraction d'ocean
124
125 ierr = NF90_INQ_VARID(ncid, "FOCE", varid)
126 IF (ierr == NF90_NOERR) THEN
127 call nf95_get_var(ncid, varid, pctsrf(:, is_oce))
128 else
129 PRINT *, 'phyetat0: Le champ <FOCE> est absent'
130 ENDIF
131
132 ! fraction glace de mer
133
134 ierr = NF90_INQ_VARID(ncid, "FSIC", varid)
135 IF (ierr == NF90_NOERR) THEN
136 call nf95_get_var(ncid, varid, pctsrf(:, is_sic))
137 else
138 PRINT *, 'phyetat0: Le champ <FSIC> est absent'
139 ENDIF
140
141 ! Verification de l'adequation entre le masque et les sous-surfaces
142
143 fractint = pctsrf(:, is_ter) + pctsrf(:, is_lic)
144 DO i = 1 , klon
145 IF ( abs(fractint(i) - zmasq(i) ) > EPSFRA ) THEN
146 WRITE(*, *) 'phyetat0: attention fraction terre pas ', &
147 'coherente ', i, zmasq(i), pctsrf(i, is_ter) &
148 , pctsrf(i, is_lic)
149 ENDIF
150 END DO
151 fractint = pctsrf(:, is_oce) + pctsrf(:, is_sic)
152 DO i = 1 , klon
153 IF ( abs( fractint(i) - (1. - zmasq(i))) > EPSFRA ) THEN
154 WRITE(*, *) 'phyetat0 attention fraction ocean pas ', &
155 'coherente ', i, zmasq(i) , pctsrf(i, is_oce) &
156 , pctsrf(i, is_sic)
157 ENDIF
158 END DO
159
160 ! Lecture des temperatures du sol:
161 call NF95_INQ_VARID(ncid, "TS", varid)
162 call nf95_inquire_variable(ncid, varid, ndims = ndims)
163 if (ndims == 2) then
164 call NF95_GET_VAR(ncid, varid, tsol)
165 else
166 print *, "Found only one surface type for soil temperature."
167 call nf95_get_var(ncid, varid, tsol(:, 1))
168 tsol(:, 2:nbsrf) = spread(tsol(:, 1), dim = 2, ncopies = nbsrf - 1)
169 end if
170
171 ! Lecture des temperatures du sol profond:
172
173 call NF95_INQ_VARID(ncid, 'Tsoil', varid)
174 call NF95_GET_VAR(ncid, varid, tsoil)
175
176 !IM "slab" ocean
177 ! Lecture de tslab (pour slab ocean seulement):
178 tslab = 0.
179 seaice = 0.
180
181 ! Lecture de l'humidite de l'air juste au dessus du sol:
182
183 ierr = NF90_INQ_VARID(ncid, "QS", varid)
184 IF (ierr /= NF90_NOERR) THEN
185 PRINT *, 'phyetat0: Le champ <QS> est absent'
186 PRINT *, ' Mais je vais essayer de lire QS**'
187 DO nsrf = 1, nbsrf
188 IF (nsrf > 99) THEN
189 PRINT *, "Trop de sous-mailles"
190 stop 1
191 ENDIF
192 WRITE(str2, '(i2.2)') nsrf
193 call NF95_INQ_VARID(ncid, "QS"//str2, varid)
194 call NF95_GET_VAR(ncid, varid, qsurf(:, nsrf))
195 xmin = 1.0E+20
196 xmax = -1.0E+20
197 DO i = 1, klon
198 xmin = MIN(qsurf(i, nsrf), xmin)
199 xmax = MAX(qsurf(i, nsrf), xmax)
200 ENDDO
201 PRINT *, 'Humidite pres du sol QS**:', nsrf, xmin, xmax
202 ENDDO
203 ELSE
204 PRINT *, 'phyetat0: Le champ <QS> est present'
205 PRINT *, ' J ignore donc les autres humidites QS**'
206 call nf95_get_var(ncid, varid, qsurf(:, 1))
207 xmin = 1.0E+20
208 xmax = -1.0E+20
209 DO i = 1, klon
210 xmin = MIN(qsurf(i, 1), xmin)
211 xmax = MAX(qsurf(i, 1), xmax)
212 ENDDO
213 PRINT *, 'Humidite pres du sol <QS>', xmin, xmax
214 DO nsrf = 2, nbsrf
215 DO i = 1, klon
216 qsurf(i, nsrf) = qsurf(i, 1)
217 ENDDO
218 ENDDO
219 ENDIF
220
221 ! Eau dans le sol (pour le modele de sol "bucket")
222
223 ierr = NF90_INQ_VARID(ncid, "QSOL", varid)
224 IF (ierr == NF90_NOERR) THEN
225 call nf95_get_var(ncid, varid, qsol)
226 else
227 PRINT *, 'phyetat0: Le champ <QSOL> est absent'
228 PRINT *, ' Valeur par defaut nulle'
229 qsol = 0.
230 ENDIF
231
232 ! Lecture de neige au sol:
233
234 ierr = NF90_INQ_VARID(ncid, "SNOW", varid)
235 IF (ierr /= NF90_NOERR) THEN
236 PRINT *, 'phyetat0: Le champ <SNOW> est absent'
237 PRINT *, ' Mais je vais essayer de lire SNOW**'
238 DO nsrf = 1, nbsrf
239 IF (nsrf > 99) THEN
240 PRINT *, "Trop de sous-mailles"
241 stop 1
242 ENDIF
243 WRITE(str2, '(i2.2)') nsrf
244 call NF95_INQ_VARID(ncid, "SNOW"//str2, varid)
245 call NF95_GET_VAR(ncid, varid, snow(:, nsrf))
246 xmin = 1.0E+20
247 xmax = -1.0E+20
248 DO i = 1, klon
249 xmin = MIN(snow(i, nsrf), xmin)
250 xmax = MAX(snow(i, nsrf), xmax)
251 ENDDO
252 PRINT *, 'Neige du sol SNOW**:', nsrf, xmin, xmax
253 ENDDO
254 ELSE
255 PRINT *, 'phyetat0: Le champ <SNOW> est present'
256 PRINT *, ' J ignore donc les autres neiges SNOW**'
257 call nf95_get_var(ncid, varid, snow(:, 1))
258 xmin = 1.0E+20
259 xmax = -1.0E+20
260 DO i = 1, klon
261 xmin = MIN(snow(i, 1), xmin)
262 xmax = MAX(snow(i, 1), xmax)
263 ENDDO
264 PRINT *, 'Neige du sol <SNOW>', xmin, xmax
265 DO nsrf = 2, nbsrf
266 DO i = 1, klon
267 snow(i, nsrf) = snow(i, 1)
268 ENDDO
269 ENDDO
270 ENDIF
271
272 ! Lecture de albedo au sol:
273
274 ierr = NF90_INQ_VARID(ncid, "ALBE", varid)
275 IF (ierr /= NF90_NOERR) THEN
276 PRINT *, 'phyetat0: Le champ <ALBE> est absent'
277 PRINT *, ' Mais je vais essayer de lire ALBE**'
278 DO nsrf = 1, nbsrf
279 IF (nsrf > 99) THEN
280 PRINT *, "Trop de sous-mailles"
281 stop 1
282 ENDIF
283 WRITE(str2, '(i2.2)') nsrf
284 call NF95_INQ_VARID(ncid, "ALBE"//str2, varid)
285 call NF95_GET_VAR(ncid, varid, albe(:, nsrf))
286 xmin = 1.0E+20
287 xmax = -1.0E+20
288 DO i = 1, klon
289 xmin = MIN(albe(i, nsrf), xmin)
290 xmax = MAX(albe(i, nsrf), xmax)
291 ENDDO
292 PRINT *, 'Albedo du sol ALBE**:', nsrf, xmin, xmax
293 ENDDO
294 ELSE
295 PRINT *, 'phyetat0: Le champ <ALBE> est present'
296 PRINT *, ' J ignore donc les autres ALBE**'
297 call nf95_get_var(ncid, varid, albe(:, 1))
298 xmin = 1.0E+20
299 xmax = -1.0E+20
300 DO i = 1, klon
301 xmin = MIN(albe(i, 1), xmin)
302 xmax = MAX(albe(i, 1), xmax)
303 ENDDO
304 PRINT *, 'Neige du sol <ALBE>', xmin, xmax
305 DO nsrf = 2, nbsrf
306 DO i = 1, klon
307 albe(i, nsrf) = albe(i, 1)
308 ENDDO
309 ENDDO
310 ENDIF
311
312 ! Lecture de evaporation:
313
314 ierr = NF90_INQ_VARID(ncid, "EVAP", varid)
315 IF (ierr /= NF90_NOERR) THEN
316 PRINT *, 'phyetat0: Le champ <EVAP> est absent'
317 PRINT *, ' Mais je vais essayer de lire EVAP**'
318 DO nsrf = 1, nbsrf
319 IF (nsrf > 99) THEN
320 PRINT *, "Trop de sous-mailles"
321 stop 1
322 ENDIF
323 WRITE(str2, '(i2.2)') nsrf
324 call NF95_INQ_VARID(ncid, "EVAP"//str2, varid)
325 call NF95_GET_VAR(ncid, varid, evap(:, nsrf))
326 xmin = 1.0E+20
327 xmax = -1.0E+20
328 DO i = 1, klon
329 xmin = MIN(evap(i, nsrf), xmin)
330 xmax = MAX(evap(i, nsrf), xmax)
331 ENDDO
332 PRINT *, 'evap du sol EVAP**:', nsrf, xmin, xmax
333 ENDDO
334 ELSE
335 PRINT *, 'phyetat0: Le champ <EVAP> est present'
336 PRINT *, ' J ignore donc les autres EVAP**'
337 call nf95_get_var(ncid, varid, evap(:, 1))
338 xmin = 1.0E+20
339 xmax = -1.0E+20
340 DO i = 1, klon
341 xmin = MIN(evap(i, 1), xmin)
342 xmax = MAX(evap(i, 1), xmax)
343 ENDDO
344 PRINT *, 'Evap du sol <EVAP>', xmin, xmax
345 DO nsrf = 2, nbsrf
346 DO i = 1, klon
347 evap(i, nsrf) = evap(i, 1)
348 ENDDO
349 ENDDO
350 ENDIF
351
352 ! Lecture precipitation liquide:
353
354 call NF95_INQ_VARID(ncid, "rain_f", varid)
355 call NF95_GET_VAR(ncid, varid, rain_fall)
356
357 ! Lecture precipitation solide:
358
359 call NF95_INQ_VARID(ncid, "snow_f", varid)
360 call NF95_GET_VAR(ncid, varid, snow_fall)
361 xmin = 1.0E+20
362 xmax = -1.0E+20
363 DO i = 1, klon
364 xmin = MIN(snow_fall(i), xmin)
365 xmax = MAX(snow_fall(i), xmax)
366 ENDDO
367 PRINT *, 'Precipitation solide snow_f:', xmin, xmax
368
369 ! Lecture rayonnement solaire au sol:
370
371 ierr = NF90_INQ_VARID(ncid, "solsw", varid)
372 IF (ierr /= NF90_NOERR) THEN
373 PRINT *, 'phyetat0: Le champ <solsw> est absent'
374 PRINT *, 'mis a zero'
375 solsw = 0.
376 ELSE
377 call nf95_get_var(ncid, varid, solsw)
378 ENDIF
379 xmin = 1.0E+20
380 xmax = -1.0E+20
381 DO i = 1, klon
382 xmin = MIN(solsw(i), xmin)
383 xmax = MAX(solsw(i), xmax)
384 ENDDO
385 PRINT *, 'Rayonnement solaire au sol solsw:', xmin, xmax
386
387 ! Lecture rayonnement IF au sol:
388
389 ierr = NF90_INQ_VARID(ncid, "sollw", varid)
390 IF (ierr /= NF90_NOERR) THEN
391 PRINT *, 'phyetat0: Le champ <sollw> est absent'
392 PRINT *, 'mis a zero'
393 sollw = 0.
394 ELSE
395 call nf95_get_var(ncid, varid, sollw)
396 ENDIF
397 PRINT *, 'Rayonnement IF au sol sollw:', minval(sollw), maxval(sollw)
398
399 ! Lecture derive des flux:
400
401 ierr = NF90_INQ_VARID(ncid, "fder", varid)
402 IF (ierr /= NF90_NOERR) THEN
403 PRINT *, 'phyetat0: Le champ <fder> est absent'
404 PRINT *, 'mis a zero'
405 fder = 0.
406 ELSE
407 call nf95_get_var(ncid, varid, fder)
408 ENDIF
409 xmin = 1.0E+20
410 xmax = -1.0E+20
411 DO i = 1, klon
412 xmin = MIN(fder(i), xmin)
413 xmax = MAX(fder(i), xmax)
414 ENDDO
415 PRINT *, 'Derive des flux fder:', xmin, xmax
416
417 ! Lecture du rayonnement net au sol:
418
419 call NF95_INQ_VARID(ncid, "RADS", varid)
420 call NF95_GET_VAR(ncid, varid, radsol)
421 xmin = 1.0E+20
422 xmax = -1.0E+20
423 DO i = 1, klon
424 xmin = MIN(radsol(i), xmin)
425 xmax = MAX(radsol(i), xmax)
426 ENDDO
427 PRINT *, 'Rayonnement net au sol radsol:', xmin, xmax
428
429 ! Lecture de la longueur de rugosite
430
431 ierr = NF90_INQ_VARID(ncid, "RUG", varid)
432 IF (ierr /= NF90_NOERR) THEN
433 PRINT *, 'phyetat0: Le champ <RUG> est absent'
434 PRINT *, ' Mais je vais essayer de lire RUG**'
435 DO nsrf = 1, nbsrf
436 IF (nsrf > 99) THEN
437 PRINT *, "Trop de sous-mailles"
438 stop 1
439 ENDIF
440 WRITE(str2, '(i2.2)') nsrf
441 call NF95_INQ_VARID(ncid, "RUG"//str2, varid)
442 call NF95_GET_VAR(ncid, varid, frugs(:, nsrf))
443 xmin = 1.0E+20
444 xmax = -1.0E+20
445 DO i = 1, klon
446 xmin = MIN(frugs(i, nsrf), xmin)
447 xmax = MAX(frugs(i, nsrf), xmax)
448 ENDDO
449 PRINT *, 'rugosite du sol RUG**:', nsrf, xmin, xmax
450 ENDDO
451 ELSE
452 PRINT *, 'phyetat0: Le champ <RUG> est present'
453 PRINT *, ' J ignore donc les autres RUG**'
454 call nf95_get_var(ncid, varid, frugs(:, 1))
455 xmin = 1.0E+20
456 xmax = -1.0E+20
457 DO i = 1, klon
458 xmin = MIN(frugs(i, 1), xmin)
459 xmax = MAX(frugs(i, 1), xmax)
460 ENDDO
461 PRINT *, 'rugosite <RUG>', xmin, xmax
462 DO nsrf = 2, nbsrf
463 DO i = 1, klon
464 frugs(i, nsrf) = frugs(i, 1)
465 ENDDO
466 ENDDO
467 ENDIF
468
469 ! Lecture de l'age de la neige:
470
471 ierr = NF90_INQ_VARID(ncid, "AGESNO", varid)
472 IF (ierr /= NF90_NOERR) THEN
473 PRINT *, 'phyetat0: Le champ <AGESNO> est absent'
474 PRINT *, ' Mais je vais essayer de lire AGESNO**'
475 DO nsrf = 1, nbsrf
476 IF (nsrf > 99) THEN
477 PRINT *, "Trop de sous-mailles"
478 stop 1
479 ENDIF
480 WRITE(str2, '(i2.2)') nsrf
481 ierr = NF90_INQ_VARID(ncid, "AGESNO"//str2, varid)
482 IF (ierr /= NF90_NOERR) THEN
483 PRINT *, "phyetat0: Le champ <AGESNO"//str2//"> est absent"
484 agesno = 50.0
485 ENDIF
486 call NF95_GET_VAR(ncid, varid, agesno(:, nsrf))
487 xmin = 1.0E+20
488 xmax = -1.0E+20
489 DO i = 1, klon
490 xmin = MIN(agesno(i, nsrf), xmin)
491 xmax = MAX(agesno(i, nsrf), xmax)
492 ENDDO
493 PRINT *, 'Age de la neige AGESNO**:', nsrf, xmin, xmax
494 ENDDO
495 ELSE
496 PRINT *, 'phyetat0: Le champ <AGESNO> est present'
497 PRINT *, ' J ignore donc les autres AGESNO**'
498 call nf95_get_var(ncid, varid, agesno(:, 1))
499 xmin = 1.0E+20
500 xmax = -1.0E+20
501 DO i = 1, klon
502 xmin = MIN(agesno(i, 1), xmin)
503 xmax = MAX(agesno(i, 1), xmax)
504 ENDDO
505 PRINT *, 'Age de la neige <AGESNO>', xmin, xmax
506 DO nsrf = 2, nbsrf
507 DO i = 1, klon
508 agesno(i, nsrf) = agesno(i, 1)
509 ENDDO
510 ENDDO
511 ENDIF
512
513 call NF95_INQ_VARID(ncid, "ZMEA", varid)
514 call NF95_GET_VAR(ncid, varid, zmea)
515 xmin = 1.0E+20
516 xmax = -1.0E+20
517 DO i = 1, klon
518 xmin = MIN(zmea(i), xmin)
519 xmax = MAX(zmea(i), xmax)
520 ENDDO
521 PRINT *, 'OROGRAPHIE SOUS-MAILLE zmea:', xmin, xmax
522
523 call NF95_INQ_VARID(ncid, "ZSTD", varid)
524 call NF95_GET_VAR(ncid, varid, zstd)
525 xmin = 1.0E+20
526 xmax = -1.0E+20
527 DO i = 1, klon
528 xmin = MIN(zstd(i), xmin)
529 xmax = MAX(zstd(i), xmax)
530 ENDDO
531 PRINT *, 'OROGRAPHIE SOUS-MAILLE zstd:', xmin, xmax
532
533 call NF95_INQ_VARID(ncid, "ZSIG", varid)
534 call NF95_GET_VAR(ncid, varid, zsig)
535 xmin = 1.0E+20
536 xmax = -1.0E+20
537 DO i = 1, klon
538 xmin = MIN(zsig(i), xmin)
539 xmax = MAX(zsig(i), xmax)
540 ENDDO
541 PRINT *, 'OROGRAPHIE SOUS-MAILLE zsig:', xmin, xmax
542
543 call NF95_INQ_VARID(ncid, "ZGAM", varid)
544 call NF95_GET_VAR(ncid, varid, zgam)
545 xmin = 1.0E+20
546 xmax = -1.0E+20
547 DO i = 1, klon
548 xmin = MIN(zgam(i), xmin)
549 xmax = MAX(zgam(i), xmax)
550 ENDDO
551 PRINT *, 'OROGRAPHIE SOUS-MAILLE zgam:', xmin, xmax
552
553 call NF95_INQ_VARID(ncid, "ZTHE", varid)
554 call NF95_GET_VAR(ncid, varid, zthe)
555 xmin = 1.0E+20
556 xmax = -1.0E+20
557 DO i = 1, klon
558 xmin = MIN(zthe(i), xmin)
559 xmax = MAX(zthe(i), xmax)
560 ENDDO
561 PRINT *, 'OROGRAPHIE SOUS-MAILLE zthe:', xmin, xmax
562
563 call NF95_INQ_VARID(ncid, "ZPIC", varid)
564 call NF95_GET_VAR(ncid, varid, zpic)
565 xmin = 1.0E+20
566 xmax = -1.0E+20
567 DO i = 1, klon
568 xmin = MIN(zpic(i), xmin)
569 xmax = MAX(zpic(i), xmax)
570 ENDDO
571 PRINT *, 'OROGRAPHIE SOUS-MAILLE zpic:', xmin, xmax
572
573 call NF95_INQ_VARID(ncid, "ZVAL", varid)
574 call NF95_GET_VAR(ncid, varid, zval)
575 xmin = 1.0E+20
576 xmax = -1.0E+20
577 DO i = 1, klon
578 xmin = MIN(zval(i), xmin)
579 xmax = MAX(zval(i), xmax)
580 ENDDO
581 PRINT *, 'OROGRAPHIE SOUS-MAILLE zval:', xmin, xmax
582
583 ancien_ok = .TRUE.
584
585 ierr = NF90_INQ_VARID(ncid, "TANCIEN", varid)
586 IF (ierr /= NF90_NOERR) THEN
587 PRINT *, "phyetat0: Le champ <TANCIEN> est absent"
588 PRINT *, "Depart legerement fausse. Mais je continue"
589 ancien_ok = .FALSE.
590 ELSE
591 call nf95_get_var(ncid, varid, t_ancien)
592 ENDIF
593
594 ierr = NF90_INQ_VARID(ncid, "QANCIEN", varid)
595 IF (ierr /= NF90_NOERR) THEN
596 PRINT *, "phyetat0: Le champ <QANCIEN> est absent"
597 PRINT *, "Depart legerement fausse. Mais je continue"
598 ancien_ok = .FALSE.
599 ELSE
600 call nf95_get_var(ncid, varid, q_ancien)
601 ENDIF
602
603 ierr = NF90_INQ_VARID(ncid, "CLWCON", varid)
604 IF (ierr /= NF90_NOERR) THEN
605 PRINT *, "phyetat0: Le champ CLWCON est absent"
606 PRINT *, "Depart legerement fausse. Mais je continue"
607 clwcon = 0.
608 ELSE
609 call nf95_get_var(ncid, varid, clwcon(:, 1))
610 clwcon(:, 2:) = 0.
611 ENDIF
612 xmin = 1.0E+20
613 xmax = -1.0E+20
614 xmin = MINval(clwcon)
615 xmax = MAXval(clwcon)
616 PRINT *, 'Eau liquide convective (ecart-type) clwcon:', xmin, xmax
617
618 ierr = NF90_INQ_VARID(ncid, "RNEBCON", varid)
619 IF (ierr /= NF90_NOERR) THEN
620 PRINT *, "phyetat0: Le champ RNEBCON est absent"
621 PRINT *, "Depart legerement fausse. Mais je continue"
622 rnebcon = 0.
623 ELSE
624 call nf95_get_var(ncid, varid, rnebcon(:, 1))
625 rnebcon(:, 2:) = 0.
626 ENDIF
627 xmin = 1.0E+20
628 xmax = -1.0E+20
629 xmin = MINval(rnebcon)
630 xmax = MAXval(rnebcon)
631 PRINT *, 'Nebulosite convective (ecart-type) rnebcon:', xmin, xmax
632
633 ! Lecture ratqs
634
635 ierr = NF90_INQ_VARID(ncid, "RATQS", varid)
636 IF (ierr /= NF90_NOERR) THEN
637 PRINT *, "phyetat0: Le champ <RATQS> est absent"
638 PRINT *, "Depart legerement fausse. Mais je continue"
639 ratqs = 0.
640 ELSE
641 call nf95_get_var(ncid, varid, ratqs(:, 1))
642 ratqs(:, 2:) = 0.
643 ENDIF
644 xmin = 1.0E+20
645 xmax = -1.0E+20
646 xmin = MINval(ratqs)
647 xmax = MAXval(ratqs)
648 PRINT *, '(ecart-type) ratqs:', xmin, xmax
649
650 ! Lecture run_off_lic_0
651
652 ierr = NF90_INQ_VARID(ncid, "RUNOFFLIC0", varid)
653 IF (ierr /= NF90_NOERR) THEN
654 PRINT *, "phyetat0: Le champ <RUNOFFLIC0> est absent"
655 PRINT *, "Depart legerement fausse. Mais je continue"
656 run_off_lic_0 = 0.
657 ELSE
658 call nf95_get_var(ncid, varid, run_off_lic_0)
659 ENDIF
660 xmin = 1.0E+20
661 xmax = -1.0E+20
662 xmin = MINval(run_off_lic_0)
663 xmax = MAXval(run_off_lic_0)
664 PRINT *, '(ecart-type) run_off_lic_0:', xmin, xmax
665
666 call nf95_inq_varid(ncid, "sig1", varid)
667 call nf95_get_var(ncid, varid, sig1)
668
669 call nf95_inq_varid(ncid, "w01", varid)
670 call nf95_get_var(ncid, varid, w01)
671
672 call NF95_CLOSE(ncid)
673
674 END SUBROUTINE phyetat0
675
676 end module phyetat0_m

  ViewVC Help
Powered by ViewVC 1.1.21