Changeset 1088


Ignore:
Timestamp:
Oct 31, 2013, 2:49:26 PM (11 years ago)
Author:
tnavarro
Message:

Added a freedust mode, to be used with doubleq (for data assimilation). Dust is not lifted, not rescaled, dust opacity is predicted instead of being forced.

Location:
trunk/LMDZ.MARS
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.MARS/README

    r1047 r1088  
    19411941- Also updated EOF routines, everything is now in eofdump_mod.F90
    19421942- Removed unused routine lectfux.F (in dyn3d)
     1943
     1944== 31/10/2013 == TN
     1945- Added a freedust mode, to be used with doubleq :
     1946  Dust is not lifted, not rescaled, dust opacity is predicted instead of being forced.
     1947  A corresponding freedust option is added in newstart to rescale dust to acceptable values
     1948  before such a GCM run, although 'q=profile' could be used too.
  • trunk/LMDZ.MARS/libf/dyn3d/newstart.F

    r1047 r1088  
    1818      use ioipsl_getincom, only: getin
    1919      use infotrac, only: iniadvtrac, nqtot, tnom
    20       use tracer_mod, only: noms, igcm_h2o_vap, igcm_h2o_ice
     20      use tracer_mod, only: noms, igcm_dust_number, igcm_dust_mass,
     21     &                      igcm_h2o_vap, igcm_h2o_ice
    2122      use surfdat_h, only: phisfi, z0, zmea, zstd, zsig, zgam, zthe,
    2223     &                     albedodat, z0_default
     
    497498     $ tracer'
    498499      write(*,*) 'q=profile    : specify a profile for a tracer'
     500      write(*,*) 'freedust     : rescale dust to a true value'
    499501      write(*,*) 'ini_q        : tracers initialization for chemistry
    500502     $ and water vapour'
     
    842844             endif
    843845             
     846c       q=profile : initialize tracer with a given profile
     847c       --------------------------------------------------
     848        else if (trim(modif) .eq. 'freedust') then
     849          do l=1,llm
     850            do j=1,jjp1
     851              do i=1,iip1
     852                q(i,j,l,igcm_dust_number)=
     853     &                q(i,j,l,igcm_dust_number) * 1e-3 ! grosso modo
     854                q(i,j,l,igcm_dust_mass)=
     855     &                q(i,j,l,igcm_dust_mass)   * 1e-3 ! grosso modo
     856              end do
     857            end do
     858          end do
     859
     860         ! We want to have the very same value at lon -180 and lon 180
     861          do l = 1,llm
     862             do j = 1,jjp1
     863                do iq = 1,nqtot
     864                   q(iip1,j,l,iq) = q(1,j,l,iq)
     865                end do
     866             end do
     867          end do
    844868
    845869c       ini_q : Initialize tracers for chemistry
  • trunk/LMDZ.MARS/libf/phymars/aeropacity.F

    r1047 r1088  
    205205c     Vertical column optical depth at "odpref" Pa
    206206c     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    207       IF(iaervar.eq.1) THEN
     207      IF(freedust) THEN
     208         tauref(:) = 0. ! tauref is computed after, instead of being forced
     209
     210      ELSE IF(iaervar.eq.1) THEN
    208211         do ig=1, ngrid
    209212          tauref(ig)=max(tauvis,1.e-9) ! tauvis=cste (set in callphys.def
     
    431434c -----------------------------------------------------------------
    432435
    433 c     Temporary scaling factor
    434       taudusttmp(1:ngrid)=0.
    435       DO iaer=1,naerdust
    436         DO l=1,nlayer
    437           DO ig=1,ngrid
    438 c           Scaling factor
    439             taudusttmp(ig) = taudusttmp(ig) +
    440      &                       aerosol(ig,l,iaerdust(iaer))
    441           ENDDO
    442         ENDDO
    443       ENDDO
    444 
    445 c     Saved scaling factor
    446       DO ig=1,ngrid
    447           tauscaling(ig) = tauref(ig) *
    448      &                     pplev(ig,1) / odpref / taudusttmp(ig)
    449 c          tauscaling(ig) = 1.e-4
    450       ENDDO
     436      IF (freedust) THEN
     437          tauscaling(:) = 1.
     438
     439      ELSE
     440c       Temporary scaling factor
     441        taudusttmp(1:ngrid)=0.
     442        DO iaer=1,naerdust
     443          DO l=1,nlayer
     444            DO ig=1,ngrid
     445c             Scaling factor
     446              taudusttmp(ig) = taudusttmp(ig) +
     447     &                         aerosol(ig,l,iaerdust(iaer))
     448            ENDDO
     449          ENDDO
     450        ENDDO
     451
     452c       Saved scaling factor
     453        DO ig=1,ngrid
     454            tauscaling(ig) = tauref(ig) *
     455     &                       pplev(ig,1) / odpref / taudusttmp(ig)
     456c            tauscaling(ig) = 1.e-4
     457        ENDDO
     458
     459      ENDIF
    451460
    452461c     Opacity computation
     
    459468        ENDDO
    460469      ENDDO
     470
     471      IF (freedust) THEN
     472        ! tauref has been initialized to 0 before.
     473        DO l=1,nlayer
     474          DO ig=1,ngrid
     475            tauref(ig) = tauref(ig) +
     476     &                aerosol(ig,l,iaerdust(iaer))
     477          ENDDO
     478        ENDDO
     479      ENDIF
    461480     
    462481c output for debug
  • trunk/LMDZ.MARS/libf/phymars/callkeys.h

    r1028 r1088  
    1111     &   ,callmolvis,callmoldiff,thermochem,thermoswater,callemis       &
    1212     &   ,callg2d,linear,rayleigh,tracer,active,doubleq,submicron       &
    13      &   ,lifting,callddevil,scavenging,sedimentation,activice,water    &
    14      &   ,tifeedback,microphys,caps,photochem,calltherm                 &
     13     &   ,lifting,freedust,callddevil,scavenging,sedimentation          &
     14     &   ,activice,water,tifeedback,microphys,caps,photochem,calltherm  &
    1515     &   ,callrichsl,callslope,tituscap
    1616     
     
    5353      logical tracer
    5454      integer dustbin
     55      logical freedust
    5556      logical active,doubleq,submicron,lifting,callddevil,scavenging
    5657      logical sedimentation
  • trunk/LMDZ.MARS/libf/phymars/inifis.F

    r1047 r1088  
    401401           stop
    402402         endif
     403
    403404! lifting
    404405         write(*,*)"dust lifted by GCM surface winds ?"
     
    414415           stop
    415416         endif
     417
     418! free evolving dust
     419! freedust=true just says that there is no lifting and no dust opacity scaling.
     420         write(*,*)"dust lifted by GCM surface winds ?"
     421         freedust=.false. ! default value
     422         call getin("freedust",freedust)
     423         write(*,*)" freedust = ",freedust
     424         if (freedust.and..not.doubleq) then
     425           print*,'freedust should be used with doubleq !'
     426           stop
     427         endif
     428         if (freedust.and.lifting) then
     429           print*,'if freedust is used, then lifting should not be used'
     430           print*,'lifting forced to false !!'
     431           lifting=.false.
     432         endif
     433
    416434! callddevil
    417435         write(*,*)" dust lifted by dust devils ?"
     
    493511         call getin("microphys",microphys)
    494512         write(*,*)" microphys = ",microphys
     513         if (freedust.and.microphys) then
     514           print*,'freedust can not be used with microphys !'
     515           print*,'(although that could be improved...)'
     516           stop
     517         endif
    495518
    496519! microphysical parameter contact       
Note: See TracChangeset for help on using the changeset viewer.