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

Last change on this file since 86 was 3, checked in by slebonnois, 15 years ago

Creation de repertoires:

  • chantiers : pour communiquer sur nos projets de modifs
  • documentation : pour stocker les docs

Ajout de:

  • libf/phytitan : physique de Titan
  • libf/chimtitan: chimie de Titan
  • libf/phyvenus : physique de Venus
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"
40#include "YOETHF.h"
41c
42      real rmu0(klon), fract(klon), dist
43#include "clesphys.h"
44c
45      real paprs(klon,klev+1), pplay(klon,klev)
46      real tsol(klon)
47      real t(klon,klev)
48      real heat(klon,klev), cool(klon,klev)
49      real radsol(klon), topsw(klon), toplw(klon)
50      real solsw(klon), sollw(klon)
51      real sollwdown(klon)
52      REAL swnet(klon,kflev+1),lwnet(klon,kflev+1)
53c
54#include "YOMCST.h"
55c
56      INTEGER k, kk, i, j, nb_gr
57c
58      REAL   PSCT
59c
60      REAL   PDT0
61      REAL   PPSOL
62      REAL   PTL(kflev+1), PPB(kflev+1)
63      REAL   PTAVE(kflev)
64c
65      REAL   zfract, zrmu0, zdist
66c
67      REAL   zheat(kflev), zcool(kflev)
68      REAL   ZFSNET(KFLEV+1),ZFLNET(KFLEV+1)
69      REAL   ztopsw, ztoplw
70      REAL   zsolsw, zsollw
71cIM BEG
72      REAL   zsollwdown
73cIM END
74      REAL   zznormcp
75c
76      REAL   zx_alpha1, zx_alpha2
77c
78c-------------------------------------------
79      nb_gr = klon
80c-------------------------------------------
81c  Initialisations
82c-----------------
83      DO k = 1, klev
84      DO i = 1, klon
85         heat(i,k)=0.
86         cool(i,k)=0.
87      ENDDO
88      ENDDO
89c
90      zdist = dist
91c
92c     PRINT*,'IMradlwsw : solaire= ', solaire
93c     PSCT = solaire/zdist/zdist
94c
95c+++++++ BOUCLE SUR LA GRILLE +++++++++++++++++++++++++
96      DO 99999 j = 1, nb_gr
97 
98       DO k = 1, klev
99        zheat(k) = 0.0
100        zcool(k) = 0.0
101       ENDDO
102       DO k = 1, klev+1
103        ZFLNET(k) = 0.0
104        ZFSNET(k) = 0.0
105       ENDDO
106       ztopsw = 0.0
107       ztoplw = 0.0
108       zsolsw = 0.0
109       zsollw = 0.0
110       zsollwdown = 0.0
111     
112         zfract = fract(j)
113         zrmu0 = rmu0(j)
114         PPSOL = paprs(j,1)
115         zx_alpha1 = (paprs(j,1)-pplay(j,2))
116     .             / (pplay(j,1)-pplay(j,2))
117         zx_alpha2 = 1.0 - zx_alpha1
118         PTL(1) = t(j,1) * zx_alpha1 + t(j,2) * zx_alpha2
119         PTL(klev+1) = t(j,klev)
120         PDT0 = tsol(j) - PTL(1)
121      DO k = 2, kflev
122         PTL(k) = (t(j,k)+t(j,k-1))*0.5
123      ENDDO
124      DO k = 1, kflev
125         PTAVE(k) = t(j,k)
126      ENDDO
127c
128      DO k = 1, kflev
129         PPB(k) = paprs(j,k)/1.e5
130      ENDDO
131c     PPB(kflev+1) = pplay(j,kflev)/2.e5 ! pour eviter le 0. (=paprs(j,kflev+1))
132      PPB(kflev+1) = paprs(j,kflev)/1.e9 ! pour eviter le 0. (=paprs(j,kflev+1))
133c
134c======================================================================
135c LW call
136c---------
137      CALL LW_venus_ve(
138     .        PPB, PTAVE, tsol(j),
139     .        zcool,
140     .        ztoplw,zsollw,
141     .        zsollwdown,ZFLNET)
142
143c---------
144c SW call
145c---------
146      CALL SW_venus_dc(zrmu0, zfract,
147     S        PPB,
148     S        zheat,
149     S        ztopsw,zsolsw,ZFSNET)
150     
151c======================================================================
152         radsol(j) = zsolsw - zsollw  ! + vers bas
153         topsw(j) = ztopsw            ! + vers bas
154         toplw(j) = ztoplw            ! + vers haut
155         solsw(j) = zsolsw            ! + vers bas
156         sollw(j) = -zsollw           ! + vers bas
157         sollwdown(j) = zsollwdown    ! + vers bas
158
159         DO k = 1, kflev+1
160         lwnet  (j,k)   = ZFLNET(k)
161         swnet  (j,k)   = ZFSNET(k)
162         ENDDO
163
164      DO k = 1, kflev
165C        scale factor to take into account the difference between
166C        dry air and watter vapour scpecific heat capacity
167         zznormcp=1.0
168         heat (j,k) = zheat(k)/zznormcp
169         cool (j,k) = zcool(k)/zznormcp
170      ENDDO
171c
17299999 CONTINUE
173c+++++++ FIN BOUCLE SUR LA GRILLE +++++++++++++++++++++++++
174
175c tests
176
177c     j = klon/2
178c     j = 1
179c     print*,'mu0=',rmu0(j)
180c     print*,'   net flux vis   HEAT(K/day)'
181c     do k=1,kflev
182c     print*,k,ZFSNET(k),heat(j,k)*8.56548e-3
183c     enddo
184c     print*,'   net flux IR    COOL(K/day)'
185c     do k=1,kflev
186c     print*,k,ZFLNET(k),cool(j,k)*8.56548e-3
187c     enddo
188     
189      RETURN
190      END
191
Note: See TracBrowser for help on using the repository browser.