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

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

Serie de modifs SL pour homogeneisation des phytitan et phyvenus
Ca touche aussi aux liens phy/dyn (surtout a propos de clesphy0),
a verifier avec les autres, donc...

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