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/conf_phys.F

    r2627 r2628  
    314314        write(*,*)" coeff_detrainment = ",coeff_detrainment
    315315
    316 ! entrainment by slope wind scheme
    317          write(*,*)"call slope wind lifting parametrization"
    318          slpwind=.false. ! default value
    319          call getin_p("slpwind",slpwind)
    320          write(*,*)" slpwind = ",slpwind
     316! entrainment by mountain top dust flows scheme
     317         write(*,*)"call mountain top dust flows parametrization"
     318         topflows=.false. ! default value
     319         call getin_p("topflows",topflows)
     320         write(*,*)" topflows = ",topflows
    321321
    322322! latent heat release from ground water ice sublimation/condensation
     
    471471           endif
    472472         endif
    473 ! rocket dust storm and entrainment by slope wind
     473! rocket dust storm and entrainment by top flows
    474474! Test of incompatibility:
    475 ! if rdstorm or slpwind is used, then doubleq should be true
    476          if ((rdstorm.or.slpwind).and..not.doubleq) then
    477            print*,'if rdstorm or slpwind is used, then doubleq
     475! if rdstorm or topflows is used, then doubleq should be true
     476         if ((rdstorm.or.topflows).and..not.doubleq) then
     477           print*,'if rdstorm or topflows is used, then doubleq
    478478     &            should be used !'
    479479           call abort_physic(modname,
    480      &          "rdstorm or slpwind requires doubleq",1)
    481          endif
    482          if ((rdstorm.or.slpwind).and..not.active) then
    483            print*,'if rdstorm or slpwind is used, then active
     480     &          "rdstorm or topflows requires doubleq",1)
     481         endif
     482         if ((rdstorm.or.topflows).and..not.active) then
     483           print*,'if rdstorm or topflows is used, then active
    484484     &            should be used !'
    485485           call abort_physic(modname,
    486      &          "rdstorm or slpwind requires activ",1)
     486     &          "rdstorm or topflows requires activ",1)
    487487         endif
    488488         if (rdstorm.and..not.lifting) then
     
    492492     &          "rdstorm requires lifting",1)
    493493         endif
    494          if ((rdstorm.or.slpwind).and..not.freedust) then
    495            print*,'if rdstorm or slpwind is used, then freedust
     494         if ((rdstorm.or.topflows).and..not.freedust) then
     495           print*,'if rdstorm or topflows is used, then freedust
    496496     &            should be used !'
    497497           call abort_physic(modname,
    498      &          "rdstorm or slpwind requires freedust",1)
     498     &          "rdstorm or topflows requires freedust",1)
    499499         endif
    500500         if (rdstorm.and.(dustinjection.eq.0)) then
     
    900900           ! and picky compilers who know name_iaer(2) is out of bounds
    901901           j=2
    902            IF (rdstorm.AND..NOT.activice.AND..NOT.slpwind) then
     902           IF (rdstorm.AND..NOT.activice.AND..NOT.topflows) then
    903903             name_iaer(j) = "stormdust_doubleq" !! storm dust two-moment scheme
    904904             j = j+1
    905905           END IF
    906906
    907            IF (rdstorm.AND.water.AND.activice.AND..NOT.slpwind) then
     907           IF (rdstorm.AND.water.AND.activice.AND..NOT.topflows) then
    908908             name_iaer(j) = "stormdust_doubleq"
    909909             j = j+1
    910910           END IF
    911911
    912            IF (slpwind.AND..NOT.activice.AND..NOT.rdstorm) then
     912           IF (topflows.AND..NOT.activice.AND..NOT.rdstorm) then
    913913             name_iaer(j) = "topdust_doubleq" !! storm dust two-moment scheme
    914914             j = j+1
    915915           END IF
    916916 
    917            IF (slpwind.AND.water.AND.activice.AND..NOT.rdstorm) then
     917           IF (topflows.AND.water.AND.activice.AND..NOT.rdstorm) then
    918918             name_iaer(j) =  "topdust_doubleq"
    919919             j = j+1
    920920           END IF
    921921
    922            IF (rdstorm.AND.slpwind.AND..NOT.activice) THEN
     922           IF (rdstorm.AND.topflows.AND..NOT.activice) THEN
    923923             name_iaer(j) = "stormdust_doubleq"
    924924             name_iaer(j+1) = "topdust_doubleq"
     
    926926           ENDIF
    927927
    928            IF (rdstorm.AND.slpwind.AND.water.AND.activice) THEN
     928           IF (rdstorm.AND.topflows.AND.water.AND.activice) THEN
    929929             name_iaer(j) = "stormdust_doubleq"
    930930             name_iaer(j+1) = "topdust_doubleq"
Note: See TracChangeset for help on using the changeset viewer.