1 SUBROUTINE dynetat0_loc(fichnom,vcov,ucov,teta,q,masse,ps,phis,time)
 
   10   USE netcdf
, ONLY: nf90_open,  nf90_inquire_dimension, nf90_inq_varid,        &
 
   11       nf90_nowrite, nf90_close, nf90_inquire_variable,  nf90_get_var, nf90_noerr
 
   15   include 
"dimensions.h" 
   22   include 
"description.h" 
   28   CHARACTER(LEN=*), 
INTENT(IN) :: fichnom          
 
   38   CHARACTER(LEN=256) :: msg, var, modname
 
   39   INTEGER, 
PARAMETER :: length=100
 
   40   INTEGER :: iq, fID, vID, idecal, ierr
 
   41   REAL    :: time, tab_cntrl(length)               
 
   42   REAL,             
ALLOCATABLE :: vcov_glo(:,:),masse_glo(:,:),   ps_glo(:)
 
   43   REAL,             
ALLOCATABLE :: ucov_glo(:,:),    q_glo(:,:), phis_glo(:)
 
   44   REAL,             
ALLOCATABLE :: teta_glo(:,:)
 
   46   modname=
"dynetat0_loc" 
   50   CALL err(nf90_open(var,nf90_nowrite,fid),
"open",var)
 
   56     WRITE(
lunout,*)
'NOTE NOTE NOTE : Planeto-like start files' 
   60     WRITE(
lunout,*)
'NOTE NOTE NOTE : Earth-like start files' 
   68   rad        = tab_cntrl(idecal+1)
 
   69   omeg       = tab_cntrl(idecal+2)
 
   70   g          = tab_cntrl(idecal+3)
 
   71   cpp        = tab_cntrl(idecal+4)
 
   72   kappa      = tab_cntrl(idecal+5)
 
   73   daysec     = tab_cntrl(idecal+6)
 
   74   dtvr       = tab_cntrl(idecal+7)
 
   75   etot0      = tab_cntrl(idecal+8)
 
   76   ptot0      = tab_cntrl(idecal+9)
 
   77   ztot0      = tab_cntrl(idecal+10)
 
   78   stot0      = tab_cntrl(idecal+11)
 
   79   ang0       = tab_cntrl(idecal+12)
 
   80   pa         = tab_cntrl(idecal+13)
 
   81   preff      = tab_cntrl(idecal+14)
 
   83   clon       = tab_cntrl(idecal+15)
 
   84   clat       = tab_cntrl(idecal+16)
 
   88   IF ( tab_cntrl(idecal+19)==1. )  
THEN 
   96     ysinus  = tab_cntrl(idecal+22)==1.
 
  104   WRITE(
lunout,*)trim(modname)//
': rad,omeg,g,cpp,kappa',
rad,omeg,
g,
cpp,
kappa 
  117   IF(nf90_inq_varid(fid,var,vid)/=nf90_noerr) 
THEN 
  118     WRITE(
lunout,*)trim(modname)//
": missing field <temps>" 
  119     WRITE(
lunout,*)trim(modname)//
": trying with <Time>"; var=
"Time" 
  120     CALL err(nf90_inq_varid(fid,var,vid),
"inq",var)
 
  122   CALL err(nf90_get_var(fid,vid,time),
"get",var)
 
  152     IF(nf90_inq_varid(fid,var,vid)==nf90_noerr) 
THEN 
  155     WRITE(
lunout,*)trim(modname)//
": Tracer <"//trim(var)//
"> is missing" 
  156     WRITE(
lunout,*)
"         It is hence initialized to zero" 
  167   CALL err(nf90_close(fid),
"close",fichnom)
 
  176   INTEGER,          
INTENT(IN) :: n1, n2
 
  177   CHARACTER(LEN=*), 
INTENT(IN) :: str1, str2
 
  178   CHARACTER(LEN=256) :: s1, s2
 
  180     s1=
'value of '//trim(str1)//
' =' 
  181     s2=
' read in starting file differs from parametrized '//trim(str2)//
' =' 
  182     WRITE(msg,
'(10x,a,i4,2x,a,i4)'),s1,n1,s2,n2
 
  183     CALL abort_gcm(trim(modname),trim(msg),1)
 
  189   CHARACTER(LEN=*), 
INTENT(IN)  :: var
 
  190   REAL,             
INTENT(OUT) :: v(:)
 
  191   REAL,             
ALLOCATABLE :: w2(:,:), w3(:,:,:)
 
  192   INTEGER :: nn(3), dids(3), k, nd, ntot
 
  194   CALL err(nf90_inq_varid(fid,var,vid),
"inq",var)
 
  195   ierr=nf90_inquire_variable(fid,vid,ndims=nd)
 
  197     CALL err(nf90_get_var(fid,vid,v),
"get",var); 
RETURN 
  199   ierr=nf90_inquire_variable(fid,vid,dimids=dids)
 
  200   DO k=1,nd; ierr=nf90_inquire_dimension(fid,dids(k),len=nn(k));
 END DO 
  201   ntot=product(nn(1:nd))
 
  203     CASE(2); 
ALLOCATE(w2(nn(1),nn(2)))
 
  204       CALL err(nf90_get_var(fid,vid,w2),
"get",var)
 
  205       v=reshape(w2,[ntot]); 
DEALLOCATE(w2)
 
  206     CASE(3); 
ALLOCATE(w3(nn(1),nn(2),nn(3)))
 
  207       CALL err(nf90_get_var(fid,vid,w3),
"get",var)
 
  208       v=reshape(w3,[ntot]); 
DEALLOCATE(w3)
 
  214   CHARACTER(LEN=*), 
INTENT(IN)  :: var
 
  215   REAL,             
INTENT(OUT) :: v(:,:)
 
  216   REAL,             
ALLOCATABLE :: w4(:,:,:,:)
 
  217   INTEGER :: nn(4), dids(4), k, nd
 
  218   CALL err(nf90_inq_varid(fid,var,vid),
"inq",var)
 
  219   ierr=nf90_inquire_variable(fid,vid,dimids=dids,ndims=nd)
 
  220   DO k=1,nd; ierr=nf90_inquire_dimension(fid,dids(k),len=nn(k));
 END DO 
  221   ALLOCATE(w4(nn(1),nn(2),nn(3),nn(4)))
 
  222   CALL err(nf90_get_var(fid,vid,w4),
"get",var)
 
  223   v=reshape(w4,[nn(1)*nn(2),nn(3)]); 
DEALLOCATE(w4)
 
  227 SUBROUTINE err(ierr,typ,nam)
 
  228   INTEGER,          
INTENT(IN) :: ierr   
 
  229   CHARACTER(LEN=*), 
INTENT(IN) :: typ    
 
  230   CHARACTER(LEN=*), 
INTENT(IN) :: nam    
 
  231   IF(ierr==nf90_noerr) 
RETURN 
  233     CASE(
'inq');   msg=
"Field <"//trim(nam)//
"> is missing" 
  234     CASE(
'get');   msg=
"Reading failed for <"//trim(nam)//
">" 
  235     CASE(
'open');  msg=
"File opening failed for <"//trim(nam)//
">" 
  236     CASE(
'close'); msg=
"File closing failed for <"//trim(nam)//
">" 
  238   CALL abort_gcm(trim(modname),trim(msg),ierr)
 
!$Header llmm1 INTEGER ip1jmp1
 
!$Header!c!c!c include serre h!c REAL && grossismx
 
!$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
 
!$Header llmm1 INTEGER ip1jm
 
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
 
!$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
 
subroutine dynetat0_loc(fichnom, vcov, ucov, teta, q, masse, ps, phis, time)
 
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