4 SUBROUTINE inidissip ( lstardis,nitergdiv,nitergrot,niterh  , &
 
   16   include 
"dimensions.h" 
   18   include 
"comdissipn.h" 
   24   LOGICAL,
INTENT(in) :: lstardis
 
   25   INTEGER,
INTENT(in) :: nitergdiv,nitergrot,niterh
 
   26   REAL,
INTENT(in) :: tetagdiv,tetagrot,tetatemp
 
   28   integer, 
INTENT(in):: vert_prof_dissip
 
   35   REAL fact,zvert(
llm),zz
 
   38   REAL ullm,vllm,umin,vmin,zhmin,zhmax
 
   44   character (len=80) :: abort_message
 
   71      zh(ij) = ran1(idum) -.5
 
   78   IF ( zhmin .GE. zhmax  )     
THEN 
   79      write(
lunout,*)
'  Inidissip  zh min max  ',zhmin,zhmax
 
   80      abort_message=
'probleme generateur alleatoire dans inidissip' 
   81      call abort_gcm(
'inidissip',abort_message,1)
 
   87         CALL divgrad2(1,zh,deltap,niterh,divgra)
 
   89         CALL divgrad (1,zh,niterh,divgra)
 
   92      zllm  = abs(maxval(divgra))
 
   99      cdivh = zllm ** ( -1./niterh )
 
  104   write(
lunout,*)
'inidissip: calcul des valeurs propres' 
  109         zu(ij)  = ran1(idum) -.5
 
  113         zv(ij) = ran1(idum) -.5
 
  118      CALL minmax(iip1*jjm, zv,vmin,vllm )
 
  127               CALL gradiv2( 1,zu,zv,nitergdiv,gx,gy )
 
  129               CALL gradiv ( 1,zu,zv,nitergdiv,gx,gy )
 
  133               CALL nxgraro2( 1,zu,zv,nitergrot,gx,gy )
 
  135               CALL nxgrarot( 1,zu,zv,nitergrot,gx,gy )
 
  139         zllm = max(abs(maxval(gx)), abs(maxval(gy)))
 
  148            cdivu  = zllm **( -1./nitergdiv )
 
  154            crot   = zllm **( -1./nitergrot )
 
  164   fact    = 
rad*24./
REAL(jjm)
 
  168   write(
lunout,*)
'inidissip: coef h ', fact/cdivh, 1./cdivh
 
  175   if (vert_prof_dissip == 1) 
then 
  189         zvert(l)= fact -( fact-1.)/( 1.+zz*zz )
 
  194   write(
lunout,*)
'inidissip: Constantes de temps de la diffusion horizontale' 
  201      tetah(l)      = zvert(l)/tetatemp
 
  205      IF( tetamin.GT. (1./   
tetah(l)) ) tetamin = 1./    
tetah(l)
 
!$Id mode_top_bound COMMON comconstr dtdiss
 
!$Id mode_top_bound COMMON comconstr omeg dissip_factz
 
!$Header llmm1 INTEGER ip1jmp1
 
subroutine divgrad2(klevel, h, deltapres, lh, divgra)
 
!$Header cdivh!COMMON comdissipn tetaudiv(llm)
 
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
 
subroutine nxgraro2(klevel, xcov, ycov, lr, grx, gry)
 
!$Header llmm1 INTEGER ip1jm
 
!$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, save dissip_period
 
!$Id mode_top_bound COMMON comconstr rad
 
subroutine divgrad(klevel, h, lh, divgra)
 
subroutine minmax(imax, xi, zmin, zmax)
 
!$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 omeg dissip_deltaz
 
!$Id mode_top_bound COMMON comconstr dtvr
 
subroutine gradiv(klevel, xcov, ycov, ld, gdx, gdy)
 
!$Header!INCLUDE comdissip h COMMON comdissip tetatemp
 
subroutine filtreg(champ, nlat, nbniv, ifiltre, iaire, griscal, iter)
 
subroutine nxgrarot(klevel, xcov, ycov, lr, grx, gry)
 
subroutine inidissip(lstardis, nitergdiv, nitergrot, niterh, tetagdiv, tetagrot, tetatemp, vert_prof_dissip)
 
!$Header!gestion des impressions de sorties et de débogage la sortie standard prt_level COMMON comprint lunout
 
subroutine gradiv2(klevel, xcov, ycov, ld, gdx, gdy)