29 #include "dimensions.h" 
   37       REAL,
INTENT(out) :: ucov( iip1,
jjp1,
llm )
 
   38       REAL,
INTENT(out) :: vcov( iip1,jjm,
llm )
 
   39       REAL,
INTENT(in) :: pdt 
 
   43       REAL modv(iip1,
jjp1),zco,zsi
 
   44       REAL vpn,vps,upoln,upols,vpols,vpoln
 
   45       REAL u2(iip1,
jjp1),v2(iip1,jjm)
 
   47       REAL,
PARAMETER :: cfric=1.e-5
 
   48       LOGICAL,
SAVE :: firstcall=.
true.
 
   49       INTEGER,
SAVE :: friction_type=1
 
   50       CHARACTER(len=20) :: modname=
"friction" 
   51       CHARACTER(len=80) :: abort_message
 
   55         call getin(
"friction_type",friction_type)
 
   56         if ((friction_type.lt.0).or.(friction_type.gt.1)) 
then 
   57           abort_message=
"wrong friction type" 
   58           write(
lunout,*)
'Friction: wrong friction type',friction_type
 
   64       if (friction_type.eq.0) 
then 
   68             u2(i,j)=ucov(i,j,1)*ucov(i,j,1)*
unscu2(i,j)
 
   73             v2(i,j)=vcov(i,j,1)*vcov(i,j,1)*
unscv2(i,j)
 
   80             modv(i,j)=sqrt(0.5*(u2(i-1,j)+u2(i,j)+v2(i,j-1)+v2(i,j)))
 
   82          modv(1,j)=modv(iip1,j)
 
   94          vpn=vcov(i,1,1)/
cv(i,1)
 
   95          vps=vcov(i,jjm,1)/
cv(i,jjm)
 
  101       vpn=sqrt(upoln*upoln+vpoln*vpoln)/
pi 
  102       vps=sqrt(upols*upols+vpols*vpols)/
pi 
  107          modv(i,
jjp1)=modv(i,jjm)
 
  113             ucov(i,j,1)=ucov(i,j,1)
 
  114      s      -cfric*pdt*0.5*(modv(i+1,j)+modv(i,j))*ucov(i,j,1)
 
  116          ucov(iip1,j,1)=ucov(1,j,1)
 
  120             vcov(i,j,1)=vcov(i,j,1)
 
  121      s      -cfric*pdt*0.5*(modv(i,j+1)+modv(i,j))*vcov(i,j,1)
 
  123          vcov(iip1,j,1)=vcov(1,j,1)
 
  127       if (friction_type.eq.1) 
then 
  129           ucov(:,:,l)=ucov(:,:,l)*(1.-pdt*
kfrict(l))
 
  130           vcov(:,:,l)=vcov(:,:,l)*(1.-pdt*
kfrict(l))
 
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 unscu2
 
!$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
 
!$Header!CDK comgeom COMMON comgeom unscv2
 
!$Header!CDK comgeom COMMON comgeom rlonu
 
!$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
 
c c zjulian c cym CALL iim cym klev iim
 
subroutine friction(ucov, vcov, pdt)
 
!$Header!CDK comgeom COMMON comgeom cv
 
!$Header!gestion des impressions de sorties et de débogage la sortie standard prt_level COMMON comprint lunout
 
!$Header!CDK comgeom COMMON comgeom rlonv