source: trunk/MESOSCALE/LMDZ.MARS/libf_gcm/phymars/dedd.F @ 134

Last change on this file since 134 was 57, checked in by aslmd, 14 years ago

mineur LMD_MM_MARS: ajout du GCM ancienne physique, systeme maintenant complet sur SVN (ne manque que la base de donnees d'etats initiaux)

File size: 4.7 KB
Line 
1      SUBROUTINE DEDD (KDLON,PGG,PREF,PRMUZ,PTO1,PW
2     S                ,      PRE1,PRE2,PTR1,PTR2         )
3      implicit none
4C
5#include "dimensions.h"
6#include "dimphys.h"
7#include "dimradmars.h"
8C
9C**** *DEDD* - DELTA-EDDINGTON IN A CLOUDY LAYER
10C
11C     PURPOSE.
12C     --------
13C           COMPUTES THE REFLECTIVITY AND TRANSMISSIVITY OF A CLOUDY
14C     LAYER USING THE DELTA-EDDINGTON'S APPROXIMATION.
15C
16C**   INTERFACE.
17C     ----------
18C          *DEDD* IS CALLED BY *SW*.
19C
20C     SUBROUTINE DEDD (KDLON,PGG,PREF,PRMUZ,PTO1,PW
21C    S                ,      PRE1,PRE2,PTR1,PTR2         )
22C
23C        EXPLICIT ARGUMENTS :
24C        --------------------
25C PGG    : (NDLON)             ; ASSYMETRY FACTOR
26C PREF   : (NDLON)             ; REFLECTIVITY OF THE UNDERLYING LAYER
27C PRMUZ  : (NDLON)             ; COSINE OF SOLAR ZENITH ANGLE
28C PTO1   : (NDLON)             ; OPTICAL THICKNESS
29C PW     : (NDLON)             ; SINGLE SCATTERING ALBEDO
30C     ==== OUTPUTS ===
31C PRE1   : (NDLON)             ; LAYER REFLECTIVITY ASSUMING NO
32C                              ; REFLECTION FROM UNDERLYING LAYER
33C PTR1   : (NDLON)             ; LAYER TRANSMISSIVITY ASSUMING NO
34C                              ; REFLECTION FROM UNDERLYING LAYER
35C PRE2   : (NDLON)             ; LAYER REFLECTIVITY ASSUMING
36C                              ; REFLECTION FROM UNDERLYING LAYER
37C PTR2   : (NDLON)             ; LAYER TRANSMISSIVITY ASSUMING
38C                              ; REFLECTION FROM UNDERLYING LAYER
39C
40C        IMPLICIT ARGUMENTS :   NONE
41C        --------------------
42C
43C     METHOD.
44C     -------
45C
46C          STANDARD DELTA-EDDINGTON LAYER CALCULATIONS.
47C
48C     EXTERNALS.
49C     ----------
50C
51C          NONE
52C
53C     REFERENCE.
54C     ----------
55C
56C        SEE RADIATION'S PART OF THE MODEL'S DOCUMENTATION AND
57C        ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE "IN CORE MODEL"
58C
59C     AUTHOR.
60C     -------
61C        JEAN-JACQUES MORCRETTE  *ECMWF*
62C
63C     MODIFICATIONS.
64C     --------------
65C        ORIGINAL : 88-12-15
66C     ------------------------------------------------------------------
67C
68C*       0.1   ARGUMENTS
69C              ---------
70      INTEGER KDLON
71C
72      REAL PGG(NDLO2),PREF(NDLO2),PRMUZ(NDLO2),PTO1(NDLO2),PW(NDLO2)
73      REAL PRE1(NDLO2),PRE2(NDLO2),PTR1(NDLO2),PTR2(NDLO2)
74
75c   local
76      integer jl
77      real*8 ZFF,ZGP,ZTOP,ZWCP,ZDT,ZX1,ZWM,ZRM2,ZRK,ZX2,ZRP,ZALPHA
78      real*8 ZBETA,ZEXMU0,ZEXKP,ZEXKM,ZXP2P,ZXM2P,ZAP2B,ZAM2B
79      real*8 ZA11,ZA12,ZA13,ZA22,ZA21,ZA23,ZDENA,ZC1A,ZC2A
80      real*8 ZRI0A,ZRI1A,ZRI0B,ZRI1B
81      real*8 ZB21,ZB22,ZB23,ZDENB,ZC1B,ZC2B
82      real*8 ZRI0C,ZRI1C,ZRI0D,ZRI1D
83C
84C     ------------------------------------------------------------------
85C
86C*         1.      DELTA-EDDINGTON CALCULATIONS
87C
88 100  CONTINUE
89C
90      DO 131 JL   =   1 , KDLON
91C
92C*         1.1     SET UP THE DELTA-MODIFIED PARAMETERS
93C
94 110  CONTINUE
95C
96      ZFF = PGG(JL)*PGG(JL)
97      ZGP = PGG(JL)/(1.+PGG(JL))
98      ZTOP = (1.- PW(JL) * ZFF) * PTO1(JL)
99      ZWCP = (1-ZFF)* PW(JL) /(1.- PW(JL) * ZFF)
100      ZDT = 2./3.
101      ZX1 = 1.-ZWCP*ZGP
102      ZWM = 1.-ZWCP
103      ZRM2 =  PRMUZ(JL) * PRMUZ(JL)
104      ZRK = SQRT(3.*ZWM*ZX1)
105      ZX2 = 4.*(1.-ZRK*ZRK*ZRM2)
106      ZRP = SQRT(3.*ZWM/ZX1)
107      ZALPHA = 3.*ZWCP*ZRM2*(1.+ZGP*ZWM)/ZX2
108      ZBETA = 3.*ZWCP* PRMUZ(JL) *(1.+3.*ZGP*ZRM2*ZWM)/ZX2
109      ZEXMU0 = EXP(-ZTOP/ PRMUZ(JL) )
110      ZEXKP = EXP(ZRK*ZTOP)
111      ZEXKM = 1./ZEXKP
112      ZXP2P = 1.+ZDT*ZRP
113      ZXM2P = 1.-ZDT*ZRP
114      ZAP2B = ZALPHA+ZDT*ZBETA
115      ZAM2B = ZALPHA-ZDT*ZBETA
116C
117C*         1.2     WITHOUT REFLECTION FROM THE UNDERLYING LAYER
118C
119 120  CONTINUE
120C
121      ZA11 = ZXP2P
122      ZA12 = ZXM2P
123      ZA13 = ZAP2B
124      ZA22 = ZXP2P*ZEXKP
125      ZA21 = ZXM2P*ZEXKM
126      ZA23 = ZAM2B*ZEXMU0
127      ZDENA = ZA11 * ZA22 - ZA21 * ZA12
128      ZC1A = (ZA22*ZA13-ZA12*ZA23)/ZDENA
129      ZC2A = (ZA11*ZA23-ZA21*ZA13)/ZDENA
130      ZRI0A = ZC1A+ZC2A-ZALPHA
131      ZRI1A = ZRP*(ZC1A-ZC2A)-ZBETA
132      PRE1(JL) = (ZRI0A-ZDT*ZRI1A)/ PRMUZ(JL)
133      ZRI0B = ZC1A*ZEXKM+ZC2A*ZEXKP-ZALPHA*ZEXMU0
134      ZRI1B = ZRP*(ZC1A*ZEXKM-ZC2A*ZEXKP)-ZBETA*ZEXMU0
135      PTR1(JL) = ZEXMU0+(ZRI0B+ZDT*ZRI1B)/ PRMUZ(JL)
136C
137C*         1.3     WITH REFLECTION FROM THE UNDERLYING LAYER
138C
139 130  CONTINUE
140C
141      ZB21 = ZA21- PREF(JL) *ZXP2P*ZEXKM
142      ZB22 = ZA22- PREF(JL) *ZXM2P*ZEXKP
143      ZB23 = ZA23- PREF(JL) *ZEXMU0*(ZAP2B - PRMUZ(JL) )
144      ZDENB = ZA11 * ZB22 - ZB21 * ZA12
145      ZC1B = (ZB22*ZA13-ZA12*ZB23)/ZDENB
146      ZC2B = (ZA11*ZB23-ZB21*ZA13)/ZDENB
147      ZRI0C = ZC1B+ZC2B-ZALPHA
148      ZRI1C = ZRP*(ZC1B-ZC2B)-ZBETA
149      PRE2(JL) = (ZRI0C-ZDT*ZRI1C) / PRMUZ(JL)
150      ZRI0D = ZC1B*ZEXKM + ZC2B*ZEXKP - ZALPHA*ZEXMU0
151      ZRI1D = ZRP * (ZC1B*ZEXKM - ZC2B*ZEXKP) - ZBETA*ZEXMU0
152      PTR2(JL) = ZEXMU0 + (ZRI0D + ZDT*ZRI1D) / PRMUZ(JL)
153C
154 131  CONTINUE
155      RETURN
156      END
Note: See TracBrowser for help on using the repository browser.