source: LMDZ.3.3/branches/rel-LF/libf/phylmd/aeropt.F @ 5456

Last change on this file since 5456 was 520, checked in by (none), 21 years ago

This commit was manufactured by cvs2svn to create branch 'rel-LF'.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 4.8 KB
Line 
1      SUBROUTINE aeropt(pplay, paprs, t_seri, msulfate, RHcl,
2     .            tau_ae, piz_ae, cg_ae, ai        )
3c
4      IMPLICIT none
5c
6c
7c     
8#include "dimensions.h"
9#include "dimphy.h"
10#include "YOMCST.h"
11c
12c Arguments:
13c
14      REAL paprs(klon,klev+1)
15      REAL pplay(klon,klev), t_seri(klon,klev)
16      REAL msulfate(klon,klev) ! masse sulfate ug SO4/m3  [ug/m^3]
17      REAL RHcl(klon,klev)     ! humidite relative ciel clair
18      REAL tau_ae(klon,klev,2) ! epaisseur optique aerosol
19      REAL piz_ae(klon,klev,2) ! single scattering albedo aerosol
20      REAL cg_ae(klon,klev,2)  ! asymmetry parameter aerosol
21      REAL ai(klon)            ! POLDER aerosol index
22c
23c Local
24c
25      INTEGER i, k, inu
26      INTEGER RH_num, nbre_RH
27      PARAMETER (nbre_RH=12)
28      REAL RH_tab(nbre_RH)
29      REAL RH_MAX, DELTA, rh
30      PARAMETER (RH_MAX=95.)
31      DATA RH_tab/0.,10.,20.,30.,40.,50.,60.,70.,80.,85.,90.,95./
32      REAL zrho, zdz
33      REAL taue670(klon)       ! epaisseur optique aerosol absorption 550 nm
34      REAL taue865(klon)       ! epaisseur optique aerosol extinction 865 nm
35      REAL alpha_aer_sulfate(nbre_RH,5)   !--unit m2/g SO4
36      REAL alphasulfate     
37c
38c Proprietes optiques
39c
40      REAL alpha_aer(nbre_RH,2)   !--unit m2/g SO4
41      REAL cg_aer(nbre_RH,2)
42      DATA alpha_aer/.500130E+01,  .500130E+01,  .500130E+01, 
43     .               .500130E+01,  .500130E+01,  .616710E+01, 
44     .               .826850E+01,  .107687E+02,  .136976E+02, 
45     .               .162972E+02,  .211690E+02,  .354833E+02, 
46     .               .139460E+01,  .139460E+01,  .139460E+01, 
47     .               .139460E+01,  .139460E+01,  .173910E+01, 
48     .               .244380E+01,  .332320E+01,  .440120E+01, 
49     .               .539570E+01,  .734580E+01,  .136038E+02 /
50      DATA cg_aer/.619800E+00,  .619800E+00,  .619800E+00, 
51     .            .619800E+00,  .619800E+00,  .662700E+00, 
52     .            .682100E+00,  .698500E+00,  .712500E+00, 
53     .            .721800E+00,  .734600E+00,  .755800E+00, 
54     .            .545600E+00,  .545600E+00,  .545600E+00, 
55     .            .545600E+00,  .545600E+00,  .583700E+00, 
56     .            .607100E+00,  .627700E+00,  .645800E+00, 
57     .            .658400E+00,  .676500E+00,  .708500E+00 /
58      DATA alpha_aer_sulfate/
59     . 4.910,4.910,4.910,4.910,6.547,7.373,
60     . 8.373,9.788,12.167,14.256,17.924,28.433,
61     . 1.453,1.453,1.453,1.453,2.003,2.321,
62     . 2.711,3.282,4.287,5.210,6.914,12.305,
63     . 4.308,4.308,4.308,4.308,5.753,6.521,
64     . 7.449,8.772,11.014,12.999,16.518,26.772,
65     . 3.265,3.265,3.265,3.265,4.388,5.016,
66     . 5.775,6.868,8.745,10.429,13.457,22.538,
67     . 2.116,2.116,2.116,2.116,2.882,3.330,
68     . 3.876,4.670,6.059,7.327,9.650,16.883/
69c
70      DO i=1, klon
71         taue670(i)=0.0
72         taue865(i)=0.0
73      ENDDO
74c     
75      DO k=1, klev
76      DO i=1, klon
77         if (t_seri(i,k).eq.0) write (*,*) 'aeropt T ',i,k,t_seri(i,k)
78         if (pplay(i,k).eq.0) write (*,*) 'aeropt p ',i,k,pplay(i,k)         
79        zrho=pplay(i,k)/t_seri(i,k)/RD                  ! kg/m3
80        zdz=(paprs(i,k)-paprs(i,k+1))/zrho/RG           ! m
81        rh=MIN(RHcl(i,k)*100.,RH_MAX)
82        RH_num = INT( rh/10. + 1.)
83        IF (rh.LT.0.) STOP 'aeropt: RH < 0 not possible'
84        IF (rh.gt.85.) RH_num=10
85        IF (rh.gt.90.) RH_num=11
86        DELTA=(rh-RH_tab(RH_num))/(RH_tab(RH_num+1)-RH_tab(RH_num))
87c               
88        inu=1
89        tau_ae(i,k,inu)=alpha_aer(RH_num,inu) +
90     .             DELTA*(alpha_aer(RH_num+1,inu)-alpha_aer(RH_num,inu))
91        tau_ae(i,k,inu)=tau_ae(i,k,inu)*msulfate(i,k)*zdz*1.e-6
92        piz_ae(i,k,inu)=1.0
93        cg_ae(i,k,inu)=cg_aer(RH_num,inu) +
94     .                 DELTA*(cg_aer(RH_num+1,inu)-cg_aer(RH_num,inu))
95c
96        inu=2
97        tau_ae(i,k,inu)=alpha_aer(RH_num,inu) +
98     .             DELTA*(alpha_aer(RH_num+1,inu)-alpha_aer(RH_num,inu))
99        tau_ae(i,k,inu)=tau_ae(i,k,inu)*msulfate(i,k)*zdz*1.e-6
100        piz_ae(i,k,inu)=1.0
101        cg_ae(i,k,inu)=cg_aer(RH_num,inu) +
102     .                 DELTA*(cg_aer(RH_num+1,inu)-cg_aer(RH_num,inu))
103cjq
104cjq for aerosol index
105c
106        alphasulfate=alpha_aer_sulfate(RH_num,4) +
107     .       DELTA*(alpha_aer_sulfate(RH_num+1,4)-
108     .       alpha_aer_sulfate(RH_num,4)) !--m2/g
109c     
110        taue670(i)=taue670(i)+
111     .       alphasulfate*msulfate(i,k)*zdz*1.e-6
112c
113        alphasulfate=alpha_aer_sulfate(RH_num,5) +
114     .       DELTA*(alpha_aer_sulfate(RH_num+1,5)-
115     .       alpha_aer_sulfate(RH_num,5)) !--m2/g
116c
117        taue865(i)=taue865(i)+
118     .         alphasulfate*msulfate(i,k)*zdz*1.e-6
119       
120      ENDDO
121      ENDDO
122c     
123      DO i=1, klon
124        ai(i)=(-log(MAX(taue670(i),0.0001)/
125     .                MAX(taue865(i),0.0001))/log(670./865.)) *
126     .        taue865(i)
127      ENDDO     
128c
129      RETURN
130      END
Note: See TracBrowser for help on using the repository browser.