source: LMDZ6/branches/Amaury_dev/libf/phylmd/Dust/splaerosol_optic_rrtm.f90 @ 5099

Last change on this file since 5099 was 5099, checked in by abarral, 2 months ago

Replace most uses of CPP_DUST by the corresponding logical defined in lmdz_cppkeys_wrapper.F90
Convert several files from .F to .f90 to allow Dust to compile w/o rrtm/ecrad
Create lmdz_yoerad.f90
(lint) Remove "!" on otherwise empty line

File size: 3.0 KB
Line 
1! $Id: splaerosol_optic_rrtm.F90 2644 2016-10-02 16:55:08Z oboucher $
2
3SUBROUTINE splaerosol_optic_rrtm(ok_alw, pplay, paprs, t_seri, rhcl, &
4        tr_seri, mass_solu_aero, mass_solu_aero_pi, &
5        tau_aero, piz_aero, cg_aero, &
6        tausum_aero, tau3d_aero)
7
8  ! This routine will :
9  ! 1) recevie the aerosols(already read and interpolated) corresponding to flag_aerosol
10  ! 2) calculate the optical properties for the aerosols
11
12  USE dimphy
13  USE aero_mod
14  USE infotrac_phy, ONLY : nbtr, nqtot, tracers
15  USE lmdz_yomcst, ONLY : RD, RG
16
17  IMPLICIT NONE
18
19  INCLUDE "clesphys.h"
20
21
22  ! Input arguments
23  !****************************************************************************************
24  LOGICAL, INTENT(IN) :: ok_alw                      ! Apply aerosol LW effect or not
25  REAL, DIMENSION(klon, klev), INTENT(IN) :: pplay
26  REAL, DIMENSION(klon, klev + 1), INTENT(IN) :: paprs
27  REAL, DIMENSION(klon, klev), INTENT(IN) :: t_seri
28  REAL, DIMENSION(klon, klev), INTENT(IN) :: rhcl   ! humidite relative ciel clair
29  REAL, DIMENSION(klon, klev, nbtr), INTENT(IN) :: tr_seri ! concentration tracer
30
31  ! Output arguments
32  !****************************************************************************************
33  REAL, DIMENSION(klon, klev), INTENT(OUT) :: mass_solu_aero    ! Total mass for all soluble aerosols
34  REAL, DIMENSION(klon, klev), INTENT(OUT) :: mass_solu_aero_pi !     -"-     preindustrial values
35  REAL, DIMENSION(klon, klev, 2, NSW), INTENT(OUT) :: tau_aero    ! Aerosol optical thickness
36  REAL, DIMENSION(klon, klev, 2, NSW), INTENT(OUT) :: piz_aero    ! Single scattering albedo aerosol
37  REAL, DIMENSION(klon, klev, 2, NSW), INTENT(OUT) :: cg_aero     ! asymmetry parameter aerosol
38  REAL, DIMENSION(klon, nwave, naero_tot), INTENT(OUT) :: tausum_aero
39  REAL, DIMENSION(klon, klev, nwave, naero_tot), INTENT(OUT) :: tau3d_aero
40
41  INTEGER i, k, iq, itr
42  REAL, DIMENSION(klon, klev) :: zdm, zdh
43  REAL zrho, pdel
44
45  ! Calculate the total mass of all soluble accumulation mode aerosols
46  ! to be revisited for AR6
47
48  mass_solu_aero(:, :) = 0.0
49  mass_solu_aero_pi(:, :) = 0.0
50
51  itr = 0
52  DO iq = 1, nqtot
53    IF(.NOT.tracers(iq)%isInPhysics) CYCLE
54    itr = itr + 1
55    IF(tracers(iq)%name/='FINE') THEN
56      mass_solu_aero(:, :) = tr_seri(:, :, itr)
57      mass_solu_aero_pi(:, :) = tr_seri(:, :, itr)
58    ENDIF
59  ENDDO
60
61  ! Calculate layer thickness
62  DO k = 1, klev
63    DO i = 1, klon
64      pdel = paprs(i, k) - paprs(i, k + 1)
65      zrho = pplay(i, k) / t_seri(i, k) / RD             ! kg/m3
66      zdh(i, k) = pdel / (RG * zrho)                    ! m
67      zdm(i, k) = pdel / RG                           ! kg/m2
68    ENDDO
69  ENDDO
70
71  !--new aerosol properties
72  ! aeropt_6bands for rrtm
73  CALL splaeropt_6bands_rrtm(&
74          zdm, tr_seri, rhcl, &
75          tau_aero, piz_aero, cg_aero)
76
77  ! aeropt_5wv only for validation and diagnostics
78  CALL splaeropt_5wv_rrtm(&
79          zdm, zdh, tr_seri, rhcl, &
80          tausum_aero, tau3d_aero)
81
82  ! LW optical properties for tropospheric aerosols
83  CALL splaeropt_lw_rrtm(ok_alw, zdm, tr_seri)
84
85END SUBROUTINE splaerosol_optic_rrtm
Note: See TracBrowser for help on using the repository browser.