Ignore:
Timestamp:
Jun 15, 2009, 6:49:35 PM (15 years ago)
Author:
jghattas
Message:
  • Ajoute le possibilite de forcer avec les aerosols poussiere et sel de mer.
  • Ajoute le module aerosol_mod qui contient des parmetres pour les aerosols
  • flag_aerosol a legerement change signification

A Cozic

File:
1 edited

Legend:

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

    r1179 r1181  
    44     pplay, paprs, t_seri, rhcl, &
    55     mass_ins_aero, mass_ins_aero_pi, &
    6      tau_aero, piz_aero, cg_aero )
     6     tau_aero, piz_aero, cg_aero, &
     7     tausum_aero, tau3d_aero )
    78
    89! This routine will :
     
    1213 
    1314  USE dimphy
     15  USE aerosol_mod
    1416  IMPLICIT NONE
    1517
     
    3032  REAL, DIMENSION(klon,klev), INTENT(OUT)     :: mass_ins_aero    ! Total mass for all indissoluble aerosols
    3133  REAL, DIMENSION(klon,klev), INTENT(OUT)     :: mass_ins_aero_pi !     -"-     preindustrial values
    32   REAL, DIMENSION(klon,klev,9,2), INTENT(OUT) :: tau_aero    ! Aerosol optical thickness
    33   REAL, DIMENSION(klon,klev,9,2), INTENT(OUT) :: piz_aero    ! Single scattering albedo aerosol
    34   REAL, DIMENSION(klon,klev,9,2), INTENT(OUT) :: cg_aero     ! asymmetry parameter aerosol
     34  REAL, DIMENSION(klon,klev,naero_grp,nbands), INTENT(OUT) :: tau_aero    ! Aerosol optical thickness
     35  REAL, DIMENSION(klon,klev,naero_grp,nbands), INTENT(OUT) :: piz_aero    ! Single scattering albedo aerosol
     36  REAL, DIMENSION(klon,klev,naero_grp,nbands), INTENT(OUT) :: cg_aero     ! asymmetry parameter aerosol
     37  REAL, DIMENSION(klon,nwave,naero_spc), INTENT(OUT)       :: tausum_aero
     38  REAL, DIMENSION(klon,klev,nwave,naero_spc), INTENT(OUT)  :: tau3d_aero
    3539
    3640! Local variables
    3741!****************************************************************************************
    3842  REAL, DIMENSION(klon)        :: aerindex ! POLDER aerosol index
    39   REAL, DIMENSION(klon,10)     :: fractnat_allaer
    4043  REAL, DIMENSION(klon,klev)   :: sulfate  ! SO4 aerosol concentration [ug/m3]
    4144  REAL, DIMENSION(klon,klev)   :: bcsol    ! BC soluble concentration [ug/m3]
     
    4346  REAL, DIMENSION(klon,klev)   :: pomsol   ! POM soluble concentration [ug/m3]
    4447  REAL, DIMENSION(klon,klev)   :: pomins   ! POM insoluble concentration [ug/m3]
     48  REAL, DIMENSION(klon,klev)   :: cidust    ! DUST aerosol concentration  [ug/m3]
     49  REAL, DIMENSION(klon,klev)   :: sscoarse  ! SS Coarse concentration [ug/m3]
     50  REAL, DIMENSION(klon,klev)   :: sssupco   ! SS Super Coarse concentration [ug/m3]
     51  REAL, DIMENSION(klon,klev)   :: ssacu     ! SS Acumulation concentration [ug/m3]
    4552  REAL, DIMENSION(klon,klev)   :: sulfate_pi
    4653  REAL, DIMENSION(klon,klev)   :: bcsol_pi
     
    4855  REAL, DIMENSION(klon,klev)   :: pomsol_pi
    4956  REAL, DIMENSION(klon,klev)   :: pomins_pi
     57  REAL, DIMENSION(klon,klev)   :: cidust_pi
     58  REAL, DIMENSION(klon,klev)   :: sscoarse_pi
     59  REAL, DIMENSION(klon,klev)   :: sssupco_pi
     60  REAL, DIMENSION(klon,klev)   :: ssacu_pi
    5061  REAL, DIMENSION(klon,klev)   :: pdel
    51   REAL, DIMENSION(klon,klev,8) :: m_allaer
     62  REAL, DIMENSION(klon,klev,naero_spc) :: m_allaer
     63  REAL, DIMENSION(klon,naero_tot)      :: fractnat_allaer
    5264
    5365  INTEGER :: k, i
     
    5971! Read and interpolate sulfate
    6072  IF ( flag_aerosol .EQ. 1 .OR. &
    61        flag_aerosol .EQ. 4 .OR. &
    6273       flag_aerosol .EQ. 6 ) THEN
    6374
     
    6980! Read and interpolate bcsol and bcins
    7081  IF ( flag_aerosol .EQ. 2 .OR. &
    71        flag_aerosol .EQ. 4 .OR. &
    72        flag_aerosol .EQ. 5 ) THEN
     82       flag_aerosol .EQ. 6 ) THEN
    7383
    7484     ! Get bc aerosol distribution
     
    8393! Read and interpolate pomsol and pomins
    8494  IF ( flag_aerosol .EQ. 3 .OR. &
    85        flag_aerosol .EQ. 4 .OR. &
    86        flag_aerosol .EQ. 5 .OR. &
    8795       flag_aerosol .EQ. 6 ) THEN
    8896
     
    95103
    96104
     105! Read and interpolate csssm, ssssm, assssm
     106  IF (flag_aerosol .EQ. 4 .OR. &
     107      flag_aerosol .EQ. 6 ) THEN
     108
     109      CALL readaerosol_interp(1 ,rjourvrai, debut, pplay, paprs, sscoarse,sscoarse_pi)
     110      CALL readaerosol_interp(2 ,rjourvrai, debut, pplay, paprs, ssacu, ssacu_pi)
     111
     112  ELSE
     113     sscoarse(:,:) = 0. ; sscoarse_pi(:,:) = 0.
     114     ssacu(:,:) = 0.    ; ssacu_pi(:,:) = 0.
     115  ENDIF
     116
     117! Read and interpolate cidustm
     118  IF (flag_aerosol .EQ. 5 .OR.  &
     119      flag_aerosol .EQ. 6 ) THEN
     120
     121      CALL readaerosol_interp(6 , rjourvrai, debut, pplay, paprs, cidust, cidust_pi)
     122
     123  ELSE
     124      cidust(:,:) = 0. ; cidust_pi(:,:) = 0.
     125  ENDIF
     126
     127!
    97128! Store all aerosols in one variable
    98129!
    99 ! ACo pour couplage aerosol offline 07/04/2009
    100 ! Tableau contenant les masses pour tous les aerosols
    101 ! les valeurs a zero seront a remplacer par les bons
    102 ! tableaux lorsque les routines de lectures seront
    103 ! ajoutees.
    104   m_allaer(:,:,1) = 0.                ! SSSSM || CSSSM ! Coarse Soluble Sea Salt Mass
    105   m_allaer(:,:,2) = 0.                ! ASSSM
     130  m_allaer(:,:,1) = sscoarse(:,:)     ! SSSSM || CSSSM
     131  m_allaer(:,:,2) = ssacu(:,:)        ! ASSSM
    106132  m_allaer(:,:,3) = bcsol(:,:)        ! ASBCM
    107133  m_allaer(:,:,4) = pomsol(:,:)       ! ASPOMM
    108134  m_allaer(:,:,5) = sulfate(:,:)      ! ASSO4M || CSSO4M   
    109   m_allaer(:,:,6) = 0.                ! CIDUSTM        ! Coarse Insoluble DUST Mass
     135  m_allaer(:,:,6) = cidust(:,:)       ! CIDUSTM
    110136  m_allaer(:,:,7) = bcins(:,:)        ! AIBCM
    111137  m_allaer(:,:,8) = pomins(:,:)       ! AIPOMM
     
    114140! Calculate the total mass of all indissoluble aersosols
    115141!
    116   mass_ins_aero(:,:)    = sulfate(:,:)    + bcsol(:,:)    + pomsol(:,:)
    117   mass_ins_aero_pi(:,:) = sulfate_pi(:,:) + bcsol_pi(:,:) + pomsol_pi(:,:)
     142  mass_ins_aero(:,:)    = sulfate(:,:)    + bcsol(:,:)    + pomsol(:,:)    + &
     143       sscoarse(:,:)   + ssacu(:,:)    + cidust(:,:)
     144  mass_ins_aero_pi(:,:) = sulfate_pi(:,:) + bcsol_pi(:,:) + pomsol_pi(:,:) + &
     145       sscoarse_pi(:,:) + ssacu_pi(:,:) + cidust_pi(:,:)
    118146
    119147!****************************************************************************************
     
    137165     
    138166     ! aeropt_5wv only for validation and diagnostics.
    139      ! In this version no diagnostics are set.
    140      ! jg : may be desactivated if no diagnostics added.
    141167     CALL aeropt_5wv( &
    142168          pdel, m_allaer, &
    143169          pdtphys, rhcl, aerindex, &
    144           flag_aerosol, pplay, t_seri)
     170          flag_aerosol, pplay, t_seri, &
     171          tausum_aero, tau3d_aero)
    145172  ELSE
    146173
Note: See TracChangeset for help on using the changeset viewer.