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

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

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.21