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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 43 - (hide annotations)
Fri Apr 8 12:43:31 2011 UTC (13 years, 1 month ago) by guez
Original Path: trunk/libf/phylmd/phyredem.f90
File size: 13604 byte(s)
"start_init_phys" is now called directly by "etat0" instead of through
"start_init_dyn". "qsol_2d" is no longer a variable of module
"start_init_phys_m", it is an argument of
"start_init_phys". "start_init_dyn" now receives "tsol_2d" from
"etat0".

Split file "vlspltqs.f" into "vlspltqs.f90", "vlxqs.f90" and
""vlyqs.f90".

In "start_init_orog", replaced calls to "flin*" by calls to NetCDF95.

1 guez 15 module phyredem_m
2 guez 3
3 guez 15 IMPLICIT NONE
4 guez 3
5 guez 15 contains
6 guez 3
7 guez 15 SUBROUTINE phyredem(fichnom, rlat, rlon, pctsrf, tsol, tsoil, tslab, &
8     seaice, qsurf, qsol, snow, albedo, alblw, evap, rain_fall,&
9     snow_fall, solsw, sollw, fder, radsol, frugs, agesno, zmea,&
10     zstd, zsig, zgam, zthe, zpic, zval, t_ancien, q_ancien,&
11     rnebcon, ratqs, clwcon, run_off_lic_0)
12 guez 3
13 guez 15 ! From phylmd/phyredem.F, v 1.3 2005/05/25 13:10:09
14     ! Auteur(s) Z.X. Li (LMD/CNRS) date: 19930818
15     ! Objet: Ecriture de l'etat de démarrage ou redémarrage pour la physique
16 guez 12
17 guez 15 USE indicesol, ONLY : is_lic, is_oce, is_sic, is_ter, nbsrf
18     USE dimphy, ONLY : klev, klon, zmasq
19     USE dimsoil, ONLY : nsoilmx
20     USE temps, ONLY : itau_phy
21 guez 20 USE netcdf95, ONLY : nf95_create, nf95_put_att, nf95_def_dim, &
22 guez 21 nf95_def_var, nf95_enddef, nf95_redef, nf95_put_var, nf95_close
23     USE netcdf, ONLY : nf90_clobber, nf90_global, nf90_float
24 guez 12
25 guez 15 CHARACTER(len=*) fichnom
26     REAL, INTENT (IN) :: rlat(klon), rlon(klon)
27     REAL :: tsol(klon, nbsrf)
28     REAL :: tsoil(klon, nsoilmx, nbsrf)
29 guez 12
30 guez 15 REAL :: tslab(klon), seaice(klon) !IM "slab" ocean
31     REAL :: qsurf(klon, nbsrf)
32 guez 43 REAL, intent(in):: qsol(klon)
33 guez 15 REAL :: snow(klon, nbsrf)
34     REAL :: albedo(klon, nbsrf)
35 guez 12
36 guez 15 REAL :: alblw(klon, nbsrf)
37 guez 12
38 guez 15 REAL :: evap(klon, nbsrf)
39     REAL :: rain_fall(klon)
40     REAL :: snow_fall(klon)
41     REAL :: solsw(klon)
42     REAL :: sollw(klon)
43     REAL :: fder(klon)
44     REAL :: radsol(klon)
45     REAL :: frugs(klon, nbsrf)
46     REAL :: agesno(klon, nbsrf)
47     REAL :: zmea(klon)
48     REAL, intent(in):: zstd(klon)
49     REAL, intent(in):: zsig(klon)
50     REAL :: zgam(klon)
51     REAL :: zthe(klon)
52     REAL :: zpic(klon)
53     REAL :: zval(klon)
54     REAL :: pctsrf(klon, nbsrf)
55     REAL :: t_ancien(klon, klev), q_ancien(klon, klev)
56     REAL :: clwcon(klon, klev), rnebcon(klon, klev), ratqs(klon, klev)
57     REAL :: run_off_lic_0(klon)
58 guez 12
59 guez 15 INTEGER :: nid, nvarid, idim2, idim3
60 guez 12
61 guez 15 INTEGER :: isoil, nsrf
62     CHARACTER (7) :: str7
63     CHARACTER (2) :: str2
64 guez 12
65 guez 15 !------------------------------------------------------------
66 guez 12
67 guez 15 PRINT *, 'Call sequence information: phyredem'
68     CALL nf95_create(fichnom, nf90_clobber, nid)
69 guez 12
70 guez 19 call nf95_put_att(nid, nf90_global, 'title', &
71     'Fichier redémarrage physique')
72 guez 15 call nf95_put_att(nid, nf90_global, "itau_phy", itau_phy)
73 guez 12
74 guez 20 call nf95_def_dim(nid, 'points_physiques', klon, idim2)
75     call nf95_def_dim(nid, 'horizon_vertical', klon*klev, idim3)
76 guez 12
77 guez 20 call nf95_def_var(nid, 'longitude', nf90_float, idim2, nvarid)
78     call nf95_put_att(nid, nvarid, 'title', &
79 guez 15 'Longitudes de la grille physique')
80 guez 20 call nf95_enddef(nid)
81 guez 21 call nf95_put_var(nid, nvarid, rlon)
82 guez 12
83 guez 20 call nf95_redef(nid)
84     call nf95_def_var(nid, 'latitude', nf90_float, idim2, nvarid)
85     call nf95_put_att(nid, nvarid, 'title', &
86 guez 15 'Latitudes de la grille physique')
87 guez 20 call nf95_enddef(nid)
88 guez 21 call nf95_put_var(nid, nvarid, rlat)
89 guez 12
90 guez 15 ! PB ajout du masque terre/mer
91 guez 12
92 guez 20 call nf95_redef(nid)
93     call nf95_def_var(nid, 'masque', nf90_float, idim2, nvarid)
94     call nf95_put_att(nid, nvarid, 'title', 'masque terre mer')
95     call nf95_enddef(nid)
96 guez 21 call nf95_put_var(nid, nvarid, zmasq)
97 guez 15 ! BP ajout des fraction de chaque sous-surface
98 guez 12
99 guez 15 ! 1. fraction de terre
100 guez 12
101 guez 20 call nf95_redef(nid)
102     call nf95_def_var(nid, 'FTER', nf90_float, idim2, nvarid)
103     call nf95_put_att(nid, nvarid, 'title', 'fraction de continent')
104     call nf95_enddef(nid)
105 guez 21 call nf95_put_var(nid, nvarid, pctsrf(:, is_ter))
106 guez 12
107 guez 15 ! 2. Fraction de glace de terre
108 guez 12
109 guez 20 call nf95_redef(nid)
110     call nf95_def_var(nid, 'FLIC', nf90_float, idim2, nvarid)
111     call nf95_put_att(nid, nvarid, 'title', 'fraction glace de terre')
112     call nf95_enddef(nid)
113 guez 21 call nf95_put_var(nid, nvarid, pctsrf(:, is_lic))
114 guez 12
115 guez 15 ! 3. fraction ocean
116 guez 12
117 guez 20 call nf95_redef(nid)
118     call nf95_def_var(nid, 'FOCE', nf90_float, idim2, nvarid)
119     call nf95_put_att(nid, nvarid, 'title', 'fraction ocean')
120     call nf95_enddef(nid)
121 guez 21 call nf95_put_var(nid, nvarid, pctsrf(:, is_oce))
122 guez 12
123 guez 15 ! 4. Fraction glace de mer
124 guez 3
125 guez 20 call nf95_redef(nid)
126     call nf95_def_var(nid, 'FSIC', nf90_float, idim2, nvarid)
127     call nf95_put_att(nid, nvarid, 'title', 'fraction glace mer')
128     call nf95_enddef(nid)
129 guez 21 call nf95_put_var(nid, nvarid, pctsrf(:, is_sic))
130 guez 12
131    
132    
133 guez 15 DO nsrf = 1, nbsrf
134     IF (nsrf<=99) THEN
135     WRITE (str2, '(i2.2)') nsrf
136 guez 20 call nf95_redef(nid)
137     call nf95_def_var(nid, 'TS'//str2, nf90_float, idim2, nvarid)
138     call nf95_put_att(nid, nvarid, 'title', &
139 guez 15 'Temperature de surface No.'//str2)
140 guez 20 call nf95_enddef(nid)
141 guez 15 ELSE
142     PRINT *, 'Trop de sous-mailles'
143     STOP 1
144     END IF
145 guez 21 call nf95_put_var(nid, nvarid, tsol(:, nsrf))
146 guez 15 END DO
147 guez 12
148 guez 15 DO nsrf = 1, nbsrf
149     DO isoil = 1, nsoilmx
150     IF (isoil<=99 .AND. nsrf<=99) THEN
151     WRITE (str7, '(i2.2, "srf", i2.2)') isoil, nsrf
152 guez 20 call nf95_redef(nid)
153     call nf95_def_var(nid, 'Tsoil'//str7, nf90_float, idim2, nvarid)
154     call nf95_put_att(nid, nvarid, 'title', &
155 guez 15 'Temperature du sol No.'//str7)
156 guez 20 call nf95_enddef(nid)
157 guez 15 ELSE
158     PRINT *, 'Trop de couches'
159     STOP 1
160     END IF
161 guez 21 call nf95_put_var(nid, nvarid, tsoil(:, isoil, nsrf))
162 guez 15 END DO
163     END DO
164 guez 12
165 guez 15 !IM "slab" ocean
166 guez 20 call nf95_redef(nid)
167     call nf95_def_var(nid, 'TSLAB', nf90_float, idim2, nvarid)
168     call nf95_put_att(nid, nvarid, 'title', &
169 guez 15 'Ecart de la SST (pour slab-ocean)')
170 guez 20 call nf95_enddef(nid)
171 guez 21 call nf95_put_var(nid, nvarid, tslab)
172 guez 12
173 guez 20 call nf95_redef(nid)
174     call nf95_def_var(nid, 'SEAICE', nf90_float, idim2, nvarid)
175     call nf95_put_att(nid, nvarid, 'title', &
176 guez 15 'Glace de mer kg/m2 (pour slab-ocean)')
177 guez 20 call nf95_enddef(nid)
178 guez 21 call nf95_put_var(nid, nvarid, seaice)
179 guez 12
180 guez 15 DO nsrf = 1, nbsrf
181     IF (nsrf<=99) THEN
182     WRITE (str2, '(i2.2)') nsrf
183 guez 20 call nf95_redef(nid)
184     call nf95_def_var(nid, 'QS'//str2, nf90_float, idim2, nvarid)
185     call nf95_put_att(nid, nvarid, 'title', &
186 guez 15 'Humidite de surface No.'//str2)
187 guez 20 call nf95_enddef(nid)
188 guez 15 ELSE
189     PRINT *, 'Trop de sous-mailles'
190     STOP 1
191     END IF
192 guez 21 call nf95_put_var(nid, nvarid, qsurf(:, nsrf))
193 guez 15 END DO
194 guez 12
195 guez 20 call nf95_redef(nid)
196     call nf95_def_var(nid, 'QSOL', nf90_float, idim2, nvarid)
197     call nf95_put_att(nid, nvarid, 'title', 'Eau dans le sol (mm)')
198     call nf95_enddef(nid)
199 guez 21 call nf95_put_var(nid, nvarid, qsol)
200 guez 12
201 guez 15 DO nsrf = 1, nbsrf
202     IF (nsrf<=99) THEN
203     WRITE (str2, '(i2.2)') nsrf
204 guez 20 call nf95_redef(nid)
205     call nf95_def_var(nid, 'ALBE'//str2, nf90_float, idim2, nvarid)
206     call nf95_put_att(nid, nvarid, 'title', &
207 guez 15 'albedo de surface No.'//str2)
208 guez 20 call nf95_enddef(nid)
209 guez 15 ELSE
210     PRINT *, 'Trop de sous-mailles'
211     STOP 1
212     END IF
213 guez 21 call nf95_put_var(nid, nvarid, albedo(:, nsrf))
214 guez 15 END DO
215 guez 12
216 guez 15 !IM BEG albedo LW
217     DO nsrf = 1, nbsrf
218     IF (nsrf<=99) THEN
219     WRITE (str2, '(i2.2)') nsrf
220 guez 20 call nf95_redef(nid)
221     call nf95_def_var(nid, 'ALBLW'//str2, nf90_float, idim2, nvarid)
222     call nf95_put_att(nid, nvarid, 'title', &
223 guez 15 'albedo LW de surface No.'//str2)
224 guez 20 call nf95_enddef(nid)
225 guez 15 ELSE
226     PRINT *, 'Trop de sous-mailles'
227     STOP 1
228     END IF
229 guez 21 call nf95_put_var(nid, nvarid, alblw(:, nsrf))
230 guez 15 END DO
231     !IM END albedo LW
232 guez 12
233 guez 15 DO nsrf = 1, nbsrf
234     IF (nsrf<=99) THEN
235     WRITE (str2, '(i2.2)') nsrf
236 guez 20 call nf95_redef(nid)
237     call nf95_def_var(nid, 'EVAP'//str2, nf90_float, idim2, nvarid)
238     call nf95_put_att(nid, nvarid, 'title', &
239 guez 15 'Evaporation de surface No.'//str2)
240 guez 20 call nf95_enddef(nid)
241 guez 15 ELSE
242     PRINT *, 'Trop de sous-mailles'
243     STOP 1
244     END IF
245 guez 21 call nf95_put_var(nid, nvarid, evap(:, nsrf))
246 guez 15 END DO
247 guez 12
248    
249 guez 15 DO nsrf = 1, nbsrf
250     IF (nsrf<=99) THEN
251     WRITE (str2, '(i2.2)') nsrf
252 guez 20 call nf95_redef(nid)
253     call nf95_def_var(nid, 'SNOW'//str2, nf90_float, idim2, nvarid)
254     call nf95_put_att(nid, nvarid, 'title', &
255 guez 15 'Neige de surface No.'//str2)
256 guez 20 call nf95_enddef(nid)
257 guez 15 ELSE
258     PRINT *, 'Trop de sous-mailles'
259     STOP 1
260     END IF
261 guez 21 call nf95_put_var(nid, nvarid, snow(:, nsrf))
262 guez 15 END DO
263 guez 12
264    
265 guez 20 call nf95_redef(nid)
266     call nf95_def_var(nid, 'RADS', nf90_float, idim2, nvarid)
267     call nf95_put_att(nid, nvarid, 'title', &
268 guez 15 'Rayonnement net a la surface')
269 guez 20 call nf95_enddef(nid)
270 guez 21 call nf95_put_var(nid, nvarid, radsol)
271 guez 12
272 guez 20 call nf95_redef(nid)
273     call nf95_def_var(nid, 'solsw', nf90_float, idim2, nvarid)
274     call nf95_put_att(nid, nvarid, 'title', &
275 guez 15 'Rayonnement solaire a la surface')
276 guez 20 call nf95_enddef(nid)
277 guez 21 call nf95_put_var(nid, nvarid, solsw)
278 guez 12
279 guez 20 call nf95_redef(nid)
280     call nf95_def_var(nid, 'sollw', nf90_float, idim2, nvarid)
281     call nf95_put_att(nid, nvarid, 'title', &
282 guez 15 'Rayonnement IF a la surface')
283 guez 20 call nf95_enddef(nid)
284 guez 21 call nf95_put_var(nid, nvarid, sollw)
285 guez 12
286 guez 20 call nf95_redef(nid)
287     call nf95_def_var(nid, 'fder', nf90_float, idim2, nvarid)
288     call nf95_put_att(nid, nvarid, 'title', 'Derive de flux')
289     call nf95_enddef(nid)
290 guez 21 call nf95_put_var(nid, nvarid, fder)
291 guez 12
292 guez 20 call nf95_redef(nid)
293     call nf95_def_var(nid, 'rain_f', nf90_float, idim2, nvarid)
294     call nf95_put_att(nid, nvarid, 'title', 'precipitation liquide')
295     call nf95_enddef(nid)
296 guez 21 call nf95_put_var(nid, nvarid, rain_fall)
297 guez 12
298 guez 20 call nf95_redef(nid)
299     call nf95_def_var(nid, 'snow_f', nf90_float, idim2, nvarid)
300     call nf95_put_att(nid, nvarid, 'title', 'precipitation solide')
301     call nf95_enddef(nid)
302 guez 21 call nf95_put_var(nid, nvarid, snow_fall)
303 guez 12
304 guez 15 DO nsrf = 1, nbsrf
305     IF (nsrf<=99) THEN
306     WRITE (str2, '(i2.2)') nsrf
307 guez 20 call nf95_redef(nid)
308     call nf95_def_var(nid, 'RUG'//str2, nf90_float, idim2, nvarid)
309     call nf95_put_att(nid, nvarid, 'title', &
310 guez 15 'rugosite de surface No.'//str2)
311 guez 20 call nf95_enddef(nid)
312 guez 15 ELSE
313     PRINT *, 'Trop de sous-mailles'
314     STOP 1
315     END IF
316 guez 21 call nf95_put_var(nid, nvarid, frugs(:, nsrf))
317 guez 15 END DO
318 guez 12
319 guez 15 DO nsrf = 1, nbsrf
320     IF (nsrf<=99) THEN
321     WRITE (str2, '(i2.2)') nsrf
322 guez 20 call nf95_redef(nid)
323     call nf95_def_var(nid, 'AGESNO'//str2, nf90_float, idim2, nvarid)
324     call nf95_put_att(nid, nvarid, 'title', &
325 guez 15 'Age de la neige surface No.'//str2)
326 guez 20 call nf95_enddef(nid)
327 guez 15 ELSE
328     PRINT *, 'Trop de sous-mailles'
329     STOP 1
330     END IF
331 guez 21 call nf95_put_var(nid, nvarid, agesno(:, nsrf))
332 guez 15 END DO
333 guez 12
334 guez 20 call nf95_redef(nid)
335     call nf95_def_var(nid, 'ZMEA', nf90_float, idim2, nvarid)
336     call nf95_enddef(nid)
337 guez 21 call nf95_put_var(nid, nvarid, zmea)
338 guez 12
339 guez 20 call nf95_redef(nid)
340     call nf95_def_var(nid, 'ZSTD', nf90_float, idim2, nvarid)
341     call nf95_enddef(nid)
342 guez 21 call nf95_put_var(nid, nvarid, zstd)
343 guez 20 call nf95_redef(nid)
344     call nf95_def_var(nid, 'ZSIG', nf90_float, idim2, nvarid)
345     call nf95_enddef(nid)
346 guez 21 call nf95_put_var(nid, nvarid, zsig)
347 guez 20 call nf95_redef(nid)
348     call nf95_def_var(nid, 'ZGAM', nf90_float, idim2, nvarid)
349     call nf95_enddef(nid)
350 guez 21 call nf95_put_var(nid, nvarid, zgam)
351 guez 20 call nf95_redef(nid)
352     call nf95_def_var(nid, 'ZTHE', nf90_float, idim2, nvarid)
353     call nf95_enddef(nid)
354 guez 21 call nf95_put_var(nid, nvarid, zthe)
355 guez 20 call nf95_redef(nid)
356     call nf95_def_var(nid, 'ZPIC', nf90_float, idim2, nvarid)
357     call nf95_enddef(nid)
358 guez 21 call nf95_put_var(nid, nvarid, zpic)
359 guez 20 call nf95_redef(nid)
360     call nf95_def_var(nid, 'ZVAL', nf90_float, idim2, nvarid)
361     call nf95_enddef(nid)
362 guez 21 call nf95_put_var(nid, nvarid, zval)
363 guez 12
364 guez 20 call nf95_redef(nid)
365     call nf95_def_var(nid, 'TANCIEN', nf90_float, idim3, nvarid)
366     call nf95_enddef(nid)
367 guez 21 call nf95_put_var(nid, nvarid, pack(t_ancien, .true.))
368 guez 12
369 guez 20 call nf95_redef(nid)
370     call nf95_def_var(nid, 'QANCIEN', nf90_float, idim3, nvarid)
371     call nf95_enddef(nid)
372 guez 21 call nf95_put_var(nid, nvarid, pack(q_ancien, .true.))
373 guez 12
374 guez 20 call nf95_redef(nid)
375     call nf95_def_var(nid, 'RUGMER', nf90_float, idim2, nvarid)
376     call nf95_put_att(nid, nvarid, 'title', &
377 guez 15 'Longueur de rugosite sur mer')
378 guez 20 call nf95_enddef(nid)
379 guez 21 call nf95_put_var(nid, nvarid, frugs(:, is_oce))
380 guez 12
381 guez 20 call nf95_redef(nid)
382     call nf95_def_var(nid, 'CLWCON', nf90_float, idim2, nvarid)
383     call nf95_put_att(nid, nvarid, 'title', 'Eau liquide convective')
384     call nf95_enddef(nid)
385 guez 21 call nf95_put_var(nid, nvarid, clwcon)
386 guez 12
387 guez 20 call nf95_redef(nid)
388     call nf95_def_var(nid, 'RNEBCON', nf90_float, idim2, nvarid)
389     call nf95_put_att(nid, nvarid, 'title', 'Nebulosite convective')
390     call nf95_enddef(nid)
391 guez 21 call nf95_put_var(nid, nvarid, rnebcon)
392 guez 12
393 guez 20 call nf95_redef(nid)
394     call nf95_def_var(nid, 'RATQS', nf90_float, idim2, nvarid)
395     call nf95_put_att(nid, nvarid, 'title', 'Ratqs')
396     call nf95_enddef(nid)
397 guez 21 call nf95_put_var(nid, nvarid, ratqs)
398 guez 15
399     ! run_off_lic_0
400    
401 guez 20 call nf95_redef(nid)
402     call nf95_def_var(nid, 'RUNOFFLIC0', nf90_float, idim2, nvarid)
403     call nf95_put_att(nid, nvarid, 'title', 'Runofflic0')
404     call nf95_enddef(nid)
405 guez 21 call nf95_put_var(nid, nvarid, run_off_lic_0)
406 guez 15
407    
408 guez 21 call nf95_close(nid)
409 guez 15
410     END SUBROUTINE phyredem
411    
412     end module phyredem_m

  ViewVC Help
Powered by ViewVC 1.1.21