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/surfdat_h.F90

    r2578 r2628  
    3535!$OMP                TESice_Scoef,iceradius,dtemisice,                           &
    3636!$OMP                zmea,zstd,zsig,zgam,zthe,hmons,summit,base,z0,z0_default )
     37
     38  !! mountain top dust flows
     39  REAL,SAVE,ALLOCATABLE :: alpha_hmons(:) ! sub-grid scale mountain mesh fraction
     40  REAL,SAVE,ALLOCATABLE :: hsummit(:) ! mountain height above the GCM surface
     41  LOGICAL,SAVE,ALLOCATABLE :: contains_mons(:) ! is there a mountain in the grid mesh ?
     42         
     43!$OMP THREADPRIVATE(alpha_hmons,hsummit,contains_mons)
    3744
    3845  !! variables
     
    7582    allocate(summit(ngrid))
    7683    allocate(base(ngrid))
    77    
     84    allocate(alpha_hmons(ngrid))
     85    allocate(hsummit(ngrid))
     86    allocate(contains_mons(ngrid))
     87       
    7888  end subroutine ini_surfdat_h
    7989
     
    8393  implicit none
    8494
    85     if (allocated(albedodat))   deallocate(albedodat)
    86     if (allocated(phisfi))      deallocate(phisfi)
    87     if (allocated(watercaptag)) deallocate(watercaptag)
    88     if (allocated(dryness))     deallocate(dryness)
    89     if (allocated(zmea))        deallocate(zmea)
    90     if (allocated(zstd))        deallocate(zstd)
    91     if (allocated(zsig))        deallocate(zsig)
    92     if (allocated(zgam))        deallocate(zgam)
    93     if (allocated(zthe))        deallocate(zthe)
    94     if (allocated(z0))          deallocate(z0)
    95     if (allocated(qsurf))       deallocate(qsurf)
    96     if (allocated(tsurf))       deallocate(tsurf)
    97     if (allocated(co2ice))      deallocate(co2ice)
    98     if (allocated(watercap))    deallocate(watercap)
    99     if (allocated(emis))        deallocate(emis)
    100     if (allocated(capcal))      deallocate(capcal)
    101     if (allocated(fluxgrd))     deallocate(fluxgrd)
    102     if (allocated(hmons))       deallocate(hmons)
    103     if (allocated(summit))      deallocate(summit)
    104     if (allocated(base))        deallocate(base)
     95    if (allocated(albedodat))     deallocate(albedodat)
     96    if (allocated(phisfi))        deallocate(phisfi)
     97    if (allocated(watercaptag))   deallocate(watercaptag)
     98    if (allocated(dryness))       deallocate(dryness)
     99    if (allocated(zmea))          deallocate(zmea)
     100    if (allocated(zstd))          deallocate(zstd)
     101    if (allocated(zsig))          deallocate(zsig)
     102    if (allocated(zgam))          deallocate(zgam)
     103    if (allocated(zthe))          deallocate(zthe)
     104    if (allocated(z0))            deallocate(z0)
     105    if (allocated(qsurf))         deallocate(qsurf)
     106    if (allocated(tsurf))         deallocate(tsurf)
     107    if (allocated(co2ice))        deallocate(co2ice)
     108    if (allocated(watercap))      deallocate(watercap)
     109    if (allocated(emis))          deallocate(emis)
     110    if (allocated(capcal))        deallocate(capcal)
     111    if (allocated(fluxgrd))       deallocate(fluxgrd)
     112    if (allocated(hmons))         deallocate(hmons)
     113    if (allocated(summit))        deallocate(summit)
     114    if (allocated(base))          deallocate(base)
     115    if (allocated(alpha_hmons))   deallocate(alpha_hmons)
     116    if (allocated(hsummit))       deallocate(hsummit)
     117    if (allocated(contains_mons)) deallocate(contains_mons)
    105118   
    106119  end subroutine end_surfdat_h
Note: See TracChangeset for help on using the changeset viewer.