source: trunk/libf/phyvenus/radlwsw.F @ 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: 6.2 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 MODIFS pour multimatrices ksi SPECIFIQUE VENUS
37c   S. Lebonnois    20/12/2006
38c   corrections     13/07/2007
39
40c======================================================================
41#include "dimensions.h"
42#include "dimphy.h"
43#include "raddim.h"
44#include "YOMCST.h"
45#include "clesphys.h"
46#include "comgeomphy.h"
47#include "comcstVE.h"
48c
49      real rmu0(klon), fract(klon), dist
50c
51      real paprs(klon,klev+1), pplay(klon,klev)
52      real tsol(klon)
53      real t(klon,klev)
54      real heat(klon,klev), cool(klon,klev)
55      real radsol(klon), topsw(klon), toplw(klon)
56      real solsw(klon), sollw(klon)
57      real sollwdown(klon)
58      REAL swnet(klon,kflev+1),lwnet(klon,kflev+1)
59c
60      INTEGER k, kk, i, j, nb_gr
61c
62      REAL   PPB(kflev+1)
63c
64      REAL   zfract, zrmu0
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   ksive(0:kflev+1,0:kflev+1,nnuve,nbmat)  ! ksi matrixes in Vincent's file
74      real    psimap(0:kflev+1,0:kflev+1,klon)
75      real    deltapsimap(0:kflev+1,0:kflev+1,klon)
76      real    psi(0:kflev+1,0:kflev+1)
77      real    deltapsi(0:kflev+1,0:kflev+1)
78      real    latdeg,ztop(klon) ! in km
79      real    pt0(klon,0:kflev+1)
80
81      save    ksive,ztop
82
83      logical firstcall
84      data    firstcall/.true./
85      save    firstcall
86     
87c-------------------------------------------
88      nb_gr = klon
89c-------------------------------------------
90c  Initialisations
91c-----------------
92
93      if (firstcall) then
94        call load_ksi(ksive)
95
96c ---------- ztop --------------
97        DO i = 1, klon
98             ztop(i) = 70.
99        ENDDO !i
100
101c ztop: d'apres fit à figure 16 du papier Zavosa et al (tmp) traitant des
102c       donnees Venera
103c       DO i = 1, klon
104c         latdeg = abs(rlatd(i))
105c         if (latdeg.lt.15) then
106c            ztop(i) = 70.
107c         elseif (latdeg.lt.50) then
108c            ztop(i) = 63.95+6*cos((latdeg-15)*RPI/2./50.)
109c         else
110c            ztop(i) = min(63.95+6*cos((latdeg-15)*RPI/2./50.),
111c    .                     63.95-5.9*sin((latdeg-60)*RPI/2/30))
112c         endif
113c       print*,'lat(',i,')=',latdeg,'  ztop=',ztop(i)
114c       ENDDO !i
115c ---------- ztop --------------
116
117      endif ! firstcall
118
119      DO i = 1, klon
120          pt0(i,0)  = tsol(i)
121          DO k = 1, klev
122            pt0(i,k) = t(i,k)
123          ENDDO
124          pt0(i,kflev+1) = 0.
125      ENDDO !i
126
127      call load_psi(paprs(:,1),ztop,ksive,pt0,psimap,deltapsimap)
128
129      DO k = 1, klev
130      DO i = 1, klon
131         heat(i,k)=0.
132         cool(i,k)=0.
133      ENDDO
134      ENDDO
135c
136c+++++++ BOUCLE SUR LA GRILLE +++++++++++++++++++++++++
137      DO 99999 j = 1, nb_gr
138 
139       DO k = 1, klev
140        zheat(k) = 0.0
141        zcool(k) = 0.0
142       ENDDO
143       DO k = 1, klev+1
144        ZFLNET(k) = 0.0
145        ZFSNET(k) = 0.0
146       ENDDO
147       ztopsw = 0.0
148       ztoplw = 0.0
149       zsolsw = 0.0
150       zsollw = 0.0
151       zsollwdown = 0.0
152     
153         zfract = fract(j)
154         zrmu0 = rmu0(j)
155 
156      DO k = 1, kflev+1
157         PPB(k) = paprs(j,k)/1.e5
158      ENDDO
159 
160      DO k = 0,kflev+1
161      DO i = 0,kflev+1
162        psi(i,k) = psimap(i,k,j)
163        deltapsi(i,k) = deltapsimap(i,k,j)
164      ENDDO
165      ENDDO
166       
167c======================================================================
168c LW call
169c---------
170      CALL LW_venus_ve(
171     .        PPB,t(j,:),psi,deltapsi,
172     .        zcool,
173     .        ztoplw,zsollw,
174     .        zsollwdown,ZFLNET)
175
176c---------
177c SW call
178c---------
179      CALL SW_venus_dc(zrmu0, zfract,
180     S        PPB,t(j,:),
181     S        zheat,
182     S        ztopsw,zsolsw,ZFSNET)
183     
184c======================================================================
185         radsol(j) = zsolsw - zsollw  ! + vers bas
186         topsw(j) = ztopsw            ! + vers bas
187         toplw(j) = ztoplw            ! + vers haut
188         solsw(j) = zsolsw            ! + vers bas
189         sollw(j) = -zsollw           ! + vers bas
190         sollwdown(j) = zsollwdown    ! + vers bas
191
192         DO k = 1, kflev+1
193         lwnet  (j,k)   = ZFLNET(k)
194         swnet  (j,k)   = ZFSNET(k)
195         ENDDO
196
197      DO k = 1, kflev
198         heat (j,k) = zheat(k)
199         cool (j,k) = zcool(k)
200      ENDDO
201c
20299999 CONTINUE
203c+++++++ FIN BOUCLE SUR LA GRILLE +++++++++++++++++++++++++
204
205c tests
206
207c     j = klon/2
208c     j = 1
209c     print*,'mu0=',rmu0(j)
210c     print*,'   net flux vis   HEAT(K/day)'
211c     do k=1,kflev
212c     print*,k,ZFSNET(k),heat(j,k)*8.56548e-3
213c     enddo
214c     print*,'   net flux IR    COOL(K/day)'
215c     do k=1,kflev
216c     print*,k,ZFLNET(k),cool(j,k)*8.56548e-3
217c     enddo
218
219      firstcall = .false.
220      RETURN
221      END
222
Note: See TracBrowser for help on using the repository browser.