6 SUBROUTINE read_pstoke(irec, zrec, zklono, zklevo, airefi, phisfi, t, mfu, &
 
    7     mfd, en_u, de_u, en_d, de_d, coefh, fm_therm, en_therm, frac_impa, &
 
    8     frac_nucl, pyu1, pyv1, ftsol, psrf)
 
   28   INTEGER klono, klevo, imo, jmo
 
   32   REAL,
ALLOCATABLE :: phisfi2(:,:) 
 
   33   REAL,
ALLOCATABLE :: airefi2(:,:) 
 
   45   REAL,
ALLOCATABLE :: mfu2(:,:,:) 
 
   46   REAL,
ALLOCATABLE :: mfd2(:,:,:) 
 
   47   REAL,
ALLOCATABLE :: en_u2(:,:,:) 
 
   48   REAL,
ALLOCATABLE :: de_u2(:,:,:) 
 
   49   REAL,
ALLOCATABLE :: en_d2(:,:,:) 
 
   50   REAL,
ALLOCATABLE :: de_d2(:,:,:) 
 
   51   REAL,
ALLOCATABLE :: coefh2(:,:,:) 
 
   52   REAL,
ALLOCATABLE :: fm_therm2(:,:,:) 
 
   53   REAL,
ALLOCATABLE :: en_therm2(:,:,:) 
 
   55   REAL,
ALLOCATABLE :: pl(:) 
 
   57   INTEGER xid, yid, zid, tid
 
   58   REAL zrec, zklono, zklevo, zim, zjm
 
   59   INTEGER ncrec, ncklono, ncklevo, ncim, ncjm
 
   71   REAL,
ALLOCATABLE :: frac_impa2(:,:,:) 
 
   72   REAL,
ALLOCATABLE :: frac_nucl2(:,:,:) 
 
   75   REAL,
ALLOCATABLE :: pyu12(:,:), pyv12(:,:) 
 
   78   REAL,
ALLOCATABLE :: ftsol1(:),ftsol2(:) 
 
   79   REAL,
ALLOCATABLE :: ftsol3(:),ftsol4(:) 
 
   80   REAL,
ALLOCATABLE :: psrf1(:), psrf2(:) 
 
   81   REAL,
ALLOCATABLE :: psrf3(:), psrf4(:) 
 
   82   REAL,
ALLOCATABLE :: ftsol12(:,:) 
 
   83   REAL,
ALLOCATABLE :: ftsol22(:,:) 
 
   84   REAL,
ALLOCATABLE :: ftsol32(:,:) 
 
   85   REAL,
ALLOCATABLE :: ftsol42(:,:) 
 
   86   REAL,
ALLOCATABLE :: psrf12(:,:) 
 
   87   REAL,
ALLOCATABLE :: psrf22(:,:) 
 
   88   REAL,
ALLOCATABLE :: psrf32(:,:) 
 
   89   REAL,
ALLOCATABLE :: psrf42(:,:) 
 
   91   REAL,
ALLOCATABLE :: t2(:,:,:) 
 
   93   INTEGER,
SAVE :: varidt
 
   94   INTEGER,
SAVE :: varidmfu, varidmfd, varidps, varidenu, variddeu
 
   95   INTEGER,
SAVE :: varidend, varidded, varidch, varidfi, varidfn
 
   96   INTEGER,
SAVE :: varidfmth, varidenth
 
   97   INTEGER,
SAVE :: varidyu1, varidyv1, varidpl, varidai, varididvt
 
   98   INTEGER,
SAVE :: varidfts1, varidfts2, varidfts3, varidfts4
 
   99   INTEGER,
SAVE :: varidpsr1, varidpsr2, varidpsr3, varidpsr4
 
  102   INTEGER start(4), count(4), status
 
  104   LOGICAL,
SAVE :: first=.
true.
 
  112   ALLOCATE(phisfi2(imo,jmo+1))
 
  113   ALLOCATE(airefi2(imo, jmo+1))
 
  114   ALLOCATE(mfu2(imo, jmo+1, klevo))
 
  115   ALLOCATE(mfd2(imo, jmo+1, klevo))
 
  116   ALLOCATE(en_u2(imo, jmo+1, klevo))
 
  117   ALLOCATE(de_u2(imo, jmo+1, klevo))
 
  118   ALLOCATE(en_d2(imo, jmo+1, klevo))
 
  119   ALLOCATE(de_d2(imo, jmo+1, klevo))
 
  120   ALLOCATE(coefh2(imo, jmo+1, klevo))
 
  121   ALLOCATE(fm_therm2(imo, jmo+1, klevo))
 
  122   ALLOCATE(en_therm2(imo, jmo+1, klevo))
 
  124   ALLOCATE(frac_impa2(imo, jmo+1, klevo))
 
  125   ALLOCATE(frac_nucl2(imo, jmo+1, klevo))
 
  126   ALLOCATE(pyu12(imo, jmo+1), pyv12(imo, jmo+1))
 
  127   ALLOCATE(ftsol1(klono), ftsol2(klono))
 
  128   ALLOCATE(ftsol3(klono), ftsol4(klono))
 
  129   ALLOCATE(psrf1(klono), psrf2(klono))
 
  130   ALLOCATE(psrf3(klono), psrf4(klono))
 
  131   ALLOCATE(ftsol12(imo, jmo+1))
 
  132   ALLOCATE(ftsol22(imo, jmo+1))
 
  133   ALLOCATE(ftsol32(imo, jmo+1))
 
  134   ALLOCATE(ftsol42(imo, jmo+1))
 
  135   ALLOCATE(psrf12(imo, jmo+1))
 
  136   ALLOCATE(psrf22(imo, jmo+1))
 
  137   ALLOCATE(psrf32(imo, jmo+1))
 
  138   ALLOCATE(psrf42(imo, jmo+1))
 
  139   ALLOCATE(t2(imo, jmo+1, klevo))
 
  147     rcode = nf90_open(
'phystoke.nc', nf90_nowrite, ncidp)
 
  149     rcode = nf90_inq_varid(ncidp, 
'phis', varidps)
 
  150     print *, 
'ncidp,varidps', ncidp, varidps
 
  152     rcode = nf90_inq_varid(ncidp, 
'sig_s', varidpl)
 
  153     print *, 
'ncidp,varidpl', ncidp, varidpl
 
  155     rcode = nf90_inq_varid(ncidp, 
'aire', varidai)
 
  156     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, ncklevo)
 
  238     status = nf_inq_dim(ncidp, tid, namedim, ncrec)
 
  245     zklono = zim*(zjm-2) + 2
 
  247     WRITE (*, *) 
'read_pstoke : zrec = ', zrec
 
  248     WRITE (*, *) 
'read_pstoke : zklevo = ', zklevo
 
  249     WRITE (*, *) 
'read_pstoke : zim = ', zim
 
  250     WRITE (*, *) 
'read_pstoke : zjm = ', zjm
 
  251     WRITE (*, *) 
'read_pstoke : zklono = ', zklono
 
  255     status = nf_get_vara_double(ncidp, varidpl, 1, zklevo, pl)
 
  257     status = nf_get_vara_real(ncidp, varidpl, 1, zklevo, pl)
 
  274     status = nf_get_vara_double(ncidp, varidps, start, count, phisfi2)
 
  276     status = nf_get_vara_real(ncidp, varidps, start, count, phisfi2)
 
  278     CALL gr_ecrit_fi(1, klono, imo, jmo+1, phisfi2, phisfi)
 
  282     status = nf_get_vara_double(ncidp, varidai, start, count, airefi2)
 
  284     status = nf_get_vara_real(ncidp, varidai, start, count, airefi2)
 
  286     CALL gr_ecrit_fi(1, klono, imo, jmo+1, airefi2, airefi)
 
  295     print *, 
'WARNING!!! Il n y a pas de test de coherence' 
  296     print *, 
'sur le nombre de niveaux verticaux dans le fichier nc' 
  312     status = nf_get_vara_double(ncidp, varidfi, start, count, frac_impa2)
 
  314     status = nf_get_vara_real(ncidp, varidfi, start, count, frac_impa2)
 
  316     CALL gr_ecrit_fi(klevo, klono, imo, jmo+1, frac_impa2, frac_impa)
 
  320     status = nf_get_vara_double(ncidp, varidfn, start, count, frac_nucl2)
 
  322     status = nf_get_vara_real(ncidp, varidfn, start, count, frac_nucl2)
 
  324     CALL gr_ecrit_fi(klevo, klono, imo, jmo+1, frac_nucl2, frac_nucl)
 
  329     status = nf_get_vara_double(ncidp, varidt, start, count, t2)
 
  331     status = nf_get_vara_real(ncidp, varidt, start, count, t2)
 
  333     CALL gr_ecrit_fi(klevo, klono, imo, jmo+1, t2, t)
 
  338     status = nf_get_vara_double(ncidp, varidmfu, start, count, mfu2)
 
  340     status = nf_get_vara_real(ncidp, varidmfu, start, count, mfu2)
 
  342     CALL gr_ecrit_fi(klevo, klono, imo, jmo+1, mfu2, mfu)
 
  346     status = nf_get_vara_double(ncidp, varidmfd, start, count, mfd2)
 
  348     status = nf_get_vara_real(ncidp, varidmfd, start, count, mfd2)
 
  350     CALL gr_ecrit_fi(klevo, klono, imo, jmo+1, mfd2, mfd)
 
  354     status = nf_get_vara_double(ncidp, varidenu, start, count, en_u2)
 
  356     status = nf_get_vara_real(ncidp, varidenu, start, count, en_u2)
 
  358     CALL gr_ecrit_fi(klevo, klono, imo, jmo+1, en_u2, en_u)
 
  362     status = nf_get_vara_double(ncidp, variddeu, start, count, de_u2)
 
  364     status = nf_get_vara_real(ncidp, variddeu, start, count, de_u2)
 
  366     CALL gr_ecrit_fi(klevo, klono, imo, jmo+1, de_u2, de_u)
 
  370     status = nf_get_vara_double(ncidp, varidend, start, count, en_d2)
 
  372     status = nf_get_vara_real(ncidp, varidend, start, count, en_d2)
 
  374     CALL gr_ecrit_fi(klevo, klono, imo, jmo+1, en_d2, en_d)
 
  378     status = nf_get_vara_double(ncidp, varidded, start, count, de_d2)
 
  380     status = nf_get_vara_real(ncidp, varidded, start, count, de_d2)
 
  382     CALL gr_ecrit_fi(klevo, klono, imo, jmo+1, de_d2, de_d)
 
  388     status = nf_get_vara_double(ncidp, varidch, start, count, coefh2)
 
  390     status = nf_get_vara_real(ncidp, varidch, start, count, coefh2)
 
  392     CALL gr_ecrit_fi(klevo, klono, imo, jmo+1, coefh2, coefh)
 
  398     status = nf_get_vara_double(ncidp, varidfmth, start, count, fm_therm2)
 
  400     status = nf_get_vara_real(ncidp, varidfmth, start, count, fm_therm2)
 
  402     CALL gr_ecrit_fi(klevo, klono, imo, jmo+1, fm_therm2, fm_therm)
 
  405     status = nf_get_vara_double(ncidp, varidenth, start, count, en_therm2)
 
  407     status = nf_get_vara_real(ncidp, varidenth, start, count, en_therm2)
 
  409     CALL gr_ecrit_fi(klevo, klono, imo, jmo+1, en_therm2, en_therm)
 
  419     status = nf_get_vara_double(ncidp, varidyu1, start, count, pyu12)
 
  421     status = nf_get_vara_real(ncidp, varidyu1, start, count, pyu12)
 
  423     CALL gr_ecrit_fi(1, klono, imo, jmo+1, pyu12, pyu1)
 
  427     status = nf_get_vara_double(ncidp, varidyv1, start, count, pyv12)
 
  429     status = nf_get_vara_real(ncidp, varidyv1, start, count, pyv12)
 
  431     CALL gr_ecrit_fi(1, klono, imo, jmo+1, pyv12, pyv1)
 
  436     status = nf_get_vara_double(ncidp, varidfts1, start, count, ftsol12)
 
  438     status = nf_get_vara_real(ncidp, varidfts1, start, count, ftsol12)
 
  440     CALL gr_ecrit_fi(1, klono, imo, jmo+1, ftsol12, ftsol1)
 
  444     status = nf_get_vara_double(ncidp, varidfts2, start, count, ftsol22)
 
  446     status = nf_get_vara_real(ncidp, varidfts2, start, count, ftsol22)
 
  448     CALL gr_ecrit_fi(1, klono, imo, jmo+1, ftsol22, ftsol2)
 
  452     status = nf_get_vara_double(ncidp, varidfts3, start, count, ftsol32)
 
  454     status = nf_get_vara_real(ncidp, varidfts3, start, count, ftsol32)
 
  456     CALL gr_ecrit_fi(1, klono, imo, jmo+1, ftsol32, ftsol3)
 
  460     status = nf_get_vara_double(ncidp, varidfts4, start, count, ftsol42)
 
  462     status = nf_get_vara_real(ncidp, varidfts4, start, count, ftsol42)
 
  464     CALL gr_ecrit_fi(1, klono, imo, jmo+1, ftsol42, ftsol4)
 
  469     status = nf_get_vara_double(ncidp, varidpsr1, start, count, psrf12)
 
  471     status = nf_get_vara_real(ncidp, varidpsr1, start, count, psrf12)
 
  473     CALL gr_ecrit_fi(1, klono, imo, jmo+1, psrf12, psrf1)
 
  477     status = nf_get_vara_double(ncidp, varidpsr2, start, count, psrf22)
 
  479     status = nf_get_vara_real(ncidp, varidpsr2, start, count, psrf22)
 
  481     CALL gr_ecrit_fi(1, klono, imo, jmo+1, psrf22, psrf2)
 
  485     status = nf_get_vara_double(ncidp, varidpsr3, start, count, psrf32)
 
  487     status = nf_get_vara_real(ncidp, varidpsr3, start, count, psrf32)
 
  489     CALL gr_ecrit_fi(1, klono, imo, jmo+1, psrf32, psrf3)
 
  493     status = nf_get_vara_double(ncidp, varidpsr4, start, count, psrf42)
 
  495     status = nf_get_vara_real(ncidp, varidpsr4, start, count, psrf42)
 
  497     CALL gr_ecrit_fi(1, klono, imo, jmo+1, psrf42, psrf4)
 
  501       psrf(i, 1) = psrf1(i)
 
  502       psrf(i, 2) = psrf2(i)
 
  503       psrf(i, 3) = psrf3(i)
 
  504       psrf(i, 4) = psrf4(i)
 
  506       ftsol(i, 1) = ftsol1(i)
 
  507       ftsol(i, 2) = ftsol2(i)
 
  508       ftsol(i, 3) = ftsol3(i)
 
  509       ftsol(i, 4) = ftsol4(i)
 
subroutine read_pstoke(irec, zrec, zklono, zklevo, 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