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