Ignore:
Timestamp:
Feb 6, 2015, 6:53:57 PM (10 years ago)
Author:
jescribano
Message:

Dust emission scheme changes: (1) Included possibility of use previous dust emission scheme (with 2 dust bins). (2) Parameter of Marticorena and Bergametti 1995 set to it's original value (2.61) for testing purposes with pdtphys=15min. (3) Cleaning ustar calculation.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/branches/LMDZ5_SPLA/libf/phylmd/aeropt_spl.F

    r2175 r2196  
    11      SUBROUTINE aeropt_spl(zdz, tr_seri, RHcl,
    22     .              id_prec, id_fine, id_coss, id_codu, id_scdu,
     3     .              ok_chimeredust,
    34     .                      ztaue550,ztaue670,ztaue865,
    45     .                      taue550_tr2,taue670_tr2,taue865_tr2,
     
    2324      REAL RHcl(klon,klev)     ! humidite relativen ciel clair
    2425      INTEGER  id_prec, id_fine, id_coss, id_codu, id_scdu
     26      LOGICAL ok_chimeredust
    2527c============================== OUTPUT =================================
    2628      REAL ztaue550(klon) ! epaisseur optique aerosol 550 nm
     
    4749      INTEGER rh_int
    4850      PARAMETER (rh_int=12)
     51      REAL auxreal
    4952c      REAL ss_a(nb_lambda,rh_int,nbtr-1)
    5053c      DATA ss_a/72*1./
     
    7275!JE20140915      DATA ss_dust/0.3188754,0.3430106,0.3829019/ !for bin 0.5-5um radius
    7376!JE20140915      DATA ss_dustsco/8.0582686E-02,8.1255026E-02,8.1861295E-02/ !for bin 5-15um radius
    74       DATA ss_dust/0.5167768,0.5684330,0.6531643/ !for bin 0.5-3um radius
    75       DATA ss_dustsco/0.1003391,0.1012288,0.1024651/ !for bin 3-15um radius
     77
     78!      DATA ss_dust/0.5167768,0.5684330,0.6531643/ !for bin 0.5-3um radius
     79!      DATA ss_dustsco/0.1003391,0.1012288,0.1024651/ !for bin 3-15um radius
    7680
    7781
     
    8589      DATA RH_tab/0.,10.,20.,30.,40.,50.,60.,70.,80.,85.,90.,95./
    8690c
     91      IF (ok_chimeredust) THEN
     92      ss_dust=(/0.5167768,0.5684330,0.6531643/)
     93      ss_dustsco=(/0.1003391,0.1012288,0.1024651/)
     94      ELSE
     95      ss_dust=(/0.564, 0.614, 0.700/)
     96      ss_dustsco=(/0.,0.,0./)
     97      ENDIF
     98
    8799      DO i=1, klon
    88100        ztaue550(i)=0.0
     
    106118      DO k=1, klev
    107119      DO i=1, klon
    108 c
     120c     
    109121      rh=MIN(RHcl(i,k)*100.,RH_MAX)
    110122      RH_num = INT( rh/10. + 1.)
     
    124136     .            ss_acc550(RH_num))              !--m2/g
    125137cnhl_test TOTAL AOD
    126         ztaue550(i)=ztaue550(i)+(alpha_acc*tr_seri(i,k,id_fine)+
    127      .                 ss_ssalt550(RH_num)*tr_seri(i,k,id_coss)+
    128      .                 ss_dust(1)*tr_seri(i,k,id_codu)+
    129      .              ss_dustsco(1)*tr_seri(i,k,id_scdu)  )*zdz(i,k)*1.e6
     138       auxreal=0.
     139      IF(id_fine>0) auxreal=auxreal+alpha_acc*tr_seri(i,k,id_fine)
     140      IF(id_coss>0) auxreal=auxreal+ss_ssalt550(RH_num)*
     141     .                       tr_seri(i,k,id_coss)
     142      IF(id_codu>0) auxreal=auxreal+ss_dust(1)*tr_seri(i,k,id_codu)
     143      IF(id_scdu>0) auxreal=auxreal+ss_dustsco(1)*tr_seri(i,k,id_scdu)
     144      ztaue550(i)=ztaue550(i)+auxreal*zdz(i,k)*1.e6
     145   
     146!JE20150128        ztaue550(i)=ztaue550(i)+(alpha_acc*tr_seri(i,k,id_fine)+
     147!     .                 ss_ssalt550(RH_num)*tr_seri(i,k,id_coss)+
     148!     .                 ss_dust(1)*tr_seri(i,k,id_codu)+
     149!     .              ss_dustsco(1)*tr_seri(i,k,id_scdu)  )*zdz(i,k)*1.e6
     150
    130151cnhl_test TOTAL AOD IS NOW AOD COARSE MODE ONLY
    131152cnhl_test        ztaue550(i)=ztaue550(i)+(                     
     
    133154cnhl_test     .                 ss_dust(1)*tr_seri(i,k,4))*zdz(i,k)*1.e6
    134155
    135         taue550_tr2(i)=taue550_tr2(i)+alpha_acc*tr_seri(i,k,id_fine)*
    136      .                 zdz(i,k)*1.e6
    137         taue550_ss(i)=taue550_ss(i)+
     156        IF(id_fine>0) taue550_tr2(i)=taue550_tr2(i)
     157     .               + alpha_acc*tr_seri(i,k,id_fine)*zdz(i,k)*1.e6
     158        IF(id_coss>0) taue550_ss(i)=taue550_ss(i)+
    138159     .                ss_ssalt550(RH_num)*tr_seri(i,k,id_coss)*
    139160     .                zdz(i,k)*1.e6
    140         taue550_dust(i)=taue550_dust(i)+ss_dust(1)*tr_seri(i,k,id_codu)*
    141      .                zdz(i,k)*1.e6
    142         taue550_dustsco(i)=taue550_dustsco(i)+
     161        IF(id_codu>0) taue550_dust(i)=taue550_dust(i)+
     162     .                ss_dust(1)*tr_seri(i,k,id_codu)*
     163     .                zdz(i,k)*1.e6
     164        IF(id_scdu>0) taue550_dustsco(i)=taue550_dustsco(i)+
    143165     .                ss_dustsco(1)*tr_seri(i,k,id_scdu)*
    144166     .                zdz(i,k)*1.e6
     
    151173        alpha_acc=ss_acc670(RH_num) + DELTA*(ss_acc670(RH_num+1)-
    152174     .            ss_acc670(RH_num))              !--m2/g
    153         ztaue670(i)=ztaue670(i)+(alpha_acc*tr_seri(i,k,id_fine)+
    154      .                 ss_ssalt670(RH_num)*tr_seri(i,k,id_coss)+
    155      .                 ss_dust(2)*tr_seri(i,k,id_codu)+
    156      .               ss_dustsco(2)*tr_seri(i,k,id_scdu))*zdz(i,k)*1.e6
    157         taue670_tr2(i)=taue670_tr2(i)+alpha_acc*tr_seri(i,k,id_fine)*
     175      auxreal=0.
     176      IF(id_fine>0) auxreal=auxreal+alpha_acc*tr_seri(i,k,id_fine)
     177      IF(id_coss>0) auxreal=auxreal+ss_ssalt670(RH_num)
     178     .                      *tr_seri(i,k,id_coss)
     179      IF(id_codu>0) auxreal=auxreal+ss_dust(2)*tr_seri(i,k,id_codu)
     180      IF(id_scdu>0) auxreal=auxreal+ss_dustsco(2)*tr_seri(i,k,id_scdu)
     181      ztaue670(i)=ztaue670(i)+auxreal*zdz(i,k)*1.e6
     182
     183!JE20150128        ztaue670(i)=ztaue670(i)+(alpha_acc*tr_seri(i,k,id_fine)+
     184!     .                 ss_ssalt670(RH_num)*tr_seri(i,k,id_coss)+
     185!     .                 ss_dust(2)*tr_seri(i,k,id_codu)+
     186!     .               ss_dustsco(2)*tr_seri(i,k,id_scdu))*zdz(i,k)*1.e6
     187
     188      IF(id_fine>0)  taue670_tr2(i)=taue670_tr2(i)+
     189     .                alpha_acc*tr_seri(i,k,id_fine)*
    158190     .                 zdz(i,k)*1.e6
    159         taue670_ss(i)=taue670_ss(i)+
     191      IF(id_coss>0)  taue670_ss(i)=taue670_ss(i)+
    160192     .                ss_ssalt670(RH_num)*tr_seri(i,k,id_coss)*
    161193     .                zdz(i,k)*1.e6
    162         taue670_dust(i)=taue670_dust(i)+ss_dust(2)*tr_seri(i,k,id_codu)*
    163      .                zdz(i,k)*1.e6
    164         taue670_dustsco(i)=taue550_dustsco(i)+
     194      IF(id_codu>0)  taue670_dust(i)=taue670_dust(i)
     195     .                +ss_dust(2)*tr_seri(i,k,id_codu)*
     196     .                zdz(i,k)*1.e6
     197      IF(id_scdu>0)  taue670_dustsco(i)=taue550_dustsco(i)+
    165198     .                ss_dustsco(2)*tr_seri(i,k,id_scdu)*
    166199     .                zdz(i,k)*1.e6
     
    171204        alpha_acc=ss_acc865(RH_num) + DELTA*(ss_acc865(RH_num+1)-
    172205     .            ss_acc865(RH_num))              !--m2/g
    173         ztaue865(i)=ztaue865(i)+(alpha_acc*tr_seri(i,k,id_fine)+
    174      .                 ss_ssalt865(RH_num)*tr_seri(i,k,id_coss)+
    175      .                 ss_dust(3)*tr_seri(i,k,id_codu)+
    176      .               ss_dustsco(3)*tr_seri(i,k,id_scdu))*zdz(i,k)*1.e6
    177         taue865_tr2(i)=taue865_tr2(i)+alpha_acc*tr_seri(i,k,id_fine)*
     206        auxreal=0.
     207      IF(id_fine>0) auxreal=auxreal+alpha_acc*tr_seri(i,k,id_fine)
     208      IF(id_coss>0) auxreal=auxreal
     209     .                     +ss_ssalt865(RH_num)*tr_seri(i,k,id_coss)
     210      IF(id_codu>0) auxreal=auxreal+ss_dust(3)*tr_seri(i,k,id_codu)
     211      IF(id_scdu>0) auxreal=auxreal+ss_dustsco(3)*tr_seri(i,k,id_scdu)
     212        ztaue865(i)=ztaue865(i)+auxreal*zdz(i,k)*1.e6
     213!JE20150128        ztaue865(i)=ztaue865(i)+(alpha_acc*tr_seri(i,k,id_fine)+
     214!     .                 ss_ssalt865(RH_num)*tr_seri(i,k,id_coss)+
     215!     .                 ss_dust(3)*tr_seri(i,k,id_codu)+
     216!     .               ss_dustsco(3)*tr_seri(i,k,id_scdu))*zdz(i,k)*1.e6
     217      IF(id_fine>0) taue865_tr2(i)=taue865_tr2(i)
     218     .                +alpha_acc*tr_seri(i,k,id_fine)*
    178219     .                 zdz(i,k)*1.e6
    179         taue865_ss(i)=taue865_ss(i)+
     220      IF(id_coss>0) taue865_ss(i)=taue865_ss(i)+
    180221     .                ss_ssalt865(RH_num)*tr_seri(i,k,id_coss)*
    181222     .                zdz(i,k)*1.e6
    182         taue865_dust(i)=taue865_dust(i)+ss_dust(3)*tr_seri(i,k,id_codu)*
    183      .                zdz(i,k)*1.e6
    184         taue865_dustsco(i)=taue550_dustsco(i)+
     223      IF(id_codu>0)  taue865_dust(i)=taue865_dust(i)
     224     .                +ss_dust(3)*tr_seri(i,k,id_codu)*
     225     .                zdz(i,k)*1.e6
     226      IF(id_scdu>0)  taue865_dustsco(i)=taue550_dustsco(i)+
    185227     .                ss_dustsco(3)*tr_seri(i,k,id_scdu)*
    186228     .                zdz(i,k)*1.e6
     
    188230
    189231c
    190        burden_ss(i)=burden_ss(i)+tr_seri(i,k,id_coss)*1.e6*1.e3*zdz(i,k)
     232      IF(id_coss>0)  burden_ss(i)=burden_ss(i)
     233     .                +tr_seri(i,k,id_coss)*1.e6*1.e3*zdz(i,k)
    191234      ENDDO            !-loop on klev
    192235      ENDDO            !-loop on klon
Note: See TracChangeset for help on using the changeset viewer.