1 | subroutine lwdiff (kdlon,kflev |
---|
2 | . ,pbsur,pbtop,pdbsl |
---|
3 | . ,tautotal,omegtotal,gtotal |
---|
4 | . ,pemis,pfluc) |
---|
5 | |
---|
6 | use dimradmars_mod, only: nir, npademx, nabsmx, nflev, ndlon, |
---|
7 | & ndlo2 |
---|
8 | use yomlw_h, only: nlaylte |
---|
9 | USE comcstfi_h |
---|
10 | IMPLICIT NONE |
---|
11 | |
---|
12 | #include "callkeys.h" |
---|
13 | |
---|
14 | C----------------------------------------------------------------------- |
---|
15 | C |
---|
16 | c ABSORPTION ET DIFUSION HORS DE LA BANDE A 15 MICRONS : |
---|
17 | c! 1) Dans la bande a 15 micron (CO2), les poussieres |
---|
18 | c! n'interviennent que comme un milieu gris non diffusif avec |
---|
19 | c! Q=Qext*(1-Omega) |
---|
20 | c! cette bande est decoupee en deux sous bandes (indices 1 et 2) |
---|
21 | c! pour lesquelles les parametres optiques des poussieres sont |
---|
22 | c! identiques |
---|
23 | c! 2) le reste est decoupe en "nir-2" bandes : une bande qui recouvre toutes |
---|
24 | c! les longueurs d'onde inferieures a celles de la bande a 15 microns |
---|
25 | c! (indice 3) et nir-3 bandes pour les grandes longueurs d'onde |
---|
26 | c! (indices 4...nir) sur chacune de ces bandes, les poussieres |
---|
27 | c! sont supposees diffusantes grises. |
---|
28 | c! |
---|
29 | C |
---|
30 | C----------------------------------------------------------------------- |
---|
31 | C |
---|
32 | C |
---|
33 | C----------------------------------------------------------------------- |
---|
34 | C |
---|
35 | C* 0.1 ARGUMENTS |
---|
36 | C --------- |
---|
37 | C |
---|
38 | integer kdlon,kflev |
---|
39 | REAL PBSUR(NDLO2,nir), PBTOP(NDLO2,nir) |
---|
40 | S , PDBSL(NDLO2,nir,KFLEV*2), PEMIS(NDLO2) |
---|
41 | |
---|
42 | real PFLUC(NDLO2,2,KFLEV+1) |
---|
43 | real tautotal(ndlon,nflev,nir) |
---|
44 | real omegtotal(ndlon,nflev,nir), gtotal(ndlon,nflev,nir) |
---|
45 | |
---|
46 | C |
---|
47 | C |
---|
48 | C------------------------------------------------------------------------- |
---|
49 | C |
---|
50 | C* 0.2 LOCAL ARRAYS |
---|
51 | C ------------ |
---|
52 | C |
---|
53 | C |
---|
54 | integer jl, jk, ndd, indd, iir, j1 |
---|
55 | integer j2, j2dd2, j2dd1,j2bot,j2top, j2dd |
---|
56 | REAL ZADJD(NDLON,NFLEV+1), ZADJU(NDLON,NFLEV+1) |
---|
57 | S , ZDBDT(NDLON,nir,NFLEV) |
---|
58 | S , ZDISD(NDLON,NFLEV+1), ZDISU(NDLON,NFLEV+1) |
---|
59 | S , ZFD(NDLON), ZFDN(NDLON,NFLEV+1), ZFU(NDLON) |
---|
60 | S , ZFUP(NDLON,NFLEV+1),ZGLAYD(NDLON),ZGLAYU(NDLON) |
---|
61 | S , ZOMEGADD(NDLON,NFLEV*2),ZGDD(NDLON,NFLEV*2) |
---|
62 | S , ZTAUDD(NDLON,NFLEV*2) |
---|
63 | S , ZBHDD(NDLON,NFLEV*2+1),ZBSDD(NDLON) |
---|
64 | S , ZZBHDD(NDLON,NFLEV*2+1),ZZBSDD(NDLON) |
---|
65 | S , ZFAHDD(NDLON,NFLEV*2+1),ZFDHDD(NDLON,NFLEV*2+1) |
---|
66 | S , ZZFAHDD(NDLON,NFLEV*2+1),ZZFDHDD(NDLON,NFLEV*2+1) |
---|
67 | C |
---|
68 | C----------------------------------------------------------------------- |
---|
69 | C |
---|
70 | C* 1. INITIALIZATION |
---|
71 | C -------------- |
---|
72 | C |
---|
73 | 100 CONTINUE |
---|
74 | C |
---|
75 | C* 1.1 INITIALIZE LAYER CONTRIBUTIONS |
---|
76 | C ------------------------------ |
---|
77 | C |
---|
78 | 110 CONTINUE |
---|
79 | C |
---|
80 | |
---|
81 | do jl = 1 , kdlon |
---|
82 | do jk = 1 , nlaylte |
---|
83 | PFLUC(jl,1,jk) = 0. |
---|
84 | PFLUC(jl,2,jk) = 0. |
---|
85 | enddo |
---|
86 | enddo |
---|
87 | |
---|
88 | DO 112 JK = 1 , nlaylte+1 |
---|
89 | DO 111 JL = 1 , KDLON |
---|
90 | ZADJD(JL,JK) = 0. |
---|
91 | ZADJU(JL,JK) = 0. |
---|
92 | ZDISD(JL,JK) = 0. |
---|
93 | ZDISU(JL,JK) = 0. |
---|
94 | 111 CONTINUE |
---|
95 | 112 CONTINUE |
---|
96 | C |
---|
97 | C |
---|
98 | C ------------------------------------------------------------------ |
---|
99 | C |
---|
100 | C* 2. VERTICAL INTEGRATION |
---|
101 | C -------------------- |
---|
102 | C |
---|
103 | C ------------------------------------------------------------------ |
---|
104 | C |
---|
105 | C |
---|
106 | C ================================================================== |
---|
107 | C* 2.0 contribution des bandes "hors co2" |
---|
108 | C ================================================================== |
---|
109 | C |
---|
110 | 200 CONTINUE |
---|
111 | C |
---|
112 | C ------------------------------------------------------------------ |
---|
113 | C |
---|
114 | C* 2.0.1 preparation des Planck a chaque hauteur |
---|
115 | C ---------------------------------- |
---|
116 | C |
---|
117 | c! |
---|
118 | c! le nombre de couche pour la diffusion sera le nombre de layer * 2 |
---|
119 | c! soit NDD=nlaylte*2, donc la taille du vecteur des Planck sera |
---|
120 | c! nlaylte*2 + 1. la taille des vecteurs omega / g / tau sera |
---|
121 | c! par contre nlaylte*2 (voir dans FLUSV.F). |
---|
122 | c! |
---|
123 | NDD=nlaylte*2 |
---|
124 | DO indd=1,ndd+1 |
---|
125 | do jl=1,kdlon |
---|
126 | ZFAHDD(jl,indd)=0. |
---|
127 | ZFDHDD(jl,indd)=0. |
---|
128 | ZBHDD(jl,indd)=0. |
---|
129 | enddo |
---|
130 | ENDDO |
---|
131 | do jl=1,kdlon |
---|
132 | ZBSDD(jl)=0. |
---|
133 | enddo |
---|
134 | c! |
---|
135 | c! boucle sur les bandes hors CO2 |
---|
136 | c! |
---|
137 | DO 10001 iir=3,nir |
---|
138 | c! |
---|
139 | do jl=1,kdlon |
---|
140 | ZZBHDD(JL,1)=PBTOP(JL,iir)/pi |
---|
141 | enddo |
---|
142 | DO J1=2,NDD+1 |
---|
143 | do jl=1,kdlon |
---|
144 | ZZBHDD(JL,J1)= |
---|
145 | & ZZBHDD(JL,J1-1)-PDBSL(JL,iir,NDD-J1+2)/pi |
---|
146 | enddo |
---|
147 | ENDDO |
---|
148 | do jl=1,kdlon |
---|
149 | ZZBSDD(JL)=PBSUR(JL,iir)/pi |
---|
150 | enddo |
---|
151 | |
---|
152 | C |
---|
153 | C ------------------------------------------------------------------ |
---|
154 | C |
---|
155 | C* 2.0.2 preparation des coefficients de diffusion |
---|
156 | C ----------------------------------------- |
---|
157 | C |
---|
158 | c! les omega, g, tau ... boucle de bas en haut |
---|
159 | DO J2=1,nlaylte-1 |
---|
160 | J2DD2=(nlaylte-J2+1)*2 |
---|
161 | J2DD1=J2DD2-1 |
---|
162 | J2BOT=3*J2-2 |
---|
163 | J2TOP=3*J2+1 |
---|
164 | do jl=1,kdlon |
---|
165 | ZTAUDD(JL,J2DD1)=tautotal(jl,J2,iir)*0.5 |
---|
166 | ZTAUDD(JL,J2DD2)=ZTAUDD(JL,J2DD1) |
---|
167 | ZOMEGADD(JL,J2DD1)=omegtotal(jl,J2,iir) |
---|
168 | ZOMEGADD(JL,J2DD2)=omegtotal(jl,J2,iir) |
---|
169 | ZGDD(JL,J2DD1)=gtotal(jl,J2,iir) |
---|
170 | ZGDD(JL,J2DD2)=gtotal(jl,J2,iir) |
---|
171 | enddo |
---|
172 | ENDDO |
---|
173 | J2=nlaylte |
---|
174 | J2DD2=2 |
---|
175 | J2DD1=1 |
---|
176 | J2BOT=3*J2-2 |
---|
177 | do jl=1,kdlon |
---|
178 | ZTAUDD(JL,J2DD1)= tautotal(jl,J2,iir)*0.5 |
---|
179 | ZTAUDD(JL,J2DD2)= tautotal(jl,J2,iir)*0.5 |
---|
180 | ZOMEGADD(JL,J2DD1)= omegtotal(jl,J2,iir) |
---|
181 | ZOMEGADD(JL,J2DD2)= omegtotal(jl,J2,iir) |
---|
182 | ZGDD(JL,J2DD1)= gtotal(jl,J2,iir) |
---|
183 | ZGDD(JL,J2DD2)= gtotal(jl,J2,iir) |
---|
184 | enddo |
---|
185 | C |
---|
186 | C ------------------------------------------------------------------ |
---|
187 | C |
---|
188 | C* 2.0.3 calcul de la diffusion |
---|
189 | C ---------------------- |
---|
190 | C |
---|
191 | |
---|
192 | c----------------------------------------------------------------------- |
---|
193 | CALL flusv(KDLON,0 |
---|
194 | & ,NDD,ZOMEGADD,ZGDD,ZTAUDD,PEMIS |
---|
195 | & ,ZZBHDD,ZZBSDD |
---|
196 | & ,ZZFAHDD,ZZFDHDD) |
---|
197 | c! |
---|
198 | c! Cumul des flux sur le spectre hors bande du CO2 |
---|
199 | c! |
---|
200 | DO indd=1,ndd+1 |
---|
201 | do jl=1,kdlon |
---|
202 | ZFAHDD(jl,indd)=ZFAHDD(jl,indd)+ZZFAHDD(jl,indd) |
---|
203 | ZFDHDD(jl,indd)=ZFDHDD(jl,indd)+ZZFDHDD(jl,indd) |
---|
204 | enddo |
---|
205 | ENDDO |
---|
206 | 10001 CONTINUE |
---|
207 | |
---|
208 | DO J2=1,nlaylte+1 |
---|
209 | J2DD=(nlaylte-J2+1)*2+1 |
---|
210 | do jl=1,kdlon |
---|
211 | PFLUC(JL,1,J2)=PFLUC(JL,1,J2)+ZFAHDD(JL,J2DD) |
---|
212 | PFLUC(JL,2,J2)=PFLUC(JL,2,J2)-ZFDHDD(JL,J2DD) |
---|
213 | enddo |
---|
214 | ENDDO |
---|
215 | |
---|
216 | |
---|
217 | END |
---|