source: trunk/libf/phyvenus/radlwsw.multimat @ 24

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