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