source: trunk/libf/phytitan/radlwsw.F @ 130

Last change on this file since 130 was 121, checked in by slebonnois, 14 years ago

SL: correction bug dans phytitan/cooling.F

File size: 5.1 KB
RevLine 
[3]1      SUBROUTINE radlwsw(dist, rmu0, fract, dtimerad, zzlev,
2     .                  paprs, pplay,tsol, pt, nq, nmicro, pq,
[104]3     .                  qaer,
[3]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 dtimerad-input-R- intervalle de temps du radiatif
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======================================================================
[102]41      use dimphy
42      USE comgeomphy
43      IMPLICIT none
[3]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), dist, dtimerad
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)
[104]56      REAL qaer(klon,klev,nq)
[3]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,kflev+1),lwnet(klon,kflev+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 zheat(klon,klev), zcool(klon,klev)
68      REAL zswnet(klon,kflev+1),zlwnet(klon,kflev+1)
69     
70
71c =======================================
72c INITIALISATIONS
73c =======================================
74
75c   passage au pressions en bar avec indice 1 au sommet.
76             do l=2,klev+1
77                do i=1,klon
78                   zp(i,l)=paprs(i,klev+2-l)*1.e-5
79                enddo
80             enddo
81             do i=1,klon
82                zp(i,1)=zp(i,2)*.001
83             enddo
84
85c   altitudes (m) avec indice 1 en haut
86             do l=1,klev+1
87                do i=1,klon
88                   zz(i,l)=zzlev(i,klev+2-l)
89                enddo
90             enddo
91
92c   temperatures avec indice 1 en haut
93             do l=1,klev
94                do i=1,klon
95                   zt(i,l)=pt(i,klev+1-l)
96                enddo
97             enddo
98             do i=1,klon
99                zt(i,klev+1)=tsol(i)
100             enddo
101
102c  traceurs avec indice 1 en haut
103             do l=1,klev
104                do i=1,klon
105                 do iq=1,nq
106                   zq(i,l,iq)=pq(i,klev+1-l,iq)
107                 enddo
108                enddo
109             enddo
110
111c =======================================
112c CALCUL DES TAU V+IR  (dans des common...)
113c =======================================
114
115      print*,'On calcule les opacites'
116
[104]117         CALL radtitan(zp,nq,nmicro,zq,qaer)
[3]118
119c =======================================
120c CALCUL DU SW
121c =======================================
122
123      print*,'On calcule le rayonnement SW'
124
125      CALL heating(dist,rmu0,fract,zheat,zswnet)
126
127c inversion de l'axe vertical
128             do l=1,klev
129                do i=1,klon
130                   heat(i,l)=zheat(i,klev+1-l)
131                enddo
132             enddo
133             do l=1,klev+1
134                do i=1,klon
135                   swnet(i,l)=zswnet(i,klev+2-l)
136                enddo
137             enddo
138
139      solsw = swnet(:,1)
140      topsw = swnet(:,klev+1)
141
142c =======================================
143c CALCUL DU LW
144c =======================================
145
146      print*,'On calcule le rayonnement LW'
147
[121]148      CALL cooling(klev+1,zp,zt,zz,zcool,zlwnet,sollwdown)
[3]149
150c inversion de l'axe vertical
151             do l=1,klev
152                do i=1,klon
153                   cool(i,l)=zcool(i,klev+1-l)
154                enddo
155             enddo
156             do l=1,klev+1
157                do i=1,klon
158                   lwnet(i,l)=zlwnet(i,klev+2-l)
159                enddo
160             enddo
161
162      sollw  = -lwnet(:,1)
163      toplw  = lwnet(:,klev+1)
164      radsol = solsw+sollw
165     
166      RETURN
167      END
Note: See TracBrowser for help on using the repository browser.