Ignore:
Timestamp:
Oct 29, 2009, 2:55:23 PM (15 years ago)
Author:
yann meurdesoif
Message:

Optimisations SX9

YM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ4/branches/LMDZ4-dev/libf/phylmd/aeropt_2bands.F90

    r1249 r1250  
    5151  REAL, DIMENSION(klon,klev,naero_tot,nbands) ::  cg_ae
    5252  LOGICAL ::  soluble
    53   INTEGER :: i, k, ierr, inu, m, mrfspecies
     53  INTEGER :: i, k,n, ierr, inu, m, mrfspecies
    5454  INTEGER :: spsol, spinsol, spss
    55   INTEGER :: RH_num
     55  INTEGER :: RH_num(klon,klev)
    5656  INTEGER, PARAMETER :: nb_level=19 ! number of vertical levels in DATA
    5757
     
    122122  REAL,PARAMETER :: RH_tab(nbre_RH)=(/0.,10.,20.,30.,40.,50.,60.,70.,80.,85.,90.,95./)
    123123  REAL, PARAMETER :: RH_MAX=95.
    124   REAL:: DELTA, rh, H
    125   REAL:: tau_ae2b_int(KLON,KLEV,nbands)   ! Intermediate computation of epaisseur optique aerosol
    126   REAL:: piz_ae2b_int(KLON,KLEV,nbands)   ! Intermediate computation of Single scattering albedo
    127   REAL:: cg_ae2b_int(KLON,KLEV,nbands)    ! Intermediate computation of Assymetry parameter
     124  REAL:: DELTA(klon,klev), rh(klon,klev), H
     125  REAL:: tau_ae2b_int   ! Intermediate computation of epaisseur optique aerosol
     126  REAL:: piz_ae2b_int   ! Intermediate computation of Single scattering albedo
     127  REAL:: cg_ae2b_int    ! Intermediate computation of Assymetry parameter
     128  REAL :: Fact_RH(nbre_RH)
    128129  REAL :: zrho
    129130  REAL :: fac
     
    146147  REAL:: piz_aeri_2bands(nbands,naero_insoluble)           !-- unit
    147148
     149  INTEGER :: id
     150  LOGICAL :: used_aer(naero_tot)
     151  REAL :: tmp_var, tmp_var_pi
    148152
    149153  DATA presnivs_19/&
     
    586590
    587591  DO k=1, klev
    588      DO i=1, klon
    589 !        IF (t_seri(i,k).EQ.0.) THEN
    590 !           WRITE(lunout,*) 't_seri(i,k)=0 for i=',i,'k=',k
    591 !           CALL abort_gcm('aeropt_2bands','t_seri=0',1)
    592 !        END IF
    593 !        IF (pplay(i,k).EQ.0.) THEN
    594 !           WRITE(lunout,*) 'pplay(i,k)=0 for i=',i,'k=',k
    595 !           CALL abort_gcm('aeropt_2bands','pplay=0',1)
    596 !        END IF
    597         zrho=pplay(i,k)/t_seri(i,k)/RD                    ! kg/m3
    598         mass_temp(i,k,:) = m_allaer(i,k,:) / zrho / 1.e+9
     592    DO i=1, klon
     593      zrho=pplay(i,k)/t_seri(i,k)/RD                  ! kg/m3
     594!CDIR UNROLL=naero_spc
     595      mass_temp(i,k,:) = m_allaer(i,k,:) / zrho / 1.e+9
    599596!RAF zrho
    600         mass_temp_pi(i,k,:) = m_allaer_pi(i,k,:) / zrho / 1.e+9
    601      ENDDO
     597!CDIR UNROLL=naero_spc
     598      mass_temp_pi(i,k,:) = m_allaer_pi(i,k,:) / zrho / 1.e+9
     599      zdp1(i,k)=pdel(i,k)/(gravit*delt)      ! air mass auxiliary  variable --> zdp1 [kg/(m^2 *s)]
     600    ENDDO
    602601  ENDDO
    603602
    604603  IF (flag_aerosol .EQ. 1) THEN
    605      nb_aer = 1
     604     nb_aer = 2
    606605     ALLOCATE (aerosol_name(nb_aer))
    607606     aerosol_name(1) = id_ASSO4M
    608 
     607     aerosol_name(2) = id_CSSO4M
    609608  ELSEIF (flag_aerosol .EQ. 2) THEN
    610609     nb_aer = 2
     
    650649  !      compute optical_thickness_at_gridpoint_per_species
    651650
    652   tau_ae(:,:,:,:)=0.
    653 !RAF
    654   tau_ae_pi(:,:,:,:)=0.
    655   piz_ae(:,:,:,:)=0.
    656   cg_ae(:,:,:,:)=0.
    657   tau_allaer(:,:,:,:)=0.
    658   piz_allaer(:,:,:,:)=0.
    659   cg_allaer(:,:,:,:)=0.
    660 
    661   !
    662   ! Calculations that need to be done since we are not in the subroutines INCA
    663   !     
    664   ! air mass auxiliary  variable --> zdp1 [kg/(m^2 *s)]
    665   zdp1(:,:)=pdel(:,:)/(gravit*delt)
    666 
    667 
     651
     652
     653!!CDIR ON_ADB(RH_tab)
     654!CDIR ON_ADB(fact_RH)
     655!CDIR SHORTLOOP
     656  DO n=1,nbre_RH-1
     657    fact_RH(n)=1./(RH_tab(n+1)-RH_tab(n))
     658  ENDDO
     659   
     660  DO k=1, KLEV
     661!!CDIR ON_ADB(RH_tab)
     662!CDIR ON_ADB(fact_RH)
     663    DO i=1, KLON
     664      rh(i,k)=MIN(RHcl(i,k)*100.,RH_MAX)
     665      RH_num(i,k) = INT( rh(i,k)/10. + 1.)
     666      IF (rh(i,k).GT.85.) RH_num(i,k)=10
     667      IF (rh(i,k).GT.90.) RH_num(i,k)=11
     668     
     669      DELTA(i,k)=(rh(i,k)-RH_tab(RH_num(i,k)))*fact_RH(RH_num(i,k))
     670    ENDDO
     671  ENDDO
     672
     673  used_aer(:)=.FALSE.
     674   
    668675  DO m=1,nb_aer   ! tau is only computed for each mass
    669 
    670      fac=1.0
     676    fac=1.0
    671677     IF (aerosol_name(m).EQ.id_ASBCM) THEN
    672678         soluble=.TRUE.
     
    715721     ENDIF
    716722
    717 
    718      tau_ae2b_int(:,:,:)=0.
    719      piz_ae2b_int(:,:,:)=0.
    720      cg_ae2b_int(:,:,:)=0.
    721 
    722      DO inu=1,nbands
     723    id=aerosol_name(m)
     724    used_aer(id)=.TRUE.
     725
     726     
     727    IF (soluble) THEN
     728
     729      IF (spss.NE.0) THEN
     730
     731         IF (spss.EQ.1) THEN !accumulation mode
     732            DO k=1, KLEV
     733!CDIR ON_ADB(A1_ASSSM_b1)
     734!CDIR ON_ADB(A2_ASSSM_b1)
     735!CDIR ON_ADB(A3_ASSSM_b1)
     736!CDIR ON_ADB(B1_ASSSM_b1)
     737!CDIR ON_ADB(B2_ASSSM_b1)
     738!CDIR ON_ADB(C1_ASSSM_b1)
     739!CDIR ON_ADB(C2_ASSSM_b2)
     740!CDIR ON_ADB(A1_ASSSM_b2)
     741!CDIR ON_ADB(A2_ASSSM_b2)
     742!CDIR ON_ADB(A3_ASSSM_b2)
     743!CDIR ON_ADB(B1_ASSSM_b2)
     744!CDIR ON_ADB(B2_ASSSM_b2)
     745!CDIR ON_ADB(C1_ASSSM_b2)
     746!CDIR ON_ADB(C2_ASSSM_b2)
     747              DO i=1, KLON
     748                H=rh(i,k)/100
     749                tmp_var=mass_temp(i,k,spsol)*1000.*zdp1(i,k)*delt*fac
     750                tmp_var_pi=mass_temp_pi(i,k,spsol)*1000.*zdp1(i,k)*delt*fac
     751
     752                ! band 1
     753                tau_ae2b_int=A1_ASSSM_b1(k)+A2_ASSSM_b1(k)*H+A3_ASSSM_b1(k)/(H-1.05)
     754                piz_ae2b_int=1-B1_ASSSM_b1(k)-B2_ASSSM_b1(k)*H
     755                cg_ae2b_int=C1_ASSSM_b1(k)+C2_ASSSM_b1(k)*H
     756
     757                tau_ae(i,k,id,1) = tmp_var*tau_ae2b_int
     758                tau_ae_pi(i,k,id,1) =  tmp_var_pi* tau_ae2b_int
     759                piz_ae(i,k,id,1) = piz_ae2b_int
     760                cg_ae(i,k,id,1)= cg_ae2b_int
     761               
     762                !band 2
     763                tau_ae2b_int=A1_ASSSM_b2(k)+A2_ASSSM_b2(k)*H+A3_ASSSM_b2(k)/(H-1.05)
     764                piz_ae2b_int=1-B1_ASSSM_b2(k)-B2_ASSSM_b2(k)*H
     765                cg_ae2b_int=C1_ASSSM_b2(k)+C2_ASSSM_b2(k)*H
     766
     767                tau_ae(i,k,id,2) = tmp_var*tau_ae2b_int
     768                tau_ae_pi(i,k,id,2) =  tmp_var_pi* tau_ae2b_int
     769                piz_ae(i,k,id,2) = piz_ae2b_int
     770                cg_ae(i,k,id,2)= cg_ae2b_int
     771
     772              ENDDO
     773            ENDDO
     774          ENDIF
     775
     776          IF (spss.EQ.2) THEN !coarse mode
     777            DO k=1, KLEV
     778!CDIR ON_ADB(A1_CSSSM_b1)
     779!CDIR ON_ADB(A2_CSSSM_b1)
     780!CDIR ON_ADB(A3_CSSSM_b1)
     781!CDIR ON_ADB(B1_CSSSM_b1)
     782!CDIR ON_ADB(B2_CSSSM_b1)
     783!CDIR ON_ADB(C1_CSSSM_b1)
     784!CDIR ON_ADB(C2_CSSSM_b2)
     785!CDIR ON_ADB(A1_CSSSM_b2)
     786!CDIR ON_ADB(A2_CSSSM_b2)
     787!CDIR ON_ADB(A3_CSSSM_b2)
     788!CDIR ON_ADB(B1_CSSSM_b2)
     789!CDIR ON_ADB(B2_CSSSM_b2)
     790!CDIR ON_ADB(C1_CSSSM_b2)
     791!CDIR ON_ADB(C2_CSSSM_b2)
     792              DO i=1, KLON
     793                H=rh(i,k)/100
     794                tmp_var=mass_temp(i,k,spsol)*1000.*zdp1(i,k)*delt*fac
     795                tmp_var_pi=mass_temp_pi(i,k,spsol)*1000.*zdp1(i,k)*delt*fac
     796                ! band 1
     797                tau_ae2b_int=A1_CSSSM_b1(k)+A2_CSSSM_b1(k)*H+A3_CSSSM_b1(k)/(H-1.05)
     798                piz_ae2b_int=1-B1_CSSSM_b1(k)-B2_CSSSM_b1(k)*H
     799                cg_ae2b_int=C1_CSSSM_b1(k)+C2_CSSSM_b1(k)*H
     800
     801                tau_ae(i,k,id,1) = tmp_var*tau_ae2b_int
     802                tau_ae_pi(i,k,id,1) =  tmp_var_pi* tau_ae2b_int
     803                piz_ae(i,k,id,1) = piz_ae2b_int
     804                cg_ae(i,k,id,1)= cg_ae2b_int
     805
     806                ! band 2
     807                tau_ae2b_int=A1_CSSSM_b2(k)+A2_CSSSM_b2(k)*H+A3_CSSSM_b2(k)/(H-1.05)
     808                piz_ae2b_int=1-B1_CSSSM_b2(k)-B2_CSSSM_b2(k)*H
     809                cg_ae2b_int=C1_CSSSM_b2(k)+C2_CSSSM_b2(k)*H
     810
     811                tau_ae(i,k,id,2) = tmp_var*tau_ae2b_int
     812                tau_ae_pi(i,k,id,2) =  tmp_var_pi* tau_ae2b_int
     813                piz_ae(i,k,id,2) = piz_ae2b_int
     814                cg_ae(i,k,id,2)= cg_ae2b_int
     815
     816             ENDDO
     817           ENDDO
     818         ENDIF
     819
     820         IF (spss.EQ.3) THEN !super coarse mode
     821            DO k=1, KLEV
     822!CDIR ON_ADB(A1_SSSSM_b1)
     823!CDIR ON_ADB(A2_SSSSM_b1)
     824!CDIR ON_ADB(A3_SSSSM_b1)
     825!CDIR ON_ADB(B1_SSSSM_b1)
     826!CDIR ON_ADB(B2_SSSSM_b1)
     827!CDIR ON_ADB(C1_SSSSM_b1)
     828!CDIR ON_ADB(C2_SSSSM_b2)
     829!CDIR ON_ADB(A1_SSSSM_b2)
     830!CDIR ON_ADB(A2_SSSSM_b2)
     831!CDIR ON_ADB(A3_SSSSM_b2)
     832!CDIR ON_ADB(B1_SSSSM_b2)
     833!CDIR ON_ADB(B2_SSSSM_b2)
     834!CDIR ON_ADB(C1_SSSSM_b2)
     835!CDIR ON_ADB(C2_SSSSM_b2)
     836              DO i=1, KLON
     837                H=rh(i,k)/100
     838                tmp_var=mass_temp(i,k,spsol)*1000.*zdp1(i,k)*delt*fac
     839                tmp_var_pi=mass_temp_pi(i,k,spsol)*1000.*zdp1(i,k)*delt*fac
     840
     841                ! band 1
     842                tau_ae2b_int=A1_SSSSM_b1(k)+A2_SSSSM_b1(k)*H+A3_SSSSM_b1(k)/(H-1.05)
     843                piz_ae2b_int=1-B1_SSSSM_b1(k)-B2_SSSSM_b1(k)*H
     844                cg_ae2b_int=C1_SSSSM_b1(k)+C2_SSSSM_b1(k)*H
     845
     846                tau_ae(i,k,id,1) = tmp_var*tau_ae2b_int
     847                tau_ae_pi(i,k,id,1) =  tmp_var_pi* tau_ae2b_int
     848                piz_ae(i,k,id,1) = piz_ae2b_int
     849                cg_ae(i,k,id,1)= cg_ae2b_int
     850
     851                ! band 2
     852                tau_ae2b_int=A1_SSSSM_b2(k)+A2_SSSSM_b2(k)*H+A3_SSSSM_b2(k)/(H-1.05)
     853                piz_ae2b_int=1-B1_SSSSM_b2(k)-B2_SSSSM_b2(k)*H
     854                cg_ae2b_int=C1_SSSSM_b2(k)+C2_SSSSM_b2(k)*H
     855
     856                tau_ae(i,k,id,2) = tmp_var*tau_ae2b_int
     857                tau_ae_pi(i,k,id,2) =  tmp_var_pi* tau_ae2b_int
     858                piz_ae(i,k,id,2) = piz_ae2b_int
     859                cg_ae(i,k,id,2)= cg_ae2b_int
     860
     861              ENDDO
     862            ENDDO
     863          ENDIF
     864
     865        ELSE
     866                       
     867!CDIR ON_ADB(alpha_aers_2bands)
     868!CDIR ON_ADB(piz_aers_2bands)
     869!CDIR ON_ADB(cg_aers_2bands)
     870          DO k=1, KLEV
     871            DO i=1, KLON
     872              tmp_var=mass_temp(i,k,spsol)*1000.*zdp1(i,k)*delt*fac
     873              tmp_var_pi=mass_temp_pi(i,k,spsol)*1000.*zdp1(i,k)*delt*fac
     874!CDIR UNROLL=nbands
     875              DO inu=1,nbands
     876
     877                tau_ae2b_int= alpha_aers_2bands(RH_num(i,k),inu,spsol)+ &
     878                              DELTA(i,k)* (alpha_aers_2bands(RH_num(i,k)+1,inu,spsol) - &
     879                              alpha_aers_2bands(RH_num(i,k),inu,spsol))
     880                     
     881                piz_ae2b_int = piz_aers_2bands(RH_num(i,k),inu,spsol) + &
     882                               DELTA(i,k)* (piz_aers_2bands(RH_num(i,k)+1,inu,spsol) - &
     883                               piz_aers_2bands(RH_num(i,k),inu,spsol))
     884                     
     885                cg_ae2b_int = cg_aers_2bands(RH_num(i,k),inu,spsol) + &
     886                              DELTA(i,k)* (cg_aers_2bands(RH_num(i,k)+1,inu,spsol) - &
     887                              cg_aers_2bands(RH_num(i,k),inu,spsol))
     888
     889                tau_ae(i,k,id,inu) = tmp_var*tau_ae2b_int
     890                tau_ae_pi(i,k,id,inu) =  tmp_var_pi* tau_ae2b_int
     891                piz_ae(i,k,id,inu) = piz_ae2b_int
     892                cg_ae(i,k,id,inu)= cg_ae2b_int
     893                         
     894              ENDDO
     895            ENDDO
     896          ENDDO
     897       
     898        ENDIF                     
     899
     900      ELSE                                                    ! For all aerosol insoluble components
     901
     902!CDIR ON_ADB(alpha_aers_2bands)
     903!CDIR ON_ADB(piz_aers_2bands)
     904!CDIR ON_ADB(cg_aers_2bands)
    723905        DO k=1, KLEV
    724            DO i=1, KLON
    725 
    726               rh=MIN(RHcl(i,k)*100.,RH_MAX)
    727               RH_num = INT( rh/10. + 1.)
    728 
    729               IF (rh.GT.85.) RH_num=10
    730               IF (rh.GT.90.) RH_num=11
    731               DELTA=(rh-RH_tab(RH_num))/(RH_tab(RH_num+1)-RH_tab(RH_num))
    732 
    733 !           DO inu=1,nbands
    734               IF (soluble) THEN
    735 
    736               ! First optical parameters are computed for seasalt
    737                   IF (spss.NE.0) THEN
    738                       H=rh/100
    739                       IF (spss.EQ.1) THEN !accumulation mode
    740                           ! band 1
    741                           tau_ae2b_int(i,k,1)=A1_ASSSM_b1(k)+A2_ASSSM_b1(k)*H+A3_ASSSM_b1(k)/(H-1.05)
    742                           piz_ae2b_int(i,k,1)=1-B1_ASSSM_b1(k)-B2_ASSSM_b1(k)*H
    743                           cg_ae2b_int(i,k,1)=C1_ASSSM_b1(k)+C2_ASSSM_b1(k)*H
    744                           !band 2
    745                           tau_ae2b_int(i,k,2)=A1_ASSSM_b2(k)+A2_ASSSM_b2(k)*H+A3_ASSSM_b2(k)/(H-1.05)
    746                           piz_ae2b_int(i,k,2)=1-B1_ASSSM_b2(k)-B2_ASSSM_b2(k)*H
    747                           cg_ae2b_int(i,k,2)=C1_ASSSM_b2(k)+C2_ASSSM_b2(k)*H
    748                       ENDIF
    749                       IF (spss.EQ.2) THEN !coarse mode
    750                           ! band 1
    751                           tau_ae2b_int(i,k,1)=A1_CSSSM_b1(k)+A2_CSSSM_b1(k)*H+A3_CSSSM_b1(k)/(H-1.05)
    752                           piz_ae2b_int(i,k,1)=1-B1_CSSSM_b1(k)-B2_CSSSM_b1(k)*H
    753                           cg_ae2b_int(i,k,1)=C1_CSSSM_b1(k)+C2_CSSSM_b1(k)*H
    754                           ! band 2
    755                           tau_ae2b_int(i,k,2)=A1_CSSSM_b2(k)+A2_CSSSM_b2(k)*H+A3_CSSSM_b2(k)/(H-1.05)
    756                           piz_ae2b_int(i,k,2)=1-B1_CSSSM_b2(k)-B2_CSSSM_b2(k)*H
    757                           cg_ae2b_int(i,k,2)=C1_CSSSM_b2(k)+C2_CSSSM_b2(k)*H
    758                       ENDIF
    759                       IF (spss.EQ.3) THEN !super coarse mode
    760                           ! band 1
    761                           tau_ae2b_int(i,k,1)=A1_SSSSM_b1(k)+A2_SSSSM_b1(k)*H+A3_SSSSM_b1(k)/(H-1.05)
    762                           piz_ae2b_int(i,k,1)=1-B1_SSSSM_b1(k)-B2_SSSSM_b1(k)*H
    763                           cg_ae2b_int(i,k,1)=C1_SSSSM_b1(k)+C2_SSSSM_b1(k)*H
    764                           ! band 2
    765                           tau_ae2b_int(i,k,2)=A1_SSSSM_b2(k)+A2_SSSSM_b2(k)*H+A3_SSSSM_b2(k)/(H-1.05)
    766                           piz_ae2b_int(i,k,2)=1-B1_SSSSM_b2(k)-B2_SSSSM_b2(k)*H
    767                           cg_ae2b_int(i,k,2)=C1_SSSSM_b2(k)+C2_SSSSM_b2(k)*H
    768                       ENDIF
    769                   ELSE
    770                       tau_ae2b_int(i,k,inu)= &
    771                          alpha_aers_2bands(RH_num,inu,spsol)+ &
    772                          DELTA* (alpha_aers_2bands(RH_num+1,inu,spsol) - &
    773                          alpha_aers_2bands(RH_num,inu,spsol))
    774                      
    775                       piz_ae2b_int(i,k,inu)= &
    776                          piz_aers_2bands(RH_num,inu,spsol) + &
    777                          DELTA* (piz_aers_2bands(RH_num+1,inu,spsol) - &
    778                          piz_aers_2bands(RH_num,inu,spsol))
    779                      
    780                       cg_ae2b_int(i,k,inu)= &
    781                          cg_aers_2bands(RH_num,inu,spsol) + &
    782                          DELTA* (cg_aers_2bands(RH_num+1,inu,spsol) - &
    783                          cg_aers_2bands(RH_num,inu,spsol))
    784                   ENDIF
    785 
    786                  tau_ae(i,k,aerosol_name(m),inu) = &
    787                       mass_temp(i,k,spsol)*1000.*zdp1(i,k)*delt* &
    788                                          tau_ae2b_int(i,k,inu)*fac
    789 !RAF fac
    790                   tau_ae_pi(i,k,aerosol_name(m),inu) = &
    791                      mass_temp_pi(i,k,spsol)*1000.*zdp1(i,k)*delt* &
    792                                            tau_ae2b_int(i,k,inu)*fac
    793 
    794               ELSE                                                    ! For all aerosol insoluble components
    795                  tau_ae2b_int(i,k,inu) = alpha_aeri_2bands(inu,spinsol)
    796                  piz_ae2b_int(i,k,inu) = piz_aeri_2bands(inu,spinsol)
    797                  cg_ae2b_int(i,k,inu) = cg_aeri_2bands(inu,spinsol)
    798 
    799                  tau_ae(i,k,aerosol_name(m),inu) = &
    800                       mass_temp(i,k,naero_soluble+ spinsol)*1000.*zdp1(i,k)* &
    801                                                delt*tau_ae2b_int(i,k,inu)*fac
    802 !RAF fac
    803                  tau_ae_pi(i,k,aerosol_name(m),inu) = &
    804                     mass_temp_pi(i,k,naero_soluble+ spinsol)*1000.*zdp1(i,k)* &
    805                                                  delt*tau_ae2b_int(i,k,inu)*fac
    806               ENDIF
    807 
    808               piz_ae(i,k,aerosol_name(m),inu) = piz_ae2b_int(i,k,inu)
    809 
    810               cg_ae(i,k,aerosol_name(m),inu)= cg_ae2b_int(i,k,inu)
    811 
    812            ENDDO    ! nbands : boucle sur les bandes spectrale
    813         ENDDO     ! klon : Boucle sur les points geographiques (grille horizontale)
    814      ENDDO     ! klev : Boucle sur les niveaux verticaux
    815   ENDDO     ! nb_aer : Boucle  sur les masses de traceurs
    816 
     906          DO i=1, KLON
     907            tmp_var=mass_temp(i,k,naero_soluble+ spinsol)*1000.*zdp1(i,k)*delt*fac
     908            tmp_var_pi=mass_temp_pi(i,k,naero_soluble+spinsol)*1000.*zdp1(i,k)*delt*fac
     909!CDIR UNROLL=nbands
     910            DO inu=1,nbands
     911              tau_ae2b_int = alpha_aeri_2bands(inu,spinsol)
     912              piz_ae2b_int = piz_aeri_2bands(inu,spinsol)
     913              cg_ae2b_int = cg_aeri_2bands(inu,spinsol)
     914
     915              tau_ae(i,k,id,inu) = tmp_var*tau_ae2b_int
     916              tau_ae_pi(i,k,id,inu) = tmp_var_pi*tau_ae2b_int
     917              piz_ae(i,k,id,inu) = piz_ae2b_int
     918              cg_ae(i,k,id,inu)= cg_ae2b_int
     919            ENDDO
     920          ENDDO
     921        ENDDO
     922
     923      ENDIF ! soluble
     924
     925    ENDDO  ! nb_aer 
     926
     927  DO m=1,nb_aer   
     928    IF (.NOT. used_aer(m)) THEN
     929      tau_ae(:,:,:,:)=0.
     930      tau_ae_pi(:,:,:,:)=0.
     931      piz_ae(:,:,:,:)=0.
     932      cg_ae(:,:,:,:)=0.
     933    ENDIF
     934  ENDDO
    817935
    818936  DO inu=1, nbands
    819      DO mrfspecies=1,naero_grp
     937    DO mrfspecies=1,naero_grp
     938      IF (mrfspecies .EQ. 2) THEN             ! = total aerosol AER     
    820939        DO k=1, KLEV
    821            DO i=1, KLON
    822               IF (mrfspecies .EQ. 2) THEN             ! = total aerosol AER     
    823                  tau_allaer(i,k,mrfspecies,inu)=tau_ae(i,k,id_ASSO4M,inu)+tau_ae(i,k,id_CSSO4M,inu)+ &
    824                       tau_ae(i,k,id_ASBCM,inu)+tau_ae(i,k,id_AIBCM,inu)+ &                                                   
    825                       tau_ae(i,k,id_ASPOMM,inu)+tau_ae(i,k,id_AIPOMM,inu)+ &   
    826                       tau_ae(i,k,id_ASSSM,inu)+tau_ae(i,k,id_CSSSM,inu)+tau_ae(i,k,id_SSSSM,inu)+ &
    827                       tau_ae(i,k,id_CIDUSTM,inu)
    828                  tau_allaer(i,k,mrfspecies,inu)=MAX(tau_allaer(i,k,mrfspecies,inu),1e-20)
     940          DO i=1, KLON
     941            tau_allaer(i,k,mrfspecies,inu)=tau_ae(i,k,id_ASSO4M,inu)+tau_ae(i,k,id_CSSO4M,inu)+ &
     942                                           tau_ae(i,k,id_ASBCM,inu)+tau_ae(i,k,id_AIBCM,inu)+   &                                                   
     943                                           tau_ae(i,k,id_ASPOMM,inu)+tau_ae(i,k,id_AIPOMM,inu)+ &       
     944                                           tau_ae(i,k,id_ASSSM,inu)+tau_ae(i,k,id_CSSSM,inu)+   &
     945                                           tau_ae(i,k,id_SSSSM,inu)+ tau_ae(i,k,id_CIDUSTM,inu)
     946             tau_allaer(i,k,mrfspecies,inu)=MAX(tau_allaer(i,k,mrfspecies,inu),1e-20)
    829947                 
    830                  piz_allaer(i,k,mrfspecies,inu)=(tau_ae(i,k,id_ASSO4M,inu)*piz_ae(i,k,id_ASSO4M,inu)+ &
    831                       tau_ae(i,k,id_CSSO4M,inu)*piz_ae(i,k,id_CSSO4M,inu)+ &
    832                       tau_ae(i,k,id_ASBCM,inu)*piz_ae(i,k,id_ASBCM,inu)+ &
    833                       tau_ae(i,k,id_AIBCM,inu)*piz_ae(i,k,id_AIBCM,inu)+ &
    834                       tau_ae(i,k,id_ASPOMM,inu)*piz_ae(i,k,id_ASPOMM,inu)+ &
    835                       tau_ae(i,k,id_AIPOMM,inu)*piz_ae(i,k,id_AIPOMM,inu)+ &   
    836                       tau_ae(i,k,id_ASSSM,inu)*piz_ae(i,k,id_ASSSM,inu)+ &
    837                       tau_ae(i,k,id_CSSSM,inu)*piz_ae(i,k,id_CSSSM,inu)+ &
    838                       tau_ae(i,k,id_SSSSM,inu)*piz_ae(i,k,id_SSSSM,inu)+ &
    839                       tau_ae(i,k,id_CIDUSTM,inu)*piz_ae(i,k,id_CIDUSTM,inu))/tau_allaer(i,k,mrfspecies,inu)
    840                  piz_allaer(i,k,mrfspecies,inu)=MAX(piz_allaer(i,k,mrfspecies,inu),1e-20)
    841 
    842                  cg_allaer(i,k,mrfspecies,inu)=(tau_ae(i,k,id_ASSO4M,inu)*piz_ae(i,k,id_ASSO4M,inu)*cg_ae(i,k,id_ASSO4M,inu)+ &
     948             piz_allaer(i,k,mrfspecies,inu)=(tau_ae(i,k,id_ASSO4M,inu)*piz_ae(i,k,id_ASSO4M,inu)+ &
     949                                             tau_ae(i,k,id_CSSO4M,inu)*piz_ae(i,k,id_CSSO4M,inu)+ &
     950                                             tau_ae(i,k,id_ASBCM,inu)*piz_ae(i,k,id_ASBCM,inu)+ &
     951                                             tau_ae(i,k,id_AIBCM,inu)*piz_ae(i,k,id_AIBCM,inu)+ &
     952                                             tau_ae(i,k,id_ASPOMM,inu)*piz_ae(i,k,id_ASPOMM,inu)+ &
     953                                             tau_ae(i,k,id_AIPOMM,inu)*piz_ae(i,k,id_AIPOMM,inu)+ &     
     954                                             tau_ae(i,k,id_ASSSM,inu)*piz_ae(i,k,id_ASSSM,inu)+ &
     955                                             tau_ae(i,k,id_CSSSM,inu)*piz_ae(i,k,id_CSSSM,inu)+ &
     956                                             tau_ae(i,k,id_SSSSM,inu)*piz_ae(i,k,id_SSSSM,inu)+ &
     957                                             tau_ae(i,k,id_CIDUSTM,inu)*piz_ae(i,k,id_CIDUSTM,inu)) &
     958                                            /tau_allaer(i,k,mrfspecies,inu)
     959             piz_allaer(i,k,mrfspecies,inu)=MAX(piz_allaer(i,k,mrfspecies,inu),1e-20)
     960
     961             cg_allaer(i,k,mrfspecies,inu)=(tau_ae(i,k,id_ASSO4M,inu)*piz_ae(i,k,id_ASSO4M,inu)*cg_ae(i,k,id_ASSO4M,inu)+ &
    843962                      tau_ae(i,k,id_CSSO4M,inu)*piz_ae(i,k,id_CSSO4M,inu)*cg_ae(i,k,id_CSSO4M,inu)+ &
    844963                      tau_ae(i,k,id_ASBCM,inu)*piz_ae(i,k,id_ASBCM,inu)*cg_ae(i,k,id_ASBCM,inu)+ &
     
    851970                      tau_ae(i,k,id_CIDUSTM,inu)*piz_ae(i,k,id_CIDUSTM,inu)*cg_ae(i,k,id_CIDUSTM,inu))/ &
    852971                      (tau_allaer(i,k,mrfspecies,inu)*piz_allaer(i,k,mrfspecies,inu))
    853 
    854               ELSEIF (mrfspecies .EQ. 3) THEN             ! = natural aerosol NAT
     972          ENDDO   
     973        ENDDO
     974
     975      ELSEIF (mrfspecies .EQ. 3) THEN             ! = natural aerosol NAT
     976
     977        DO k=1, KLEV
     978          DO i=1, KLON
    855979!RAF
    856980                 tau_allaer(i,k,mrfspecies,inu)=tau_ae_pi(i,k,id_ASSO4M,inu)+ &
     
    8921016                      cg_ae(i,k,id_CIDUSTM,inu))/ &
    8931017                      (tau_allaer(i,k,mrfspecies,inu)*piz_allaer(i,k,mrfspecies,inu))
    894 
    895 !END RAF
    896               ELSEIF (mrfspecies .EQ. 4) THEN             ! = BC
    897                  tau_allaer(i,k,mrfspecies,inu)=tau_ae(i,k,id_ASBCM,inu)+tau_ae(i,k,id_AIBCM,inu)
    898                  tau_allaer(i,k,mrfspecies,inu)=MAX(tau_allaer(i,k,mrfspecies,inu),1e-20)
    899                  piz_allaer(i,k,mrfspecies,inu)=(tau_ae(i,k,id_ASBCM,inu)*piz_ae(i,k,id_ASBCM,inu) &
     1018          ENDDO
     1019        ENDDO
     1020                   
     1021      ELSEIF (mrfspecies .EQ. 4) THEN             ! = BC
     1022        DO k=1, KLEV
     1023          DO i=1, KLON
     1024            tau_allaer(i,k,mrfspecies,inu)=tau_ae(i,k,id_ASBCM,inu)+tau_ae(i,k,id_AIBCM,inu)
     1025            tau_allaer(i,k,mrfspecies,inu)=MAX(tau_allaer(i,k,mrfspecies,inu),1e-20)
     1026            piz_allaer(i,k,mrfspecies,inu)=(tau_ae(i,k,id_ASBCM,inu)*piz_ae(i,k,id_ASBCM,inu) &
    9001027                      +tau_ae(i,k,id_AIBCM,inu)*piz_ae(i,k,id_AIBCM,inu))/ &
    9011028                      tau_allaer(i,k,mrfspecies,inu)
    902                  piz_allaer(i,k,mrfspecies,inu)=MAX(piz_allaer(i,k,mrfspecies,inu),1e-20)
    903                 cg_allaer(i,k,mrfspecies,inu)=(tau_ae(i,k,id_ASBCM,inu)*piz_ae(i,k,id_ASBCM,inu) *cg_ae(i,k,id_ASBCM,inu)&
     1029            piz_allaer(i,k,mrfspecies,inu)=MAX(piz_allaer(i,k,mrfspecies,inu),1e-20)
     1030            cg_allaer(i,k,mrfspecies,inu)=(tau_ae(i,k,id_ASBCM,inu)*piz_ae(i,k,id_ASBCM,inu) *cg_ae(i,k,id_ASBCM,inu)&
    9041031                      +tau_ae(i,k,id_AIBCM,inu)*piz_ae(i,k,id_AIBCM,inu)*cg_ae(i,k,id_AIBCM,inu))/ &
    9051032                      (tau_allaer(i,k,mrfspecies,inu)*piz_allaer(i,k,mrfspecies,inu))
    906 
    907               ELSEIF (mrfspecies .EQ. 5) THEN             ! = SO4
    908                  tau_allaer(i,k,mrfspecies,inu)=tau_ae(i,k,id_ASSO4M,inu)+tau_ae(i,k,id_CSSO4M,inu)
    909                  tau_allaer(i,k,mrfspecies,inu)=MAX(tau_allaer(i,k,mrfspecies,inu),1e-20)
    910                  piz_allaer(i,k,mrfspecies,inu)=(tau_ae(i,k,id_CSSO4M,inu)*piz_ae(i,k,id_CSSO4M,inu) &
     1033          ENDDO
     1034        ENDDO
     1035             
     1036      ELSEIF (mrfspecies .EQ. 5) THEN             ! = SO4
     1037
     1038        DO k=1, KLEV
     1039          DO i=1, KLON
     1040            tau_allaer(i,k,mrfspecies,inu)=tau_ae(i,k,id_ASSO4M,inu)+tau_ae(i,k,id_CSSO4M,inu)
     1041            tau_allaer(i,k,mrfspecies,inu)=MAX(tau_allaer(i,k,mrfspecies,inu),1e-20)
     1042            piz_allaer(i,k,mrfspecies,inu)=(tau_ae(i,k,id_CSSO4M,inu)*piz_ae(i,k,id_CSSO4M,inu) &
    9111043                      +tau_ae(i,k,id_ASSO4M,inu)*piz_ae(i,k,id_ASSO4M,inu))/ &
    9121044                      tau_allaer(i,k,mrfspecies,inu)
    913                  piz_allaer(i,k,mrfspecies,inu)=MAX(piz_allaer(i,k,mrfspecies,inu),1e-20)
    914                 cg_allaer(i,k,mrfspecies,inu)=(tau_ae(i,k,id_CSSO4M,inu)*piz_ae(i,k,id_CSSO4M,inu) *cg_ae(i,k,id_CSSO4M,inu)&
     1045            piz_allaer(i,k,mrfspecies,inu)=MAX(piz_allaer(i,k,mrfspecies,inu),1e-20)
     1046            cg_allaer(i,k,mrfspecies,inu)=(tau_ae(i,k,id_CSSO4M,inu)*piz_ae(i,k,id_CSSO4M,inu) *cg_ae(i,k,id_CSSO4M,inu)&
    9151047                      +tau_ae(i,k,id_ASSO4M,inu)*piz_ae(i,k,id_ASSO4M,inu)*cg_ae(i,k,id_ASSO4M,inu))/ &
    9161048                      (tau_allaer(i,k,mrfspecies,inu)*piz_allaer(i,k,mrfspecies,inu))
    917 
    918               ELSEIF (mrfspecies .EQ. 6) THEN             ! = POM
    919                  tau_allaer(i,k,mrfspecies,inu)=tau_ae(i,k,id_ASPOMM,inu)+tau_ae(i,k,id_AIPOMM,inu)
    920                  tau_allaer(i,k,mrfspecies,inu)=MAX(tau_allaer(i,k,mrfspecies,inu),1e-20)
    921                  piz_allaer(i,k,mrfspecies,inu)=(tau_ae(i,k,id_ASPOMM,inu)*piz_ae(i,k,id_ASPOMM,inu) &
     1049          ENDDO
     1050        ENDDO
     1051
     1052      ELSEIF (mrfspecies .EQ. 6) THEN             ! = POM
     1053
     1054        DO k=1, KLEV
     1055          DO i=1, KLON
     1056            tau_allaer(i,k,mrfspecies,inu)=tau_ae(i,k,id_ASPOMM,inu)+tau_ae(i,k,id_AIPOMM,inu)
     1057            tau_allaer(i,k,mrfspecies,inu)=MAX(tau_allaer(i,k,mrfspecies,inu),1e-20)
     1058            piz_allaer(i,k,mrfspecies,inu)=(tau_ae(i,k,id_ASPOMM,inu)*piz_ae(i,k,id_ASPOMM,inu) &
    9221059                      +tau_ae(i,k,id_AIPOMM,inu)*piz_ae(i,k,id_AIPOMM,inu))/ &
    9231060                      tau_allaer(i,k,mrfspecies,inu)
    924                  piz_allaer(i,k,mrfspecies,inu)=MAX(piz_allaer(i,k,mrfspecies,inu),1e-20)
    925                 cg_allaer(i,k,mrfspecies,inu)=(tau_ae(i,k,id_ASPOMM,inu)*piz_ae(i,k,id_ASPOMM,inu) *cg_ae(i,k,id_ASPOMM,inu)&
     1061            piz_allaer(i,k,mrfspecies,inu)=MAX(piz_allaer(i,k,mrfspecies,inu),1e-20)
     1062            cg_allaer(i,k,mrfspecies,inu)=(tau_ae(i,k,id_ASPOMM,inu)*piz_ae(i,k,id_ASPOMM,inu) *cg_ae(i,k,id_ASPOMM,inu)&
    9261063                      +tau_ae(i,k,id_AIPOMM,inu)*piz_ae(i,k,id_AIPOMM,inu)*cg_ae(i,k,id_AIPOMM,inu))/ &
    9271064                      (tau_allaer(i,k,mrfspecies,inu)*piz_allaer(i,k,mrfspecies,inu))
    928 
    929               ELSEIF (mrfspecies .EQ. 7) THEN             ! = DUST
    930                  tau_allaer(i,k,mrfspecies,inu)=tau_ae(i,k,id_CIDUSTM,inu)
    931                  tau_allaer(i,k,mrfspecies,inu)=MAX(tau_allaer(i,k,mrfspecies,inu),1e-20)
    932                  piz_allaer(i,k,mrfspecies,inu)=piz_ae(i,k,id_CIDUSTM,inu)
    933                  cg_allaer(i,k,mrfspecies,inu)=cg_ae(i,k,id_CIDUSTM,inu)
    934 
    935               ELSEIF (mrfspecies .EQ. 8) THEN             ! = SS
    936                  tau_allaer(i,k,mrfspecies,inu)=tau_ae(i,k,id_ASSSM,inu)+tau_ae(i,k,id_CSSSM,inu)+tau_ae(i,k,id_SSSSM,inu)
    937                  tau_allaer(i,k,mrfspecies,inu)=MAX(tau_allaer(i,k,mrfspecies,inu),1e-20)
    938                  piz_allaer(i,k,mrfspecies,inu)=(tau_ae(i,k,id_ASSSM,inu)*piz_ae(i,k,id_ASSSM,inu) &
    939                       +tau_ae(i,k,id_CSSSM,inu)*piz_ae(i,k,id_CSSSM,inu) &
    940                       +tau_ae(i,k,id_SSSSM,inu)*piz_ae(i,k,id_SSSSM,inu))/ &
    941                       tau_allaer(i,k,mrfspecies,inu)
    942                  piz_allaer(i,k,mrfspecies,inu)=MAX(piz_allaer(i,k,mrfspecies,inu),1e-20)
    943                  cg_allaer(i,k,mrfspecies,inu)=(tau_ae(i,k,id_ASSSM,inu)*piz_ae(i,k,id_ASSSM,inu) *cg_ae(i,k,id_ASSSM,inu)&
    944                       +tau_ae(i,k,id_CSSSM,inu)*piz_ae(i,k,id_CSSSM,inu)*cg_ae(i,k,id_CSSSM,inu) &
    945                       +tau_ae(i,k,id_SSSSM,inu)*piz_ae(i,k,id_SSSSM,inu)*cg_ae(i,k,id_SSSSM,inu))/ &
    946                       (tau_allaer(i,k,mrfspecies,inu)*piz_allaer(i,k,mrfspecies,inu))
    947 
    948               ELSEIF (mrfspecies .EQ. 9) THEN             ! = NO3
    949                  tau_allaer(i,k,mrfspecies,inu)=0.   ! preliminary
    950                  piz_allaer(i,k,mrfspecies,inu)=0.
    951                  cg_allaer(i,k,mrfspecies,inu)=0.
    952               ENDIF
    953            ENDDO
     1065          ENDDO
    9541066        ENDDO
    955      ENDDO
     1067             
     1068      ELSEIF (mrfspecies .EQ. 7) THEN             ! = DUST
     1069
     1070        DO k=1, KLEV
     1071          DO i=1, KLON
     1072            tau_allaer(i,k,mrfspecies,inu)=tau_ae(i,k,id_CIDUSTM,inu)
     1073            tau_allaer(i,k,mrfspecies,inu)=MAX(tau_allaer(i,k,mrfspecies,inu),1e-20)
     1074            piz_allaer(i,k,mrfspecies,inu)=piz_ae(i,k,id_CIDUSTM,inu)
     1075            cg_allaer(i,k,mrfspecies,inu)=cg_ae(i,k,id_CIDUSTM,inu)
     1076          ENDDO
     1077        ENDDO
     1078
     1079      ELSEIF (mrfspecies .EQ. 8) THEN             ! = SS
     1080
     1081        DO k=1, KLEV
     1082          DO i=1, KLON
     1083            tau_allaer(i,k,mrfspecies,inu)=tau_ae(i,k,id_ASSSM,inu)+tau_ae(i,k,id_CSSSM,inu)+tau_ae(i,k,id_SSSSM,inu)
     1084            tau_allaer(i,k,mrfspecies,inu)=MAX(tau_allaer(i,k,mrfspecies,inu),1e-20)
     1085            piz_allaer(i,k,mrfspecies,inu)=(tau_ae(i,k,id_ASSSM,inu)*piz_ae(i,k,id_ASSSM,inu) &
     1086                    +tau_ae(i,k,id_CSSSM,inu)*piz_ae(i,k,id_CSSSM,inu) &
     1087                    +tau_ae(i,k,id_SSSSM,inu)*piz_ae(i,k,id_SSSSM,inu))/ &
     1088                    tau_allaer(i,k,mrfspecies,inu)
     1089            piz_allaer(i,k,mrfspecies,inu)=MAX(piz_allaer(i,k,mrfspecies,inu),1e-20)
     1090            cg_allaer(i,k,mrfspecies,inu)=(tau_ae(i,k,id_ASSSM,inu)*piz_ae(i,k,id_ASSSM,inu) *cg_ae(i,k,id_ASSSM,inu)&
     1091                    +tau_ae(i,k,id_CSSSM,inu)*piz_ae(i,k,id_CSSSM,inu)*cg_ae(i,k,id_CSSSM,inu) &
     1092                    +tau_ae(i,k,id_SSSSM,inu)*piz_ae(i,k,id_SSSSM,inu)*cg_ae(i,k,id_SSSSM,inu))/ &
     1093                    (tau_allaer(i,k,mrfspecies,inu)*piz_allaer(i,k,mrfspecies,inu))
     1094          ENDDO
     1095        ENDDO
     1096     
     1097      ELSEIF (mrfspecies .EQ. 9) THEN             ! = NO3
     1098     
     1099        DO k=1, KLEV
     1100          DO i=1, KLON
     1101            tau_allaer(i,k,mrfspecies,inu)=0.   ! preliminary
     1102            piz_allaer(i,k,mrfspecies,inu)=0.
     1103            cg_allaer(i,k,mrfspecies,inu)=0.
     1104          ENDDO
     1105        ENDDO
     1106     
     1107      ELSE
     1108
     1109        DO k=1, KLEV
     1110          DO i=1, KLON
     1111            tau_allaer(i,k,mrfspecies,inu)=0. 
     1112            piz_allaer(i,k,mrfspecies,inu)=0.
     1113            cg_allaer(i,k,mrfspecies,inu)=0.
     1114          ENDDO
     1115        ENDDO
     1116           
     1117      ENDIF
     1118
     1119    ENDDO
    9561120  ENDDO
    9571121
Note: See TracChangeset for help on using the changeset viewer.