Ignore:
Timestamp:
Oct 31, 2013, 2:49:26 PM (12 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/libf/phymars
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • 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.