source: trunk/LMDZ.TITAN/libf/phytitan/cooling.F @ 537

Last change on this file since 537 was 495, checked in by slebonnois, 13 years ago

Mise a jour physique Titan, ajout des forces de marees (dans la dynamique, sous flag titan). SL.

File size: 9.7 KB
Line 
1      SUBROUTINE COOLING(NG,NL,PRESS,TEMP,Z,Q0,lwnet,pfluxi,icld)
2
3c=======================================================================
4c
5c   Author :  C. P. Mc Kay            01/02/91
6c   ------
7c
8c   Object :
9c   --------
10c
11C THIS SUBROUTINE RETURNS THE COOLING RATE IN TITAN'S ATMOSPHERE
12C INPUTS ARE PRESS(BARS), TEMP(K), Z(KM)
13C OUTPUT IS: Q(K/SEC)C
14C
15C COOLING RATE COMPUTED NEGLECTING SCATTERING.
16C THE TRICK OF THIS ROUTINE IS THAT IT READS IN THE OPACITIES
17C FOR EACH LAYER AT EACH WAVENUMBER IN THE SPECTRAL DOMAIN
18C THESE OPACITIES ARE HELD CONSTANT WITH TEMPERATURE AND TIME.
19c
20c   Interface:
21c   ----------
22c
23c   Arguments:
24c   ----------
25c
26c      input:
27c      ------
28c
29c      nl               number of levels
30c      press(nl)        pressure levels (layers)
31c      temp(nl)         temperature (layers)
32c      z(nl)            altitude   (m, levels)
33c
34c      output:
35c      -------
36c
37c      q0(nl-1)         radiative cooling in K/sec
38c      lwnet(nl)        net fluxes, (+) upward
39c      pfluxi          IR descendant a la surface (+ vers le bas)
40c
41c   Commons:
42c   --------
43c
44c     COMMON/IRTAUS/dtaui(nlayer,nspeci)
45c     infrared opacities of the differents layers for differents
46c     spectral ranges. This common is initialized by radtitan.
47c   
48c     COMMON /PLANT/ CSUBP,F0PI
49c     This common is initialized by tgmdat.
50c
51c=======================================================================
52c-----------------------------------------------------------------------
53c   Declarations:
54c   ------------
55
56      use dimphy
57      IMPLICIT NONE
58#include "dimensions.h"
59#include "YOMCST.h"
60      INTEGER NLAYER,NSPECI,NSPC1I
61      PARAMETER(NLAYER=llm)
62      PARAMETER (NSPECI=46,NSPC1I=47)
63
64c  ASTUCE POUR EVITER klon... EN ATTENDANT MIEUX
65      INTEGER   ngrid
66      PARAMETER (ngrid=(jjm-1)*iim+2)  ! = klon
67c
68c   Arguments:
69c   ----------
70
71      INTEGER NG,NL,icld
72      REAL PRESS(NG,NL),TEMP(NG,NL)
73      REAL Z(NG,NL),Q0(NG,NL-1)
74      REAL lwnet(NG,NL),UBARI2
75      real pfluxi(NG)
76
77
78c   Common:
79c   -------
80
81C DTAU IS PASSED EN-MASS, SO ITS DEMENSIONS ARE CRITICAL
82      REAL dtaui(ngrid,NLAYER,NSPECI)
83      REAL dtauip(ngrid,NLAYER,NSPECI)
84      COMMON /IRTAUS/ dtaui,dtauip
85
86      COMMON /PLANT/ CSUBP,F0PI
87      REAL CSUBP,F0PI
88
89c   Local:
90c   ------
91
92      REAL WNOI(NSPECI),DWNI(NSPECI)   ! SPECTAL INTERVALS
93      REAL B0(ngrid,llm+1)
94      REAL EM(ngrid,llm+1)
95      REAL DW,WAVEN,TJ,BSURF,QOUT,QIN,eff_g,COLDEN
96
97      INTEGER ig,K,J,I,L
98
99c     EXTERNAL PLNCK
100      REAL PLNCK,zz1,zz2,zz3,zz4,WAVNUM,Xtest
101
102      REAL FNETIS(ngrid,llm+1),FNETI(ngrid,llm+1)
103      REAL FDIS(ngrid,llm+1,nspeci),FUPIS(ngrid,llm+1,nspeci)
104      REAL FDI(ngrid,llm+1), FUPI(ngrid,llm+1)
105
106c   Data:
107c   -----
108
109      REAL RHOP,UBARI
110      DATA RHOP/1.E4/      ! CONVERSION FROM PRESSURE TO MASS
111      DATA UBARI/0.5/      ! MEAN COSINE FOR 2-STREAM
112      DATA WNOI/
113     &    11.500,    20.000,    31.250,    50.000,    75.000,
114     &   100.000,   125.000,   150.000,   175.000,   200.000,
115     &   225.000,   250.000,   275.000,   300.000,   325.000,
116     &   350.000,   375.000,   400.000,   425.000,   450.000,
117     &   475.000,   500.000,   525.000,   550.000,   575.000,
118     &   600.000,   628.750,   662.838,   681.757,   683.919,
119     &   686.541,   689.623,   692.704,   695.786,   715.141,
120     &   733.836,   735.597,   737.358,   739.119,   742.720,
121     &   748.160,   753.600,   834.560,   917.333,   926.400,
122     &   935.466/
123      DATA DWNI/
124     &     7.000,    10.000,    12.500,    25.000,    25.000,
125     &    25.000,    25.000,    25.000,    25.000,    25.000,
126     &    25.000,    25.000,    25.000,    25.000,    25.000,
127     &    25.000,    25.000,    25.000,    25.000,    25.000,
128     &    25.000,    25.000,    25.000,    25.000,    25.000,
129     &    25.000,    32.500,    35.676,     2.162,     2.162,
130     &     3.082,     3.082,     3.082,     3.082,    35.629,
131     &     1.761,     1.761,     1.761,     1.761,     5.440,
132     &     5.440,     5.440,   156.480,     9.067,     9.067,
133     &     9.067/
134
135
136      save RHOP,UBARI,WNOI,DWNI
137
138c-----------------------------------------------------------------------
139
140c   Initialisations:
141c   ----------------
142
143      UBARI2=1./1.66
144      UBARI2=UBARI
145
146C ZERO THE NET FLUXES
147         Q0    = 0.0
148         lwnet = 0.0
149
150c-----------------------------------------------------------------------
151C WE NOW ENTER A MAJOR LOOP OVER SPECRAL INTERVALS IN THE INFRARED
152C TO CALCULATE THE NET FLUX IN EACH SPECTRAL INTERVAL
153c-----------------------------------------------------------------------
154
155       DO 2000 K=1,NSPECI    ! *** START OF SPECTRAL LOOP
156
157c-----------------------------------------------------------------------
158C SET UP ALTITIDUE PARAMETERS
159
160          WAVEN=WNOI(K)
161          DW=DWNI(K)
162          zz1=DW/(2.*2)
163          EM = 0.
164          B0 = 0.
165
166          DO J=1,NL-1
167             DO ig=1,NG
168                TJ=TEMP(ig,J)
169
170   
171C  Modif: in-lining de la fonction planck pour vectorisation
172C               B0(ig,J)=PLNCK(WAVEN,TJ,DW)
173C     FUNCTION PLNCK(WAV,T,DW)
174C* PLNCK FUNCTION RETURNS B IN CGS UNITS, ERGS CM-2 WAVENUMBER-1
175C* WAVNUM IS WAVENUMBER IN CM-1
176C* T IS IN KELVIN
177                PLNCK=0.
178                DO I=-2,2,1
179                   WAVNUM=WAVEN + I*zz1
180                   zz2=EXP(-1.4388 * WAVNUM/TEMP(ig,J))
181                   zz3=WAVNUM*WAVNUM*WAVNUM
182                   PLNCK=PLNCK+1.191E-5* zz3*zz2/(1.-zz2)
183                ENDDO
184                B0(ig,J)=.2*PLNCK
185             ENDDO
186
187             IF (ICLD.EQ.1) THEN
188               DO ig=1,NG
189                 zz4=EXP(-DTAUI(ig,J,K)/UBARI2)
190                 EM(ig,J)=zz4
191               ENDDO
192             ELSE
193               DO ig=1,NG
194                 zz4=EXP(-DTAUIP(ig,J,K)/UBARI2)
195                 EM(ig,J)=zz4
196               ENDDO
197             ENDIF
198          ENDDO
199
200c-----------------------------------------------------------------------
201C CALCULATE THE DOWNWELLING RADIATION AT THE TOP OF THE MODEL
202C OR THE TOP LAYER WILL COOL TO SPACE UNPHYSICALLY
203
204           FDI  =0.
205           FDIS =0.
206           FUPI =0.
207           FUPIS=0.
208
209        DO 2220 J=1,NL-1
210           DO 2230 ig=1,NG
211              FDI(ig,J+1) = FDI(ig,J)*EM(ig,J) + 2.*RPI*UBARI*
212     &        B0(ig,J)*(1.-EM(ig,J))
213              FDIS(ig,J+1,K) = FDIS(ig,J,K)*EM(ig,J) + 2.*RPI*UBARI*
214     &        B0(ig,J)*(1.-EM(ig,J))
2152230       CONTINUE
2162220    CONTINUE
217c     write(*,*)
218c     write(*,*) 'cooling : EM  =' ,
219c    & ((EM(i,l),l=1,nl),i=1,ngrid)
220c     write(*,*)
221c     write(*,*) 'cooling : B0  =' ,
222c    & ((B0(i,l),l=1,nl),i=1,ngrid)
223c     write(*,*)
224c     write(*,*) 'cooling : FDI =' ,
225c    & ((FDI(i,l),l=1,nl),i=1,ngrid)
226
227c-----------------------------------------------------------------------
228C UPWARD FLUXES: SURFACE EMISSIONS
229
230        DO 2310 ig=1,NG
231          PLNCK=0.
232          DO I=-2,2,1
233             WAVNUM=WAVEN + I*zz1
234             zz2=EXP(-1.4388 * WAVNUM/TEMP(ig,NL))
235             zz3=WAVNUM*WAVNUM*WAVNUM
236             PLNCK=PLNCK+1.191E-5* zz3*zz2/(1.-zz2)
237          ENDDO
238c          BSURF=PLNCK( WAVEN, TEMP(ig,NL), DW)
239           BSURF=.2*PLNCK*emis
240        FUPI(ig,NL)   =BSURF*2.*RPI*UBARI+(1-emis)*FDI(ig,NL)
241        FUPIS(ig,NL,K)=BSURF*2.*RPI*UBARI+(1-emis)*FDIS(ig,NL,K)
2422310    CONTINUE
243c     write(*,*)
244c     write(*,*) 'cooling : FUPI/NL =' ,
245c    & ((FUPI(i,l),l=nl,nl),i=1,NG)
246c     write(*,*)
247c     write(*,*) 'cooling : FDI/NL =' ,
248c    & ((FDI(i,l),l=nl,nl),i=1,NG)
249
250        DO 2320 J=NL-1,1,-1
251           DO 2330 ig=1,NG
252              FUPI(ig,J) = FUPI(ig,J+1)*EM(ig,J) + 2.*RPI*UBARI*
253     &        B0(ig,J)*(1.-EM(ig,J))
254              FUPIS(ig,J,K) = FUPIS(ig,J+1,K)*EM(ig,J)+2.*RPI*UBARI*
255     &        B0(ig,J)*(1.-EM(ig,J))
2562330       CONTINUE
2572320    CONTINUE
258c     write(*,*)
259c     write(*,*) 'cooling : EM  =' ,
260c    & ((EM(i,l),l=1,nl),i=1,ngrid)
261c     write(*,*)
262c     write(*,*) 'cooling : B0  =' ,
263c    & ((B0(i,l),l=1,nl),i=1,ngrid)
264c     write(*,*)
265c     write(*,*) 'cooling : FUPI =' ,
266c    & ((FUPI(i,l),l=1,nl),i=1,ngrid)
267
268c compute the downward IR flux at the surface:
269c
270          DO 3520 ig=1,NG
271             pfluxi(ig)=pfluxi(ig)+ DWNI(K)*FDI(ig,NL)
2723520      CONTINUE
273
274c compute the net IR flux, (+) upward:
275c
276          DO J=1,NL
277          DO ig=1,NG
278             lwnet(ig,J)= lwnet(ig,J)+ DWNI(K)*(FUPI(ig,J)-FDI(ig,J))
279          ENDDO
280          ENDDO
281         
282          DO 3210 J=1,NL-1
283             DO 3220 ig=1,NG
284                QOUT=FUPI(ig,J) + FDI(ig,J+1)   ! OUT OF LAYER
285                QIN =FDI(ig,J)  + FUPI(ig,J+1)  ! INTO LAYER
286                Q0(ig,J)=Q0(ig,J)+(QOUT-QIN)*DWNI(K)
2873220         CONTINUE
2883210      CONTINUE
289
290c     write(*,*)
291c     write(*,*) 'cooling/loop : FUPI =' ,
292c    & ((FUPI(i,l),l=1,nl),i=1,ngrid)
293c     write(*,*)
294c     write(*,*) 'cooling : FDI  =' ,
295c    & ((FDI(i,l),l=1,nl),i=1,ngrid)
296c     write(*,*)
297c     write(*,*) 'cooling : Q0 =' ,
298c    & ((Q0(i,l),l=1,nl-1),i=1,ngrid)
299
300
301c-----------------------------------------------------------------------
302
3032000  CONTINUE ! *** END SPECTRAL INTERVAL COMPUTATIONS
304
305
306c-----------------------------------------------------------------------
307
308c   convertion erg/cm2 -> J/m2
309      DO 3550 ig=1,NG
310         pfluxi(ig)  = 1.e-3*pfluxi(ig)
311         lwnet(ig,:) = 1.e-3*lwnet(ig,:)
3123550  CONTINUE
313
314c     PRINT*,'flux IR'
315c     WRITE(*,'(8e10.2)') pfluxi
316
317C COMPUTE THE BASELINE COOLING RATE
318
319       DO 3000 J=1,NL-1
320C TURN THE Q'S INTO TIMESCALES.....
321          DO 3300 ig=1,NG
322             eff_g = RG*(RA/(RA+Z(ig,J)))**2 ! 10% DIFF AT 1 MBAR
323             COLDEN = RHOP*(PRESS(ig,J+1)-PRESS(ig,J))/eff_g
324c            Q0(J) = (COLDEN * CSUBP )/Q0(J)
325             Q0(ig,J) = Q0(ig,J) / (COLDEN*CSUBP)
3263300      CONTINUE
3273000  CONTINUE
328
329c     write(*,*)
330c     write(*,*) 'cooling/end : Q0 ='
331c     write(*,*) ((Q0(k,l)*1e7,l=1,nl-1),k=1,ngrid)
332c-----------------------------------------------------------------------
333
334      RETURN
335      END
Note: See TracBrowser for help on using the repository browser.