14 USE ioipsl
, ONLY: getin
30 include
"dimensions.h"
44 REAL,
INTENT(OUT) :: time_0
58 REAL,
ALLOCATABLE :: vcov_glo(:,:),ucov_glo(:,:),teta_glo(:,:)
59 REAL,
ALLOCATABLE :: q_glo(:,:),masse_glo(:,:),ps_glo(:)
60 REAL,
ALLOCATABLE :: phis_glo(:)
65 REAL ddsin,zsig,tetapv,w_pv
70 REAL teta0,ttp,delt_y,delt_z,eps
74 REAL phi_pv,dphi_pv,gam_pv
81 character(len=*),
parameter :: modname=
"iniacademic"
82 character(len=80) :: abort_message
86 write(
lunout,*) trim(modname),
" error: if read_start is set to ", &
87 " false then iflag_phys should not be 1"
88 write(
lunout,*)
"You most likely want an aquaplanet initialisation", &
89 " (iflag_phys >= 100)"
90 call abort_gcm(modname,
"incompatible iflag_phys==1 and read_start==.false.",1)
140 CALL getin(
'ok_geost',ok_geost)
143 CALL getin(
'k_j',k_f)
146 CALL getin(
'k_c_s',k_c_s)
149 CALL getin(
'k_c_a',k_c_a)
153 CALL getin(
'teta0',teta0)
155 CALL getin(
'ttp',ttp)
157 CALL getin(
'eps',eps)
159 CALL getin(
'delt_y',delt_y)
161 CALL getin(
'delt_z',delt_z)
164 CALL getin(
'ok_pv',ok_pv)
166 CALL getin(
'phi_pv',phi_pv)
167 phi_pv=phi_pv*
pi/180.
169 CALL getin(
'dphi_pv',dphi_pv)
170 dphi_pv=dphi_pv*
pi/180.
172 CALL getin(
'gam_pv',gam_pv)
179 knewt_t(l)=(k_c_s-k_c_a)*max(0.,(zsig-0.7)/0.3)
180 kfrict(l)=k_f*max(0.,(zsig-0.7)/0.3)
183 clat4((j-1)*iip1+1:j*iip1)=cos(
rlatu(j))**4
189 tetastrat=ttp*zsig**(-
kappa)
191 IF ((ok_pv).AND.(zsig.LT.0.1))
THEN
192 tetapv=tetastrat*(zsig*10.)**(
kappa*
cpp*gam_pv/1000./
g)
197 tetajl(j,l)=teta0-delt_y*ddsin*ddsin+eps*ddsin &
198 -delt_z*(1.-ddsin*ddsin)*log(zsig)
200 tetajl(j,l)=teta0+(delt_y* &
201 ((sin(
rlatu(j)*3.14159*eps+0.0001))**2) &
202 / ((
rlatu(j)*3.14159*eps+0.0001)**2)) &
206 w_pv=(1.-tanh((
rlatu(j)-phi_pv)/dphi_pv))/2.
207 tetastrat=tetastrat*(1.-w_pv)+tetapv*w_pv
208 tetajl(j,l)=max(tetajl(j,l),tetastrat)
218 tetarappel(ij,l)=tetajl(j,l)
248 if (pressure_exner)
then
256 teta_glo(:,:)=tetarappel(:,:)
307 teta_glo(ij,l)=teta_glo(ij,l)*(1.+0.005*ran1(idum))
314 teta_glo(ij+
iim,l)=teta_glo(ij,l)
329 deallocate(masse_glo)
subroutine check_isotopes(q, ijb, ije, err_msg)
!$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
subroutine iniacademic_loc(vcov, ucov, teta, q, masse, ps, phis, time_0)
!$Id mode_top_bound COMMON comconstr daysec
subroutine sw_case_williamson91_6_loc(vcov, ucov, teta, masse, ps)
!$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
c c zjulian c cym CALL iim cym klev iim
subroutine ugeostr(phi, ucov)
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