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

Last change on this file since 828 was 815, checked in by slebonnois, 12 years ago

SL: petites modifs Titan et Venus pour tableau controle dans la physique ; pour Titan, petits details lies a raz_date ; modif chemin ioipsl sur gnome ; + elimination d'un warning etrange dans gcm.F

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