17 #include "dimensions.h"
35 REAL alpha,beta,gama,delta,deltaz
39 integer :: ierr1,ierr2,ierr3,ierr4
45 REAL dz0,dz1,nhaut,sig1,esig,csig,zz
51 character(len=*),
parameter :: modname=
"disvert_noterre"
60 CALL getin(
'hybrid',hybrid)
61 write(
lunout,*) trim(modname),
': hybrid=',hybrid
65 open(99,file=
"esasig.def",status=
'old',form=
'formatted',
69 open(99,file=
"z2sig.def",status=
'old',form=
'formatted',
84 write(
lunout,*)
'*****************************'
85 write(
lunout,*)
'WARNING reading esasig.def'
86 write(
lunout,*)
'*****************************'
96 sig1=(1.-dz1)/tanh(.5*(
llm-1)/nhaut)
101 esig=-log((1./sig1-1.)*exp(-dz0)/esig)/(
llm-1.)
103 csig=(1./sig1-1.)/(exp(esig)-1.)
106 zz=csig*(exp(esig*(l-1.))-1.)
108 & * tanh(.5*(
llm+1-l)/nhaut)
112 quoi = 1. + 2.*
kappa
118 quand = sig(l+1)/ sig(l)
119 s(l-1) = quoi * (1.-quand) * s(l) + quand * s(l+1)
123 snorm=(1.-.5*sig(2)+
kappa*(1.-sig(2)))*s(1)+.5*sig(2)*s(2)
132 ELSE IF(ierr4.eq.0)
then
133 write(
lunout,*)
'****************************'
134 write(
lunout,*)
'Reading z2sig.def'
135 write(
lunout,*)
'****************************'
152 write(
lunout,*)
'didn t you forget something ??? '
153 write(
lunout,*)
'We need file z2sig.def ! (OR esasig.def)'
176 write(
lunout,*)
"*********************************"
177 write(
lunout,*)
"Using hybrid vertical coordinates"
183 bp(l) = exp( 1. - 1./(newsig**2) )
184 ap(l) =
pa * (newsig -
bp(l) )
189 write(
lunout,*)
"********************************"
190 write(
lunout,*)
"Using sigma vertical coordinates"
202 write(
lunout,*) trim(modname),
': BP '
204 write(
lunout,*) trim(modname),
': AP '
216 aps(l) = 0.5 *( ap(l) +ap(l+1))
217 bps(l) = 0.5 *(
bp(l) +
bp(l+1))
228 write(
lunout,*) trim(modname),
': BPs '
230 write(
lunout,*) trim(modname),
': APs'
238 write(
lunout,*)trim(modname),
' : PRESNIVS'
240 write(
lunout,*)
'Pseudo altitude of Presnivs : (for a scale ',
302 real x1, x2, sig,pa,preff, newsig, F
310 else if (sig*preff/pa.ge.0.25)
then
312 f=((1 -pa/preff)*exp(1-1./newsig**2)+(pa/preff)*newsig)/sig
316 newsig=(x1+newsig)*0.5
319 newsig=(x2+newsig)*0.5
323 IF(abs(10.*log(f)).LT.1.e-5)
goto 999
!$Id mode_top_bound COMMON comconstr kappa
!$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 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 pseudoalt(llm) common/comverti/disvert_type
subroutine sig_hybrid(sig, pa, preff, newsig)
subroutine disvert_noterre
!$Header!gestion des impressions de sorties et de débogage la sortie standard prt_level COMMON comprint lunout