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

Last change on this file since 201 was 175, checked in by slebonnois, 14 years ago

S.LEBONNOIS:

  • Revision majeure de la physique Titan => ajout des nuages version 10 bins (Jeremie Burgalat) Cette version reste a tester mais avec clouds=0, on reste sur l'ancienne.
  • Quelques ajouts dans la doc.
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=======================================================================
49c-----------------------------------------------------------------------
50c   Declarations:
51c   ------------
52
53      use dimphy
54      IMPLICIT NONE
55#include "dimensions.h"
56#include "YOMCST.h"
57      INTEGER NLAYER,NSPECI,NSPC1I
58      PARAMETER(NLAYER=llm)
59      PARAMETER (NSPECI=46,NSPC1I=47)
60
61c  ASTUCE POUR EVITER klon... EN ATTENDANT MIEUX
62      INTEGER   ngrid
63      PARAMETER (ngrid=(jjm-1)*iim+2)  ! = klon
64c
65c   Arguments:
66c   ----------
67
68      INTEGER NG,NL,icld
69      REAL PRESS(NG,NL),TEMP(NG,NL)
70      REAL Z(NG,NL),Q0(NG,NL-1)
71      REAL lwnet(NG,NL),UBARI2
72      real pfluxi(NG)
73
74
75c   Common:
76c   -------
77
78C DTAU IS PASSED EN-MASS, SO ITS DEMENSIONS ARE CRITICAL
79      REAL dtaui(ngrid,NLAYER,NSPECI)
80      REAL dtauip(ngrid,NLAYER,NSPECI)
81      COMMON /IRTAUS/ dtaui,dtauip
82
83c   Local:
84c   ------
85
86      REAL WNOI(NSPECI),DWNI(NSPECI)   ! SPECTAL INTERVALS
87      REAL B0(ngrid,llm+1)
88      REAL EM(ngrid,llm+1)
89      REAL DW,WAVEN,TJ,BSURF,QOUT,QIN,eff_g,COLDEN
90
91      INTEGER ig,K,J,I,L
92
93c     EXTERNAL PLNCK
94      REAL PLNCK,zz1,zz2,zz3,zz4,WAVNUM,Xtest
95
96      REAL FNETIS(ngrid,llm+1),FNETI(ngrid,llm+1)
97      REAL FDIS(ngrid,llm+1,nspeci),FUPIS(ngrid,llm+1,nspeci)
98      REAL FDI(ngrid,llm+1), FUPI(ngrid,llm+1)
99
100c   Data:
101c   -----
102
103      REAL RHOP,CSUBP,UBARI,RSFI
104      DATA RHOP/1.E4/      ! CONVERSION FROM PRESSURE TO MASS
105      DATA UBARI/0.5/      ! MEAN COSINE FOR 2-STREAM
106      DATA RSFI/0.0/       ! SURFACE ALBEDO
107      DATA WNOI/
108     &    11.500,    20.000,    31.250,    50.000,    75.000,
109     &   100.000,   125.000,   150.000,   175.000,   200.000,
110     &   225.000,   250.000,   275.000,   300.000,   325.000,
111     &   350.000,   375.000,   400.000,   425.000,   450.000,
112     &   475.000,   500.000,   525.000,   550.000,   575.000,
113     &   600.000,   628.750,   662.838,   681.757,   683.919,
114     &   686.541,   689.623,   692.704,   695.786,   715.141,
115     &   733.836,   735.597,   737.358,   739.119,   742.720,
116     &   748.160,   753.600,   834.560,   917.333,   926.400,
117     &   935.466/
118      DATA DWNI/
119     &     7.000,    10.000,    12.500,    25.000,    25.000,
120     &    25.000,    25.000,    25.000,    25.000,    25.000,
121     &    25.000,    25.000,    25.000,    25.000,    25.000,
122     &    25.000,    25.000,    25.000,    25.000,    25.000,
123     &    25.000,    25.000,    25.000,    25.000,    25.000,
124     &    25.000,    32.500,    35.676,     2.162,     2.162,
125     &     3.082,     3.082,     3.082,     3.082,    35.629,
126     &     1.761,     1.761,     1.761,     1.761,     5.440,
127     &     5.440,     5.440,   156.480,     9.067,     9.067,
128     &     9.067/
129
130
131      save RHOP,UBARI,RSFI,WNOI,DWNI
132
133c-----------------------------------------------------------------------
134
135c   Initialisations:
136c   ----------------
137
138      CSUBP = RCPD*1e4   ! HEAT CAPACITY OF TITANS ATMOSPHERE in CGS
139
140      UBARI2=1./1.66
141      UBARI2=UBARI
142
143C ZERO THE NET FLUXES
144         Q0    = 0.0
145         lwnet = 0.0
146
147c-----------------------------------------------------------------------
148C WE NOW ENTER A MAJOR LOOP OVER SPECRAL INTERVALS IN THE INFRARED
149C TO CALCULATE THE NET FLUX IN EACH SPECTRAL INTERVAL
150c-----------------------------------------------------------------------
151
152       DO 2000 K=1,NSPECI    ! *** START OF SPECTRAL LOOP
153
154c-----------------------------------------------------------------------
155C SET UP ALTITIDUE PARAMETERS
156
157          WAVEN=WNOI(K)
158          DW=DWNI(K)
159          zz1=DW/(2.*2)
160          EM = 0.
161          B0 = 0.
162
163          DO J=1,NL-1
164             DO ig=1,NG
165                TJ=TEMP(ig,J)
166
167   
168C  Modif: in-lining de la fonction planck pour vectorisation
169C               B0(ig,J)=PLNCK(WAVEN,TJ,DW)
170C     FUNCTION PLNCK(WAV,T,DW)
171C* PLNCK FUNCTION RETURNS B IN CGS UNITS, ERGS CM-2 WAVENUMBER-1
172C* WAVNUM IS WAVENUMBER IN CM-1
173C* T IS IN KELVIN
174                PLNCK=0.
175                DO I=-2,2,1
176                   WAVNUM=WAVEN + I*zz1
177                   zz2=EXP(-1.4388 * WAVNUM/TEMP(ig,J))
178                   zz3=WAVNUM*WAVNUM*WAVNUM
179                   PLNCK=PLNCK+1.191E-5* zz3*zz2/(1.-zz2)
180                ENDDO
181                B0(ig,J)=.2*PLNCK
182             ENDDO
183
184             IF (ICLD.EQ.1) THEN
185               DO ig=1,NG
186                 zz4=EXP(-DTAUI(ig,J,K)/UBARI2)
187                 EM(ig,J)=zz4
188               ENDDO
189             ELSE
190               DO ig=1,NG
191                 zz4=EXP(-DTAUIP(ig,J,K)/UBARI2)
192                 EM(ig,J)=zz4
193               ENDDO
194             ENDIF
195          ENDDO
196
197c-----------------------------------------------------------------------
198C CALCULATE THE DOWNWELLING RADIATION AT THE TOP OF THE MODEL
199C OR THE TOP LAYER WILL COOL TO SPACE UNPHYSICALLY
200
201           FDI  =0.
202           FDIS =0.
203           FUPI =0.
204           FUPIS=0.
205
206        DO 2220 J=1,NL-1
207           DO 2230 ig=1,NG
208              FDI(ig,J+1) = FDI(ig,J)*EM(ig,J) + 2.*RPI*UBARI*
209     &        B0(ig,J)*(1.-EM(ig,J))
210              FDIS(ig,J+1,K) = FDIS(ig,J,K)*EM(ig,J) + 2.*RPI*UBARI*
211     &        B0(ig,J)*(1.-EM(ig,J))
2122230       CONTINUE
2132220    CONTINUE
214c     write(*,*)
215c     write(*,*) 'cooling : EM  =' ,
216c    & ((EM(i,l),l=1,nl),i=1,ngrid)
217c     write(*,*)
218c     write(*,*) 'cooling : B0  =' ,
219c    & ((B0(i,l),l=1,nl),i=1,ngrid)
220c     write(*,*)
221c     write(*,*) 'cooling : FDI =' ,
222c    & ((FDI(i,l),l=1,nl),i=1,ngrid)
223
224c-----------------------------------------------------------------------
225C UPWARD FLUXES: SURFACE EMISSIONS
226
227        DO 2310 ig=1,NG
228          PLNCK=0.
229          DO I=-2,2,1
230             WAVNUM=WAVEN + I*zz1
231             zz2=EXP(-1.4388 * WAVNUM/TEMP(ig,NL))
232             zz3=WAVNUM*WAVNUM*WAVNUM
233             PLNCK=PLNCK+1.191E-5* zz3*zz2/(1.-zz2)
234          ENDDO
235c          BSURF=PLNCK( WAVEN, TEMP(ig,NL), DW)
236           BSURF=.2*PLNCK
237        FUPI(ig,NL)=BSURF * 2.*RPI*UBARI + RSFI*FDI(ig,NL)
238        FUPIS(ig,NL,K)=BSURF*2.*RPI*UBARI+RSFI*FDIS(ig,NL,K)
2392310    CONTINUE
240c     write(*,*)
241c     write(*,*) 'cooling : FUPI/NL =' ,
242c    & ((FUPI(i,l),l=nl,nl),i=1,NG)
243c     write(*,*)
244c     write(*,*) 'cooling : FDI/NL =' ,
245c    & ((FDI(i,l),l=nl,nl),i=1,NG)
246
247        DO 2320 J=NL-1,1,-1
248           DO 2330 ig=1,NG
249              FUPI(ig,J) = FUPI(ig,J+1)*EM(ig,J) + 2.*RPI*UBARI*
250     &        B0(ig,J)*(1.-EM(ig,J))
251              FUPIS(ig,J,K) = FUPIS(ig,J+1,K)*EM(ig,J)+2.*RPI*UBARI*
252     &        B0(ig,J)*(1.-EM(ig,J))
2532330       CONTINUE
2542320    CONTINUE
255c     write(*,*)
256c     write(*,*) 'cooling : EM  =' ,
257c    & ((EM(i,l),l=1,nl),i=1,ngrid)
258c     write(*,*)
259c     write(*,*) 'cooling : B0  =' ,
260c    & ((B0(i,l),l=1,nl),i=1,ngrid)
261c     write(*,*)
262c     write(*,*) 'cooling : FUPI =' ,
263c    & ((FUPI(i,l),l=1,nl),i=1,ngrid)
264
265c compute the downward IR flux at the surface:
266c
267          DO 3520 ig=1,NG
268             pfluxi(ig)=pfluxi(ig)+ DWNI(K)*FDI(ig,NL)
2693520      CONTINUE
270
271c compute the net IR flux, (+) upward:
272c
273          DO J=1,NL
274          DO ig=1,NG
275             lwnet(ig,J)= lwnet(ig,J)+ DWNI(K)*(FUPI(ig,J)-FDI(ig,J))
276          ENDDO
277          ENDDO
278         
279          DO 3210 J=1,NL-1
280             DO 3220 ig=1,NG
281                QOUT=FUPI(ig,J) + FDI(ig,J+1)   ! OUT OF LAYER
282                QIN =FDI(ig,J)  + FUPI(ig,J+1)  ! INTO LAYER
283                Q0(ig,J)=Q0(ig,J)+(QOUT-QIN)*DWNI(K)
2843220         CONTINUE
2853210      CONTINUE
286
287c     write(*,*)
288c     write(*,*) 'cooling/loop : FUPI =' ,
289c    & ((FUPI(i,l),l=1,nl),i=1,ngrid)
290c     write(*,*)
291c     write(*,*) 'cooling : FDI  =' ,
292c    & ((FDI(i,l),l=1,nl),i=1,ngrid)
293c     write(*,*)
294c     write(*,*) 'cooling : Q0 =' ,
295c    & ((Q0(i,l),l=1,nl-1),i=1,ngrid)
296
297
298c-----------------------------------------------------------------------
299
3002000  CONTINUE ! *** END SPECTRAL INTERVAL COMPUTATIONS
301
302
303c-----------------------------------------------------------------------
304
305c   convertion erg/cm2 -> J/m2
306      DO 3550 ig=1,NG
307         pfluxi(ig)  = 1.e-3*pfluxi(ig)
308         lwnet(ig,:) = 1.e-3*lwnet(ig,:)
3093550  CONTINUE
310
311c     PRINT*,'flux IR'
312c     WRITE(*,'(8e10.2)') pfluxi
313
314C COMPUTE THE BASELINE COOLING RATE
315
316       DO 3000 J=1,NL-1
317C TURN THE Q'S INTO TIMESCALES.....
318          DO 3300 ig=1,NG
319             eff_g = RG*(RA/(RA+Z(ig,J)))**2 ! 10% DIFF AT 1 MBAR
320             COLDEN = RHOP*(PRESS(ig,J+1)-PRESS(ig,J))/eff_g
321c            Q0(J) = (COLDEN * CSUBP )/Q0(J)
322             Q0(ig,J) = Q0(ig,J) / (COLDEN*CSUBP)
3233300      CONTINUE
3243000  CONTINUE
325
326c     write(*,*)
327c     write(*,*) 'cooling/end : Q0 ='
328c     write(*,*) ((Q0(k,l)*1e7,l=1,nl-1),k=1,ngrid)
329c-----------------------------------------------------------------------
330
331      RETURN
332      END
Note: See TracBrowser for help on using the repository browser.