Changeset 5926


Ignore:
Timestamp:
Dec 11, 2025, 4:17:28 PM (5 weeks ago)
Author:
lebasn
Message:

StratAer?: bugfix on last commit + SAI mode

Location:
LMDZ6/trunk/libf/phylmd/StratAer
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/phylmd/StratAer/aer_sedimnt.f90

    r5924 r5926  
    8989      ZRHO=pplay(JL,JK)/(RD*t_seri(JL,JK))
    9090
    91       ! stokes-velocity with cunnigham slip- flow correction
    92       IF(flag_strat_compo) THEN
     91      ! Use Tabazadeh et al. 1997 for H2SO4/H2O composition
     92      IF(flag_strat_compo.EQ.2) THEN
    9393         ! stokes-velocity with cunnigham slip- flow correction
    9494         ZVAER(JL,JK,nb) = 2./9.*(DENSO4B(JL,JK,nb)*1000.-ZRHO)*RG/zvis(JL,JK)*(f_r_wetB(JL,JK,nb)*mdw(nb)/2.)**2.* &
  • LMDZ6/trunk/libf/phylmd/StratAer/coagulate.f90

    r5924 r5926  
    129129  IF (is_strato(ilon,ilev)) THEN
    130130  !compute actual wet particle radius & volume for every grid box
    131   IF(flag_strat_compo) THEN
     131  IF(flag_strat_compo.EQ.2) THEN
    132132     DO i=1, nbtr_bin
    133133        radiuswet(i)=f_r_wetB(ilon,ilev,i)*mdw(i)/2.
     
    174174!--pre-compute the thermal velocity of a particle thvelpar(i) from equation 20
    175175  thvelpar=0.0
    176   IF(flag_strat_compo) THEN
     176  IF(flag_strat_compo.EQ.2) THEN
    177177     DO i=1, nbtr_bin
    178178        m_par(i)=4./3.*RPI*radiuswet(i)**3.*DENSO4B(ilon,ilev,i)*1000.
     
    275275!                     =(Vdry(k)*tr_t(ilon,ilev,k)+pdtcoag*num_dry)/( (1.+pdtcoag*denom)*Vdry(k) )
    276276!          with num_dry=...beta(i,j)*Vdry(i)*....
    277 !       so in old STRATAER (.not.flag_strat_compo), it was correct
     277!       so in old STRATAER (flag_strat_compo.EQ.1), it was correct
    278278  ENDIF
    279279
  • LMDZ6/trunk/libf/phylmd/StratAer/micphy_tstep.f90

    r5924 r5926  
    5757       & 1.*(7.990811e-4 + 1.*(-7.458060e-4 + 1.*2.58139e-4 )))))
    5858
    59   IF(.not.flag_strat_compo) THEN
     59  IF(flag_strat_compo.EQ.1) THEN
    6060     ! STRAACT (R2SO4, t_seri -> H2SO4 activity coefficient (ACTSO4)) for cond/evap
    6161     CALL STRAACT(ACTSO4)
     
    9797      ENDIF
    9898      ! compute cond/evap rate in kg(H2SO4)/kgA/s
    99       IF(flag_strat_compo) THEN
     99      IF(flag_strat_compo.EQ.2) THEN
    100100         R2SO4ik(:)   = R2SO4B(ilon,ilev,:)
    101101         DENSO4ik(:)  = DENSO4B(ilon,ilev,:)
     
    144144        & *pplay(ilon,ilev)/t_seri(ilon,ilev)/RD/1.E6/mH2SO4mol
    145145    ! compute cond/evap rate in kg(H2SO4)/kgA/s (now only evap for pdtphys)
    146     IF(flag_strat_compo) THEN
     146    IF(flag_strat_compo.EQ.2) THEN
    147147       CALL condens_evapor_rate_kelvin(rhoa,t_seri(ilon,ilev),pplay(ilon,ilev), &
    148148            & R2SO4(ilon,ilev),DENSO4(ilon,ilev),f_r_wet(ilon,ilev), &
  • LMDZ6/trunk/libf/phylmd/StratAer/strataer_emiss_mod.f90

    r5370 r5926  
    5353                ALLOCATE(m_H2O_emiss_vol(nErupt))
    5454                ALLOCATE(m_H2O_emiss_vol_daily(nErupt))
    55                 !                ALLOCATE(d_q_emiss(klon,klev))
    5655                ALLOCATE(budg_emi(klon,nAerErupt+1))
    5756                m_H2O_emiss_vol(:)=0.
    5857                m_H2O_emiss_vol_daily(:)=0.
    59                 !                d_q_emiss(:,:)=0.
    6058             ELSE
    6159                ALLOCATE(budg_emi(klon,nAerErupt))
     
    104102
    105103    ELSEIF (flag_emit == 2) THEN ! SAI
     104       ALLOCATE(budg_emi(klon,1))
     105       budg_emi(:,:)=0.
     106       
    106107       CALL getin_p('m_aer_emiss_sai',m_aer_emiss_sai)
    107108       CALL getin_p('altemiss_sai',altemiss_sai)
     
    117118
    118119    ELSEIF (flag_emit == 3) THEN ! SAI between latitudes
     120       ALLOCATE(budg_emi(klon,1))
     121       budg_emi(:,:)=0.
     122       
    119123       CALL getin_p('m_aer_emiss_sai',m_aer_emiss_sai)
    120124       CALL getin_p('altemiss_sai',altemiss_sai)
     
    124128       CALL getin_p('xlat_min_sai',xlat_min_sai)
    125129    ENDIF
    126 
     130   
    127131    IF (flag_emit == 1) THEN
    128132       DO ispec=1,nAerErupt
     
    233237    dlat=180./2./FLOAT(nbp_lat)   ! d latitude in degree
    234238    dlon=360./2./FLOAT(nbp_lon)   ! d longitude in degree
    235     WRITE(lunout,*) 'IN STRATAER_INIT dlat=',dlat,'dlon=',dlon
    236     WRITE(lunout,*) 'IN STRATAER_INIT nErupt=',nErupt
    237     WRITE(lunout,*) 'IN STRATAER_INIT xlat_min=',xlat_min_vol,'xlat_max=',xlat_max_vol
    238     WRITE(lunout,*) 'IN STRATAER_INIT xlon_min=',xlon_min_vol,'xlon_max=',xlon_max_vol
     239    IF (flag_emit.EQ.1 .OR. flag_emit.EQ.4) THEN ! Volcano
     240       WRITE(lunout,*) 'IN STRATAER_INIT dlat=',dlat,'dlon=',dlon
     241       WRITE(lunout,*) 'IN STRATAER_INIT nErupt=',nErupt
     242       WRITE(lunout,*) 'IN STRATAER_INIT xlat_min=',xlat_min_vol,'xlat_max=',xlat_max_vol
     243       WRITE(lunout,*) 'IN STRATAER_INIT xlon_min=',xlon_min_vol,'xlon_max=',xlon_max_vol
     244    ENDIF
    239245
    240246    DO ieru=1, nErupt
  • LMDZ6/trunk/libf/phylmd/StratAer/traccoag_mod.f90

    r5924 r5926  
    121121    WHERE (stratomask.GT.0.5) is_strato=.TRUE.
    122122
    123     IF(flag_strat_compo) THEN
     123    IF(flag_strat_compo.EQ.2) THEN
    124124       IF(debutphy) WRITE(lunout,*) 'traccoag: COMPO/DENSITY (Tabazadeh 97) + H2O kelvin effect', flag_strat_compo
    125125       ! STRACOMP (H2O, P, t_seri, R -> R2SO4 + Kelvin effect) : Taba97, Socol, etc...
     
    146146   
    147147!--initialise emission diagnostics
    148     if (nErupt > 0 .and. (flag_emit == 1 .or. flag_emit == 4)) budg_emi(:,1)=0.0
     148    budg_emi(:,1)=0.0
    149149    budg_emi_ocs(:)=0.0
    150150    budg_emi_so2(:)=0.0
     
    383383                   & *pplay(i,j)/t_seri(i,j)/RD                           ! [air mass concentration in kg air /m3A]
    384384             
    385               IF(flag_strat_compo) THEN
     385              IF(flag_strat_compo.EQ.2) THEN
    386386                 !     SAD_sulfate: SAD WET sulfate aerosols (cm2/cm3)
    387387                 SAD_sulfate(i,j) = SAD_sulfate(i,j) + nd_mode(i,j,it) &     ! [DRY part/m3A (in bin it)]
Note: See TracChangeset for help on using the changeset viewer.