1 SUBROUTINE dynetat0(fichnom,vcov,ucov,teta,q,masse,ps,phis,time)
 
    9   USE netcdf
,      ONLY: nf90_open,  nf90_nowrite, nf90_inq_varid, nf90_noerr, &
 
   10                          nf90_close, nf90_get_var
 
   14   include 
"dimensions.h" 
   21   include 
"description.h" 
   27   CHARACTER(LEN=*), 
INTENT(IN) :: fichnom          
 
   28   REAL, 
INTENT(OUT) ::  vcov(iip1,jjm, 
llm)        
 
   29   REAL, 
INTENT(OUT) ::  ucov(iip1,
jjp1,
llm)        
 
   30   REAL, 
INTENT(OUT) ::  teta(iip1,
jjp1,
llm)        
 
   32   REAL, 
INTENT(OUT) :: masse(iip1,
jjp1,
llm)        
 
   33   REAL, 
INTENT(OUT) ::    ps(iip1,
jjp1)            
 
   34   REAL, 
INTENT(OUT) ::  phis(iip1,
jjp1)            
 
   37   CHARACTER(LEN=256) :: msg, var, modname
 
   38   INTEGER, 
PARAMETER :: length=100
 
   39   INTEGER :: iq, fID, vID, idecal
 
   40   REAL    :: time, tab_cntrl(length)               
 
   46   CALL err(nf90_open(var,nf90_nowrite,fid),
"open",var)
 
   52     WRITE(
lunout,*)
'NOTE NOTE NOTE : Planeto-like start files' 
   56     WRITE(
lunout,*)
'NOTE NOTE NOTE : Earth-like start files' 
   64   rad        = tab_cntrl(idecal+1)
 
   65   omeg       = tab_cntrl(idecal+2)
 
   66   g          = tab_cntrl(idecal+3)
 
   67   cpp        = tab_cntrl(idecal+4)
 
   68   kappa      = tab_cntrl(idecal+5)
 
   69   daysec     = tab_cntrl(idecal+6)
 
   70   dtvr       = tab_cntrl(idecal+7)
 
   71   etot0      = tab_cntrl(idecal+8)
 
   72   ptot0      = tab_cntrl(idecal+9)
 
   73   ztot0      = tab_cntrl(idecal+10)
 
   74   stot0      = tab_cntrl(idecal+11)
 
   75   ang0       = tab_cntrl(idecal+12)
 
   76   pa         = tab_cntrl(idecal+13)
 
   77   preff      = tab_cntrl(idecal+14)
 
   79   clon       = tab_cntrl(idecal+15)
 
   80   clat       = tab_cntrl(idecal+16)
 
   84   IF ( tab_cntrl(idecal+19)==1. )  
THEN 
   92     ysinus  = tab_cntrl(idecal+22)==1.
 
  100   WRITE(
lunout,*)trim(modname)//
': rad,omeg,g,cpp,kappa',
rad,omeg,
g,
cpp,
kappa 
  112   IF(nf90_inq_varid(fid,var,vid)/=nf90_noerr) 
THEN 
  113     WRITE(
lunout,*)trim(modname)//
": missing field <temps>" 
  114     WRITE(
lunout,*)trim(modname)//
": trying with <Time>"; var=
"Time" 
  115     CALL err(nf90_inq_varid(fid,var,vid),
"inq",var)
 
  117   CALL err(nf90_get_var(fid,vid,time),
"get",var)
 
  128     IF(nf90_inq_varid(fid,var,vid)==nf90_noerr) 
THEN 
  129       CALL err(nf90_get_var(fid,vid,q(:,:,:,iq)),
"get",var); cycle
 
  131     WRITE(
lunout,*)trim(modname)//
": Tracer <"//trim(var)//
"> is missing" 
  132     WRITE(
lunout,*)
"         It is hence initialized to zero" 
  143   CALL err(nf90_close(fid),
"close",fichnom)
 
  152   INTEGER,          
INTENT(IN) :: n1, n2
 
  153   CHARACTER(LEN=*), 
INTENT(IN) :: str1, str2
 
  154   CHARACTER(LEN=256) :: s1, s2
 
  156     s1=
'value of '//trim(str1)//
' =' 
  157     s2=
' read in starting file differs from parametrized '//trim(str2)//
' =' 
  158     WRITE(msg,
'(10x,a,i4,2x,a,i4)'),s1,n1,s2,n2
 
  159     CALL abort_gcm(trim(modname),trim(msg),1)
 
  165   CHARACTER(LEN=*), 
INTENT(IN)  :: var
 
  166   REAL,             
INTENT(OUT) :: v(:)
 
  167   CALL err(nf90_inq_varid(fid,var,vid),
"inq",var)
 
  168   CALL err(nf90_get_var(fid,vid,v),
"get",var)
 
  173   CHARACTER(LEN=*), 
INTENT(IN)  :: var
 
  174   REAL,             
INTENT(OUT) :: v(:,:)
 
  175   CALL err(nf90_inq_varid(fid,var,vid),
"inq",var)
 
  176   CALL err(nf90_get_var(fid,vid,v),
"get",var)
 
  181   CHARACTER(LEN=*), 
INTENT(IN)  :: var
 
  182   REAL,             
INTENT(OUT) :: v(:,:,:)
 
  183   CALL err(nf90_inq_varid(fid,var,vid),
"inq",var)
 
  184   CALL err(nf90_get_var(fid,vid,v),
"get",var)
 
  188 SUBROUTINE err(ierr,typ,nam)
 
  189   INTEGER,          
INTENT(IN) :: ierr   
 
  190   CHARACTER(LEN=*), 
INTENT(IN) :: typ    
 
  191   CHARACTER(LEN=*), 
INTENT(IN) :: nam    
 
  192   IF(ierr==nf90_noerr) 
RETURN 
  194     CASE(
'inq');   msg=
"Field <"//trim(nam)//
"> is missing" 
  195     CASE(
'get');   msg=
"Reading failed for <"//trim(nam)//
">" 
  196     CASE(
'open');  msg=
"File opening failed for <"//trim(nam)//
">" 
  197     CASE(
'close'); msg=
"File closing failed for <"//trim(nam)//
">" 
  199   CALL abort_gcm(trim(modname),trim(msg),ierr)
 
!$Header!c!c!c include serre h!c REAL && grossismx
 
subroutine dynetat0(fichnom, vcov, ucov, teta, q, masse, ps, phis, time)
 
!$Id mode_top_bound COMMON comconstr g
 
real, dimension(niso_possibles), save tnat
 
subroutine get_var1(var, v)
 
!$Id mode_top_bound COMMON comconstr kappa
 
!$Header!c!c!c include serre h!c REAL clon
 
!$Id mode_top_bound COMMON comconstr omeg dissip_zref ihf INTEGER im
 
integer, dimension(:), allocatable, save phase_num
 
character(len=10), save planet_type
 
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
 
!$Header!CDK comgeom COMMON comgeom aire
 
!$Header!CDK comgeom COMMON comgeom rlatu
 
integer, dimension(:,:), allocatable, save iqiso
 
subroutine err(ierr, typ, nam)
 
!$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 get_var3(var, v)
 
!$Id mode_top_bound COMMON comconstr rad
 
subroutine get_var2(var, v)
 
integer, dimension(:), allocatable, save zone_num
 
!$Id mode_top_bound COMMON comconstr cpp
 
!$Id mode_top_bound COMMON comconstr daysec
 
!$Header!CDK comgeom COMMON comgeom rlonu
 
!$Header!CDK comgeom COMMON comgeom rlatv
 
character(len=20), dimension(:), allocatable, save tname
 
!$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
 
!$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
 
!$Header!c!c!c include serre h!c REAL grossismy
 
!$Id mode_top_bound COMMON comconstr dtvr
 
real, dimension(niso_possibles), save alpha_ideal
 
c c zjulian c cym CALL iim cym klev iim
 
!$Header!c!c!c include serre h!c REAL clat
 
logical, save ok_isotopes
 
integer, dimension(:), allocatable, save iqpere
 
!$Header!CDK comgeom COMMON comgeom cv
 
integer, dimension(:), allocatable, save iso_num
 
integer, dimension(:), allocatable, save iso_indnum
 
!$Header!gestion des impressions de sorties et de débogage la sortie standard prt_level COMMON comprint lunout
 
subroutine check_dim(n1, n2, str1, str2)
 
!$Header!CDK comgeom COMMON comgeom rlonv