6 SUBROUTINE read_pstoke0(irec, zrec, zkon, zkev, airefi, phisfi, t, mfu, mfd, &
7 en_u, de_u, en_d, de_d, coefh, fm_therm, en_therm, frac_impa, frac_nucl, &
8 pyu1, pyv1, ftsol, psrf)
27 INTEGER kon, kev, zkon, zkev
30 REAL,
ALLOCATABLE :: phisfi2(:,:)
31 REAL,
ALLOCATABLE :: airefi2(:,:)
47 REAL,
ALLOCATABLE :: mfu2(:,:,:)
48 REAL,
ALLOCATABLE :: mfd2(:,:,:)
49 REAL,
ALLOCATABLE :: en_u2(:,:,:)
50 REAL,
ALLOCATABLE :: de_u2(:,:,:)
51 REAL,
ALLOCATABLE :: en_d2(:,:,:)
52 REAL,
ALLOCATABLE :: de_d2(:,:,:)
53 REAL,
ALLOCATABLE :: coefh2(:,:,:)
54 REAL,
ALLOCATABLE :: t2(:,:,:)
56 REAL,
ALLOCATABLE :: fm_therm2(:,:,:)
57 REAL,
ALLOCATABLE :: en_therm2(:,:,:)
59 REAL,
ALLOCATABLE :: pl(:)
61 INTEGER xid, yid, zid, tid
62 INTEGER zrec, zim, zjm
63 INTEGER ncrec, nckon, nckev, ncim, ncjm
74 REAL,
ALLOCATABLE :: frac_impa2(:,:,:)
75 REAL,
ALLOCATABLE :: frac_nucl2(:,:,:)
78 REAL,
ALLOCATABLE :: pyu12(:,:), pyv12(:,:)
81 REAL,
ALLOCATABLE :: ftsol1(:),ftsol2(:)
82 REAL,
ALLOCATABLE :: ftsol3(:),ftsol4(:)
83 REAL,
ALLOCATABLE :: psrf1(:), psrf2(:)
84 REAL,
ALLOCATABLE :: psrf3(:), psrf4(:)
85 REAL,
ALLOCATABLE :: ftsol12(:,:)
86 REAL,
ALLOCATABLE :: ftsol22(:,:)
87 REAL,
ALLOCATABLE :: ftsol32(:,:)
88 REAL,
ALLOCATABLE :: ftsol42(:,:)
89 REAL,
ALLOCATABLE :: psrf12(:,:)
90 REAL,
ALLOCATABLE :: psrf22(:,:)
91 REAL,
ALLOCATABLE :: psrf32(:,:)
92 REAL,
ALLOCATABLE :: psrf42(:,:)
95 INTEGER,
SAVE :: varidmfu, varidmfd, varidps, varidenu, variddeu
96 INTEGER,
SAVE :: varidt
97 INTEGER,
SAVE :: varidend, varidded, varidch, varidfi, varidfn
99 INTEGER,
SAVE :: varidfmth, varidenth
100 INTEGER,
SAVE :: varidyu1, varidyv1, varidpl, varidai, varididvt
101 INTEGER,
SAVE :: varidfts1, varidfts2, varidfts3, varidfts4
102 INTEGER,
SAVE :: varidpsr1, varidpsr2, varidpsr3, varidpsr4
105 INTEGER start(4), count(4), status
107 LOGICAL,
SAVE :: first=.
true.
129 ALLOCATE(ftsol1(kon), ftsol2(kon))
130 ALLOCATE(ftsol3(kon), ftsol4(kon))
131 ALLOCATE(psrf1(kon), psrf2(kon))
132 ALLOCATE(psrf3(kon), psrf4(kon))
148 rcode = nf90_open(
'phystoke.nc', nf90_nowrite, ncidp)
150 rcode = nf90_inq_varid(ncidp,
'phis', varidps)
151 print *,
'ncidp,varidps', ncidp, varidps
153 rcode = nf90_inq_varid(ncidp,
'sig_s', varidpl)
154 print *,
'ncidp,varidpl', ncidp, varidpl
156 rcode = nf90_inq_varid(ncidp,
'aire', varidai)
157 print *,
'ncidp,varidai', ncidp, varidai
159 rcode = nf90_inq_varid(ncidp,
't', varidt)
160 print *,
'ncidp,varidt', ncidp, varidt
162 rcode = nf90_inq_varid(ncidp,
'mfu', varidmfu)
163 print *,
'ncidp,varidmfu', ncidp, varidmfu
165 rcode = nf90_inq_varid(ncidp,
'mfd', varidmfd)
166 print *,
'ncidp,varidmfd', ncidp, varidmfd
168 rcode = nf90_inq_varid(ncidp,
'en_u', varidenu)
169 print *,
'ncidp,varidenu', ncidp, varidenu
171 rcode = nf90_inq_varid(ncidp,
'de_u', variddeu)
172 print *,
'ncidp,variddeu', ncidp, variddeu
174 rcode = nf90_inq_varid(ncidp,
'en_d', varidend)
175 print *,
'ncidp,varidend', ncidp, varidend
177 rcode = nf90_inq_varid(ncidp,
'de_d', varidded)
178 print *,
'ncidp,varidded', ncidp, varidded
180 rcode = nf90_inq_varid(ncidp,
'coefh', varidch)
181 print *,
'ncidp,varidch', ncidp, varidch
184 rcode = nf90_inq_varid(ncidp,
'fm_th', varidfmth)
185 print *,
'ncidp,varidfmth', ncidp, varidfmth
187 rcode = nf90_inq_varid(ncidp,
'en_th', varidenth)
188 print *,
'ncidp,varidenth', ncidp, varidenth
190 rcode = nf90_inq_varid(ncidp,
'frac_impa', varidfi)
191 print *,
'ncidp,varidfi', ncidp, varidfi
193 rcode = nf90_inq_varid(ncidp,
'frac_nucl', varidfn)
194 print *,
'ncidp,varidfn', ncidp, varidfn
196 rcode = nf90_inq_varid(ncidp,
'pyu1', varidyu1)
197 print *,
'ncidp,varidyu1', ncidp, varidyu1
199 rcode = nf90_inq_varid(ncidp,
'pyv1', varidyv1)
200 print *,
'ncidp,varidyv1', ncidp, varidyv1
202 rcode = nf90_inq_varid(ncidp,
'ftsol1', varidfts1)
203 print *,
'ncidp,varidfts1', ncidp, varidfts1
205 rcode = nf90_inq_varid(ncidp,
'ftsol2', varidfts2)
206 print *,
'ncidp,varidfts2', ncidp, varidfts2
208 rcode = nf90_inq_varid(ncidp,
'ftsol3', varidfts3)
209 print *,
'ncidp,varidfts3', ncidp, varidfts3
211 rcode = nf90_inq_varid(ncidp,
'ftsol4', varidfts4)
212 print *,
'ncidp,varidfts4', ncidp, varidfts4
214 rcode = nf90_inq_varid(ncidp,
'psrf1', varidpsr1)
215 print *,
'ncidp,varidpsr1', ncidp, varidpsr1
217 rcode = nf90_inq_varid(ncidp,
'psrf2', varidpsr2)
218 print *,
'ncidp,varidpsr2', ncidp, varidpsr2
220 rcode = nf90_inq_varid(ncidp,
'psrf3', varidpsr3)
221 print *,
'ncidp,varidpsr3', ncidp, varidpsr3
223 rcode = nf90_inq_varid(ncidp,
'psrf4', varidpsr4)
224 print *,
'ncidp,varidpsr4', ncidp, varidpsr4
228 status = nf_inq_dimid(ncidp,
'y', yid)
229 status = nf_inq_dimid(ncidp,
'x', xid)
230 status = nf_inq_dimid(ncidp,
'sig_s', zid)
231 status = nf_inq_dimid(ncidp,
'time_counter', tid)
235 status = nf_inq_dim(ncidp, yid, namedim, ncjm)
236 status = nf_inq_dim(ncidp, xid, namedim, ncim)
237 status = nf_inq_dim(ncidp, zid, namedim, nckev)
238 status = nf_inq_dim(ncidp, tid, namedim, ncrec)
245 zkon = zim*(zjm-2) + 2
247 WRITE (*, *)
'read_pstoke : zrec = ', zrec
248 WRITE (*, *)
'read_pstoke : kev = ', zkev
249 WRITE (*, *)
'read_pstoke : zim = ', zim
250 WRITE (*, *)
'read_pstoke : zjm = ', zjm
251 WRITE (*, *)
'read_pstoke : kon = ', zkon
255 status = nf_get_vara_real(ncidp, varidpl, 1, kev, pl)
273 status = nf_get_vara_double(ncidp, varidps, start, count, phisfi2)
275 status = nf_get_vara_real(ncidp, varidps, start, count, phisfi2)
282 status = nf_get_vara_double(ncidp, varidai, start, count, airefi2)
284 status = nf_get_vara_real(ncidp, varidai, start, count, airefi2)
295 print *,
'WARNING!!! Il n y a pas de test de coherence'
296 print *,
'sur le nombre de niveaux verticaux dans le fichier nc'
313 status = nf_get_vara_double(ncidp, varidt, start, count, t2)
315 status = nf_get_vara_real(ncidp, varidt, start, count, t2)
323 status = nf_get_vara_double(ncidp, varidmfu, start, count, mfu2)
325 status = nf_get_vara_real(ncidp, varidmfu, start, count, mfu2)
331 status = nf_get_vara_double(ncidp, varidmfd, start, count, mfd2)
333 status = nf_get_vara_real(ncidp, varidmfd, start, count, mfd2)
339 status = nf_get_vara_double(ncidp, varidenu, start, count, en_u2)
341 status = nf_get_vara_real(ncidp, varidenu, start, count, en_u2)
347 status = nf_get_vara_double(ncidp, variddeu, start, count, de_u2)
349 status = nf_get_vara_real(ncidp, variddeu, start, count, de_u2)
355 status = nf_get_vara_double(ncidp, varidend, start, count, en_d2)
357 status = nf_get_vara_real(ncidp, varidend, start, count, en_d2)
363 status = nf_get_vara_double(ncidp, varidded, start, count, de_d2)
365 status = nf_get_vara_real(ncidp, varidded, start, count, de_d2)
372 print *,
'LECTURE de coefh a irec =', irec
374 status = nf_get_vara_double(ncidp, varidch, start, count, coefh2)
376 status = nf_get_vara_real(ncidp, varidch, start, count, coefh2)
385 print *,
'LECTURE de fm_therm a irec =', irec
387 status = nf_get_vara_double(ncidp, varidfmth, start, count, fm_therm2)
389 status = nf_get_vara_real(ncidp, varidfmth, start, count, fm_therm2)
392 print *,
'LECTURE de en_therm a irec =', irec
394 status = nf_get_vara_double(ncidp, varidenth, start, count, en_therm2)
396 status = nf_get_vara_real(ncidp, varidenth, start, count, en_therm2)
404 status = nf_get_vara_double(ncidp, varidfi, start, count, frac_impa2)
406 status = nf_get_vara_real(ncidp, varidfi, start, count, frac_impa2)
408 CALL gr_ecrit_fi(kev, kon,
nbp_lon,
nbp_lat, frac_impa2, frac_impa)
413 status = nf_get_vara_double(ncidp, varidfn, start, count, frac_nucl2)
415 status = nf_get_vara_real(ncidp, varidfn, start, count, frac_nucl2)
417 CALL gr_ecrit_fi(kev, kon,
nbp_lon,
nbp_lat, frac_nucl2, frac_nucl)
427 print *,
'LECTURE de yu1 a irec =', irec
429 status = nf_get_vara_double(ncidp, varidyu1, start, count, pyu12)
431 status = nf_get_vara_real(ncidp, varidyu1, start, count, pyu12)
436 print *,
'LECTURE de yv1 a irec =', irec
438 status = nf_get_vara_double(ncidp, varidyv1, start, count, pyv12)
440 status = nf_get_vara_real(ncidp, varidyv1, start, count, pyv12)
446 print *,
'LECTURE de ftsol1 a irec =', irec
448 status = nf_get_vara_double(ncidp, varidfts1, start, count, ftsol12)
450 status = nf_get_vara_real(ncidp, varidfts1, start, count, ftsol12)
455 print *,
'LECTURE de ftsol2 a irec =', irec
457 status = nf_get_vara_double(ncidp, varidfts2, start, count, ftsol22)
459 status = nf_get_vara_real(ncidp, varidfts2, start, count, ftsol22)
464 print *,
'LECTURE de ftsol3 a irec =', irec
466 status = nf_get_vara_double(ncidp, varidfts3, start, count, ftsol32)
468 status = nf_get_vara_real(ncidp, varidfts3, start, count, ftsol32)
474 status = nf_get_vara_double(ncidp, varidfts4, start, count, ftsol42)
476 status = nf_get_vara_real(ncidp, varidfts4, start, count, ftsol42)
483 status = nf_get_vara_double(ncidp, varidpsr1, start, count, psrf12)
485 status = nf_get_vara_real(ncidp, varidpsr1, start, count, psrf12)
492 status = nf_get_vara_double(ncidp, varidpsr2, start, count, psrf22)
494 status = nf_get_vara_real(ncidp, varidpsr2, start, count, psrf22)
501 status = nf_get_vara_double(ncidp, varidpsr3, start, count, psrf32)
503 status = nf_get_vara_real(ncidp, varidpsr3, start, count, psrf32)
509 status = nf_get_vara_double(ncidp, varidpsr4, start, count, psrf42)
511 status = nf_get_vara_real(ncidp, varidpsr4, start, count, psrf42)
517 psrf(i, 1) = psrf1(i)
518 psrf(i, 2) = psrf2(i)
519 psrf(i, 3) = psrf3(i)
522 psrf(i, 4) = psrf4(i)
524 ftsol(i, 1) = ftsol1(i)
525 ftsol(i, 2) = ftsol2(i)
526 ftsol(i, 3) = ftsol3(i)
527 ftsol(i, 4) = ftsol4(i)
subroutine read_pstoke0(irec, zrec, zkon, zkev, airefi, phisfi, t, mfu, mfd, en_u, de_u, en_d, de_d, coefh, fm_therm, en_therm, frac_impa, frac_nucl, pyu1, pyv1, ftsol, psrf)
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL ulevSTD CALL &zphi philevSTD CALL &zx_rh rhlevSTD!DO klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon du jour ou toutes les read_climoz CALL true