[38] | 1 | subroutine lwdiff (kdlon,kflev |
---|
| 2 | . ,pbsur,pbtop,pdbsl |
---|
| 3 | . ,tautotal,omegtotal,gtotal |
---|
| 4 | . ,pemis,pfluc) |
---|
| 5 | |
---|
[1047] | 6 | use dimradmars_mod, only: nir, npademx, nabsmx, nflev, ndlon, |
---|
| 7 | & ndlo2 |
---|
| 8 | use yomlw_h, only: nlaylte |
---|
[1226] | 9 | USE comcstfi_h |
---|
[38] | 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 |
---|