Ignore:
Timestamp:
Apr 8, 2026, 7:26:15 PM (3 days ago)
Author:
asima
Message:

For aerosols Simple Plume :

  • in mo_simple_plume, changing formulas for lfactor, ssa and asy to exactly correspond to equations 11 to 13 in Stevens et al. 2017.

Main motivation : the ssa expression is simpler.
Changes (slightly) the results.

  • minor : removing an useless "i" variable in macv2sp, to avoid a warning at compilation.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/phylmd/mo_simple_plumes.f90

    r6149 r6162  
    579579    ENDDO
    580580
    581     ! lfactor, eq(12) de Stevens et al 2017 inversed (LAMBDA=max(1,lambda/700. therein)
    582     lfactor   = MIN(1.0,700.0/lambda)
     581    ! lfactor cf Stevens et al 2017, eq (12)
     582    lfactor = MAX(1.0,lambda/700.)
    583583
    584584    ! sum contribution from plumes to construct composite profiles of aerosol optical properties
     
    587587      !
    588588      ! calculate wavelength-dependent scattering properties
    589       !  Stevens et al 2017, eqs (11)&(13)
    590 !    NOTES ASima : ssa and asy only depend on iplume (via ssa550, asy550) and lfactor(lambda), don't need icol dimension.
    591 !      Also, why eq(11) was written in this more complex form than in the paper ?
    592       !ssa(icol) = (ssa550(iplume) * lfactor**4) / ((ssa550(iplume) * lfactor**4) + ((1-ssa550(iplume)) * lfactor))
    593       ssa = (ssa550(iplume) * lfactor**4) / ((ssa550(iplume) * lfactor**4) + ((1-ssa550(iplume)) * lfactor))
    594       !ssa = ssa550(iplume) / (ssa550(iplume) + (1-ssa550(iplume)) / lfactor**3)
    595       asy = asy550(iplume) * SQRT(lfactor)
     589      ! (ASima) Stevens et al 2017, eqs (11)&(13) :
     590      !         ssa and asy only depend on iplume (via ssa550, asy550) and lfactor(lambda)
     591      ssa = ssa550(iplume) / (ssa550(iplume) + (1-ssa550(iplume)) * lfactor**3)
     592      asy = asy550(iplume) / SQRT(lfactor)
    596593      !
    597594      ! distribute plume optical properties across its vertical profile weighting by optical depth and scaling for
     
    602599      lextinct = EXP(-angstrom(iplume) * LOG(lambda/550.0))
    603600
    604 ! NOTE : lextinct, ssa, asy ne dependent ni de icol, ni de k ; peut-on ptimiser ?
     601! NOTE : lextinct, ssa, asy ne dependent ni de icol, ni de k ; peut-on optimiser ?
    605602      DO k=1,nlevels
    606603        DO icol = 1,ncol
    607            aod_lmdz          = aod550(icol,k,iplume)     * lextinct
     604           aod_lmdz         = aod550(icol,k,iplume)       * lextinct
    608605           asy_prof(icol,k) = asy_prof(icol,k) + aod_lmdz * ssa  * asy
    609606           ssa_prof(icol,k) = ssa_prof(icol,k) + aod_lmdz * ssa
Note: See TracChangeset for help on using the changeset viewer.