source: trunk/libf/phyvenus/radlwsw.NewtonCool @ 21

Last change on this file since 21 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   S. Lebonnois    12/04/2007
37c  VERSION NEWTONIAN COOLING pour Venus (no diurnal cycle)
38
39c======================================================================
40#include "dimensions.h"
41#include "dimphy.h"
42#include "raddim.h"
43#include "YOETHF.h"
44#include "YOMCST.h"
45#include "clesphys.h"
46#include "comgeomphy.h"
47c
48      real rmu0(klon), fract(klon), dist
49c
50      real paprs(klon,klev+1), pplay(klon,klev)
51      real tsol(klon)
52      real t(klon,klev)
53      real heat(klon,klev), cool(klon,klev)
54      real radsol(klon), topsw(klon), toplw(klon)
55      real solsw(klon), sollw(klon)
56      real sollwdown(klon)
57      REAL swnet(klon,kflev+1),lwnet(klon,kflev+1)
58c
59      INTEGER i,j,k
60      integer    nlevCLee,level
61      parameter (nlevCLee=30)
62      REAL   pressCLee(nlevCLee+1),tempCLee(nlevCLee+1)
63      real   dt_epCLee(nlevCLee+1),etaCLee(nlevCLee+1)
64      real   tauCLee
65      parameter (tauCLee=25*86400) ! en s
66      real   ztemp,zdt,fact
67      real   dTsdt(klev),zt_eq(klon,klev)
68      real   dureejour
69      parameter (dureejour=10.087e6)
70      save   zt_eq
71     
72      data     etaCLee/9.602e-1,8.679e-1,7.577e-1,6.420e-1,5.299e-1,
73     .                 4.273e-1,3.373e-1,2.610e-1,1.979e-1,1.472e-1,
74     .                 1.074e-1,7.672e-2,5.361e-2,3.657e-2,2.430e-2,
75     .                 1.569e-2,9.814e-3,5.929e-3,3.454e-3,1.934e-3,
76     .                 1.043e-3,5.400e-4,2.710e-4,1.324e-4,6.355e-5,
77     .                 3.070e-5,1.525e-5,7.950e-6,4.500e-6,2.925e-6,
78     .                 2.265e-6/
79      data   tempCLee/728.187,715.129,697.876,677.284,654.078,628.885,
80     .                602.225,574.542,546.104,517.339,488.560,459.932,
81     .                431.741,404.202,377.555,352.042,327.887,305.313,
82     .                284.556,265.697,248.844,233.771,220.368,208.247,
83     .                197.127,187.104,178.489,171.800,167.598,165.899,
84     .                165.676/
85      data   dt_epCLee/6.101 , 6.136 , 6.176 , 6.410 , 6.634 , 6.678 ,
86     .                 6.719 , 6.762 , 7.167 , 7.524 , 9.840 ,14.948 ,
87     .                21.370 ,28.746 ,36.373 ,43.315 ,48.534 ,51.175 ,
88     .                50.757 ,47.342 ,41.536 ,34.295 ,26.758 ,19.807 ,
89     .                14.001 , 9.599 , 6.504 , 4.439 , 3.126 , 2.370 ,
90     .                2.000/
91c
92
93      logical firstcall
94      data    firstcall/.true./
95      save    firstcall
96     
97c  Initialisations
98c-----------------
99
100      if (firstcall) then
101
102        PRINT*,"******* ATTENTION, NEWTONIAN COOLING ********"
103
104        pressCLee = etaCLee * 9.2e6
105
106        DO i = 1, klon
107       
108          do k = 1,klev
109         
110            level = 1
111            do j=1,nlevCLee
112              if (pressCLee(j).gt.pplay(i,k)) level = j
113            enddo
114           
115            fact  = (log10(pplay(i,k))-log10(pressCLee(level)))
116     .        /(log10(pressCLee(level+1))-log10(pressCLee(level)))
117            ztemp = tempCLee(level)*(1-fact)+tempCLee(level+1)*fact
118            zdt   = dt_epCLee(level)*(1-fact)+dt_epCLee(level+1)*fact
119c           zt_eq(i,k) = ztemp + zdt*(cos(rlatd(i)*RPI/180.)-2./RPI)
120            zt_eq(i,k) = ztemp + zdt*(cos(rlatd(i)*RPI/180.)-RPI/4.)
121           
122          enddo
123         
124        ENDDO !i
125
126      endif ! firstcall
127     
128c+++++++ BOUCLE SUR LA GRILLE +++++++++++++++++++++++++
129      DO j = 1,klon
130 
131          do k = 1,klev
132             dTsdt(k) = -(t(j,k)-zt_eq(j,k))/tauCLee   ! en K/s
133          enddo
134       
135         radsol(j) = 0.           ! + vers bas
136         topsw(j) = 0.            ! + vers bas
137         toplw(j) = 0.            ! + vers haut
138         solsw(j) = 0.            ! + vers bas
139         sollw(j) = 0.            ! + vers bas
140         sollwdown(j) = 0.        ! + vers bas
141
142        DO k = 1, kflev+1
143         lwnet  (j,k)   = 0.
144         swnet  (j,k)   = 0.
145        ENDDO
146
147        DO k = 1, kflev
148         heat (j,k) = dTsdt(k)*dureejour ! K/Venusday
149         cool (j,k) = 0.
150        ENDDO
151c
152      ENDDO !j
153c+++++++ FIN BOUCLE SUR LA GRILLE +++++++++++++++++++++++++
154
155      firstcall = .false.
156      RETURN
157      END
158
Note: See TracBrowser for help on using the repository browser.