Ignore:
Timestamp:
Oct 30, 2016, 4:35:25 PM (8 years ago)
Author:
oboucher
Message:

Adding a module for stratospheric aerosols with a bin scheme.
The module gets activated with -strataer true compiling option.
May not quite work yet, more testing needed, but should not affect
the rest of LMDz as everything is under a CPP_StratAer key.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/trunk/libf/phylmd/phytrac_mod.F90

    r2637 r2690  
    9797    USE tracreprobus_mod
    9898    USE indice_sol_mod
    99 
    10099    USE mod_phys_lmdz_mpi_data, ONLY :  is_mpi_root
    101100    USE print_control_mod, ONLY: lunout
    102101    USE aero_mod, ONLY : naero_grp
     102
     103#ifdef CPP_StratAer
     104    USE traccoag_mod
     105    USE phys_local_var_mod, ONLY: mdw, sulf_dep_dry, sulf_dep_wet
     106    USE infotrac, ONLY: nbtr_sulgas, id_SO2_strat, id_H2SO4_strat
     107    USE aerophys
     108#endif
    103109
    104110    IMPLICIT NONE
     
    208214    !--------------
    209215    !
    210     !
    211216    REAL,DIMENSION(:),INTENT(IN)   :: cdragh          ! (klon) coeff drag pour T et Q
    212217    REAL,DIMENSION(:,:),INTENT(IN) :: coefh           ! (klon,klev) coeff melange CL (m**2/s)
     
    215220    REAL,DIMENSION(:),INTENT(IN)   :: yu1             ! (klon) vents au premier niveau
    216221    REAL,DIMENSION(:),INTENT(IN)   :: yv1             ! (klon) vents au premier niveau
    217 
    218222    !
    219223    !Lessivage:
     
    238242    REAL,DIMENSION(klon,nbsrf),INTENT(IN) :: pctsrf ! Pourcentage de sol (nature du sol)
    239243
    240 
     244#ifdef CPP_StratAer
     245    REAL,DIMENSION(klon)           :: v_dep_dry !dry deposition velocity of stratospheric sulfate in m/s
     246#endif
    241247    ! Output argument
    242248    !----------------
    243249    REAL,DIMENSION(klon,klev,nbtr),INTENT(INOUT) :: tr_seri ! Concentration Traceur [U/KgA]
    244250    REAL,DIMENSION(klon,klev)                    :: sourceBE
     251
    245252    !=======================================================================================
    246253    !                        -- LOCAL VARIABLES --
     
    267274    INTEGER                   :: itau_w      ! pas de temps ecriture = nstep + itau_phy
    268275    LOGICAL,PARAMETER         :: ok_sync=.TRUE.
    269 
    270276    !
    271277    ! Nature du traceur
     
    456462       CASE('repr')
    457463          source(:,:)=0.
     464#ifdef CPP_StratAer
     465       CASE('coag')
     466          source(:,:)=0.
     467          DO it= 1, nbtr_sulgas
     468            aerosol(it)=.FALSE.
     469            IF (it==id_H2SO4_strat) aerosol(it)=.TRUE.
     470          ENDDO
     471          DO it= nbtr_sulgas+1, nbtr
     472            aerosol(it)=.TRUE.
     473          ENDDO
     474#endif
    458475       END SELECT
    459476
     
    504521                !--for now we do not scavenge in cvltr
    505522                flag_cvltr(it)=.false.
     523
     524#ifdef CPP_StratAer
     525             CASE('coag')
     526                IF (convscav.and.aerosol(it)) THEN
     527                   flag_cvltr(it)=.true.
     528                   ccntrAA(it) =ccntrAA_in   
     529                   ccntrENV(it)=ccntrENV_in
     530                   coefcoli(it)=coefcoli_in
     531                ELSE
     532                   flag_cvltr(it)=.false.
     533                ENDIF
     534#endif
     535
    506536             END SELECT
    507537          ENDDO
     
    572602       ! Appel fait en fin de phytrac pour avoir les emissions modifiees par
    573603       ! la couche limite et la convection avant le calcul de la chimie
     604
    574605    CASE('repr')
    575606       !   -- CHIMIE REPROBUS --
    576 
    577607       CALL tracreprobus(pdtphys, gmtime, debutphy, julien, &
    578608            presnivs, xlat, xlon, pphis, pphi, &
     
    580610            tr_seri)
    581611
     612#ifdef CPP_StratAer
     613    CASE('coag')
     614       !   --STRATOSPHERIC AER IN THE STRAT --
     615       CALL traccoag(pdtphys, gmtime, debutphy, julien, &
     616            presnivs, xlat, xlon, pphis, pphi, &
     617            t_seri, pplay, paprs, sh, rh , &
     618            tr_seri)
     619#endif
     620
    582621    END SELECT
    583622    !======================================================================
     
    591630          IF (iflag_con.LT.2) THEN
    592631             !--pas de transport convectif
    593 
    594632             d_tr_cv(:,:,it)=0.
     633
    595634          ELSE IF (iflag_con.EQ.2) THEN
    596635             !--ancien transport convectif de Tiedtke
     
    648687
    649688       END DO ! nbtr
     689
     690#ifdef CPP_StratAer
     691       IF (type_trac=='coag') THEN
     692         ! initialize wet deposition flux of sulfur
     693         sulf_dep_wet(:)=0.0
     694         ! compute wet deposition flux of sulfur (sum over gases and particles)
     695         ! and convert to kg(S)/m2/s
     696         DO i = 1, klon
     697         DO k = 1, klev
     698         DO it = 1, nbtr
     699         !do not include SO2 because most of it comes trom the troposphere
     700           IF (it==id_H2SO4_strat) THEN
     701             sulf_dep_wet(i)=sulf_dep_wet(i)+d_tr_cv(i,k,it)*(mSatom/mH2SO4mol) &
     702                            & *(paprs(i,k)-paprs(i,k+1))/RG/pdtphys
     703           ELSEIF (it.GT.nbtr_sulgas) THEN
     704             sulf_dep_wet(i)=sulf_dep_wet(i)+d_tr_cv(i,k,it)*(mSatom/mH2SO4mol)  &
     705                            & *dens_aer_dry*4./3.*RPI*(mdw(it-nbtr_sulgas)/2.)**3 &
     706                            & *(paprs(i,k)-paprs(i,k+1))/RG/pdtphys
     707           ENDIF
     708         ENDDO
     709         ENDDO
     710         ENDDO
     711       ENDIF
     712#endif
    650713
    651714    END IF ! convection
     
    692755       !  Injection during BL mixing
    693756       !
     757#ifdef CPP_StratAer
     758       IF (type_trac=='coag') THEN
     759
     760         ! initialize dry deposition flux of sulfur
     761         sulf_dep_dry(:)=0.0
     762
     763         ! compute dry deposition velocity as function of surface type (numbers
     764         ! from IPSL note 23, 2002)
     765         v_dep_dry(:) =  pctsrf(:,is_ter) * 2.5e-3 &
     766                     & + pctsrf(:,is_oce) * 0.5e-3 &
     767                     & + pctsrf(:,is_lic) * 2.5e-3 &
     768                     & + pctsrf(:,is_sic) * 2.5e-3
     769
     770         ! compute surface dry deposition flux
     771         zrho(:,1)=pplay(:,1)/t_seri(:,1)/RD
     772
     773         DO it=1, nbtr
     774          source(:,it) = - v_dep_dry(:) * tr_seri(:,1,it) * zrho(:,1)
     775         ENDDO
     776
     777       ENDIF
     778#endif
     779
    694780       DO it=1, nbtr
    695781          !
     
    703789             tr_seri(:,:,it)=tr_seri(:,:,it)+d_tr_cl(:,:,it)
    704790             !
    705           END IF
     791#ifdef CPP_StratAer
     792             IF (type_trac=='coag') THEN
     793               ! compute dry deposition flux of sulfur (sum over gases and particles)
     794               IF (it==id_H2SO4_strat) THEN
     795                 sulf_dep_dry(:)=sulf_dep_dry(:)-source(:,it)*(mSatom/mH2SO4mol)
     796               ELSEIF (it.GT.nbtr_sulgas) THEN
     797                 sulf_dep_dry(:)=sulf_dep_dry(:)-source(:,it)*(mSatom/mH2SO4mol)*dens_aer_dry &
     798                                & *4./3.*RPI*(mdw(it-nbtr_sulgas)/2.)**3
     799               ENDIF
     800             ENDIF
     801#endif
     802             !
     803          ENDIF
    706804          !
    707        END DO
     805       ENDDO
    708806       !
    709807    ELSE IF (iflag_vdf_trac==0) THEN
     
    720818       !
    721819       ! Nothing happens
    722        !
    723820       d_tr_cl=0.
    724821       !
     
    772869
    773870          END DO  !tr
     871
     872#ifdef CPP_StratAer
     873         IF (type_trac=='coag') THEN
     874           ! compute wet deposition flux of sulfur (sum over gases and
     875           ! particles) and convert to kg(S)/m2/s
     876           ! adding contribution of d_tr_ls to d_tr_cv (above)
     877           DO i = 1, klon
     878           DO k = 1, klev
     879           DO it = 1, nbtr
     880             IF (it==id_H2SO4_strat) THEN
     881               sulf_dep_wet(i)=sulf_dep_wet(i)+d_tr_ls(i,k,it)*(mSatom/mH2SO4mol) &
     882                              & *(paprs(i,k)-paprs(i,k+1))/RG/pdtphys
     883             ELSEIF (it.GT.nbtr_sulgas) THEN
     884               sulf_dep_wet(i)=sulf_dep_wet(i)+d_tr_ls(i,k,it)*(mSatom/mH2SO4mol)  &
     885                              & *dens_aer_dry*4./3.*RPI*(mdw(it-nbtr_sulgas)/2.)**3 &
     886                              & *(paprs(i,k)-paprs(i,k+1))/RG/pdtphys
     887             ENDIF
     888           ENDDO
     889           ENDDO
     890           ENDDO
     891         ENDIF
     892#endif
    774893
    775894       ELSE IF (iflag_lscav .EQ. 2) THEN ! frac_impa, frac_nucl
Note: See TracChangeset for help on using the changeset viewer.