13   use netcdf
, only: nf90_nowrite, nf90_open, nf90_inq_varid, nf90_close
 
   48   REAL, 
ALLOCATABLE, 
DIMENSION(:,:,:), 
PRIVATE, 
SAVE   :: 
unat1,
unat2 
   49   REAL, 
ALLOCATABLE, 
DIMENSION(:,:,:), 
PRIVATE, 
SAVE   :: 
vnat1,
vnat2 
   50   REAL, 
ALLOCATABLE, 
DIMENSION(:,:,:), 
PRIVATE, 
SAVE   :: 
tnat1,
tnat2 
   51   REAL, 
ALLOCATABLE, 
DIMENSION(:,:,:), 
PRIVATE, 
SAVE   :: 
qnat1,
qnat2 
   52   REAL, 
ALLOCATABLE, 
DIMENSION(:,:,:), 
PRIVATE, 
SAVE   :: 
pnat1,
pnat2 
   54   REAL, 
ALLOCATABLE, 
DIMENSION(:),     
PRIVATE, 
SAVE   :: 
apnc,
bpnc 
   56   REAL, 
ALLOCATABLE, 
DIMENSION(:,:),   
PRIVATE, 
SAVE   :: 
ugui1,
ugui2 
   57   REAL, 
ALLOCATABLE, 
DIMENSION(:,:),   
PRIVATE, 
SAVE   :: 
vgui1,
vgui2 
   58   REAL, 
ALLOCATABLE, 
DIMENSION(:,:),   
PRIVATE, 
SAVE   :: 
tgui1,
tgui2 
   59   REAL, 
ALLOCATABLE, 
DIMENSION(:,:),   
PRIVATE, 
SAVE   :: 
qgui1,
qgui2 
   75     include 
"dimensions.h" 
   82     INTEGER                :: error,ncidpl,rid,rcod
 
   83     CHARACTER (len = 80)   :: abort_message
 
   84     CHARACTER (len = 20)   :: modname = 
'guide_init' 
  103          "zonal nudging requires grid regular in longitude", 1)
 
  137     CALL getpar(
'tau_lat', 5.,
tau_lat,
'raideur lat guide regional ')
 
  138     CALL getpar(
'tau_lon', 5.,
tau_lon,
'raideur lon guide regional ')
 
  170        if (ncidpl.eq.-99) 
then 
  171           rcod=nf90_open(
'apbp.nc',nf90_nowrite, ncidpl)
 
  172           if (rcod.NE.nf_noerr) 
THEN 
  173              print *,
'Guide: probleme -> pas de fichier apbp.nc' 
  178        if (ncidpl.EQ.-99) 
then 
  179           rcod=nf90_open(
'P.nc',nf90_nowrite,ncidpl)
 
  180           if (rcod.NE.nf_noerr) 
THEN 
  181              print *,
'Guide: probleme -> pas de fichier P.nc' 
  186        if (ncidpl.eq.-99) 
then 
  187           rcod=nf90_open(
'u.nc',nf90_nowrite,ncidpl)
 
  188           if (rcod.NE.nf_noerr) 
THEN 
  189              print *,
'Guide: probleme -> pas de fichier u.nc' 
  194        if (ncidpl.eq.-99) 
then 
  195           rcod=nf90_open(
'v.nc',nf90_nowrite,ncidpl)
 
  196           if (rcod.NE.nf_noerr) 
THEN 
  197              print *,
'Guide: probleme -> pas de fichier v.nc' 
  202        if (ncidpl.eq.-99) 
then 
  203           rcod=nf90_open(
'T.nc',nf90_nowrite,ncidpl)
 
  204           if (rcod.NE.nf_noerr) 
THEN 
  205              print *,
'Guide: probleme -> pas de fichier T.nc' 
  210        if (ncidpl.eq.-99) 
then 
  211           rcod=nf90_open(
'hur.nc',nf90_nowrite, ncidpl)
 
  212           if (rcod.NE.nf_noerr) 
THEN 
  213              print *,
'Guide: probleme -> pas de fichier hur.nc' 
  218     error=nf_inq_dimid(ncidpl,
'LEVEL',rid)
 
  219     IF (error.NE.nf_noerr) error=nf_inq_dimid(ncidpl,
'PRESSURE',rid)
 
  220     IF (error.NE.nf_noerr) 
THEN 
  221         print *,
'Guide: probleme lecture niveaux pression' 
  224     error=nf_inq_dimlen(ncidpl,rid,
nlevnc)
 
  225     print *,
'Guide: nombre niveaux vert. nlevnc', 
nlevnc  
  226     rcod = nf90_close(ncidpl)
 
  231     abort_message=
'pb in allocation guide' 
  234     IF (error /= 0) 
CALL abort_gcm(modname,abort_message,1)
 
  236     IF (error /= 0) 
CALL abort_gcm(modname,abort_message,1)
 
  240     IF (error /= 0) 
CALL abort_gcm(modname,abort_message,1)
 
  242     IF (error /= 0) 
CALL abort_gcm(modname,abort_message,1)
 
  244     IF (error /= 0) 
CALL abort_gcm(modname,abort_message,1)
 
  246     IF (error /= 0) 
CALL abort_gcm(modname,abort_message,1)
 
  248     IF (error /= 0) 
CALL abort_gcm(modname,abort_message,1)
 
  250     IF (error /= 0) 
CALL abort_gcm(modname,abort_message,1)
 
  255         IF (error /= 0) 
CALL abort_gcm(modname,abort_message,1)
 
  257         IF (error /= 0) 
CALL abort_gcm(modname,abort_message,1)
 
  259         IF (error /= 0) 
CALL abort_gcm(modname,abort_message,1)
 
  261         IF (error /= 0) 
CALL abort_gcm(modname,abort_message,1)
 
  267         IF (error /= 0) 
CALL abort_gcm(modname,abort_message,1)
 
  269         IF (error /= 0) 
CALL abort_gcm(modname,abort_message,1)
 
  271         IF (error /= 0) 
CALL abort_gcm(modname,abort_message,1)
 
  273         IF (error /= 0) 
CALL abort_gcm(modname,abort_message,1)
 
  279         IF (error /= 0) 
CALL abort_gcm(modname,abort_message,1)
 
  281         IF (error /= 0) 
CALL abort_gcm(modname,abort_message,1)
 
  283         IF (error /= 0) 
CALL abort_gcm(modname,abort_message,1)
 
  285         IF (error /= 0) 
CALL abort_gcm(modname,abort_message,1)
 
  291         IF (error /= 0) 
CALL abort_gcm(modname,abort_message,1)
 
  293         IF (error /= 0) 
CALL abort_gcm(modname,abort_message,1)
 
  295         IF (error /= 0) 
CALL abort_gcm(modname,abort_message,1)
 
  297         IF (error /= 0) 
CALL abort_gcm(modname,abort_message,1)
 
  303         IF (error /= 0) 
CALL abort_gcm(modname,abort_message,1)
 
  305         IF (error /= 0) 
CALL abort_gcm(modname,abort_message,1)
 
  311         IF (error /= 0) 
CALL abort_gcm(modname,abort_message,1)
 
  313         IF (error /= 0) 
CALL abort_gcm(modname,abort_message,1)
 
  318         IF (error /= 0) 
CALL abort_gcm(modname,abort_message,1)
 
  320         IF (error /= 0) 
CALL abort_gcm(modname,abort_message,1)
 
  342   SUBROUTINE guide_main(itau,ucov,vcov,teta,q,masse,ps)
 
  351     include 
"dimensions.h" 
  357     INTEGER,                           
INTENT(IN)    :: itau 
 
  358     REAL, 
DIMENSION (ijb_u:ije_u,llm), 
INTENT(INOUT) :: ucov,teta,q,masse
 
  359     REAL, 
DIMENSION (ijb_v:ije_v,llm), 
INTENT(INOUT) :: vcov
 
  360     REAL, 
DIMENSION (ijb_u:ije_u),     
INTENT(INOUT) :: ps
 
  363     LOGICAL, 
SAVE :: first=.
true.
 
  366     REAL, 
ALLOCATABLE, 
SAVE, 
DIMENSION (:,:) :: f_addu 
 
  367     REAL, 
ALLOCATABLE, 
SAVE, 
DIMENSION (:,:) :: f_addv 
 
  369     REAL, 
ALLOCATABLE, 
SAVE, 
DIMENSION (:,:,:)    :: pk
 
  370     REAL, 
ALLOCATABLE, 
SAVE, 
DIMENSION (:,:)        :: pks    
 
  372     REAL, 
ALLOCATABLE, 
SAVE, 
DIMENSION (:,:)    :: p 
 
  374     INTEGER, 
SAVE :: step_rea,count_no_rea,itau_test 
 
  376     REAL          :: ditau, dday_step
 
  382     INTEGER,
EXTERNAL :: OMP_GET_THREAD_NUM
 
  478       IF (reste.EQ.0.) 
THEN 
  479           IF (itau_test.EQ.itau) 
THEN 
  480               write(*,*)
'deuxieme passage de advreel a itau=',itau
 
  494               print*,
'Lecture fichiers guidage, pas ',step_rea, &
 
  495                     'apres ',count_no_rea,
' non lectures' 
  510         count_no_rea=count_no_rea+1
 
  545       if (pressure_exner) 
then 
  558                     p(i+(j-1)*iip1,l) = 
preff * ( pk(i,j,l)/
cpp) ** unskap
 
  690         IF (f_out) 
CALL guide_out(
"vcov",jjm,
llm,f_addv(:,:)/factt,factt)
 
  705     include 
"dimensions.h" 
  709     INTEGER,                      
INTENT(IN)    :: vsize
 
  710     REAL, 
DIMENSION(ijb_u:ije_u),       
INTENT(IN)    :: alpha 
 
  711     REAL, 
DIMENSION(ijb_u:ije_u,vsize), 
INTENT(INOUT) :: field
 
  728     include 
"dimensions.h" 
  732     INTEGER,                      
INTENT(IN)    :: vsize
 
  733     REAL, 
DIMENSION(ijb_v:ije_v),       
INTENT(IN)    :: alpha 
 
  734     REAL, 
DIMENSION(ijb_v:ije_v,vsize), 
INTENT(INOUT) :: field
 
  752     include 
"dimensions.h" 
  758     INTEGER,                           
INTENT(IN)    :: typ
 
  759     INTEGER,                           
INTENT(IN)    :: vsize
 
  760     REAL, 
DIMENSION(ijb_u:ije_u,vsize), 
INTENT(INOUT) :: field
 
  763     LOGICAL, 
SAVE                :: first=.
true.
 
  766     INTEGER, 
DIMENSION (2), 
SAVE :: imin, imax 
 
  769     REAL, 
DIMENSION (iip1)       :: lond       
 
  770     REAL, 
DIMENSION (jjb_u:jje_u,vsize):: fieldm     
 
  776         imin(1)=1;imax(1)=iip1;
 
  777         imin(2)=1;imax(2)=iip1;
 
  801               DO i=imin(typ),imax(typ)
 
  803                   fieldm(j,l)=fieldm(j,l)+field(ij,l)
 
  806           fieldm(:,l)=fieldm(:,l)/
REAL(imax(typ)-imin(typ)+1)
 
  811                   field(ij,l)=fieldm(j,l)
 
  823     include 
"dimensions.h" 
  829     INTEGER,                           
INTENT(IN)    :: typ
 
  830     INTEGER,                           
INTENT(IN)    :: vsize
 
  831     INTEGER,                           
INTENT(IN)    :: hsize
 
  832     REAL, 
DIMENSION(ijb_v:ije_v,vsize), 
INTENT(INOUT) :: field
 
  835     LOGICAL, 
SAVE                :: first=.
true.
 
  837     INTEGER, 
DIMENSION (2), 
SAVE :: imin, imax 
 
  840     REAL, 
DIMENSION (iip1)       :: lond       
 
  841     REAL, 
DIMENSION (jjb_v:jjev,vsize):: fieldm     
 
  847         imin(1)=1;imax(1)=iip1;
 
  848         imin(2)=1;imax(2)=iip1;
 
  867               DO i=imin(typ),imax(typ)
 
  869                   fieldm(j,l)=fieldm(j,l)+field(ij,l)
 
  872           fieldm(:,l)=fieldm(:,l)/
REAL(imax(typ)-imin(typ)+1)
 
  877                   field(ij,l)=fieldm(j,l)
 
  894   include 
"dimensions.h" 
  900   REAL, 
DIMENSION (iip1,jjb_u:jje_u),     
INTENT(IN) :: psi 
 
  901   REAL, 
DIMENSION (iip1,jjb_u:jje_u,llm), 
INTENT(IN) :: teta 
 
  903   LOGICAL, 
SAVE                      :: first=.
true.
 
  906   REAL, 
ALLOCATABLE, 
SAVE, 
DIMENSION (:,:,:) :: plnc1,plnc2 
 
  907   REAL, 
ALLOCATABLE, 
SAVE,
DIMENSION (:,:,:)    :: plunc,plsnc 
 
  908   REAL, 
ALLOCATABLE, 
SAVE,
DIMENSION (:,:,:)     :: plvnc       
 
  909   REAL, 
ALLOCATABLE, 
SAVE,
DIMENSION (:,:,:)  :: p           
 
  910   REAL, 
ALLOCATABLE, 
SAVE,
DIMENSION (:,:,:)    :: pls, pext   
 
  911   REAL, 
ALLOCATABLE, 
SAVE,
DIMENSION (:,:,:)    :: pbarx 
 
  912   REAL, 
ALLOCATABLE, 
SAVE,
DIMENSION (:,:,:)     :: pbary 
 
  914   REAL, 
ALLOCATABLE, 
SAVE,
DIMENSION (:,:,:)    :: pk
 
  915   REAL ,
ALLOCATABLE, 
SAVE, 
DIMENSION (:,:)        :: pks    
 
  918   REAL, 
ALLOCATABLE, 
SAVE,
DIMENSION (:,:)      :: qsat
 
  920   REAL, 
ALLOCATABLE, 
SAVE,
DIMENSION (:,:,:)    :: zu1,zu2 
 
  921   REAL, 
ALLOCATABLE, 
SAVE,
DIMENSION (:,:,:)     :: zv1,zv2
 
  926     print *,
'Guide: conversion variables guidage' 
  971         print*,
'Guide: verification ordre niveaux verticaux' 
  974             print*,
'PL(',l,
')=',(ap(l)+ap(l+1))/2. &
 
  977         print*,
'Fichiers guidage' 
  981                  print*,
'PL(',l,
')=',plnc2(1,
jjbu,l)
 
  992         print *,
'inversion de l''ordre: invert_p=',
invert_p 
 1016                     pls(i,j,l)=(ap(l)+ap(l+1))/2.+psi(i,j)*(
bp(l)+
bp(l+1))/2.
 
 1022         if (disvert_type==1) 
then 
 1033                     pls(i,j,l) = 
preff * ( pk(i,j,l)/
cpp) ** unskap
 
 1044                 pext(i,j,l)=pls(i,j,l)*
aire(i,j)
 
 1061                 plunc(i,j,l)=pbarx(i,j,l)/
aireu(i,j)
 
 1062                 plsnc(i,j,l)=pls(i,j,l)
 
 1070                 plvnc(i,j,l)=pbary(i,j,l)/
airev(i,j)
 
 1111                         plnc2(i,j,l)=
pnat2(i,j,l)
 
 1112                         plnc1(i,j,l)=
pnat1(i,j,l)
 
 1133                         tgui1(ij,l)=zu1(i,j,l)
 
 1134                         tgui2(ij,l)=zu2(i,j,l)
 
 1139                         tgui1(ij,l)=zu1(i,j,l)*
cpp/pk(i,j,l)
 
 1140                         tgui2(ij,l)=zu2(i,j,l)*
cpp/pk(i,j,l)
 
 1178                         plnc2(i,j,l)=
pnat2(i,j,l)
 
 1179                         plnc1(i,j,l)=
pnat1(i,j,l)
 
 1202                     qgui1(ij,l)=zu1(i,j,l)
 
 1203                     qgui2(ij,l)=zu2(i,j,l)
 
 1245                     plnc2(iip1,j,l)=plnc2(1,j,l)
 
 1246                     plnc1(iip1,j,l)=plnc1(1,j,l)
 
 1259                     plnc2(iip1,j,l)=plnc2(1,j,l)
 
 1260                     plnc1(iip1,j,l)=plnc1(1,j,l)
 
 1280                     ugui1(ij,l)=zu1(i,j,l)*
cu(i,j)
 
 1281                     ugui2(ij,l)=zu2(i,j,l)*
cu(i,j)
 
 1355                     vgui1(ij,l)=zv1(i,j,l)*
cv(i,j)
 
 1356                     vgui2(ij,l)=zv2(i,j,l)*
cv(i,j)
 
 1368   SUBROUTINE tau2alpha(typ,pim,jjb,jje,factt,taumin,taumax,alpha)
 
 1374     include 
"dimensions.h" 
 1376     include 
"comconst.h" 
 1377     include 
"comgeom2.h" 
 1381     INTEGER, 
INTENT(IN) :: typ    
 
 1382     INTEGER, 
INTENT(IN) :: pim 
 
 1383     INTEGER, 
INTENT(IN) :: jjb,jje 
 
 1384     REAL, 
INTENT(IN)    :: factt   
 
 1385     REAL, 
INTENT(IN)    :: taumin,taumax
 
 1387     REAL, 
DIMENSION(pim,jjb:jje), 
INTENT(OUT) :: alpha 
 
 1390     LOGICAL, 
SAVE               :: first=.
true.
 
 1391     REAL, 
SAVE                  :: gamma,dxdy_min,dxdy_max
 
 1392     REAL, 
DIMENSION (iip1,jjp1) :: zdx,zdy
 
 1393     REAL, 
DIMENSION (iip1,jjp1) :: dxdys,dxdyu
 
 1394     REAL, 
DIMENSION (iip1,jjm)  :: dxdyv
 
 1397     real alphamin,alphamax,xi
 
 1398     integer i,j,ilon,ilat
 
 1401     alphamin=factt/taumax
 
 1402     alphamax=factt/taumin
 
 1414                     elseif (typ.eq.1) 
then 
 1417                     elseif (typ.eq.3) 
then 
 1421                     alpha(i,j)=alphamax/16.* &
 
 1436                zdx(i,j)=0.5*(
cu(i-1,j)+
cu(i,j))/cos(
rlatu(j))
 
 1438             zdx(1,j)=zdx(iip1,j)
 
 1442                zdy(i,j)=0.5*(
cv(i,j-1)+
cv(i,j))
 
 1447             zdx(i,
jjp1)=zdx(i,jjm)
 
 1449             zdy(i,
jjp1)=zdy(i,jjm)
 
 1453                dxdys(i,j)=sqrt(zdx(i,j)*zdx(i,j)+zdy(i,j)*zdy(i,j))
 
 1459                    dxdyu(i,j)=0.5*(dxdys(i,j)+dxdys(i+1,j))
 
 1461                 dxdyu(iip1,j)=dxdyu(1,j)
 
 1467                    dxdyv(i,j)=0.5*(dxdys(i,j)+dxdys(i,j+1))
 
 1477             dxdy_min=dxdys(ilon,ilat)
 
 1482                      dxdy_max=max(dxdy_max,dxdys(i,j))
 
 1487                  print*,
'ATTENTION modele peu zoome' 
 1488                  print*,
'ATTENTION on prend une constante de guidage cste' 
 1491                 gamma=(dxdy_max-2.*dxdy_min)/(dxdy_max-dxdy_min)
 
 1492                 print*,
'gamma=',gamma
 
 1493                 if (gamma.lt.1.e-5) 
then 
 1494                   print*,
'gamma =',gamma,
'<1e-5' 
 1497                 gamma=log(0.5)/log(gamma)
 
 1501                 print*,
'gamma=',gamma
 
 1510                 elseif (typ.eq.2) 
then 
 1513                 elseif (typ.eq.3) 
then 
 1521                     xi=((dxdy_max-dxdy_)/(dxdy_max-dxdy_min))**gamma
 
 1524                         alpha(i,j)=xi*alphamin+(1.-xi)*alphamax
 
 1533     if (.not. 
guide_add) alpha = 1. - exp(- alpha)
 
 1542 #include "netcdf.inc" 
 1543 #include "dimensions.h" 
 1544 #include "paramet.h" 
 1546     INTEGER, 
INTENT(IN)   :: timestep
 
 1548     LOGICAL, 
SAVE         :: first=.
true.
 
 1550     INTEGER, 
SAVE         :: ncidu,varidu,ncidv,varidv,ncidp,varidp
 
 1551     INTEGER, 
SAVE         :: ncidQ,varidQ,ncidt,varidt,ncidps,varidps
 
 1552     INTEGER               :: ncidpl,varidpl,varidap,varidbp
 
 1554     INTEGER, 
DIMENSION(4) :: start,count
 
 1555     INTEGER               :: status,rcode
 
 1556     CHARACTER (len = 80)   :: abort_message
 
 1557     CHARACTER (len = 20)   :: modname = 
'guide_read' 
 1558     abort_message=
'pb in guide_read' 
 1565          print*,
'Guide: ouverture des fichiers guidage ' 
 1568              print *,
'Lecture du guidage sur niveaux modele' 
 1569              rcode = nf90_open(
'apbp.nc', nf90_nowrite, ncidpl)
 
 1570              IF (rcode.NE.nf_noerr) 
THEN 
 1571               print *,
'Guide: probleme -> pas de fichier apbp.nc' 
 1574              rcode = nf90_inq_varid(ncidpl, 
'AP', varidap)
 
 1575              IF (rcode.NE.nf_noerr) 
THEN 
 1576               print *,
'Guide: probleme -> pas de variable AP, fichier apbp.nc' 
 1579              rcode = nf90_inq_varid(ncidpl, 
'BP', varidbp)
 
 1580              IF (rcode.NE.nf_noerr) 
THEN 
 1581               print *,
'Guide: probleme -> pas de variable BP, fichier apbp.nc' 
 1584              print*,
'ncidpl,varidap',ncidpl,varidap
 
 1588              rcode = nf90_open(
'P.nc', nf90_nowrite, ncidp)
 
 1589              IF (rcode.NE.nf_noerr) 
THEN 
 1590               print *,
'Guide: probleme -> pas de fichier P.nc' 
 1593              rcode = nf90_inq_varid(ncidp, 
'PRES', varidp)
 
 1594              IF (rcode.NE.nf_noerr) 
THEN  
 1595               print *,
'Guide: probleme -> pas de variable PRES, fichier P.nc' 
 1598              print*,
'ncidp,varidp',ncidp,varidp
 
 1599              if (ncidpl.eq.-99) ncidpl=ncidp
 
 1603              rcode = nf90_open(
'u.nc', nf90_nowrite, ncidu)
 
 1604              IF (rcode.NE.nf_noerr) 
THEN 
 1605               print *,
'Guide: probleme -> pas de fichier u.nc' 
 1608              rcode = nf90_inq_varid(ncidu, 
'UWND', varidu)
 
 1609              IF (rcode.NE.nf_noerr) 
THEN  
 1610               print *,
'Guide: probleme -> pas de variable UWND, fichier u.nc' 
 1613              print*,
'ncidu,varidu',ncidu,varidu
 
 1614              if (ncidpl.eq.-99) ncidpl=ncidu
 
 1618              rcode = nf90_open(
'v.nc', nf90_nowrite, ncidv)
 
 1619              IF (rcode.NE.nf_noerr) 
THEN 
 1620               print *,
'Guide: probleme -> pas de fichier v.nc' 
 1623              rcode = nf90_inq_varid(ncidv, 
'VWND', varidv)
 
 1624              IF (rcode.NE.nf_noerr) 
THEN  
 1625               print *,
'Guide: probleme -> pas de variable VWND, fichier v.nc' 
 1628              print*,
'ncidv,varidv',ncidv,varidv
 
 1629              if (ncidpl.eq.-99) ncidpl=ncidv
 
 1633              rcode = nf90_open(
'T.nc', nf90_nowrite, ncidt)
 
 1634              IF (rcode.NE.nf_noerr) 
THEN 
 1635               print *,
'Guide: probleme -> pas de fichier T.nc' 
 1638              rcode = nf90_inq_varid(ncidt, 
'AIR', varidt)
 
 1639              IF (rcode.NE.nf_noerr) 
THEN  
 1640               print *,
'Guide: probleme -> pas de variable AIR, fichier T.nc' 
 1643              print*,
'ncidT,varidT',ncidt,varidt
 
 1644              if (ncidpl.eq.-99) ncidpl=ncidt
 
 1648              rcode = nf90_open(
'hur.nc', nf90_nowrite, ncidq)
 
 1649              IF (rcode.NE.nf_noerr) 
THEN 
 1650               print *,
'Guide: probleme -> pas de fichier hur.nc' 
 1653              rcode = nf90_inq_varid(ncidq, 
'RH', varidq)
 
 1654              IF (rcode.NE.nf_noerr) 
THEN  
 1655               print *,
'Guide: probleme -> pas de variable RH, fichier hur.nc' 
 1658              print*,
'ncidQ,varidQ',ncidq,varidq
 
 1659              if (ncidpl.eq.-99) ncidpl=ncidq
 
 1663              rcode = nf90_open(
'ps.nc', nf90_nowrite, ncidps)
 
 1664              IF (rcode.NE.nf_noerr) 
THEN 
 1665               print *,
'Guide: probleme -> pas de fichier ps.nc' 
 1668              rcode = nf90_inq_varid(ncidps, 
'SP', varidps)
 
 1669              IF (rcode.NE.nf_noerr) 
THEN  
 1670               print *,
'Guide: probleme -> pas de variable SP, fichier ps.nc' 
 1673              print*,
'ncidps,varidps',ncidps,varidps
 
 1677               rcode = nf90_inq_varid(ncidpl, 
'LEVEL', varidpl)
 
 1678               IF (rcode.NE.0) rcode = nf90_inq_varid(ncidpl, 
'PRESSURE', varidpl)
 
 1679               print*,
'ncidpl,varidpl',ncidpl,varidpl
 
 1684              status=nf_get_vara_double(ncidpl,varidap,1,
nlevnc,
apnc)
 
 1685              status=nf_get_vara_double(ncidpl,varidbp,1,
nlevnc,
bpnc)
 
 1687              status=nf_get_vara_real(ncidpl,varidap,1,
nlevnc,
apnc)
 
 1688              status=nf_get_vara_real(ncidpl,varidbp,1,
nlevnc,
bpnc)
 
 1692              status=nf_get_vara_double(ncidpl,varidpl,1,
nlevnc,
apnc)
 
 1694              status=nf_get_vara_real(ncidpl,varidpl,1,
nlevnc,
apnc)
 
 1721          status=nf_get_vara_double(ncidp,varidp,start,count,
pnat2)
 
 1723          status=nf_get_vara_real(ncidp,varidp,start,count,
pnat2)
 
 1735          status=nf_get_vara_double(ncidu,varidu,start,count,
unat2)
 
 1737          status=nf_get_vara_real(ncidu,varidu,start,count,
unat2)
 
 1751          status=nf_get_vara_double(ncidt,varidt,start,count,
tnat2)
 
 1753          status=nf_get_vara_real(ncidt,varidt,start,count,
tnat2)
 
 1765          status=nf_get_vara_double(ncidq,varidq,start,count,
qnat2)
 
 1767          status=nf_get_vara_real(ncidq,varidq,start,count,
qnat2)
 
 1784          status=nf_get_vara_double(ncidv,varidv,start,count,
vnat2)
 
 1786          status=nf_get_vara_real(ncidv,varidv,start,count,
vnat2)
 
 1805          status=nf_get_vara_double(ncidps,varidps,start,count,
psnat2)
 
 1807          status=nf_get_vara_real(ncidps,varidps,start,count,
psnat2)
 
 1823 #include "netcdf.inc" 
 1824 #include "dimensions.h" 
 1825 #include "paramet.h" 
 1827     INTEGER, 
INTENT(IN)   :: timestep
 
 1829     LOGICAL, 
SAVE         :: first=.
true.
 
 1831     INTEGER, 
SAVE         :: ncidu,varidu,ncidv,varidv,ncidp,varidp
 
 1832     INTEGER, 
SAVE         :: ncidQ,varidQ,ncidt,varidt,ncidps,varidps
 
 1833     INTEGER               :: ncidpl,varidpl,varidap,varidbp
 
 1835     INTEGER, 
DIMENSION(4) :: start,count
 
 1836     INTEGER               :: status,rcode
 
 1838     REAL, 
DIMENSION (jjb_u:jje_u,llm)  :: zu
 
 1839     REAL, 
DIMENSION (jjb_v:jje_v,llm)  :: zv
 
 1841     CHARACTER (len = 80)   :: abort_message
 
 1842     CHARACTER (len = 20)   :: modname = 
'guide_read2D' 
 1843     abort_message=
'pb in guide_read2D' 
 1850          print*,
'Guide: ouverture des fichiers guidage ' 
 1853              print *,
'Lecture du guidage sur niveaux mod�le' 
 1854              rcode = nf90_open(
'apbp.nc', nf90_nowrite, ncidpl)
 
 1855              IF (rcode.NE.nf_noerr) 
THEN 
 1856               print *,
'Guide: probleme -> pas de fichier apbp.nc' 
 1859              rcode = nf90_inq_varid(ncidpl, 
'AP', varidap)
 
 1860              IF (rcode.NE.nf_noerr) 
THEN 
 1861               print *,
'Guide: probleme -> pas de variable AP, fichier apbp.nc' 
 1864              rcode = nf90_inq_varid(ncidpl, 
'BP', varidbp)
 
 1865              IF (rcode.NE.nf_noerr) 
THEN 
 1866               print *,
'Guide: probleme -> pas de variable BP, fichier apbp.nc' 
 1869              print*,
'ncidpl,varidap',ncidpl,varidap
 
 1873              rcode = nf90_open(
'P.nc', nf90_nowrite, ncidp)
 
 1874              IF (rcode.NE.nf_noerr) 
THEN 
 1875               print *,
'Guide: probleme -> pas de fichier P.nc' 
 1878              rcode = nf90_inq_varid(ncidp, 
'PRES', varidp)
 
 1879              IF (rcode.NE.nf_noerr) 
THEN 
 1880               print *,
'Guide: probleme -> pas de variable PRES, fichier P.nc' 
 1883              print*,
'ncidp,varidp',ncidp,varidp
 
 1884              if (ncidpl.eq.-99) ncidpl=ncidp
 
 1888              rcode = nf90_open(
'u.nc', nf90_nowrite, ncidu)
 
 1889              IF (rcode.NE.nf_noerr) 
THEN 
 1890               print *,
'Guide: probleme -> pas de fichier u.nc' 
 1893              rcode = nf90_inq_varid(ncidu, 
'UWND', varidu)
 
 1894              IF (rcode.NE.nf_noerr) 
THEN 
 1895               print *,
'Guide: probleme -> pas de variable UWND, fichier u.nc' 
 1898              print*,
'ncidu,varidu',ncidu,varidu
 
 1899              if (ncidpl.eq.-99) ncidpl=ncidu
 
 1904              rcode = nf90_open(
'v.nc', nf90_nowrite, ncidv)
 
 1905              IF (rcode.NE.nf_noerr) 
THEN 
 1906               print *,
'Guide: probleme -> pas de fichier v.nc' 
 1909              rcode = nf90_inq_varid(ncidv, 
'VWND', varidv)
 
 1910              IF (rcode.NE.nf_noerr) 
THEN 
 1911               print *,
'Guide: probleme -> pas de variable VWND, fichier v.nc' 
 1914              print*,
'ncidv,varidv',ncidv,varidv
 
 1915              if (ncidpl.eq.-99) ncidpl=ncidv
 
 1919              rcode = nf90_open(
'T.nc', nf90_nowrite, ncidt)
 
 1920              IF (rcode.NE.nf_noerr) 
THEN 
 1921               print *,
'Guide: probleme -> pas de fichier T.nc' 
 1924              rcode = nf90_inq_varid(ncidt, 
'AIR', varidt)
 
 1925              IF (rcode.NE.nf_noerr) 
THEN 
 1926               print *,
'Guide: probleme -> pas de variable AIR, fichier T.nc' 
 1929              print*,
'ncidT,varidT',ncidt,varidt
 
 1930              if (ncidpl.eq.-99) ncidpl=ncidt
 
 1934              rcode = nf90_open(
'hur.nc', nf90_nowrite, ncidq)
 
 1935              IF (rcode.NE.nf_noerr) 
THEN 
 1936               print *,
'Guide: probleme -> pas de fichier hur.nc' 
 1939              rcode = nf90_inq_varid(ncidq, 
'RH', varidq)
 
 1940              IF (rcode.NE.nf_noerr) 
THEN 
 1941               print *,
'Guide: probleme -> pas de variable RH, fichier hur.nc' 
 1944              print*,
'ncidQ,varidQ',ncidq,varidq
 
 1945              if (ncidpl.eq.-99) ncidpl=ncidq
 
 1949              rcode = nf90_open(
'ps.nc', nf90_nowrite, ncidps)
 
 1950              IF (rcode.NE.nf_noerr) 
THEN 
 1951               print *,
'Guide: probleme -> pas de fichier ps.nc' 
 1954              rcode = nf90_inq_varid(ncidps, 
'SP', varidps)
 
 1955              IF (rcode.NE.nf_noerr) 
THEN 
 1956               print *,
'Guide: probleme -> pas de variable SP, fichier ps.nc' 
 1959              print*,
'ncidps,varidps',ncidps,varidps
 
 1963               rcode = nf90_inq_varid(ncidpl, 
'LEVEL', varidpl)
 
 1964               IF (rcode.NE.0) rcode = nf90_inq_varid(ncidpl, 
'PRESSURE', varidpl)
 
 1965               print*,
'ncidpl,varidpl',ncidpl,varidpl
 
 1970              status=nf_get_vara_double(ncidpl,varidap,1,
nlevnc,
apnc)
 
 1971              status=nf_get_vara_double(ncidpl,varidbp,1,
nlevnc,
bpnc)
 
 1973              status=nf_get_vara_real(ncidpl,varidap,1,
nlevnc,
apnc)
 
 1974              status=nf_get_vara_real(ncidpl,varidbp,1,
nlevnc,
bpnc)
 
 1978              status=nf_get_vara_double(ncidpl,varidpl,1,
nlevnc,
apnc)
 
 1980              status=nf_get_vara_real(ncidpl,varidpl,1,
nlevnc,
apnc)
 
 2007          status=nf_get_vara_double(ncidp,varidp,start,count,zu)
 
 2009          status=nf_get_vara_real(ncidp,varidp,start,count,zu)
 
 2012              pnat2(i,:,:)=zu(:,:)
 
 2024          status=nf_get_vara_double(ncidu,varidu,start,count,zu)
 
 2026          status=nf_get_vara_real(ncidu,varidu,start,count,zu)
 
 2029              unat2(i,:,:)=zu(:,:)
 
 2043          status=nf_get_vara_double(ncidt,varidt,start,count,zu)
 
 2045          status=nf_get_vara_real(ncidt,varidt,start,count,zu)
 
 2048              tnat2(i,:,:)=zu(:,:)
 
 2061          status=nf_get_vara_double(ncidq,varidq,start,count,zu)
 
 2063          status=nf_get_vara_real(ncidq,varidq,start,count,zu)
 
 2066              qnat2(i,:,:)=zu(:,:)
 
 2082          status=nf_get_vara_double(ncidv,varidv,start,count,zv)
 
 2084          status=nf_get_vara_real(ncidv,varidv,start,count,zv)
 
 2087              vnat2(i,:,:)=zv(:,:)
 
 2108          status=nf_get_vara_double(ncidps,varidps,start,count,zu(:,1))
 
 2110          status=nf_get_vara_real(ncidps,varidps,start,count,zu(:,1))
 
 2126   SUBROUTINE guide_out(varname,hsize,vsize,field_loc,factt)
 
 2131     include 
"dimensions.h" 
 2133     include 
"netcdf.inc" 
 2134     include 
"comgeom2.h" 
 2135     include 
"comconst.h" 
 2139     CHARACTER*(*), 
INTENT(IN)                      :: varname
 
 2140     INTEGER,   
INTENT (IN)                         :: hsize,vsize
 
 2142     REAL, 
DIMENSION (:,:), 
INTENT(IN) :: field_loc
 
 2146     INTEGER, 
SAVE :: timestep=0
 
 2148     INTEGER       :: nid, id_lonu, id_lonv, id_latu, id_latv, id_tim, id_lev
 
 2149     INTEGER       :: vid_lonu,vid_lonv,vid_latu,vid_latv,vid_cu,vid_cv,vid_lev
 
 2150     INTEGER       :: vid_au,vid_av
 
 2151     INTEGER, 
DIMENSION (3) :: dim3
 
 2152     INTEGER, 
DIMENSION (4) :: dim4,count,start
 
 2153     INTEGER                :: ierr, varid,l
 
 2155     REAL, 
ALLOCATABLE, 
SAVE, 
DIMENSION(:,:,:) :: field_glo
 
 2158     ALLOCATE(field_glo(iip1,hsize,vsize))
 
 2162     print*,
'gvide_out apres allocation ',hsize,vsize
 
 2164     IF (hsize==
jjp1) 
THEN 
 2166     ELSE IF (hsize==jjm) 
THEN 
 2170     print*,
'guide_out apres gather ' 
 2176        DEALLOCATE(field_glo)
 
 2184     IF (timestep.EQ.0) 
THEN  
 2189         ierr=nf_create(
"guide_ins.nc",nf_clobber,nid)
 
 2191         ierr=nf_def_dim(nid,
"LONU",iip1,id_lonu) 
 
 2192         ierr=nf_def_dim(nid,
"LONV",iip1,id_lonv) 
 
 2193         ierr=nf_def_dim(nid,
"LATU",
jjp1,id_latu) 
 
 2194         ierr=nf_def_dim(nid,
"LATV",jjm,id_latv) 
 
 2195         ierr=nf_def_dim(nid,
"LEVEL",
llm,id_lev)
 
 2196         ierr=nf_def_dim(nid,
"TIME",nf_unlimited,id_tim)
 
 2199         ierr=nf_def_var(nid,
"LONU",nf_float,1,id_lonu,vid_lonu)
 
 2200         ierr=nf_def_var(nid,
"LONV",nf_float,1,id_lonv,vid_lonv)
 
 2201         ierr=nf_def_var(nid,
"LATU",nf_float,1,id_latu,vid_latu)
 
 2202         ierr=nf_def_var(nid,
"LATV",nf_float,1,id_latv,vid_latv)
 
 2203         ierr=nf_def_var(nid,
"LEVEL",nf_float,1,id_lev,vid_lev)
 
 2204         ierr=nf_def_var(nid,
"cu",nf_float,2,(/id_lonu,id_latu/),vid_cu)
 
 2205         ierr=nf_def_var(nid,
"cv",nf_float,2,(/id_lonv,id_latv/),vid_cv)
 
 2206         ierr=nf_def_var(nid,
"au",nf_float,2,(/id_lonu,id_latu/),vid_au)
 
 2207         ierr=nf_def_var(nid,
"av",nf_float,2,(/id_lonv,id_latv/),vid_av)
 
 2213         ierr = nf_put_var_double(nid,vid_lonu,
rlonu*180./
pi)
 
 2214         ierr = nf_put_var_double(nid,vid_lonv,
rlonv*180./
pi)
 
 2215         ierr = nf_put_var_double(nid,vid_latu,
rlatu*180./
pi)
 
 2216         ierr = nf_put_var_double(nid,vid_latv,
rlatv*180./
pi)
 
 2217         ierr = nf_put_var_double(nid,vid_lev,
presnivs)
 
 2218         ierr = nf_put_var_double(nid,vid_cu,
cu)
 
 2219         ierr = nf_put_var_double(nid,vid_cv,
cv)
 
 2220         ierr = nf_put_var_double(nid,vid_au,zu)
 
 2221         ierr = nf_put_var_double(nid,vid_av,zv)
 
 2223         ierr = nf_put_var_real(nid,vid_lonu,
rlonu*180./
pi)
 
 2224         ierr = nf_put_var_real(nid,vid_lonv,
rlonv*180./
pi)
 
 2225         ierr = nf_put_var_real(nid,vid_latu,
rlatu*180./
pi)
 
 2226         ierr = nf_put_var_real(nid,vid_latv,
rlatv*180./
pi)
 
 2227         ierr = nf_put_var_real(nid,vid_lev,
presnivs)
 
 2228         ierr = nf_put_var_real(nid,vid_cu,
cu)
 
 2229         ierr = nf_put_var_real(nid,vid_cv,
cv)
 
 2230         ierr = nf_put_var_real(nid,vid_au,
alpha_u)
 
 2231         ierr = nf_put_var_real(nid,vid_av,
alpha_v)
 
 2236         ierr = nf_redef(nid)
 
 2238         dim4=(/id_lonv,id_latu,id_lev,id_tim/)
 
 2239         ierr = nf_def_var(nid,
"SP",nf_float,4,dim4,varid)
 
 2242             dim3=(/id_lonv,id_latu,id_tim/)
 
 2243             ierr = nf_def_var(nid,
"ps",nf_float,3,dim3,varid)
 
 2247             dim4=(/id_lonu,id_latu,id_lev,id_tim/)
 
 2248             ierr = nf_def_var(nid,
"u",nf_float,4,dim4,varid)
 
 2249             ierr = nf_def_var(nid,
"ua",nf_float,4,dim4,varid)
 
 2250             ierr = nf_def_var(nid,
"ucov",nf_float,4,dim4,varid)
 
 2254             dim4=(/id_lonv,id_latv,id_lev,id_tim/)
 
 2255             ierr = nf_def_var(nid,
"v",nf_float,4,dim4,varid)
 
 2256             ierr = nf_def_var(nid,
"va",nf_float,4,dim4,varid)
 
 2257             ierr = nf_def_var(nid,
"vcov",nf_float,4,dim4,varid)
 
 2261             dim4=(/id_lonv,id_latu,id_lev,id_tim/)
 
 2262             ierr = nf_def_var(nid,
"teta",nf_float,4,dim4,varid)
 
 2266             dim4=(/id_lonv,id_latu,id_lev,id_tim/)
 
 2267             ierr = nf_def_var(nid,
"q",nf_float,4,dim4,varid)
 
 2270         ierr = nf_enddef(nid)
 
 2271         ierr = nf_close(nid)
 
 2278     ierr=nf_open(
"guide_ins.nc",nf_write,nid)
 
 2280     IF (varname==
"SP") timestep=timestep+1
 
 2282     ierr = nf_inq_varid(nid,varname,varid)
 
 2283     SELECT CASE (varname)
 
 2285         start=(/1,1,1,timestep/)
 
 2287     CASE (
"v",
"va",
"vcov")
 
 2288         start=(/1,1,1,timestep/)
 
 2289         count=(/iip1,jjm,
llm,1/)
 
 2291         start=(/1,1,1,timestep/)
 
 2298     SELECT CASE (varname)
 
 2303             field_glo(:,2:jjm,l)=field_glo(:,2:jjm,l)/
cu(:,2:jjm)
 
 2304             field_glo(:,1,l)=0. ; field_glo(:,
jjp1,l)=0.
 
 2309            field_glo(:,:,l)=field_glo(:,:,l)/
cv(:,:)
 
 2321     ierr = nf_put_vara_double(nid,varid,start,count,field_glo)
 
 2323     ierr = nf_put_vara_real(nid,varid,start,count,field_glo)
 
 2326     ierr = nf_close(nid)
 
 2328        DEALLOCATE(field_glo)
 
 2346             if(abs(x(i,l)).gt.1.e10) 
then 
 2347                zz=0.5*(x(i-1,l)+x(i+1,l))
 
 2348               print*,
'correction ',i,l,x(i,l),zz
 
 2361 subroutine dump2du(var,varname)
 
 2365 include 
'dimensions.h' 
 2368       CHARACTER (len=*) :: varname
 
 2371 real, 
dimension(ijb_u:ije_u) :: var
 
 2373 real, 
dimension(ip1jmp1) :: var_glob
 
 2395      include 
"dimensions.h" 
real, dimension(:,:), allocatable, save, private vgui1
 
logical, save, private invert_p
 
real, dimension(:), allocatable, save, private alpha_t
 
real, save, private tau_max_v
 
subroutine guide_read(timestep)
 
real, dimension(:,:,:), allocatable, save, private qnat1
 
!$Header llmm1 INTEGER ip1jmp1
 
logical, save, private guide_teta
 
!$Header!c!c!c include serre h!c REAL && grossismx
 
real, save, private lon_min_g
 
real, dimension(:), allocatable, save, private alpha_v
 
real, save, private tau_min_t
 
real, dimension(:,:,:), allocatable, save, private pnat2
 
real, save, private tau_min_p
 
!$Header!CDK comgeom COMMON comgeom alpha1p2
 
real, dimension(:,:), allocatable, save, private psnat2
 
subroutine pres2lev(varo, varn, lmo, lmn, po, pn, ni, nj, ok_invertp)
 
subroutine guide_zonave_v(typ, hsize, vsize, field)
 
subroutine exner_milieu_loc(ngrid, ps, p, pks, pk, pkf)
 
!$Id mode_top_bound COMMON comconstr kappa
 
logical, save, private guide_t
 
real, dimension(:,:,:), allocatable, save, private pnat1
 
!$Header!c!c!c include serre h!c REAL clon
 
real, save, private tau_max_t
 
logical, save, private guide_u
 
subroutine massdair_loc(p, masse)
 
subroutine invert_lat(xsize, ysize, vsize, field)
 
integer, save, private ijeu
 
subroutine abort_gcm(modname, message, ierr)
 
!$Id Turb_fcg_gcssold get_uvd hqturb_gcssold endif!large scale llm day day1 day day1 *dt_toga endif!time annee_ref dt_toga u_toga vq_toga w_prof vq_prof llm day day1 day day1 *dt_dice endif!time annee_ref dt_dice swup_dice vg_dice omega_dice tg_prof vg_profd w_profd omega_profd!do llm!print llm l llm
 
!$Id mode_top_bound COMMON comconstr && pi
 
!$Header!CDK comgeom COMMON comgeom aire
 
subroutine ini_getparam(fichier)
 
!$Header!CDK comgeom COMMON comgeom rlatu
 
!$Header!CDK comgeom COMMON comgeom unscu2
 
integer, save, private jjeu
 
real, dimension(:), allocatable, save, private alpha_q
 
integer, save, private jjbu
 
logical, save, private gamma4
 
logical, save, private guide_zon
 
real, dimension(:,:), allocatable, save, private vgui2
 
real, dimension(:), allocatable, save, private alpha_p
 
subroutine guide_read2d(timestep)
 
integer, save, private jjev
 
subroutine exner_hyb_loc(ngrid, ps, p, pks, pk, pkf)
 
logical, save, private guide_reg
 
integer, save, private ijbv
 
real, dimension(:,:), allocatable, save, private qgui2
 
real, dimension(:,:,:), allocatable, save, private qnat2
 
!$Header llmm1 INTEGER ip1jm
 
integer, save, private iguide_read
 
subroutine pression_loc(ngrid, ap, bp, ps, p)
 
real, save, private tau_max_p
 
real, dimension(:,:), allocatable, save, private psnat1
 
!$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 false
 
real, save, private tau_lat
 
real, dimension(:), allocatable, save, private alpha_u
 
subroutine q_sat(np, temp, pres, qsat)
 
real, dimension(:,:,:), allocatable, save, private tnat1
 
logical, save, private guide_modele
 
!$Header!CDK comgeom COMMON comgeom alpha1p4
 
!$Header!CDK comgeom COMMON comgeom aireu
 
integer, save, private jjnv
 
real, save, private tau_min_q
 
logical, save, private guide_2d
 
real, dimension(:), allocatable, save, private alpha_pcor
 
!$Id mode_top_bound COMMON comconstr cpp
 
integer, save, private guide_plevs
 
subroutine tau2alpha(typ, pim, jjb, jje, factt, taumin, taumax, alpha)
 
logical, save, private guide_bl
 
integer, save, private nlevnc
 
real, save, private lon_max_g
 
real, save, private tau_max_u
 
integer, save, private jjnu
 
integer, save, private ijbu
 
subroutine guide_main(itau, ucov, vcov, teta, q, masse, ps)
 
subroutine register_hallo_u(Field, ll, RUp, Rdown, SUp, SDown, a_request)
 
logical, save, private guide_v
 
real, dimension(:), allocatable, save, private bpnc
 
!$Id mode_top_bound COMMON comconstr daysec
 
logical, save, private invert_y
 
real, dimension(:,:), allocatable, save, private ugui2
 
!$Header!CDK comgeom COMMON comgeom rlonu
 
!$Header!CDK comgeom COMMON comgeom rlatv
 
subroutine gather_field_v(field_loc, field_glo, ll)
 
subroutine sendrequest(a_Request)
 
real, save, private tau_min_u
 
real, save, private tau_min_v
 
real, dimension(:,:,:), allocatable, save, private vnat1
 
!$Header!CDK comgeom COMMON comgeom alpha3p4
 
subroutine gather_field_u(field_loc, field_glo, ll)
 
integer, save, private ijnu
 
!$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
 
real, dimension(:), allocatable, save, private apnc
 
logical, save, private guide_sav
 
!$Id!Parameters for parameters that control the rate of approach!to quasi equilibrium noff nlm real tlcrit real entp real sigd real coeffs real dtmax real cu real betad real damp real delta COMMON cvparam nlm tlcrit sigd coeffs cu
 
subroutine coordij(lon, lat, ilon, jlat)
 
!$Header!CDK comgeom COMMON comgeom alpha2p3
 
subroutine guide_out(varname, hsize, vsize, field_loc, factt)
 
integer, save, private iguide_int
 
real, dimension(:,:,:), allocatable, save, private tnat2
 
subroutine dump2d(im, jm, z, nom_z)
 
real, save, private lat_max_g
 
!$Header!c!c!c include serre h!c REAL grossismy
 
!$Id mode_top_bound COMMON comconstr dtvr
 
subroutine correctbid(iim, nl, x)
 
logical, save, private guide_add
 
subroutine dump2du(var, varname)
 
real, dimension(:,:), allocatable, save, private tgui1
 
integer, save, private ijev
 
c c zjulian c cym CALL iim cym klev iim
 
real, dimension(:,:), allocatable, save, private qgui1
 
logical, save, private guide_p
 
real, save, private tau_lon
 
subroutine guide_interp(psi, teta)
 
!$Header!c!c!c include serre h!c REAL clat
 
real, dimension(:,:), allocatable, save, private ugui1
 
logical, save, private ini_anal
 
real, dimension(:,:), allocatable, save, private tgui2
 
real, dimension(:), allocatable, save, private psgui2
 
subroutine guide_zonave_u(typ, vsize, field)
 
real, save, private lat_min_g
 
real, dimension(:,:,:), allocatable, save, private unat2
 
real, dimension(:,:,:), allocatable, save, private unat1
 
!$Header!CDK comgeom COMMON comgeom cv
 
real, save, private tau_max_q
 
subroutine massbar_loc(masse, massebx, masseby)
 
subroutine guide_addfield_v(vsize, field, alpha)
 
subroutine guide_addfield_u(vsize, field, alpha)
 
integer, save, private iguide_sav
 
real, dimension(:), allocatable, save, private psgui1
 
integer, save, private ijnv
 
subroutine waitrequest(a_Request)
 
logical, save, private guide_q
 
integer, save, private jjbv
 
real, dimension(:,:,:), allocatable, save, private vnat2
 
!$Header!CDK comgeom COMMON comgeom airev
 
logical, save, private guide_hr
 
!$Header!CDK comgeom COMMON comgeom rlonv