source: trunk/libf/phyvenus/radlwsw.1mat @ 101

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

SL: modifications pour arriver a compiler le gcm VENUS !
Ca marche !
A noter: modifs de makelmdz

File size: 5.4 KB
Line 
1!
2! $Header: /home/cvsroot/LMDZ4/libf/phylmd/radlwsw.F,v 1.2 2004/10/27 10:14:46 lmdzadmin Exp $
3!
4      SUBROUTINE radlwsw(dist, rmu0, fract,
5     .                  paprs, pplay,tsol, t,
6     .                  heat,cool,radsol,
7     .                  topsw,toplw,solsw,sollw,
8     .                  sollwdown,
9     .                  lwnet, swnet)
10c     
11c======================================================================
12c Auteur(s): Z.X. Li (LMD/CNRS) date: 19960719
13c Objet: interface entre le modele et les rayonnements
14c Arguments:
15c dist-----input-R- distance astronomique terre-soleil
16c rmu0-----input-R- cosinus de l'angle zenithal
17c fract----input-R- duree d'ensoleillement normalisee
18c solaire--input-R- constante solaire (W/m**2) (dans clesphys.h)
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 heat-----output-R- echauffement atmospherique (visible) (K/jour)
24c cool-----output-R- refroidissement dans l'IR (K/jour)
25c radsol---output-R- bilan radiatif net au sol (W/m**2) (+ vers le bas)
26c topsw----output-R- flux solaire net au sommet de l'atm. (+ vers le bas)
27c toplw----output-R- ray. IR net au sommet de l'atmosphere (+ vers le haut)
28c solsw----output-R- flux solaire net a la surface (+ vers le bas)
29c sollw----output-R- ray. IR net a la surface (+ vers le bas)
30c sollwdown-output-R- ray. IR descendant a la surface (+ vers le bas)
31c lwnet____output-R- flux IR net (+ vers le haut)
32c swnet____output-R- flux solaire net (+ vers le bas)
33c
34     
35c======================================================================
36      use dimphy
37      IMPLICIT none
38#include "dimensions.h"
39c
40      real rmu0(klon), fract(klon), dist
41#include "clesphys.h"
42c
43      real paprs(klon,klev+1), pplay(klon,klev)
44      real tsol(klon)
45      real t(klon,klev)
46      real heat(klon,klev), cool(klon,klev)
47      real radsol(klon), topsw(klon), toplw(klon)
48      real solsw(klon), sollw(klon)
49      real sollwdown(klon)
50      REAL swnet(klon,kflev+1),lwnet(klon,kflev+1)
51c
52#include "YOMCST.h"
53c
54      INTEGER k, kk, i, j, nb_gr
55c
56      REAL   PSCT
57c
58      REAL   PDT0
59      REAL   PPSOL
60      REAL   PTL(kflev+1), PPB(kflev+1)
61      REAL   PTAVE(kflev)
62c
63      REAL   zfract, zrmu0, zdist
64c
65      REAL   zheat(kflev), zcool(kflev)
66      REAL   ZFSNET(KFLEV+1),ZFLNET(KFLEV+1)
67      REAL   ztopsw, ztoplw
68      REAL   zsolsw, zsollw
69cIM BEG
70      REAL   zsollwdown
71cIM END
72      REAL   zznormcp
73c
74      REAL   zx_alpha1, zx_alpha2
75c
76c-------------------------------------------
77      nb_gr = klon
78c-------------------------------------------
79c  Initialisations
80c-----------------
81      DO k = 1, klev
82      DO i = 1, klon
83         heat(i,k)=0.
84         cool(i,k)=0.
85      ENDDO
86      ENDDO
87c
88      zdist = dist
89c
90c     PRINT*,'IMradlwsw : solaire= ', solaire
91c     PSCT = solaire/zdist/zdist
92c
93c+++++++ BOUCLE SUR LA GRILLE +++++++++++++++++++++++++
94      DO 99999 j = 1, nb_gr
95 
96       DO k = 1, klev
97        zheat(k) = 0.0
98        zcool(k) = 0.0
99       ENDDO
100       DO k = 1, klev+1
101        ZFLNET(k) = 0.0
102        ZFSNET(k) = 0.0
103       ENDDO
104       ztopsw = 0.0
105       ztoplw = 0.0
106       zsolsw = 0.0
107       zsollw = 0.0
108       zsollwdown = 0.0
109     
110         zfract = fract(j)
111         zrmu0 = rmu0(j)
112         PPSOL = paprs(j,1)
113         zx_alpha1 = (paprs(j,1)-pplay(j,2))
114     .             / (pplay(j,1)-pplay(j,2))
115         zx_alpha2 = 1.0 - zx_alpha1
116         PTL(1) = t(j,1) * zx_alpha1 + t(j,2) * zx_alpha2
117         PTL(klev+1) = t(j,klev)
118         PDT0 = tsol(j) - PTL(1)
119      DO k = 2, kflev
120         PTL(k) = (t(j,k)+t(j,k-1))*0.5
121      ENDDO
122      DO k = 1, kflev
123         PTAVE(k) = t(j,k)
124      ENDDO
125c
126      DO k = 1, kflev
127         PPB(k) = paprs(j,k)/1.e5
128      ENDDO
129c     PPB(kflev+1) = pplay(j,kflev)/2.e5 ! pour eviter le 0. (=paprs(j,kflev+1))
130      PPB(kflev+1) = paprs(j,kflev)/1.e9 ! pour eviter le 0. (=paprs(j,kflev+1))
131c
132c======================================================================
133c LW call
134c---------
135      CALL LW_venus_ve(
136     .        PPB, PTAVE, tsol(j),
137     .        zcool,
138     .        ztoplw,zsollw,
139     .        zsollwdown,ZFLNET)
140
141c---------
142c SW call
143c---------
144      CALL SW_venus_dc(zrmu0, zfract,
145     S        PPB,
146     S        zheat,
147     S        ztopsw,zsolsw,ZFSNET)
148     
149c======================================================================
150         radsol(j) = zsolsw - zsollw  ! + vers bas
151         topsw(j) = ztopsw            ! + vers bas
152         toplw(j) = ztoplw            ! + vers haut
153         solsw(j) = zsolsw            ! + vers bas
154         sollw(j) = -zsollw           ! + vers bas
155         sollwdown(j) = zsollwdown    ! + vers bas
156
157         DO k = 1, kflev+1
158         lwnet  (j,k)   = ZFLNET(k)
159         swnet  (j,k)   = ZFSNET(k)
160         ENDDO
161
162      DO k = 1, kflev
163C        scale factor to take into account the difference between
164C        dry air and watter vapour scpecific heat capacity
165         zznormcp=1.0
166         heat (j,k) = zheat(k)/zznormcp
167         cool (j,k) = zcool(k)/zznormcp
168      ENDDO
169c
17099999 CONTINUE
171c+++++++ FIN BOUCLE SUR LA GRILLE +++++++++++++++++++++++++
172
173c tests
174
175c     j = klon/2
176c     j = 1
177c     print*,'mu0=',rmu0(j)
178c     print*,'   net flux vis   HEAT(K/day)'
179c     do k=1,kflev
180c     print*,k,ZFSNET(k),heat(j,k)*8.56548e-3
181c     enddo
182c     print*,'   net flux IR    COOL(K/day)'
183c     do k=1,kflev
184c     print*,k,ZFLNET(k),cool(j,k)*8.56548e-3
185c     enddo
186     
187      RETURN
188      END
189
Note: See TracBrowser for help on using the repository browser.