source: trunk/LMDZ.TITAN/libf/phytitan/radlwsw.F @ 537

Last change on this file since 537 was 495, checked in by slebonnois, 13 years ago

Mise a jour physique Titan, ajout des forces de marees (dans la dynamique, sous flag titan). SL.

File size: 6.0 KB
Line 
1      SUBROUTINE radlwsw(dist, rmu0, fract, falbe, dtimerad, zzlev,
2     .                  paprs, pplay,tsol, pt, nq, nmicro, pq,
3     .                  qaer,
4     .                  heat,cool,radsol,
5     .                  topsw,toplw,solsw,sollw,
6     .                  sollwdown,
7     .                  lwnet, swnet)
8c     
9c======================================================================
10c Auteur(s): Z.X. Li (LMD/CNRS) date: 19960719
11c Objet: interface entre le modele et les rayonnements
12c Arguments:
13c dist-----input-R- distance astronomique terre-soleil
14c rmu0-----input-R- cosinus de l'angle zenithal
15c fract----input-R- duree d'ensoleillement normalisee
16c falbe----input-R- surface albedo
17c dtimerad-input-R- intervalle de temps du radiatif
18c zzlev----input-R- altitudes des inter-couches (m)
19c paprs----input-R- pression a inter-couche (Pa)
20c pplay----input-R- pression au milieu de couche (Pa)
21c tsol-----input-R- temperature du sol (en K)
22c t--------input-R- temperature (K)
23c nq-------input-R- nombre de traceurs
24c nmicro---input-R- nombre de traceurs microphysiques
25c pq-------input-R- traceurs (rapports de melange)
26c heat-----output-R- echauffement atmospherique (visible) (K/s)
27c cool-----output-R- refroidissement dans l'IR (K/s)
28c radsol---output-R- bilan radiatif net au sol (W/m**2) (+ vers le bas)
29c topsw----output-R- flux solaire net au sommet de l'atm. (+ vers le bas)
30c toplw----output-R- ray. IR net au sommet de l'atmosphere (+ vers le haut)
31c solsw----output-R- flux solaire net a la surface (+ vers le bas)
32c sollw----output-R- ray. IR net a la surface (+ vers le bas)
33c sollwdown-output-R- ray. IR descendant a la surface (+ vers le bas)
34c lwnet____output-R- flux IR net (+ vers le haut)
35c swnet____output-R- flux solaire net (+ vers le bas)
36c
37     
38c   S. Lebonnois    05/2008
39c  VERSION TITAN
40
41c======================================================================
42      use dimphy
43      USE comgeomphy
44      IMPLICIT none
45#include "dimensions.h"
46#include "YOMCST.h"
47#include "clesphys.h"
48c
49c ARGUMENTS
50      INTEGER nq,nmicro
51      real rmu0(klon), fract(klon), falbe(klon), dist, dtimerad
52c
53      real zzlev(klon,klev+1),paprs(klon,klev+1), pplay(klon,klev)
54      real tsol(klon)
55      real pt(klon,klev)
56      real pq(klon,klev,nq)
57      REAL qaer(klon,klev,nq)
58      real heat(klon,klev), cool(klon,klev)
59      real radsol(klon), topsw(klon), toplw(klon)
60      real solsw(klon), sollw(klon)
61      real sollwdown(klon)
62      REAL swnet(klon,klev+1),lwnet(klon,klev+1)
63c
64c LOCAL VARIABLES
65      integer i,k,l,iq
66      real zp(klon,klev+1),zt(klon,klev+1),zz(klon,klev+1)
67      real zq(klon,klev,nq)
68      real zheatc(klon,klev), zcoolc(klon,klev)
69      real zheatp(klon,klev), zcoolp(klon,klev)
70      REAL zswnetc(klon,klev+1),zlwnetp(klon,klev+1)
71      REAL zswnetp(klon,klev+1),zlwnetc(klon,klev+1)
72      REAL zsollwdownc(klon),zsollwdownp(klon)
73      INTEGER icld
74
75
76c =======================================
77c INITIALISATIONS
78c =======================================
79
80c   passage au pressions en bar avec indice 1 au sommet.
81             do l=2,klev+1
82                do i=1,klon
83                   zp(i,l)=paprs(i,klev+2-l)*1.e-5
84                enddo
85             enddo
86             do i=1,klon
87                zp(i,1)=zp(i,2)*.001
88             enddo
89
90c   altitudes (m) avec indice 1 en haut
91             do l=1,klev+1
92                do i=1,klon
93                   zz(i,l)=zzlev(i,klev+2-l)
94                enddo
95             enddo
96
97c   temperatures avec indice 1 en haut
98             do l=1,klev
99                do i=1,klon
100                   zt(i,l)=pt(i,klev+1-l)
101                enddo
102             enddo
103             do i=1,klon
104                zt(i,klev+1)=tsol(i)
105             enddo
106
107c  traceurs avec indice 1 en haut
108             do l=1,klev
109                do i=1,klon
110                 do iq=1,nq
111                   zq(i,l,iq)=pq(i,klev+1-l,iq)
112                 enddo
113                enddo
114             enddo
115
116c =======================================
117c CALCUL DES TAU V+IR  (dans des common...)
118c =======================================
119
120      print*,'On calcule les opacites'
121
122         CALL radtitan(zp,nq,nmicro,zq,qaer)
123
124c =======================================
125c CALCUL DU SW
126c =======================================
127
128      print*,'On calcule le rayonnement SW'
129
130       IF (clouds.eq.1) THEN
131         ICLD = 1   ! colonne avec nuages
132         CALL heating(dist,rmu0,fract,falbe,zheatc,zswnetc,icld)
133       ELSE
134         zheatc  = 0.
135         zswnetc = 0.
136       ENDIF
137       ICLD = 0   ! colonne sans nuages
138       CALL heating(dist,rmu0,fract,falbe,zheatp,zswnetp,icld)
139
140c inversion de l'axe vertical
141       do l=1,klev
142         do i=1,klon
143           heat(i,l)=zheatc(i,klev+1-l)*xnuf +
144     &               zheatp(i,klev+1-l)*(1.-xnuf)
145         enddo
146       enddo
147       do l=1,klev+1
148         do i=1,klon
149           swnet(i,l)=zswnetc(i,klev+2-l)*xnuf +
150     &                zswnetp(i,klev+2-l)*(1.-xnuf)
151         enddo
152       enddo
153
154      solsw = swnet(:,1)
155      topsw = swnet(:,klev+1)
156
157c =======================================
158c CALCUL DU LW
159c =======================================
160
161      print*,'On calcule le rayonnement LW'
162
163       IF (clouds.eq.1) THEN
164         ICLD = 1
165         CALL cooling(klon,klev+1,zp,zt,zz,zcoolc,zlwnetc,zsollwdownc,
166     &   icld)
167       ELSE
168         zcoolc      = 0.
169         zlwnetc     = 0.
170         zsollwdownc = 0.
171       ENDIF
172       ICLD = 0
173       CALL cooling(klon,klev+1,zp,zt,zz,zcoolp,zlwnetp,zsollwdownp,
174     & icld)
175
176c inversion de l'axe vertical
177       do l=1,klev
178         do i=1,klon
179           cool(i,l)=zcoolc(i,klev+1-l)*xnuf +
180     &               zcoolp(i,klev+1-l)*(1.-xnuf)
181         enddo
182       enddo
183       do l=1,klev+1
184         do i=1,klon
185           lwnet(i,l)=zlwnetc(i,klev+2-l)*xnuf +
186     &                zlwnetp(i,klev+2-l)*(1.-xnuf)
187         enddo
188       enddo
189   
190       do i=1,klon
191         sollwdown(i)=zsollwdownc(i)*xnuf +
192     &                zsollwdownp(i)*(1.-xnuf)
193       enddo
194
195      sollw  = -lwnet(:,1)
196      toplw  = lwnet(:,klev+1)
197      radsol = solsw+sollw
198     
199      RETURN
200      END
Note: See TracBrowser for help on using the repository browser.