source: LMDZ6/branches/Ocean_skin/libf/phylmd/Dust/splaeropt_lw_rrtm.F90

Last change on this file was 2753, checked in by oboucher, 8 years ago

Adding aerosol properties to Dust version

File size: 2.8 KB
Line 
1!
2! splaeropt_lw_rrtm.F90 2014-05-13 C. Kleinschmitt
3!                      2016-05-03 O. Boucher
4!
5! This routine feeds aerosol LW properties to RRTM
6! we only consider absorption (not scattering)
7
8SUBROUTINE SPLAEROPT_LW_RRTM(ok_alw,zdm,tr_seri)
9
10  USE dimphy
11  USE aero_mod
12  USE infotrac_phy
13  USE phys_state_var_mod, ONLY : tau_aero_lw_rrtm
14  USE YOERAD, ONLY : NLW
15
16  IMPLICIT NONE
17
18  INCLUDE "clesphys.h"
19  !
20  ! Input arguments:
21  !
22  LOGICAL, INTENT(IN) :: ok_alw
23  REAL, DIMENSION(klon,klev), INTENT(IN)      :: zdm
24  REAL, DIMENSION(klon,klev,nbtr), INTENT(IN) :: tr_seri
25  !
26  ! Local arguments :
27  !
28  INTEGER, PARAMETER :: naero_soluble=2    ! 1- accumulation soluble; 2- coarse soluble
29  INTEGER, PARAMETER :: naero_insoluble=2  ! 1- coarse dust; 2- supercoarse dust
30  INTEGER, PARAMETER :: naero=naero_soluble+naero_insoluble
31  !
32  INTEGER inu, itr, spinsol
33  CHARACTER*20 modname
34  !
35  !--absorption coefficient for coarse and super-coarse DUST
36  REAL:: alpha_abs_CIDUST_16bands(nbands_lw_rrtm,naero_insoluble)   !--unit m2/g
37  DATA alpha_abs_CIDUST_16bands /                         &
38   ! Dust CO insoluble
39  0.001, 0.003, 0.005, 0.006, 0.011, 0.031, 0.157, 0.102, &
40  0.017, 0.056, 0.032, 0.008, 0.010, 0.011, 0.013, 0.016, &
41   ! Dust SC insoluble
42  0.002, 0.004, 0.007, 0.010, 0.018, 0.043, 0.099, 0.071, &
43  0.021, 0.056, 0.033, 0.011, 0.013, 0.014, 0.016, 0.018 /
44
45  modname='splaeropt_lw_rrtm'
46  !
47  IF (NLW.NE.nbands_lw_rrtm) THEN
48    CALL abort_physic(modname,'Erreur NLW doit etre egal a 16 pour cette routine',1)
49  ENDIF
50  !
51  IF (ok_alw) THEN
52    !
53    !--initialisation
54    tau_aero_lw_rrtm = 0.0
55    !
56    DO itr=1,nbtr
57      !
58      IF (tname(itr+nqo)=='PREC') THEN       !--precursor
59        CYCLE
60      ELSE IF (tname(itr+nqo)=='FINE') THEN  !--fine mode accumulation mode
61        CYCLE
62      ELSE IF (tname(itr+nqo)=='COSS') THEN  !--coarse mode sea salt
63        CYCLE
64      ELSE IF (tname(itr+nqo)=='CODU') THEN  !--coarse mode dust
65        spinsol=1
66      ELSE IF (tname(itr+nqo)=='SCDU') THEN  !--super coarse mode dust
67        spinsol=2
68      ELSE
69         CALL abort_physic(modname,'I cannot do aerosol optics for '//tname(itr+nqo),1)
70      ENDIF
71      !
72      DO inu=1,NLW
73        !
74        !--total aerosol
75        tau_aero_lw_rrtm(:,:,2,inu) = tau_aero_lw_rrtm(:,:,2,inu) + tr_seri(:,:,itr)*zdm(:,:)*alpha_abs_CIDUST_16bands(inu,spinsol)
76        !--no aerosol at all
77        tau_aero_lw_rrtm(:,:,1,inu) = tau_aero_lw_rrtm(:,:,1,inu) + 0.0
78        !
79      ENDDO
80    !
81    ENDDO
82    !
83    !--avoid very small values
84    tau_aero_lw_rrtm = MAX(tau_aero_lw_rrtm,1.e-15)
85    !
86  ELSE
87    !--default value
88    tau_aero_lw_rrtm = 1.e-15
89  ENDIF
90  !
91END SUBROUTINE SPLAEROPT_LW_RRTM
Note: See TracBrowser for help on using the repository browser.