source: trunk/LMDZ.MARS/libf/phymars/swr_fouquart.F @ 1242

Last change on this file since 1242 was 1047, checked in by emillour, 11 years ago

Mars GCM:

  • IMPORTANT CHANGE: Removed all reference/use of ngridmx (dimphys.h) in routines (necessary prerequisite to using parallel dynamics); in most cases this just means adding 'ngrid' as routine argument, and making local saved variables allocatable (and allocated at first call). In the process, had to convert many *.h files to equivalent modules: yomaer.h => yomaer_h.F90 , surfdat.h => surfdat_h.F90 , comsaison.h => comsaison_h.F90 , yomlw.h => yomlw_h.F90 , comdiurn.h => comdiurn_h.F90 , dimradmars.h => dimradmars_mod.F90 , comgeomfi.h => comgeomfi_h.F90, comsoil.h => comsoil_h.F90 , slope.h => slope_mod.F90
  • Also updated EOF routines, everything is now in eofdump_mod.F90
  • Removed unused routine lectfux.F (in dyn3d)

EM

File size: 16.6 KB
RevLine 
[38]1      SUBROUTINE SWR_FOUQUART ( KDLON, KFLEV, KNU
2     S     ,  aerosol,QVISsQREF3d,omegaVIS3d,gVIS3d
3     &     ,  albedo,PDSIG,PPSOL,PRMU,PSEC
4     S     ,  PFD,PFU )
5
[1047]6      use dimradmars_mod, only: sunfr, ndlo2, nsun, ndlon, nflev
7      use yomlw_h, only: nlaylte
[38]8      IMPLICIT NONE
9C     
[1047]10!#include "dimensions.h"
11!#include "dimphys.h"
12!#include "dimradmars.h"
[38]13#include "callkeys.h"
[1047]14! naerkind is set in scatterers.h (built when compiling with makegcm -s #)
15#include"scatterers.h"
16!#include "yomaer.h"
17!#include "yomlw.h"
[38]18
19C     
20C   SWR - Continuum scattering computations
21C     
22C     PURPOSE.
23C     --------
24C     Computes the reflectivity and transmissivity in case oF
25C     Continuum scattering
26c     F. Forget (1999)
27c
28c      BASED ON MORCRETTE EARTH MODEL
29C     (See radiation's part of the ecmwf research department
30C     documentation, and Fouquart and BonneL (1980)
31C     
32C     IMPLICIT ARGUMENTS :
33C     --------------------
34C     
35C     ==== INPUTS ===
36c
37c    KDLON :  number of horizontal grid points
38c    KFLEV :  number of vertical layers
39c    KNU   :   Solar band # (1 or 2)
40c   aerosol               aerosol extinction optical depth
41c                         at reference wavelength "longrefvis" set
[1047]42c                         in dimradmars_mod , in each layer, for one of
[38]43c                         the "naerkind" kind of aerosol optical properties.
44c    albedo   hemispheric surface albedo
45c                         albedo (i,1) : mean albedo for solar band#1
46c                                        (see below)
47c                         albedo (i,2) : mean albedo for solar band#2
48c                                        (see below)
49c    PDSIG      layer thickness in sigma coordinates
50c    PPSOL       Surface pressure (Pa)
51c    PRMU:  cos of solar zenith angle (=1 when sun at zenith)
52c           (CORRECTED for high zenith angle (atmosphere), unlike mu0)
53c    PSEC   =1./PRMU
54
55C     ==== OUTPUTS ===
56c
57c    PFD : downward flux in spectral band #INU in a given mesh
58c         (normalized to the total incident flux at the top of the atmosphere)
59c    PFU : upward flux in specatral band #INU in a given mesh
60c         (normalized to the total incident flux at the top of the atmosphere)
61C
62C     
63C     METHOD.
64C     -------
65C     
66C     Computes continuum fluxes corresponding to aerosoL
67C     Or/and rayleigh scattering (no molecular gas absorption)
68C     
69C-----------------------------------------------------------------------
70C     
71C     
72C-----------------------------------------------------------------------
73C     
74     
75C     ARGUMENTS
76C     ---------
77      INTEGER KDLON, KFLEV, KNU
78      REAL aerosol(NDLO2,KFLEV,naerkind), albedo(NDLO2,2),
79     S     PDSIG(NDLO2,KFLEV),PSEC(NDLO2)
80
81      REAL QVISsQREF3d(NDLO2,KFLEV,nsun,naerkind)
82      REAL omegaVIS3d(NDLO2,KFLEV,nsun,naerkind)
83      REAL gVIS3d(NDLO2,KFLEV,nsun,naerkind)
84
85      REAL PPSOL(NDLO2)
86      REAL PFD(NDLO2,KFLEV+1),PFU(NDLO2,KFLEV+1)
87      REAL PRMU(NDLO2)
88
89C     LOCAL ARRAYS
90C     ------------
91 
92      INTEGER jk,ja,jl,jae, jkl,jklp1,jkm1,jaj
93      REAL ZTRAY, ZRATIO,ZGAR, ZFF
94      real zfacoa,zcorae
95      real ZMUE, zgap,zbmu0, zww,zto,zden,zmu1,zbmu1,zden1,zre11
96
97      REAL ZC1I(NDLON,NFLEV+1), ZGG(NDLON), ZREF(NDLON)
98     S ,  ZRE1(NDLON), ZRE2(NDLON)
99     S ,  ZRMUZ(NDLON), ZRNEB(NDLON), ZR21(NDLON)
100     S ,  ZR23(NDLON),  ZSS1(NDLON), ZTO1(NDLON), ZTR(NDLON,2,NFLEV+1)
101     S ,  ZTR1(NDLON), ZTR2(NDLON), ZW(NDLON)
102
103      REAL ZRAY1(NDLO2,NFLEV+1), ZRAY2(NDLO2,NFLEV+1)
104     s   ,  ZREFZ(NDLO2,2,NFLEV+1)
105     S   ,  ZRMUE(NDLO2,NFLEV+1)
106     S   ,  ZCGAZ(NDLO2,NFLEV),ZPIZAZ(NDLO2,NFLEV),ZTAUAZ(NDLO2,NFLEV)
107
108      REAL  ZRAYL(NDLON)
109     S     ,   ZRJ(NDLON,6,NFLEV+1)
110     S     ,  ZRK(NDLON,6,NFLEV+1)
111     S     ,  ZTRA1(NDLON,NFLEV+1), ZTRA2(NDLON,NFLEV+1)
112
113c     Function
114c     --------
115      real CVMGT
116
117C    --------------------------------
118C     OPTICAL PARAMETERS FOR AEROSOLS
119C     -------------------------------
120C     
121      DO  JK = 1 , nlaylte+1
122         DO  JA = 1 , 6
123            DO JL = 1 , KDLON
124               ZRJ(JL,JA,JK) = 0.
125               ZRK(JL,JA,JK) = 0.
126            END DO
127         END DO
128      END DO
129
130c Computing TOTAL single scattering parameters by adding
131c  properties of all the NAERKIND kind of aerosols
132
133      DO JK = 1 , nlaylte
134         DO  JL = 1 , KDLON
135            ZCGAZ(JL,JK) = 0.
136            ZPIZAZ(JL,JK) =  0.
137            ZTAUAZ(JL,JK) = 0.
138         END DO
139         DO 106 JAE=1,naerkind
140            DO 105 JL = 1 , KDLON
141c              Mean Extinction optical depth in the spectral band
142c              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
143               ZTAUAZ(JL,JK)=ZTAUAZ(JL,JK)
144     S              +aerosol(JL,JK,JAE)*QVISsQREF3d(JL,JK,KNU,JAE)
145c              Single scattering albedo
146c              ~~~~~~~~~~~~~~~~~~~~~~~~
147               ZPIZAZ(JL,JK)=ZPIZAZ(JL,JK)+aerosol(JL,JK,JAE)*
148     S           QVISsQREF3d(JL,JK,KNU,JAE)*
149     &           omegaVIS3d(JL,JK,KNU,JAE)
150c              Assymetry factor
151c              ~~~~~~~~~~~~~~~~
152               ZCGAZ(JL,JK) =  ZCGAZ(JL,JK) +aerosol(JL,JK,JAE)*
153     S           QVISsQREF3d(JL,JK,KNU,JAE)*
154     &           omegaVIS3d(JL,JK,KNU,JAE)*gVIS3d(JL,JK,KNU,JAE)
155 105        CONTINUE
156 106     CONTINUE
157      END DO
158C     
159      DO JK = 1 , nlaylte
160         DO JL = 1 , KDLON
161            ZCGAZ(JL,JK) = CVMGT( 0., ZCGAZ(JL,JK) / ZPIZAZ(JL,JK),
162     S            (ZPIZAZ(JL,JK).EQ.0) )
163            ZPIZAZ(JL,JK) = CVMGT( 1., ZPIZAZ(JL,JK) / ZTAUAZ(JL,JK),
164     S           (ZTAUAZ(JL,JK).EQ.0) )
165         END DO
166      END DO
167
168C     --------------------------------
169C     INCLUDING RAYLEIGH SCATERRING
170C     -------------------------------
171      if (rayleigh) then
172
173        call swrayleigh(kdlon,knu,ppsol,prmu,ZRAYL)
174
175c       Modifying mean aerosol parameters to account rayleigh scat by gas:
176
177        DO JK = 1 , nlaylte
178           DO JL = 1 , KDLON
179c             Rayleigh opacity in each layer :
180              ZTRAY = ZRAYL(JL) * PDSIG(JL,JK)
181c             ratio Tau(rayleigh) / Tau (total)
182              ZRATIO = ZTRAY / (ZTRAY + ZTAUAZ(JL,JK))
183              ZGAR = ZCGAZ(JL,JK)
184              ZFF = ZGAR * ZGAR
185                ZTAUAZ(JL,JK)=ZTRAY+ZTAUAZ(JL,JK)*(1.-ZPIZAZ(JL,JK)*ZFF)
186              ZCGAZ(JL,JK) = ZGAR * (1. - ZRATIO) / (1. + ZGAR)
187              ZPIZAZ(JL,JK) =ZRATIO+(1.-ZRATIO)*ZPIZAZ(JL,JK)*(1.-ZFF)
188     S           / (1. -ZPIZAZ(JL,JK) * ZFF)
189           END DO
190        END DO
191      end if
192
193     
194C     ----------------------------------------------
195C     TOTAL EFFECTIVE CLOUDINESS ABOVE A GIVEN LEVEL
196C     ----------------------------------------------
197C     
198 200  CONTINUE
199     
200      DO JL = 1 , KDLON
201         ZR23(JL) = 0.
202         ZC1I(JL,nlaylte+1) = 0.
203      END DO
204     
205      DO JK = 1 , nlaylte
206         JKL = nlaylte+1 - JK
207         JKLP1 = JKL + 1
208         DO JL = 1 , KDLON
209            ZFACOA = 1.-ZPIZAZ(JL,JKL)*ZCGAZ(JL,JKL)*ZCGAZ(JL,JKL)
210            ZCORAE = ZFACOA * ZTAUAZ(JL,JKL) * PSEC(JL)
211            ZR21(JL) = EXP(-ZCORAE   )
212            ZSS1(JL) =  1.0-ZR21(JL)
213            ZC1I(JL,JKL) = 1.0-(1.0-ZSS1(JL))*(1.0-ZC1I(JL,JKLP1))
214         END DO
215      END DO
216
217C     -----------------------------------------------
218C     REFLECTIVITY/TRANSMISSIVITY FOR PURE SCATTERING
219C     -----------------------------------------------
220C     
221      DO JL = 1 , KDLON
222         ZRAY1(JL,nlaylte+1) = 0.
223         ZRAY2(JL,nlaylte+1) = 0.
224         ZREFZ(JL,2,1) = albedo(JL,KNU)
225         ZREFZ(JL,1,1) = albedo(JL,KNU)
226         ZTRA1(JL,nlaylte+1) = 1.
227         ZTRA2(JL,nlaylte+1) = 1.
228      END DO
229
230      DO JK = 2 , nlaylte+1
231         JKM1 = JK-1
232         DO 342 JL = 1 , KDLON
233            ZRNEB(JL)= 1.e-5   ! used to be "cloudiness" (PCLDSW in Morcrette)
234
235            ZRE1(JL)=0.
236            ZTR1(JL)=0.
237            ZRE2(JL)=0.
238            ZTR2(JL)=0.
239     
240C           EQUIVALENT ZENITH ANGLE
241c           ~~~~~~~~~~~~~~~~~~~~~~~
242            ZMUE = (1.-ZC1I(JL,JK)) * PSEC(JL)
243     S           + ZC1I(JL,JK) * 1.66
244            ZRMUE(JL,JK) = 1./ZMUE
245
246C     ------------------------------------------------------------------
247C          REFLECT./TRANSMISSIVITY DUE TO AEROSOLS (and rayleigh ?)
248C     ------------------------------------------------------------------
249
250            ZGAP = ZCGAZ(JL,JKM1)
251            ZBMU0 = 0.5 - 0.75 * ZGAP / ZMUE
252            ZWW =ZPIZAZ(JL,JKM1)
253            ZTO = ZTAUAZ(JL,JKM1)
254            ZDEN = 1. + (1. - ZWW + ZBMU0 * ZWW) * ZTO * ZMUE
255     S           + (1-ZWW) * (1. - ZWW +2.*ZBMU0*ZWW)*ZTO*ZTO*ZMUE*ZMUE
256            ZRAY1(JL,JKM1) = ZBMU0 * ZWW * ZTO * ZMUE / ZDEN
257            ZTRA1(JL,JKM1) = 1. / ZDEN
258C     
259            ZMU1 = 0.5
260            ZBMU1 = 0.5 - 0.75 * ZGAP * ZMU1
261            ZDEN1= 1. + (1. - ZWW + ZBMU1 * ZWW) * ZTO / ZMU1
262     S         + (1-ZWW) * (1. - ZWW +2.*ZBMU1*ZWW)*ZTO*ZTO/ZMU1/ZMU1
263            ZRAY2(JL,JKM1) = ZBMU1 * ZWW * ZTO / ZMU1 / ZDEN1
264            ZTRA2(JL,JKM1) = 1. / ZDEN1
265
266            ZGG(JL) =  ZCGAZ(JL,JKM1)
267            ZW(JL) =ZPIZAZ(JL,JKM1)
268            ZREF(JL) = ZREFZ(JL,1,JKM1)
269            ZRMUZ(JL) = ZRMUE(JL,JK)
270            ZTO1(JL) =  ZTAUAZ(JL,JKM1)/ZPIZAZ(JL,JKM1)
271
272 342     CONTINUE
273
274C     
275         CALL DEDD ( KDLON
276     S        , ZGG,ZREF,ZRMUZ,ZTO1,ZW
277     S        , ZRE1,ZRE2,ZTR1,ZTR2     )
278C     
279         DO JL = 1 , KDLON
280C     
281            ZREFZ(JL,1,JK) = (1.-ZRNEB(JL)) * (ZRAY1(JL,JKM1)
282     S           + ZREFZ(JL,1,JKM1) * ZTRA1(JL,JKM1)
283     S           * ZTRA2(JL,JKM1)
284     S           / (1.-ZRAY2(JL,JKM1)*ZREFZ(JL,1,JKM1)))
285     S           + ZRNEB(JL) * ZRE2(JL)
286C     
287            ZTR(JL,1,JKM1) = ZRNEB(JL) * ZTR2(JL) + (ZTRA1(JL,JKM1)
288     S           / (1.-ZRAY2(JL,JKM1)*ZREFZ(JL,1,JKM1)))
289     S           * (1.-ZRNEB(JL))
290C     
291            ZREFZ(JL,2,JK) = (1.-ZRNEB(JL)) * (ZRAY1(JL,JKM1)
292     S           + ZREFZ(JL,2,JKM1) * ZTRA1(JL,JKM1)
293     S           * ZTRA2(JL,JKM1) )
294     S           + ZRNEB(JL) * ZRE1(JL)
295C     
296            ZTR(JL,2,JKM1) = ZRNEB(JL) * ZTR1(JL)
297     S           + ZTRA1(JL,JKM1) * (1.-ZRNEB(JL))
298C     
299         END DO
300      END DO
301C     
302C     
303C     ------------------------------------------------------------------
304C     
305C     *         3.5    REFLECT./TRANSMISSIVITY BETWEEN SURFACE AND LEVEL
306C     -------------------------------------------------
307C     
308 350  CONTINUE
309C     
310      IF (KNU.EQ.1) THEN
311         JAJ = 2
312         DO 351 JL = 1 , KDLON
313            ZRJ(JL,JAJ,nlaylte+1) = 1.
314            ZRK(JL,JAJ,nlaylte+1) = ZREFZ(JL, 1,nlaylte+1)
315 351     CONTINUE
316C     
317         DO 353 JK = 1 , nlaylte
318            JKL = nlaylte+1 - JK
319            JKLP1 = JKL + 1
320            DO 352 JL = 1 , KDLON
321               ZRE11= ZRJ(JL,JAJ,JKLP1) * ZTR(JL,  1,JKL)
322               ZRJ(JL,JAJ,JKL) = ZRE11
323               ZRK(JL,JAJ,JKL) = ZRE11 * ZREFZ(JL,  1,JKL)
324 352        CONTINUE
325 353     CONTINUE
326 354     CONTINUE
327C     
328      ELSE
329C     
330         DO 358 JAJ = 1 , 2
331            DO 355 JL = 1 , KDLON
332               ZRJ(JL,JAJ,nlaylte+1) = 1.
333               ZRK(JL,JAJ,nlaylte+1) = ZREFZ(JL,JAJ,nlaylte+1)
334 355        CONTINUE
335C     
336            DO 357 JK = 1 , nlaylte
337               JKL = nlaylte+1 - JK
338               JKLP1 = JKL + 1
339               DO 356 JL = 1 , KDLON
340                  ZRE11= ZRJ(JL,JAJ,JKLP1) * ZTR(JL,JAJ,JKL)
341                  ZRJ(JL,JAJ,JKL) = ZRE11
342                  ZRK(JL,JAJ,JKL) = ZRE11 * ZREFZ(JL,JAJ,JKL)
343 356           CONTINUE
344 357        CONTINUE
345 358     CONTINUE
346      END IF
347
348C     
349C     
350C     
351C     ------------------------------------------------------------------
352C     ---------------
353C     DOWNWARD FLUXES
354C     ---------------
355C   
356      JAJ = 2
357
358      do JK = 1 , nlaylte+1
359        JKL = nlaylte+1 - JK + 1
360        DO  JL = 1 , KDLON
361            PFD(JL,JKL) =   ZRJ(JL,JAJ,JKL) * sunfr(KNU)
362        end do
363      end do
364C   
365C  -------------
366C  UPWARD FLUXES
367C  -------------
368      DO JK = 1 , nlaylte+1
369         DO  JL = 1 , KDLON
370c           ZRK = upward flux / incident top flux
371            PFU(JL,JK) =    ZRK(JL,JAJ,JK) * sunfr(KNU)
372         END DO
373      END DO
374
375C     
376      RETURN
377      END
378
379CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
380
381      SUBROUTINE DEDD (KDLON,PGG,PREF,PRMUZ,PTO1,PW
382     S                ,      PRE1,PRE2,PTR1,PTR2         )
[1047]383      use dimradmars_mod, only: ndlo2
[38]384      implicit none
385C
[1047]386!#include "dimensions.h"
387!#include "dimphys.h"
388!#include "dimradmars.h"
[38]389C
390C**** *DEDD* - DELTA-EDDINGTON IN A CLOUDY LAYER
391C
392C     PURPOSE.
393C     --------
394C           COMPUTES THE REFLECTIVITY AND TRANSMISSIVITY OF A CLOUDY
395C     LAYER USING THE DELTA-EDDINGTON'S APPROXIMATION.
396C
397C**   INTERFACE.
398C     ----------
399C          *DEDD* IS CALLED BY *SW*.
400C
401C     SUBROUTINE DEDD (KDLON,PGG,PREF,PRMUZ,PTO1,PW
402C    S                ,      PRE1,PRE2,PTR1,PTR2         )
403C
404C        EXPLICIT ARGUMENTS :
405C        --------------------
406C PGG    : (NDLON)             ; ASSYMETRY FACTOR
407C PREF   : (NDLON)             ; REFLECTIVITY OF THE UNDERLYING LAYER
408C PRMUZ  : (NDLON)             ; COSINE OF SOLAR ZENITH ANGLE
409C PTO1   : (NDLON)             ; OPTICAL THICKNESS
410C PW     : (NDLON)             ; SINGLE SCATTERING ALBEDO
411C     ==== OUTPUTS ===
412C PRE1   : (NDLON)             ; LAYER REFLECTIVITY ASSUMING NO
413C                              ; REFLECTION FROM UNDERLYING LAYER
414C PTR1   : (NDLON)             ; LAYER TRANSMISSIVITY ASSUMING NO
415C                              ; REFLECTION FROM UNDERLYING LAYER
416C PRE2   : (NDLON)             ; LAYER REFLECTIVITY ASSUMING
417C                              ; REFLECTION FROM UNDERLYING LAYER
418C PTR2   : (NDLON)             ; LAYER TRANSMISSIVITY ASSUMING
419C                              ; REFLECTION FROM UNDERLYING LAYER
420C
421C        IMPLICIT ARGUMENTS :   NONE
422C        --------------------
423C
424C     METHOD.
425C     -------
426C
427C          STANDARD DELTA-EDDINGTON LAYER CALCULATIONS.
428C
429C     EXTERNALS.
430C     ----------
431C
432C          NONE
433C
434C     REFERENCE.
435C     ----------
436C
437C        SEE RADIATION'S PART OF THE MODEL'S DOCUMENTATION AND
438C        ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE "IN CORE MODEL"
439C
440C     AUTHOR.
441C     -------
442C        JEAN-JACQUES MORCRETTE  *ECMWF*
443C
444C     MODIFICATIONS.
445C     --------------
446C        ORIGINAL : 88-12-15
447C     ------------------------------------------------------------------
448C
449C*       0.1   ARGUMENTS
450C              ---------
451      INTEGER KDLON
452C
453      REAL PGG(NDLO2),PREF(NDLO2),PRMUZ(NDLO2),PTO1(NDLO2),PW(NDLO2)
454      REAL PRE1(NDLO2),PRE2(NDLO2),PTR1(NDLO2),PTR2(NDLO2)
455
456c   local
457      integer jl
458      real*8 ZFF,ZGP,ZTOP,ZWCP,ZDT,ZX1,ZWM,ZRM2,ZRK,ZX2,ZRP,ZALPHA
459      real*8 ZBETA,ZEXMU0,ZEXKP,ZEXKM,ZXP2P,ZXM2P,ZAP2B,ZAM2B
460      real*8 ZA11,ZA12,ZA13,ZA22,ZA21,ZA23,ZDENA,ZC1A,ZC2A
461      real*8 ZRI0A,ZRI1A,ZRI0B,ZRI1B
462      real*8 ZB21,ZB22,ZB23,ZDENB,ZC1B,ZC2B
463      real*8 ZRI0C,ZRI1C,ZRI0D,ZRI1D
464C
465C     ------------------------------------------------------------------
466C
467C*         1.      DELTA-EDDINGTON CALCULATIONS
468C
469 100  CONTINUE
470C
471      DO 131 JL   =   1 , KDLON
472C
473C*         1.1     SET UP THE DELTA-MODIFIED PARAMETERS
474C
475 110  CONTINUE
476C
477      ZFF = PGG(JL)*PGG(JL)
478      ZGP = PGG(JL)/(1.+PGG(JL))
479      ZTOP = (1.- PW(JL) * ZFF) * PTO1(JL)
480      ZWCP = (1-ZFF)* PW(JL) /(1.- PW(JL) * ZFF)
481      ZDT = 2./3.
482      ZX1 = 1.-ZWCP*ZGP
483      ZWM = 1.-ZWCP
484      ZRM2 =  PRMUZ(JL) * PRMUZ(JL)
485      ZRK = SQRT(3.*ZWM*ZX1)
486      ZX2 = 4.*(1.-ZRK*ZRK*ZRM2)
487      ZRP = SQRT(3.*ZWM/ZX1)
488      ZALPHA = 3.*ZWCP*ZRM2*(1.+ZGP*ZWM)/ZX2
489      ZBETA = 3.*ZWCP* PRMUZ(JL) *(1.+3.*ZGP*ZRM2*ZWM)/ZX2
490      ZEXMU0 = EXP(-ZTOP/ PRMUZ(JL) )
491      ZEXKP = EXP(ZRK*ZTOP)
492      ZEXKM = 1./ZEXKP
493      ZXP2P = 1.+ZDT*ZRP
494      ZXM2P = 1.-ZDT*ZRP
495      ZAP2B = ZALPHA+ZDT*ZBETA
496      ZAM2B = ZALPHA-ZDT*ZBETA
497C
498C*         1.2     WITHOUT REFLECTION FROM THE UNDERLYING LAYER
499C
500 120  CONTINUE
501C
502      ZA11 = ZXP2P
503      ZA12 = ZXM2P
504      ZA13 = ZAP2B
505      ZA22 = ZXP2P*ZEXKP
506      ZA21 = ZXM2P*ZEXKM
507      ZA23 = ZAM2B*ZEXMU0
508      ZDENA = ZA11 * ZA22 - ZA21 * ZA12
509      ZC1A = (ZA22*ZA13-ZA12*ZA23)/ZDENA
510      ZC2A = (ZA11*ZA23-ZA21*ZA13)/ZDENA
511      ZRI0A = ZC1A+ZC2A-ZALPHA
512      ZRI1A = ZRP*(ZC1A-ZC2A)-ZBETA
513      PRE1(JL) = (ZRI0A-ZDT*ZRI1A)/ PRMUZ(JL)
514      ZRI0B = ZC1A*ZEXKM+ZC2A*ZEXKP-ZALPHA*ZEXMU0
515      ZRI1B = ZRP*(ZC1A*ZEXKM-ZC2A*ZEXKP)-ZBETA*ZEXMU0
516      PTR1(JL) = ZEXMU0+(ZRI0B+ZDT*ZRI1B)/ PRMUZ(JL)
517C
518C*         1.3     WITH REFLECTION FROM THE UNDERLYING LAYER
519C
520 130  CONTINUE
521C
522      ZB21 = ZA21- PREF(JL) *ZXP2P*ZEXKM
523      ZB22 = ZA22- PREF(JL) *ZXM2P*ZEXKP
524      ZB23 = ZA23- PREF(JL) *ZEXMU0*(ZAP2B - PRMUZ(JL) )
525      ZDENB = ZA11 * ZB22 - ZB21 * ZA12
526      ZC1B = (ZB22*ZA13-ZA12*ZB23)/ZDENB
527      ZC2B = (ZA11*ZB23-ZB21*ZA13)/ZDENB
528      ZRI0C = ZC1B+ZC2B-ZALPHA
529      ZRI1C = ZRP*(ZC1B-ZC2B)-ZBETA
530      PRE2(JL) = (ZRI0C-ZDT*ZRI1C) / PRMUZ(JL)
531      ZRI0D = ZC1B*ZEXKM + ZC2B*ZEXKP - ZALPHA*ZEXMU0
532      ZRI1D = ZRP * (ZC1B*ZEXKM - ZC2B*ZEXKP) - ZBETA*ZEXMU0
533      PTR2(JL) = ZEXMU0 + (ZRI0D + ZDT*ZRI1D) / PRMUZ(JL)
534C
535 131  CONTINUE
536      RETURN
537      END
538
Note: See TracBrowser for help on using the repository browser.