Ignore:
Timestamp:
Feb 28, 2022, 6:46:07 PM (3 years ago)
Author:
abierjon
Message:

Mars GCM:
Big changes on mountain top dust flows for GCM6:

  • the scheme now activates only in grid meshes that contain a mountain among a hard-written list, instead of every meshes. This is done to prevent strong artificial reinjections of dust in places that don't present huge converging slopes enabling the concentration of dust (ex: Valles Marineris, Hellas). Topdust is now also detrained as soon as it leaves the column it originated from.
  • the list of the 19 allowed mountains is used by the subroutine topmons_setup in module topmons_mod, to compute a logical array contains_mons(ngrid). alpha_hmons and hsummit are also set up once and for all by this subroutine, which is called in physiq_mod's firstcall.
  • contains_mons, alpha_hmons and hsummit are now saved variables of the module surfdat_h, and are called as such and not as arguments in the subroutines using them.
  • the logical flag "slpwind" and the comments in the code have also been updated to the new terminology "mountain top dust flows", accordingly to ticket #71. The new flag read in callphys.def is "topflows".

AB

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.MARS/libf/phymars/physiq_mod.F

    r2616 r2628  
    2323      use rocketduststorm_mod, only: rocketduststorm, dustliftday
    2424      use calcstormfract_mod, only: calcstormfract
    25       use topmons_mod, only: topmons,alpha_hmons
     25      use topmons_mod, only: topmons,topmons_setup
    2626      use tracer_mod, only: noms, mmol, igcm_co2, igcm_n2, igcm_co2_ice,
    2727     &                      igcm_co, igcm_o, igcm_h2o_vap, igcm_h2o_ice,
     
    308308                                    !            - in a mesh with stormdust and background dust (false)
    309309                                    !            - in a mesh with background dust only (true)
    310 c     entrainment by slope winds
     310c     entrainment by mountain top dust flows
    311311      logical nohmons               ! nohmons used to calculate twice the radiative
    312                                     ! transfer when slpwind is active :
     312                                    ! transfer when topflows is active :
    313313                                    !            - in a mesh with topdust and background dust (false)
    314314                                    !            - in a mesh with background dust only (true)
     
    507507      REAL co2totB
    508508
    509 c entrainment by slope winds above sb-grid scale topography
     509c entrainment by mountain top dust flows above sub-grid scale topography
    510510      REAL pdqtop(ngrid,nlayer,nq) ! tendency for dust after topmons
    511       REAL hmax,hmin
    512       REAL hsummit(ngrid)
    513511
    514512c when no startfi file is asked for init
     
    718716         endif
    719717
    720 c        Initialize mountain mesh fraction for the entrainment by slope wind param.
     718c        Initialize mountain mesh fraction for the entrainment by top flows param.
    721719c        ~~~~~~~~~~~~~~~
    722         if (slpwind) then
    723           !! alpha_hmons calculation
    724           if (ngrid.gt.1) then
    725             call planetwide_maxval(hmons,hmax )
    726             call planetwide_minval(hmons,hmin )
    727             do ig=1,ngrid
    728               alpha_hmons(ig)= 0.5*(hmons(ig)-hmin)/(hmax-hmin)
    729             enddo
    730           else
    731             hmin=0.
    732             hmax=23162.1 !set here the height of the sub-grid scaled topography
    733             do ig=1,ngrid               
    734               alpha_hmons(ig)= (hmons(ig)-hmin)/(hmax-hmin) !0.1*(hmons(ig)-hmin)/(hmax-hmin)
    735               print*,"1D, hmons=",hmons(ig),"alpha=",alpha_hmons(ig)
    736             enddo
    737           endif ! (ngrid.gt.1)
    738         endif ! if (slpwind)
     720        if (topflows) call topmons_setup(ngrid)
    739721
    740722#endif
     
    972954c          Transfer through CO2 (except NIR CO2 absorption)
    973955c            and aerosols (dust and water ice)
    974            ! callradite for background dust
     956           ! callradite for background dust (out of the rdstorm fraction)
    975957           clearatm=.true.
    976            !! callradite for background dust in the case of slope wind entrainment
     958           !! callradite for background dust (out of the topflows fraction)
    977959           nohmons=.true.
    978960
     
    988970     &     taucloudtes,rdust,rice,nuice,riceco2,nuiceco2,co2ice,
    989971     &     rstormdust,rtopdust,totstormfract,clearatm,dsords,dsotop,
    990      &     alpha_hmons,nohmons,clearsky,totcloudfrac)
     972     &     nohmons,clearsky,totcloudfrac)
    991973
    992974           ! case of sub-grid water ice clouds: callradite for the clear case
     
    1006988     &              rice,nuice,riceco2, nuiceco2,co2ice,rstormdust,
    1007989     &              rtopdust,totstormfract,
    1008      &              clearatm,dsords,dsotop,alpha_hmons,nohmons,
    1009      &              clearsky,totcloudfrac)
     990     &              clearatm,dsords,dsotop,
     991     &              nohmons,clearsky,totcloudfrac)
    1010992               clearsky = .false.  ! just in case.
    1011993               ! Sum the fluxes and heating rates from cloudy/clear
     
    12001182     &                      clearsky,totcloudfrac,
    12011183c               input sub-grid scale topography
    1202      &                      nohmons,alpha_hmons,
     1184     &                      nohmons,
    12031185c               output
    12041186     &                      pdqrds,wspeed,dsodust,dsords,dsotop,
     
    12501232c     3.2 Dust entrained from the PBL up to the top of sub-grid scale topography
    12511233c    -------------------------------------------
    1252       IF (slpwind) THEN
    1253          if (ngrid.gt.1) then
    1254            hsummit(:)=summit(:)-phisfi(:)/g
    1255          else
    1256            hsummit(:)=14000.
    1257          endif
     1234      IF (topflows) THEN
    12581235         clearatm=.true. ! stormdust is not accounted in the extra heating on top of the mountains
    12591236         nohmons=.false.
     
    12661243     &                totstormfract,clearatm,
    12671244     &                clearsky,totcloudfrac,
    1268      &                nohmons,hsummit,
     1245     &                nohmons,
    12691246     &                pdqtop,wtop,dsodust,dsords,dsotop,
    12701247     &                tau_pref_scenario,tau_pref_gcm)
     
    12871264         ENDDO
    12881265
    1289       ENDIF ! end of if (slpwind)
     1266      ENDIF ! end of if (topflows)
    12901267
    12911268c     3.3 Dust injection from the surface
     
    33873364           endif ! (rdstorm)
    33883365
    3389            if (slpwind) then
     3366           if (topflows) then
    33903367             call WRITEDIAGFI(ngrid,'refftopdust','refftopdust',
    33913368     &                        'm',3,rtopdust*ref_r0)
     
    34043381     &         'm2.kg-1',3,dsotop)
    34053382             end select
    3406            endif ! (slpwind)
     3383           endif ! (topflows)
    34073384
    34083385           if (dustscaling_mode==2) then
Note: See TracChangeset for help on using the changeset viewer.