source: LMDZ4/branches/LMDZ4-dev/libf/phylmd/aeropt.F @ 1255

Last change on this file since 1255 was 1150, checked in by jghattas, 16 years ago

Ajoute possiblilite de forcer avec d'autre aersols avec le meme principe que pour les so4.

Par default la convergence est rempu avec flag_aersosol=1 + ok_ade=ok_aie=y. Exactement les memes resultats peuvent etre retrouver avec new_aod=n. Les resultats sont exactement les memes sans prise en compte aucun aerosol, avec ok_ade=ok_aie=n.

  • flag_aerosol indique quel aersosol ou combinasion a utiliser (=1 uniquement les SO4 comme avant)
  • les fichiers d'entree so4.runXXXX.cdf change du nom pour majescule SO4.runXXXX.cdf
  • readsulfate change du nom pour readaerosol qui trait tous les aerosols
  • radlwsw change du nom pour radlwsw_aero.
  • aeropt_2bands.F90 et aeropt_5wv.F90 correspond a un reecriture de aeropt.F (premier et deuxieme moitie respectivement)
  • aeropt.F est gardé pour retrouver la convergence si demande avec new_aod=false (=true default)
  • sw_aero est un version evolue de sw_lmdar4 (dans fichier radiation_ar4.F)

ACo + JG

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