Ignore:
Timestamp:
Apr 12, 2011, 11:16:02 AM (14 years ago)
Author:
slebonnois
Message:

Sebastien Lebonnois: sponge layer et dissip horizontale.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/libf/dyn3d/inidissip.F

    r1 r108  
    3131      INTEGER l,ij,idum,ii
    3232      REAL tetamin
    33       REAL pseudoz
     33      REAL Pup
    3434
    3535      REAL ran1
     
    177177c   --------------------------------------------------
    178178
    179       if (ok_strato .and. llm==39) then
    180          do l=1,llm
    181             pseudoz=8.*log(preff/presnivs(l))
    182             zvert(l)=1+
    183      s      (tanh((pseudoz-dissip_zref)/dissip_deltaz)+1.)/2.
    184      s      *(dissip_factz-1.)
    185          enddo
    186       else
    187          DO l=1,llm
    188             zvert(l)=1.
    189          ENDDO
    190          fact=2.
    191          DO l = 1, llm
    192             zz      = 1. - preff/presnivs(l)
    193             zvert(l)= fact -( fact-1.)/( 1.+zz*zz )
    194          ENDDO
     179c First step: going from 1 to dissip_fac_mid (in gcm.def)
     180c============
     181      DO l=1,llm
     182         zz      = 1. - preff/presnivs(l)
     183         zvert(l)= dissip_fac_mid -( dissip_fac_mid-1.)/( 1.+zz*zz )
     184      ENDDO
     185
     186         write(*,*) 'Dissipation : '
     187         write(*,*) 'Multiplication de la dissipation en altitude :',
     188         write(*,*) '  dissip_fac_mid =', dissip_fac_mid
     189
     190c Second step if ok_strato:  from dissip_fac_mid to dissip_fac_up (in gcm.def)
     191c==========================
     192c Utilisation de la fonction tangente hyperbolique pour augmenter
     193c arbitrairement la dissipation et donc la stabilite du modele a
     194c partir d'une certaine altitude.
     195
     196c   Le facteur multiplicatif de basse atmosphere etant deja pris
     197c   en compte, il faut diviser le facteur multiplicatif de haute
     198c   atmosphere par celui-ci.
     199
     200      if (ok_strato) then
     201
     202       Pup = dissip_pupstart*exp(-0.5*dissip_deltaz/dissip_hdelta)
     203       do l=1,llm
     204         zvert(l)= zvert(l)*(1.0+( (dissip_fac_up/dissip_fac_mid-1)
     205     &   *(1-(0.5*(1+tanh(-6./dissip_deltaz*
     206     &    (-dissip_hdelta*log(presnivs(l)/Pup))  ))))  ))
     207       enddo
     208
     209         write(*,*) '  dissip_fac_up =', dissip_fac_up
     210         write(*,*) 'Transition mid /up:  Pupstart,delta =',
     211     &             dissip_pupstart,'Pa', dissip_deltaz , '(km)'
     212
    195213      endif
    196214
Note: See TracChangeset for help on using the changeset viewer.