13   USE netcdf
, ONLY: nf90_nowrite, nf90_open, nf90_inq_varid, nf90_close
 
   47   REAL, 
ALLOCATABLE, 
DIMENSION(:,:,:), 
PRIVATE, 
SAVE   :: 
unat1,
unat2 
   48   REAL, 
ALLOCATABLE, 
DIMENSION(:,:,:), 
PRIVATE, 
SAVE   :: 
vnat1,
vnat2 
   49   REAL, 
ALLOCATABLE, 
DIMENSION(:,:,:), 
PRIVATE, 
SAVE   :: 
tnat1,
tnat2 
   50   REAL, 
ALLOCATABLE, 
DIMENSION(:,:,:), 
PRIVATE, 
SAVE   :: 
qnat1,
qnat2 
   51   REAL, 
ALLOCATABLE, 
DIMENSION(:,:,:), 
PRIVATE, 
SAVE   :: 
pnat1,
pnat2 
   53   REAL, 
ALLOCATABLE, 
DIMENSION(:),     
PRIVATE, 
SAVE   :: 
apnc,
bpnc 
   55   REAL, 
ALLOCATABLE, 
DIMENSION(:,:),   
PRIVATE, 
SAVE   :: 
ugui1,
ugui2 
   56   REAL, 
ALLOCATABLE, 
DIMENSION(:,:),   
PRIVATE, 
SAVE   :: 
vgui1,
vgui2 
   57   REAL, 
ALLOCATABLE, 
DIMENSION(:,:),   
PRIVATE, 
SAVE   :: 
tgui1,
tgui2 
   58   REAL, 
ALLOCATABLE, 
DIMENSION(:,:),   
PRIVATE, 
SAVE   :: 
qgui1,
qgui2 
   74     include 
"dimensions.h" 
   81     INTEGER                :: error,ncidpl,rid,rcod
 
   82     CHARACTER (len = 80)   :: abort_message
 
   83     CHARACTER (len = 20)   :: modname = 
'guide_init' 
  101          "zonal nudging requires grid regular in longitude", 1)
 
  135     CALL getpar(
'tau_lat', 5.,
tau_lat,
'raideur lat guide regional ')
 
  136     CALL getpar(
'tau_lon', 5.,
tau_lon,
'raideur lon guide regional ')
 
  166        if (ncidpl.eq.-99) 
then 
  167           rcod=nf90_open(
'apbp.nc',nf90_nowrite, ncidpl)
 
  168           if (rcod.NE.nf_noerr) 
THEN 
  169              print *,
'Guide: probleme -> pas de fichier apbp.nc' 
  174        if (ncidpl.EQ.-99) 
then 
  175           rcod=nf90_open(
'P.nc',nf90_nowrite,ncidpl)
 
  176           if (rcod.NE.nf_noerr) 
THEN 
  177              print *,
'Guide: probleme -> pas de fichier P.nc' 
  182        if (ncidpl.eq.-99) 
then 
  183           rcod=nf90_open(
'u.nc',nf90_nowrite,ncidpl)
 
  184           if (rcod.NE.nf_noerr) 
THEN 
  185              print *,
'Guide: probleme -> pas de fichier u.nc' 
  190        if (ncidpl.eq.-99) 
then 
  191           rcod=nf90_open(
'v.nc',nf90_nowrite,ncidpl)
 
  192           if (rcod.NE.nf_noerr) 
THEN 
  193              print *,
'Guide: probleme -> pas de fichier v.nc' 
  198        if (ncidpl.eq.-99) 
then 
  199           rcod=nf90_open(
'T.nc',nf90_nowrite,ncidpl)
 
  200           if (rcod.NE.nf_noerr) 
THEN 
  201              print *,
'Guide: probleme -> pas de fichier T.nc' 
  206        if (ncidpl.eq.-99) 
then 
  207           rcod=nf90_open(
'hur.nc',nf90_nowrite, ncidpl)
 
  208           if (rcod.NE.nf_noerr) 
THEN 
  209              print *,
'Guide: probleme -> pas de fichier hur.nc' 
  214     error=nf_inq_dimid(ncidpl,
'LEVEL',rid)
 
  215     IF (error.NE.nf_noerr) error=nf_inq_dimid(ncidpl,
'PRESSURE',rid)
 
  216     IF (error.NE.nf_noerr) 
THEN 
  217         print *,
'Guide: probleme lecture niveaux pression' 
  220     error=nf_inq_dimlen(ncidpl,rid,
nlevnc)
 
  221     print *,
'Guide: nombre niveaux vert. nlevnc', 
nlevnc  
  222     rcod = nf90_close(ncidpl)
 
  227     abort_message=
'pb in allocation guide' 
  230     IF (error /= 0) 
CALL abort_gcm(modname,abort_message,1)
 
  232     IF (error /= 0) 
CALL abort_gcm(modname,abort_message,1)
 
  236     IF (error /= 0) 
CALL abort_gcm(modname,abort_message,1)
 
  238     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)
 
  251         IF (error /= 0) 
CALL abort_gcm(modname,abort_message,1)
 
  253         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)
 
  263         IF (error /= 0) 
CALL abort_gcm(modname,abort_message,1)
 
  265         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)
 
  275         IF (error /= 0) 
CALL abort_gcm(modname,abort_message,1)
 
  277         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)
 
  287         IF (error /= 0) 
CALL abort_gcm(modname,abort_message,1)
 
  289         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)
 
  299         IF (error /= 0) 
CALL abort_gcm(modname,abort_message,1)
 
  301         IF (error /= 0) 
CALL abort_gcm(modname,abort_message,1)
 
  307         IF (error /= 0) 
CALL abort_gcm(modname,abort_message,1)
 
  309         IF (error /= 0) 
CALL abort_gcm(modname,abort_message,1)
 
  314         IF (error /= 0) 
CALL abort_gcm(modname,abort_message,1)
 
  316         IF (error /= 0) 
CALL abort_gcm(modname,abort_message,1)
 
  338   SUBROUTINE guide_main(itau,ucov,vcov,teta,q,masse,ps)
 
  346     include 
"dimensions.h" 
  352     INTEGER,                       
INTENT(IN)    :: itau 
 
  353     REAL, 
DIMENSION (ip1jmp1,llm), 
INTENT(INOUT) :: ucov,teta,q,masse
 
  354     REAL, 
DIMENSION (ip1jm,llm),   
INTENT(INOUT) :: vcov
 
  355     REAL, 
DIMENSION (ip1jmp1),     
INTENT(INOUT) :: ps
 
  358     LOGICAL, 
SAVE :: first=.
true.
 
  360     REAL, 
DIMENSION (ip1jmp1,llm) :: f_add 
 
  362     REAL, 
DIMENSION (iip1,jjp1,llm)    :: pk
 
  363     REAL, 
DIMENSION (iip1,jjp1)        :: pks    
 
  365     REAL, 
DIMENSION (ip1jmp1,llmp1)    :: p 
 
  367     INTEGER, 
SAVE :: step_rea,count_no_rea,itau_test 
 
  368     REAL          :: ditau, dday_step
 
  454       IF (reste.EQ.0.) 
THEN 
  455           IF (itau_test.EQ.itau) 
THEN 
  456               write(*,*)
'deuxieme passage de advreel a itau=',itau
 
  467               print*,
'Lecture fichiers guidage, pas ',step_rea, &
 
  468                     'apres ',count_no_rea,
' non lectures' 
  477         count_no_rea=count_no_rea+1
 
  503         if (pressure_exner) 
then 
  512                  p(i+(j-1)*iip1,l) = 
preff * ( pk(i,j,l)/
cpp) ** unskap
 
  594     include 
"dimensions.h" 
  598     INTEGER,                      
INTENT(IN)    :: hsize
 
  599     INTEGER,                      
INTENT(IN)    :: vsize
 
  600     REAL, 
DIMENSION(hsize),       
INTENT(IN)    :: alpha 
 
  601     REAL, 
DIMENSION(hsize,vsize), 
INTENT(INOUT) :: field
 
  606     IF (hsize==
ip1jm) 
THEN 
  623     include 
"dimensions.h" 
  629     INTEGER,                           
INTENT(IN)    :: typ
 
  630     INTEGER,                           
INTENT(IN)    :: vsize
 
  631     INTEGER,                           
INTENT(IN)    :: hsize
 
  632     REAL, 
DIMENSION(hsize*iip1,vsize), 
INTENT(INOUT) :: field
 
  635     LOGICAL, 
SAVE                :: first=.
true.
 
  636     INTEGER, 
DIMENSION (2), 
SAVE :: imin, imax 
 
  638     REAL, 
DIMENSION (iip1)       :: lond       
 
  639     REAL, 
DIMENSION (hsize,vsize):: fieldm     
 
  645         imin(1)=1;imax(1)=iip1;
 
  646         imin(2)=1;imax(2)=iip1;
 
  666               DO i=imin(typ),imax(typ)
 
  668                   fieldm(j,l)=fieldm(j,l)+field(ij,l)
 
  671           fieldm(:,l)=fieldm(:,l)/
REAL(imax(typ)-imin(typ)+1)
 
  676                   field(ij,l)=fieldm(j,l)
 
  684               DO i=imin(typ),imax(typ)
 
  686                   fieldm(j,l)=fieldm(j,l)+field(ij,l)
 
  689           fieldm(:,l)=fieldm(:,l)/
REAL(imax(typ)-imin(typ)+1)
 
  694                   field(ij,l)=fieldm(j,l)
 
  711   include 
"dimensions.h" 
  717   REAL, 
DIMENSION (iip1,jjp1),     
INTENT(IN) :: psi 
 
  718   REAL, 
DIMENSION (iip1,jjp1,llm), 
INTENT(IN) :: teta 
 
  720   LOGICAL, 
SAVE                      :: first=.
true.
 
  722   REAL, 
DIMENSION (iip1,jjp1,nlevnc) :: plnc1,plnc2 
 
  723   REAL, 
DIMENSION (iip1,jjp1,llm)    :: plunc,plsnc 
 
  724   REAL, 
DIMENSION (iip1,jjm,llm)     :: plvnc       
 
  725   REAL, 
DIMENSION (iip1,jjp1,llmp1)  :: p           
 
  726   REAL, 
DIMENSION (iip1,jjp1,llm)    :: pls, pext   
 
  727   REAL, 
DIMENSION (iip1,jjp1,llm)    :: pbarx 
 
  728   REAL, 
DIMENSION (iip1,jjm,llm)     :: pbary 
 
  730   REAL, 
DIMENSION (iip1,jjp1,llm)    :: pk
 
  731   REAL, 
DIMENSION (iip1,jjp1)        :: pks    
 
  734   REAL, 
DIMENSION (ip1jmp1,llm)      :: qsat
 
  736   REAL, 
DIMENSION (iip1,jjp1,llm)    :: zu1,zu2 
 
  737   REAL, 
DIMENSION (iip1,jjm,llm)     :: zv1,zv2
 
  742     print *,
'Guide: conversion variables guidage' 
  759         print*,
'Guide: verification ordre niveaux verticaux' 
  762             print*,
'PL(',l,
')=',(ap(l)+ap(l+1))/2. &
 
  765         print*,
'Fichiers guidage' 
  769                  print*,
'PL(',l,
')=',plnc2(1,
jjb_u,l)
 
  780         print *,
'inversion de l''ordre: invert_p=',
invert_p 
  802                     pls(i,j,l)=(ap(l)+ap(l+1))/2.+psi(i,j)*(
bp(l)+
bp(l+1))/2.
 
  808         if (pressure_exner) 
then 
  817                     pls(i,j,l) = 
preff * ( pk(i,j,l)/
cpp) ** unskap
 
  827                 pext(i,j,l)=pls(i,j,l)*
aire(i,j)
 
  840                 plunc(i,j,l)=pbarx(i,j,l)/
aireu(i,j)
 
  841                 plsnc(i,j,l)=pls(i,j,l)
 
  848                 plvnc(i,j,l)=pbary(i,j,l)/
airev(i,j)
 
  884                         plnc2(i,j,l)=
pnat2(i,j,l)
 
  885                         plnc1(i,j,l)=
pnat1(i,j,l)
 
  903                         tgui1(ij,l)=zu1(i,j,l)
 
  904                         tgui2(ij,l)=zu2(i,j,l)
 
  909                         tgui1(ij,l)=zu1(i,j,l)*
cpp/pk(i,j,l)
 
  910                         tgui2(ij,l)=zu2(i,j,l)*
cpp/pk(i,j,l)
 
  940                         plnc2(i,j,l)=
pnat2(i,j,l)
 
  941                         plnc1(i,j,l)=
pnat1(i,j,l)
 
  960                     qgui1(ij,l)=zu1(i,j,l)
 
  961                     qgui2(ij,l)=zu2(i,j,l)
 
  992                     plnc2(iip1,j,l)=plnc2(1,j,l)
 
  993                     plnc1(iip1,j,l)=plnc1(1,j,l)
 
 1005                     plnc2(iip1,j,l)=plnc2(1,j,l)
 
 1006                     plnc1(iip1,j,l)=plnc1(1,j,l)
 
 1022                     ugui1(ij,l)=zu1(i,j,l)*
cu(i,j)
 
 1023                     ugui2(ij,l)=zu2(i,j,l)*
cu(i,j)
 
 1084                     vgui1(ij,l)=zv1(i,j,l)*
cv(i,j)
 
 1085                     vgui2(ij,l)=zv2(i,j,l)*
cv(i,j)
 
 1097   SUBROUTINE tau2alpha(typ,pim,pjm,factt,taumin,taumax,alpha)
 
 1103     include 
"dimensions.h" 
 1105     include 
"comconst.h" 
 1106     include 
"comgeom2.h" 
 1110     INTEGER, 
INTENT(IN) :: typ    
 
 1111     INTEGER, 
INTENT(IN) :: pim,pjm 
 
 1112     REAL, 
INTENT(IN)    :: factt   
 
 1113     REAL, 
INTENT(IN)    :: taumin,taumax
 
 1115     REAL, 
DIMENSION(pim,pjm), 
INTENT(OUT) :: alpha 
 
 1118     LOGICAL, 
SAVE               :: first=.
true.
 
 1119     REAL, 
SAVE                  :: gamma,dxdy_min,dxdy_max
 
 1120     REAL, 
DIMENSION (iip1,jjp1) :: zdx,zdy
 
 1121     REAL, 
DIMENSION (iip1,jjp1) :: dxdys,dxdyu
 
 1122     REAL, 
DIMENSION (iip1,jjm)  :: dxdyv
 
 1125     real alphamin,alphamax,xi
 
 1126     integer i,j,ilon,ilat
 
 1129     alphamin=factt/taumax
 
 1130     alphamax=factt/taumin
 
 1142                     elseif (typ.eq.1) 
then 
 1145                     elseif (typ.eq.3) 
then 
 1149                     alpha(i,j)=alphamax/16.* &
 
 1164                zdx(i,j)=0.5*(
cu(i-1,j)+
cu(i,j))/cos(
rlatu(j))
 
 1166             zdx(1,j)=zdx(iip1,j)
 
 1170                zdy(i,j)=0.5*(
cv(i,j-1)+
cv(i,j))
 
 1175             zdx(i,
jjp1)=zdx(i,jjm)
 
 1177             zdy(i,
jjp1)=zdy(i,jjm)
 
 1181                dxdys(i,j)=sqrt(zdx(i,j)*zdx(i,j)+zdy(i,j)*zdy(i,j))
 
 1187                    dxdyu(i,j)=0.5*(dxdys(i,j)+dxdys(i+1,j))
 
 1189                 dxdyu(iip1,j)=dxdyu(1,j)
 
 1195                    dxdyv(i,j)=0.5*(dxdys(i,j)+dxdys(i,j+1))
 
 1205             dxdy_min=dxdys(ilon,ilat)
 
 1210                      dxdy_max=max(dxdy_max,dxdys(i,j))
 
 1215                  print*,
'ATTENTION modele peu zoome' 
 1216                  print*,
'ATTENTION on prend une constante de guidage cste' 
 1219                 gamma=(dxdy_max-2.*dxdy_min)/(dxdy_max-dxdy_min)
 
 1220                 print*,
'gamma=',gamma
 
 1221                 if (gamma.lt.1.e-5) 
then 
 1222                   print*,
'gamma =',gamma,
'<1e-5' 
 1225                 gamma=log(0.5)/log(gamma)
 
 1229                 print*,
'gamma=',gamma
 
 1238                 elseif (typ.eq.2) 
then 
 1241                 elseif (typ.eq.3) 
then 
 1249                     xi=((dxdy_max-dxdy_)/(dxdy_max-dxdy_min))**gamma
 
 1252                         alpha(i,j)=xi*alphamin+(1.-xi)*alphamax
 
 1261     if (.not. 
guide_add) alpha = 1. - exp(- alpha)
 
 1270 #include "netcdf.inc" 
 1271 #include "dimensions.h" 
 1272 #include "paramet.h" 
 1274     INTEGER, 
INTENT(IN)   :: timestep
 
 1276     LOGICAL, 
SAVE         :: first=.
true.
 
 1278     INTEGER, 
SAVE         :: ncidu,varidu,ncidv,varidv,ncidp,varidp
 
 1279     INTEGER, 
SAVE         :: ncidQ,varidQ,ncidt,varidt,ncidps,varidps
 
 1280     INTEGER               :: ncidpl,varidpl,varidap,varidbp
 
 1282     INTEGER, 
DIMENSION(4) :: start,count
 
 1283     INTEGER               :: status,rcode
 
 1285     CHARACTER (len = 80)   :: abort_message
 
 1286     CHARACTER (len = 20)   :: modname = 
'guide_read' 
 1292          print*,
'Guide: ouverture des fichiers guidage ' 
 1295              print *,
'Lecture du guidage sur niveaux modele' 
 1296              rcode = nf90_open(
'apbp.nc', nf90_nowrite, ncidpl)
 
 1297              IF (rcode.NE.nf_noerr) 
THEN 
 1298               print *,
'Guide: probleme -> pas de fichier apbp.nc' 
 1301              rcode = nf90_inq_varid(ncidpl, 
'AP', varidap)
 
 1302              IF (rcode.NE.nf_noerr) 
THEN 
 1303               print *,
'Guide: probleme -> pas de variable AP, fichier apbp.nc' 
 1306              rcode = nf90_inq_varid(ncidpl, 
'BP', varidbp)
 
 1307              IF (rcode.NE.nf_noerr) 
THEN 
 1308               print *,
'Guide: probleme -> pas de variable BP, fichier apbp.nc' 
 1311              print*,
'ncidpl,varidap',ncidpl,varidap
 
 1315              rcode = nf90_open(
'P.nc', nf90_nowrite, ncidp)
 
 1316              IF (rcode.NE.nf_noerr) 
THEN 
 1317               print *,
'Guide: probleme -> pas de fichier P.nc' 
 1320              rcode = nf90_inq_varid(ncidp, 
'PRES', varidp)
 
 1321              IF (rcode.NE.nf_noerr) 
THEN 
 1322               print *,
'Guide: probleme -> pas de variable PRES, fichier P.nc' 
 1325              print*,
'ncidp,varidp',ncidp,varidp
 
 1326              if (ncidpl.eq.-99) ncidpl=ncidp
 
 1330              rcode = nf90_open(
'u.nc', nf90_nowrite, ncidu)
 
 1331              IF (rcode.NE.nf_noerr) 
THEN 
 1332               print *,
'Guide: probleme -> pas de fichier u.nc' 
 1335              rcode = nf90_inq_varid(ncidu, 
'UWND', varidu)
 
 1336              IF (rcode.NE.nf_noerr) 
THEN 
 1337               print *,
'Guide: probleme -> pas de variable UWND, fichier u.nc' 
 1340              print*,
'ncidu,varidu',ncidu,varidu
 
 1341              if (ncidpl.eq.-99) ncidpl=ncidu
 
 1345              rcode = nf90_open(
'v.nc', nf90_nowrite, ncidv)
 
 1346              IF (rcode.NE.nf_noerr) 
THEN 
 1347               print *,
'Guide: probleme -> pas de fichier v.nc' 
 1350              rcode = nf90_inq_varid(ncidv, 
'VWND', varidv)
 
 1351              IF (rcode.NE.nf_noerr) 
THEN 
 1352               print *,
'Guide: probleme -> pas de variable VWND, fichier v.nc' 
 1355              print*,
'ncidv,varidv',ncidv,varidv
 
 1356              if (ncidpl.eq.-99) ncidpl=ncidv
 
 1360              rcode = nf90_open(
'T.nc', nf90_nowrite, ncidt)
 
 1361              IF (rcode.NE.nf_noerr) 
THEN 
 1362               print *,
'Guide: probleme -> pas de fichier T.nc' 
 1365              rcode = nf90_inq_varid(ncidt, 
'AIR', varidt)
 
 1366              IF (rcode.NE.nf_noerr) 
THEN 
 1367               print *,
'Guide: probleme -> pas de variable AIR, fichier T.nc' 
 1370              print*,
'ncidT,varidT',ncidt,varidt
 
 1371              if (ncidpl.eq.-99) ncidpl=ncidt
 
 1375              rcode = nf90_open(
'hur.nc', nf90_nowrite, ncidq)
 
 1376              IF (rcode.NE.nf_noerr) 
THEN 
 1377               print *,
'Guide: probleme -> pas de fichier hur.nc' 
 1380              rcode = nf90_inq_varid(ncidq, 
'RH', varidq)
 
 1381              IF (rcode.NE.nf_noerr) 
THEN 
 1382               print *,
'Guide: probleme -> pas de variable RH, fichier hur.nc' 
 1385              print*,
'ncidQ,varidQ',ncidq,varidq
 
 1386              if (ncidpl.eq.-99) ncidpl=ncidq
 
 1390              rcode = nf90_open(
'ps.nc', nf90_nowrite, ncidps)
 
 1391              IF (rcode.NE.nf_noerr) 
THEN 
 1392               print *,
'Guide: probleme -> pas de fichier ps.nc' 
 1395              rcode = nf90_inq_varid(ncidps, 
'SP', varidps)
 
 1396              IF (rcode.NE.nf_noerr) 
THEN 
 1397               print *,
'Guide: probleme -> pas de variable SP, fichier ps.nc' 
 1400              print*,
'ncidps,varidps',ncidps,varidps
 
 1404               rcode = nf90_inq_varid(ncidpl, 
'LEVEL', varidpl)
 
 1405               IF (rcode.NE.0) rcode = nf90_inq_varid(ncidpl, 
'PRESSURE', varidpl)
 
 1406               print*,
'ncidpl,varidpl',ncidpl,varidpl
 
 1411              status=nf_get_vara_double(ncidpl,varidap,1,
nlevnc,
apnc)
 
 1412              status=nf_get_vara_double(ncidpl,varidbp,1,
nlevnc,
bpnc)
 
 1414              status=nf_get_vara_real(ncidpl,varidap,1,
nlevnc,
apnc)
 
 1415              status=nf_get_vara_real(ncidpl,varidbp,1,
nlevnc,
bpnc)
 
 1419              status=nf_get_vara_double(ncidpl,varidpl,1,
nlevnc,
apnc)
 
 1421              status=nf_get_vara_real(ncidpl,varidpl,1,
nlevnc,
apnc)
 
 1447          status=nf_get_vara_double(ncidp,varidp,start,count,
pnat2)
 
 1449          status=nf_get_vara_real(ncidp,varidp,start,count,
pnat2)
 
 1459          status=nf_get_vara_double(ncidu,varidu,start,count,
unat2)
 
 1461          status=nf_get_vara_real(ncidu,varidu,start,count,
unat2)
 
 1472          status=nf_get_vara_double(ncidt,varidt,start,count,
tnat2)
 
 1474          status=nf_get_vara_real(ncidt,varidt,start,count,
tnat2)
 
 1484          status=nf_get_vara_double(ncidq,varidq,start,count,
qnat2)
 
 1486          status=nf_get_vara_real(ncidq,varidq,start,count,
qnat2)
 
 1498          status=nf_get_vara_double(ncidv,varidv,start,count,
vnat2)
 
 1500          status=nf_get_vara_real(ncidv,varidv,start,count,
vnat2)
 
 1515          status=nf_get_vara_double(ncidps,varidps,start,count,
psnat2)
 
 1517          status=nf_get_vara_real(ncidps,varidps,start,count,
psnat2)
 
 1531 #include "netcdf.inc" 
 1532 #include "dimensions.h" 
 1533 #include "paramet.h" 
 1535     INTEGER, 
INTENT(IN)   :: timestep
 
 1537     LOGICAL, 
SAVE         :: first=.
true.
 
 1539     INTEGER, 
SAVE         :: ncidu,varidu,ncidv,varidv,ncidp,varidp
 
 1540     INTEGER, 
SAVE         :: ncidQ,varidQ,ncidt,varidt,ncidps,varidps
 
 1541     INTEGER               :: ncidpl,varidpl,varidap,varidbp
 
 1543     INTEGER, 
DIMENSION(4) :: start,count
 
 1544     INTEGER               :: status,rcode
 
 1546     REAL, 
DIMENSION (jjp1,llm) :: zu
 
 1547     REAL, 
DIMENSION (jjm,llm)  :: zv
 
 1550     CHARACTER (len = 80)   :: abort_message
 
 1551     CHARACTER (len = 20)   :: modname = 
'guide_read2D' 
 1557          print*,
'Guide: ouverture des fichiers guidage ' 
 1560              print *,
'Lecture du guidage sur niveaux mod�le' 
 1561              rcode = nf90_open(
'apbp.nc', nf90_nowrite, ncidpl)
 
 1562              IF (rcode.NE.nf_noerr) 
THEN 
 1563               print *,
'Guide: probleme -> pas de fichier apbp.nc' 
 1566              rcode = nf90_inq_varid(ncidpl, 
'AP', varidap)
 
 1567              IF (rcode.NE.nf_noerr) 
THEN 
 1568               print *,
'Guide: probleme -> pas de variable AP, fichier apbp.nc' 
 1571              rcode = nf90_inq_varid(ncidpl, 
'BP', varidbp)
 
 1572              IF (rcode.NE.nf_noerr) 
THEN 
 1573               print *,
'Guide: probleme -> pas de variable BP, fichier apbp.nc' 
 1576              print*,
'ncidpl,varidap',ncidpl,varidap
 
 1580              rcode = nf90_open(
'P.nc', nf90_nowrite, ncidp)
 
 1581              IF (rcode.NE.nf_noerr) 
THEN 
 1582               print *,
'Guide: probleme -> pas de fichier P.nc' 
 1585              rcode = nf90_inq_varid(ncidp, 
'PRES', varidp)
 
 1586              IF (rcode.NE.nf_noerr) 
THEN 
 1587               print *,
'Guide: probleme -> pas de variable PRES, fichier P.nc' 
 1590              print*,
'ncidp,varidp',ncidp,varidp
 
 1591              if (ncidpl.eq.-99) ncidpl=ncidp
 
 1595              rcode = nf90_open(
'u.nc', nf90_nowrite, ncidu)
 
 1596              IF (rcode.NE.nf_noerr) 
THEN 
 1597               print *,
'Guide: probleme -> pas de fichier u.nc' 
 1600              rcode = nf90_inq_varid(ncidu, 
'UWND', varidu)
 
 1601              IF (rcode.NE.nf_noerr) 
THEN 
 1602               print *,
'Guide: probleme -> pas de variable UWND, fichier u.nc' 
 1605              print*,
'ncidu,varidu',ncidu,varidu
 
 1606              if (ncidpl.eq.-99) ncidpl=ncidu
 
 1610              rcode = nf90_open(
'v.nc', nf90_nowrite, ncidv)
 
 1611              IF (rcode.NE.nf_noerr) 
THEN 
 1612               print *,
'Guide: probleme -> pas de fichier v.nc' 
 1615              rcode = nf90_inq_varid(ncidv, 
'VWND', varidv)
 
 1616              IF (rcode.NE.nf_noerr) 
THEN 
 1617               print *,
'Guide: probleme -> pas de variable VWND, fichier v.nc' 
 1620              print*,
'ncidv,varidv',ncidv,varidv
 
 1621              if (ncidpl.eq.-99) ncidpl=ncidv
 
 1625              rcode = nf90_open(
'T.nc', nf90_nowrite, ncidt)
 
 1626              IF (rcode.NE.nf_noerr) 
THEN 
 1627               print *,
'Guide: probleme -> pas de fichier T.nc' 
 1630              rcode = nf90_inq_varid(ncidt, 
'AIR', varidt)
 
 1631              IF (rcode.NE.nf_noerr) 
THEN 
 1632               print *,
'Guide: probleme -> pas de variable AIR, fichier T.nc' 
 1635              print*,
'ncidT,varidT',ncidt,varidt
 
 1636              if (ncidpl.eq.-99) ncidpl=ncidt
 
 1640              rcode = nf90_open(
'hur.nc', nf90_nowrite, ncidq)
 
 1641              IF (rcode.NE.nf_noerr) 
THEN 
 1642               print *,
'Guide: probleme -> pas de fichier hur.nc' 
 1645              rcode = nf90_inq_varid(ncidq, 
'RH', varidq)
 
 1646              IF (rcode.NE.nf_noerr) 
THEN 
 1647               print *,
'Guide: probleme -> pas de variable RH, fichier hur.nc' 
 1650              print*,
'ncidQ,varidQ',ncidq,varidq
 
 1651              if (ncidpl.eq.-99) ncidpl=ncidq
 
 1655              rcode = nf90_open(
'ps.nc', nf90_nowrite, ncidps)
 
 1656              IF (rcode.NE.nf_noerr) 
THEN 
 1657               print *,
'Guide: probleme -> pas de fichier ps.nc' 
 1660              rcode = nf90_inq_varid(ncidps, 
'SP', varidps)
 
 1661              IF (rcode.NE.nf_noerr) 
THEN 
 1662               print *,
'Guide: probleme -> pas de variable SP, fichier ps.nc' 
 1665              print*,
'ncidps,varidps',ncidps,varidps
 
 1669               rcode = nf90_inq_varid(ncidpl, 
'LEVEL', varidpl)
 
 1670               IF (rcode.NE.0) rcode = nf90_inq_varid(ncidpl, 
'PRESSURE', varidpl)
 
 1671               print*,
'ncidpl,varidpl',ncidpl,varidpl
 
 1676              status=nf_get_vara_double(ncidpl,varidap,1,
nlevnc,
apnc)
 
 1677              status=nf_get_vara_double(ncidpl,varidbp,1,
nlevnc,
bpnc)
 
 1679              status=nf_get_vara_real(ncidpl,varidap,1,
nlevnc,
apnc)
 
 1680              status=nf_get_vara_real(ncidpl,varidbp,1,
nlevnc,
bpnc)
 
 1684              status=nf_get_vara_double(ncidpl,varidpl,1,
nlevnc,
apnc)
 
 1686              status=nf_get_vara_real(ncidpl,varidpl,1,
nlevnc,
apnc)
 
 1712          status=nf_get_vara_double(ncidp,varidp,start,count,zu)
 
 1714          status=nf_get_vara_real(ncidp,varidp,start,count,zu)
 
 1717              pnat2(i,:,:)=zu(:,:)
 
 1727          status=nf_get_vara_double(ncidu,varidu,start,count,zu)
 
 1729          status=nf_get_vara_real(ncidu,varidu,start,count,zu)
 
 1732              unat2(i,:,:)=zu(:,:)
 
 1743          status=nf_get_vara_double(ncidt,varidt,start,count,zu)
 
 1745          status=nf_get_vara_real(ncidt,varidt,start,count,zu)
 
 1748              tnat2(i,:,:)=zu(:,:)
 
 1759          status=nf_get_vara_double(ncidq,varidq,start,count,zu)
 
 1761          status=nf_get_vara_real(ncidq,varidq,start,count,zu)
 
 1764              qnat2(i,:,:)=zu(:,:)
 
 1776          status=nf_get_vara_double(ncidv,varidv,start,count,zv)
 
 1778          status=nf_get_vara_real(ncidv,varidv,start,count,zv)
 
 1781              vnat2(i,:,:)=zv(:,:)
 
 1797          status=nf_get_vara_double(ncidps,varidps,start,count,zu(:,1))
 
 1799          status=nf_get_vara_real(ncidps,varidps,start,count,zu(:,1))
 
 1813   SUBROUTINE guide_out(varname,hsize,vsize,field,factt)
 
 1817     include 
"dimensions.h" 
 1819     include 
"netcdf.inc" 
 1820     include 
"comgeom2.h" 
 1821     include 
"comconst.h" 
 1825     CHARACTER*(*), 
INTENT(IN)                          :: varname
 
 1826     INTEGER,   
INTENT (IN)                         :: hsize,vsize
 
 1827     REAL, 
DIMENSION (iip1,hsize,vsize), 
INTENT(IN) :: field
 
 1828     REAL, 
INTENT (IN)                              :: factt
 
 1831     INTEGER, 
SAVE :: timestep=0
 
 1833     INTEGER       :: nid, id_lonu, id_lonv, id_latu, id_latv, id_tim, id_lev
 
 1834     INTEGER       :: vid_lonu,vid_lonv,vid_latu,vid_latv,vid_cu,vid_cv,vid_lev
 
 1835     INTEGER       :: vid_au,vid_av
 
 1837     INTEGER, 
DIMENSION (3) :: dim3
 
 1838     INTEGER, 
DIMENSION (4) :: dim4,count,start
 
 1839     INTEGER                :: ierr, varid
 
 1840     REAL, 
DIMENSION (iip1,hsize,vsize) :: field2
 
 1846     print *,
'Guide: output timestep',timestep,
'var ',varname
 
 1847     IF (timestep.EQ.0) 
THEN  
 1852         ierr=nf_create(
"guide_ins.nc",nf_clobber,nid)
 
 1854         ierr=nf_def_dim(nid,
"LONU",iip1,id_lonu) 
 
 1855         print*,
'id_lonu 1 ',id_lonu
 
 1856         ierr=nf_def_dim(nid,
"LONV",iip1,id_lonv) 
 
 1857         ierr=nf_def_dim(nid,
"LATU",
jjp1,id_latu) 
 
 1858         ierr=nf_def_dim(nid,
"LATV",jjm,id_latv) 
 
 1859         ierr=nf_def_dim(nid,
"LEVEL",
llm,id_lev)
 
 1860         ierr=nf_def_dim(nid,
"TIME",nf_unlimited,id_tim)
 
 1863         ierr=nf_def_var(nid,
"LONU",nf_float,1,id_lonu,vid_lonu)
 
 1864         print*,
'id_lonu 2 ',id_lonu
 
 1865         ierr=nf_def_var(nid,
"LONV",nf_float,1,id_lonv,vid_lonv)
 
 1866         ierr=nf_def_var(nid,
"LATU",nf_float,1,id_latu,vid_latu)
 
 1867         ierr=nf_def_var(nid,
"LATV",nf_float,1,id_latv,vid_latv)
 
 1868         ierr=nf_def_var(nid,
"LEVEL",nf_float,1,id_lev,vid_lev)
 
 1869         ierr=nf_def_var(nid,
"cu",nf_float,2,(/id_lonu,id_latu/),vid_cu)
 
 1870         ierr=nf_def_var(nid,
"cv",nf_float,2,(/id_lonv,id_latv/),vid_cv)
 
 1871         ierr=nf_def_var(nid,
"au",nf_float,2,(/id_lonu,id_latu/),vid_au)
 
 1872         ierr=nf_def_var(nid,
"av",nf_float,2,(/id_lonv,id_latv/),vid_av)
 
 1878         print*,
'id_lonu DOUBLE ',id_lonu,
rlonu*180./
pi 
 1879         ierr = nf_put_var_double(nid,vid_lonu,
rlonu*180./
pi)
 
 1880         ierr = nf_put_var_double(nid,vid_lonv,
rlonv*180./
pi)
 
 1881         ierr = nf_put_var_double(nid,vid_latu,
rlatu*180./
pi)
 
 1882         ierr = nf_put_var_double(nid,vid_latv,
rlatv*180./
pi)
 
 1883         ierr = nf_put_var_double(nid,vid_lev,
presnivs)
 
 1884         ierr = nf_put_var_double(nid,vid_cu,
cu)
 
 1885         ierr = nf_put_var_double(nid,vid_cv,
cv)
 
 1886         ierr = nf_put_var_double(nid,vid_au,
alpha_u)
 
 1887         ierr = nf_put_var_double(nid,vid_av,
alpha_v)
 
 1889         print*,
'id_lonu 3 ',id_lonu,
rlonu*180./
pi 
 1890         ierr = nf_put_var_real(nid,vid_lonu,
rlonu*180./
pi)
 
 1891         ierr = nf_put_var_real(nid,vid_lonv,
rlonv*180./
pi)
 
 1892         ierr = nf_put_var_real(nid,vid_latu,
rlatu*180./
pi)
 
 1893         ierr = nf_put_var_real(nid,vid_latv,
rlatv*180./
pi)
 
 1894         ierr = nf_put_var_real(nid,vid_lev,
presnivs)
 
 1895         ierr = nf_put_var_real(nid,vid_cu,
cu)
 
 1896         ierr = nf_put_var_real(nid,vid_cv,
cv)
 
 1897         ierr = nf_put_var_real(nid,vid_au,
alpha_u)
 
 1898         ierr = nf_put_var_real(nid,vid_av,
alpha_v)
 
 1903         ierr = nf_redef(nid)
 
 1905         dim4=(/id_lonv,id_latu,id_lev,id_tim/)
 
 1906         ierr = nf_def_var(nid,
"SP",nf_float,4,dim4,varid)
 
 1909             dim3=(/id_lonv,id_latu,id_tim/)
 
 1910             ierr = nf_def_var(nid,
"ps",nf_float,3,dim3,varid)
 
 1914         print*,
'id_lonu 4 ',id_lonu,varname
 
 1915             dim4=(/id_lonu,id_latu,id_lev,id_tim/)
 
 1916             ierr = nf_def_var(nid,
"u",nf_float,4,dim4,varid)
 
 1917             ierr = nf_def_var(nid,
"ua",nf_float,4,dim4,varid)
 
 1918             ierr = nf_def_var(nid,
"ucov",nf_float,4,dim4,varid)
 
 1922             dim4=(/id_lonv,id_latv,id_lev,id_tim/)
 
 1923             ierr = nf_def_var(nid,
"v",nf_float,4,dim4,varid)
 
 1924             ierr = nf_def_var(nid,
"va",nf_float,4,dim4,varid)
 
 1925             ierr = nf_def_var(nid,
"vcov",nf_float,4,dim4,varid)
 
 1929             dim4=(/id_lonv,id_latu,id_lev,id_tim/)
 
 1930             ierr = nf_def_var(nid,
"teta",nf_float,4,dim4,varid)
 
 1934             dim4=(/id_lonv,id_latu,id_lev,id_tim/)
 
 1935             ierr = nf_def_var(nid,
"q",nf_float,4,dim4,varid)
 
 1938         ierr = nf_enddef(nid)
 
 1939         ierr = nf_close(nid)
 
 1946     ierr=nf_open(
"guide_ins.nc",nf_write,nid)
 
 1948     IF (varname==
"SP") timestep=timestep+1
 
 1950     IF (varname==
"SP") 
THEN 
 1951       print*,
'varname=SP=',varname
 
 1953       print*,
'varname diff SP=',varname
 
 1957     ierr = nf_inq_varid(nid,varname,varid)
 
 1958     SELECT CASE (varname)
 
 1960         start=(/1,1,1,timestep/)
 
 1962     CASE (
"v",
"va",
"vcov")
 
 1963         start=(/1,1,1,timestep/)
 
 1964         count=(/iip1,jjm,
llm,1/)
 
 1966         start=(/1,1,1,timestep/)
 
 1970     SELECT CASE (varname)
 
 1972         DO l=1,
llm ; field2(:,2:jjm,l)=field(:,2:jjm,l)/
cu(:,2:jjm) ;
 ENDDO 
 1973         field2(:,1,:)=0. ; field2(:,
jjp1,:)=0.
 
 1975         DO l=1,
llm ; field2(:,:,l)=field(:,:,l)/
cv(:,:) ;
 ENDDO 
 1981     ierr = nf_put_vara_double(nid,varid,start,count,field2)
 
 1983     ierr = nf_put_vara_real(nid,varid,start,count,field2)
 
 1986     ierr = nf_close(nid)
 
 2000             if(abs(x(i,l)).gt.1.e10) 
then 
 2001                zz=0.5*(x(i-1,l)+x(i+1,l))
 
 2002               print*,
'correction ',i,l,x(i,l),zz
 
logical, save, private guide_zon
 
real, save, private tau_min_t
 
real, save, private tau_min_v
 
real, dimension(:,:,:), allocatable, save, private pnat1
 
logical, save, private guide_bl
 
!$Header llmm1 INTEGER ip1jmp1
 
subroutine gather_field(Field, ij, ll, rank)
 
logical, save, private guide_t
 
logical, save, private guide_modele
 
integer, save, private jje_u
 
!$Header!c!c!c include serre h!c REAL && grossismx
 
real, dimension(:,:,:), allocatable, save, private qnat2
 
real, dimension(:), allocatable, save, private alpha_u
 
subroutine exner_milieu_p(ngrid, ps, p, pks, pk, pkf)
 
real, dimension(:,:,:), allocatable, save, private tnat1
 
subroutine massdair_p(p, masse)
 
integer, dimension(:), allocatable jj_nb_caldyn
 
real, dimension(:,:), allocatable, save, private ugui2
 
logical, save, private guide_q
 
!$Header!CDK comgeom COMMON comgeom alpha1p2
 
integer, save, private jjb_u
 
integer, save, private jjb_v
 
subroutine pres2lev(varo, varn, lmo, lmn, po, pn, ni, nj, ok_invertp)
 
real, dimension(:,:,:), allocatable, save, private qnat1
 
real, dimension(:), allocatable, save, private alpha_v
 
!$Id mode_top_bound COMMON comconstr kappa
 
logical, save, private guide_add
 
real, dimension(:,:,:), allocatable, save, private unat1
 
real, save, private tau_lat
 
logical, save, private guide_sav
 
!$Header!c!c!c include serre h!c REAL clon
 
real, dimension(:,:), allocatable, save, private qgui1
 
real, dimension(:,:), allocatable, save, private vgui2
 
integer, save, private iguide_sav
 
real, dimension(:,:), allocatable, save, private vgui1
 
subroutine invert_lat(xsize, ysize, vsize, field)
 
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
 
logical, save, private invert_y
 
!$Id mode_top_bound COMMON comconstr && pi
 
!$Header!CDK comgeom COMMON comgeom aire
 
integer, save, private jjn_u
 
logical, save, private guide_p
 
!$Header!CDK comgeom COMMON comgeom rlatu
 
real, dimension(:,:,:), allocatable, save, private tnat2
 
subroutine tau2alpha(typ, pim, pjm, factt, taumin, taumax, alpha)
 
integer, save, private iguide_int
 
logical, save, private invert_p
 
real, dimension(:), allocatable, save, private psgui2
 
subroutine pression_p(ngrid, ap, bp, ps, p)
 
!$Header llmm1 INTEGER ip1jm
 
subroutine register_swapfieldhallo(FieldS, FieldR, ij, ll, jj_Nb_New, Up, Down, a_request)
 
!$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
 
subroutine q_sat(np, temp, pres, qsat)
 
real, save, private lat_min_g
 
real, dimension(:,:), allocatable, save, private tgui2
 
!$Header!CDK comgeom COMMON comgeom alpha1p4
 
integer, save, private ijb_u
 
subroutine massbar_p(masse, massebx, masseby)
 
!$Header!CDK comgeom COMMON comgeom aireu
 
logical, save, private guide_teta
 
logical, save, private guide_u
 
real, dimension(:,:), allocatable, save, private tgui1
 
real, dimension(:,:,:), allocatable, save, private vnat1
 
integer, save, private ije_v
 
subroutine guide_addfield(hsize, vsize, field, alpha)
 
!$Id mode_top_bound COMMON comconstr cpp
 
integer, save, private ijb_v
 
logical, save, private guide_reg
 
logical, save, private guide_hr
 
real, dimension(:), allocatable, save, private alpha_pcor
 
real, save, private tau_max_u
 
subroutine guide_read2d(timestep)
 
subroutine guide_zonave(typ, hsize, vsize, field)
 
subroutine guide_out(varname, hsize, vsize, field, factt)
 
integer, save, private jje_v
 
logical, save, private guide_2d
 
real, save, private tau_lon
 
integer, save, private ijn_v
 
subroutine guide_read(timestep)
 
logical, save, private gamma4
 
integer, save, private nlevnc
 
!$Id mode_top_bound COMMON comconstr daysec
 
!$Header!CDK comgeom COMMON comgeom rlonu
 
!$Header!CDK comgeom COMMON comgeom rlatv
 
real, dimension(:,:), allocatable, save, private psnat1
 
real, save, private tau_max_t
 
subroutine sendrequest(a_Request)
 
subroutine correctbid(iim, nl, x)
 
real, dimension(:,:), allocatable, save, private psnat2
 
real, dimension(:,:), allocatable, save, private qgui2
 
!$Header!CDK comgeom COMMON comgeom alpha3p4
 
real, save, private tau_max_v
 
!$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
 
subroutine exner_hyb_p(ngrid, ps, p, pks, pk, pkf)
 
real, dimension(:), allocatable, save, private alpha_p
 
!$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
 
real, dimension(:,:,:), allocatable, save, private pnat2
 
subroutine coordij(lon, lat, ilon, jlat)
 
integer, save, private ije_u
 
real, save, private lon_max_g
 
!$Header!CDK comgeom COMMON comgeom alpha2p3
 
real, save, private lat_max_g
 
integer, save, private guide_plevs
 
!$Header!c!c!c include serre h!c REAL grossismy
 
real, save, private tau_min_p
 
!$Id mode_top_bound COMMON comconstr dtvr
 
real, save, private tau_max_p
 
real, dimension(:,:), allocatable, save, private ugui1
 
real, save, private tau_min_u
 
real, save, private tau_max_q
 
real, save, private lon_min_g
 
c c zjulian c cym CALL iim cym klev iim
 
logical, save, private ini_anal
 
!$Header!c!c!c include serre h!c REAL clat
 
real, dimension(:), allocatable, save, private bpnc
 
real, save, private tau_min_q
 
real, dimension(:), allocatable, save, private alpha_q
 
real, dimension(:), allocatable, save, private alpha_t
 
integer, save, private iguide_read
 
logical, save, private guide_v
 
subroutine guide_main(itau, ucov, vcov, teta, q, masse, ps)
 
real, dimension(:), allocatable, save, private apnc
 
!$Header!CDK comgeom COMMON comgeom cv
 
subroutine guide_interp(psi, teta)
 
real, dimension(:), allocatable, save, private psgui1
 
real, dimension(:,:,:), allocatable, save, private vnat2
 
integer, save, private jjn_v
 
subroutine waitrequest(a_Request)
 
real, dimension(:,:,:), allocatable, save, private unat2
 
!$Header!CDK comgeom COMMON comgeom airev
 
!$Header!CDK comgeom COMMON comgeom rlonv
 
integer, save, private ijn_u