4 SUBROUTINE iniacademic(vcov,ucov,teta,q,masse,ps,phis,time_0)
10 USE ioipsl
, ONLY: getin
28 include
"dimensions.h"
42 REAL,
INTENT(OUT) :: time_0
51 REAL,
INTENT(OUT) :: phis(
ip1jmp1)
60 REAL ddsin,zsig,tetapv,w_pv
65 REAL teta0,ttp,delt_y,delt_z,eps
69 REAL phi_pv,dphi_pv,gam_pv
76 character(len=*),
parameter :: modname=
"iniacademic"
77 character(len=80) :: abort_message
82 write(
lunout,*) trim(modname),
" error: if read_start is set to ", &
83 " false then iflag_phys should not be 1"
84 write(
lunout,*)
"You most likely want an aquaplanet initialisation", &
85 " (iflag_phys >= 100)"
86 call abort_gcm(modname,
"incompatible iflag_phys==1 and read_start==.false.",1)
136 CALL getin(
'ok_geost',ok_geost)
139 CALL getin(
'k_j',k_f)
142 CALL getin(
'k_c_s',k_c_s)
145 CALL getin(
'k_c_a',k_c_a)
149 CALL getin(
'teta0',teta0)
151 CALL getin(
'ttp',ttp)
153 CALL getin(
'eps',eps)
155 CALL getin(
'delt_y',delt_y)
157 CALL getin(
'delt_z',delt_z)
160 CALL getin(
'ok_pv',ok_pv)
162 CALL getin(
'phi_pv',phi_pv)
163 phi_pv=phi_pv*
pi/180.
165 CALL getin(
'dphi_pv',dphi_pv)
166 dphi_pv=dphi_pv*
pi/180.
168 CALL getin(
'gam_pv',gam_pv)
175 knewt_t(l)=(k_c_s-k_c_a)*max(0.,(zsig-0.7)/0.3)
176 kfrict(l)=k_f*max(0.,(zsig-0.7)/0.3)
179 clat4((j-1)*iip1+1:j*iip1)=cos(
rlatu(j))**4
185 tetastrat=ttp*zsig**(-
kappa)
187 IF ((ok_pv).AND.(zsig.LT.0.1))
THEN
188 tetapv=tetastrat*(zsig*10.)**(
kappa*
cpp*gam_pv/1000./
g)
193 tetajl(j,l)=teta0-delt_y*ddsin*ddsin+eps*ddsin &
194 -delt_z*(1.-ddsin*ddsin)*log(zsig)
196 tetajl(j,l)=teta0+(delt_y* &
197 ((sin(
rlatu(j)*3.14159*eps+0.0001))**2) &
198 / ((
rlatu(j)*3.14159*eps+0.0001)**2)) &
202 w_pv=(1.-tanh((
rlatu(j)-phi_pv)/dphi_pv))/2.
203 tetastrat=tetastrat*(1.-w_pv)+tetapv*w_pv
204 tetajl(j,l)=max(tetajl(j,l),tetastrat)
214 tetarappel(ij,l)=tetajl(j,l)
236 if (pressure_exner)
then
244 teta(:,:)=tetarappel(:,:)
261 if (i == 1) q(:,:,i)=1.e-10
262 if (i == 2) q(:,:,i)=1.e-15
263 if (i.gt.2) q(:,:,i)=0.
269 q(:,:,i)=q(:,:,
iqpere(i)) &
271 & *(q(:,:,
iqpere(i))/30.e-3) &
294 teta(ij,l)=teta(ij,l)*(1.+0.005*ran1(idum))
301 teta(ij+
iim,l)=teta(ij,l)
!$Header llmm1 INTEGER ip1jmp1
!$Id mode_top_bound COMMON comconstr g
real, dimension(niso_possibles), save tnat
!$Id mode_top_bound COMMON comconstr kappa
subroutine exner_hyb(ngrid, ps, p, pks, pk, pkf)
!$Id mode_top_bound COMMON comconstr omeg dissip_zref ihf INTEGER im
logical, save ok_iso_verif
integer, dimension(:), allocatable, save phase_num
subroutine exner_milieu(ngrid, ps, p, pks, pk, pkf)
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
!$Id mode_top_bound COMMON comconstr && pi
!$Header!CDK comgeom COMMON comgeom rlatu
!$Id ysinus ok_gradsfile hybrid COMMON logici iflag_phys
subroutine geopot(ngrid, teta, pk, pks, phis, phi)
integer, dimension(:,:), allocatable, save iqiso
!$Header llmm1 INTEGER ip1jm
subroutine pression(ngrid, ap, bp, ps, p)
!$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
integer, dimension(:), allocatable, save zone_num
!$Id mode_top_bound COMMON comconstr cpp
!$Id mode_top_bound COMMON comconstr daysec
!$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 mode_top_bound COMMON comconstr dtvr
real, dimension(niso_possibles), save alpha_ideal
subroutine check_isotopes_seq(q, ip1jmp1, err_msg)
subroutine sw_case_williamson91_6(vcov, ucov, teta, masse, ps)
c c zjulian c cym CALL iim cym klev iim
subroutine ugeostr(phi, ucov)
subroutine iniacademic(vcov, ucov, teta, q, masse, ps, phis, time_0)
logical, save ok_isotopes
integer, dimension(:), allocatable, save iqpere
subroutine massdair(p, masse)
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