/[lmdze]/trunk/phylmd/Radlwsw/sw.f90
ViewVC logotype

Diff of /trunk/phylmd/Radlwsw/sw.f90

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

trunk/libf/phylmd/Radlwsw/sw.f90 revision 62 by guez, Thu Jul 26 14:37:37 2012 UTC trunk/phylmd/Radlwsw/sw.f90 revision 346 by guez, Mon Dec 9 20:15:29 2019 UTC
# Line 5  module sw_m Line 5  module sw_m
5  contains  contains
6    
7    SUBROUTINE SW(PSCT, PRMU0, PFRAC, PPMB, PDP, PPSOL, PALBD, PALBP, PTAVE, &    SUBROUTINE SW(PSCT, PRMU0, PFRAC, PPMB, PDP, PPSOL, PALBD, PALBP, PTAVE, &
8         PWV, PQS, POZON, PAER, PCLDSW, PTAU, POMEGA, PCG, PHEAT, PHEAT0, &         PWV, PQS, POZON, PCLDSW, PTAU, POMEGA, PCG, PHEAT, PHEAT0, PTOPSW, &
9         PALBPLA, PTOPSW, PSOLSW, PTOPSW0, PSOLSW0, ZFSUP, ZFSDN, ZFSUP0, &         PSOLSW, PTOPSW0, PSOLSW0, ZFSUP, ZFSDN, ZFSUP0, ZFSDN0, PTOPSWAD, &
10         ZFSDN0, tauae, pizae, cgae, PTAUA, POMEGAA, PTOPSWAD, PSOLSWAD, &         PSOLSWAD, ok_ade)
11         PTOPSWAI, PSOLSWAI, ok_ade, ok_aie)  
12        ! Purpose.
13      ! PURPOSE.      ! This routine computes the shortwave radiation fluxes in two
14      ! THIS ROUTINE COMPUTES THE SHORTWAVE RADIATION FLUXES IN TWO      ! spectral intervals following Fouquart and Bonnel (1980).
15      ! SPECTRAL INTERVALS FOLLOWING FOUQUART AND BONNEL (1980).  
16        ! Method.
17      ! METHOD.      ! 1. Computes absorber amounts (swu)
18      ! 1. COMPUTES ABSORBER AMOUNTS (SWU)      ! 2. Computes fluxes in 1st spectral interval (SW1S)
19      ! 2. COMPUTES FLUXES IN 1ST SPECTRAL INTERVAL (SW1S)      ! 3. Computes fluxes in 2nd spectral interval (SW2S)
20      ! 3. COMPUTES FLUXES IN 2ND SPECTRAL INTERVAL (SW2S)  
21        ! Reference.
22      ! REFERENCE.      ! See radiation part of the ECMWF research department
23      ! SEE RADIATION PART OF THE ECMWF RESEARCH DEPARTMENT      ! documentation, and Fouquart and Bonnel (1980)
24      ! DOCUMENTATION, AND FOUQUART AND BONNEL (1980)  
25        ! Author.
26      ! AUTHOR.      ! Jean-Jacques Morcrette *ecmwf*
27      ! JEAN-JACQUES MORCRETTE *ECMWF*  
28        ! Modifications.
29      ! MODIFICATIONS.      ! Original: 89-07-14
30      ! ORIGINAL: 89-07-14      ! 95-01-01 J.-J. Morcrette direct/diffuse albedo
31      ! 95-01-01 J.-J. MORCRETTE Direct/Diffuse Albedo      ! 03-11-27 J. Quaas Introduce aerosol forcings (based on Boucher)
     ! 03-11-27 J. QUAAS Introduce aerosol forcings (based on BOUCHER)  
32    
     USE clesphys, ONLY: bug_ozone  
     USE suphec_m, ONLY: rcpd, rday, rg, rmd, rmo3  
33      USE raddim, ONLY: kdlon, kflev      USE raddim, ONLY: kdlon, kflev
34        USE suphec_m, ONLY: rcpd, rday, rg
35        use sw1s_m, only: sw1s
36        use sw2s_m, only: sw2s
37        use swu_m, only: swu
38    
39      ! ARGUMENTS:      ! ARGUMENTS:
40    
41      DOUBLE PRECISION PSCT ! constante solaire (valeur conseillee: 1370)      DOUBLE PRECISION PSCT ! constante solaire
   
     DOUBLE PRECISION PPSOL(KDLON) ! SURFACE PRESSURE (PA)  
     DOUBLE PRECISION PDP(KDLON, KFLEV) ! LAYER THICKNESS (PA)  
     DOUBLE PRECISION PPMB(KDLON, KFLEV+1) ! HALF-LEVEL PRESSURE (MB)  
   
42      DOUBLE PRECISION PRMU0(KDLON) ! COSINE OF ZENITHAL ANGLE      DOUBLE PRECISION PRMU0(KDLON) ! COSINE OF ZENITHAL ANGLE
43      DOUBLE PRECISION PFRAC(KDLON) ! fraction de la journee      DOUBLE PRECISION PFRAC(KDLON) ! fraction de la journee
44        DOUBLE PRECISION PPMB(KDLON, KFLEV+1) ! HALF-LEVEL PRESSURE (MB)
45        DOUBLE PRECISION PDP(KDLON, KFLEV) ! LAYER THICKNESS (PA)
46        DOUBLE PRECISION PPSOL(KDLON) ! SURFACE PRESSURE (PA)
47        DOUBLE PRECISION PALBD(KDLON, 2) ! albedo du sol (lumiere diffuse)
48        DOUBLE PRECISION PALBP(KDLON, 2) ! albedo du sol (lumiere parallele)
49      DOUBLE PRECISION PTAVE(KDLON, KFLEV) ! LAYER TEMPERATURE (K)      DOUBLE PRECISION PTAVE(KDLON, KFLEV) ! LAYER TEMPERATURE (K)
50      DOUBLE PRECISION PWV(KDLON, KFLEV) ! SPECIFIC HUMIDITY (KG/KG)      DOUBLE PRECISION PWV(KDLON, KFLEV) ! SPECIFIC HUMIDITY (KG/KG)
51      DOUBLE PRECISION PQS(KDLON, KFLEV) ! SATURATED WATER VAPOUR (KG/KG)      DOUBLE PRECISION PQS(KDLON, KFLEV) ! SATURATED WATER VAPOUR (KG/KG)
52      DOUBLE PRECISION POZON(KDLON, KFLEV) ! OZONE CONCENTRATION (KG/KG)      DOUBLE PRECISION POZON(KDLON, KFLEV) ! OZONE CONCENTRATION (KG/KG)
     DOUBLE PRECISION PAER(KDLON, KFLEV, 5) ! AEROSOLS' OPTICAL THICKNESS  
   
     DOUBLE PRECISION PALBD(KDLON, 2) ! albedo du sol (lumiere diffuse)  
     DOUBLE PRECISION PALBP(KDLON, 2) ! albedo du sol (lumiere parallele)  
   
53      DOUBLE PRECISION PCLDSW(KDLON, KFLEV) ! CLOUD FRACTION      DOUBLE PRECISION PCLDSW(KDLON, KFLEV) ! CLOUD FRACTION
54      DOUBLE PRECISION PTAU(KDLON, 2, KFLEV) ! CLOUD OPTICAL THICKNESS      DOUBLE PRECISION PTAU(KDLON, 2, KFLEV) ! CLOUD OPTICAL THICKNESS
     DOUBLE PRECISION PCG(KDLON, 2, KFLEV) ! ASYMETRY FACTOR  
55      DOUBLE PRECISION POMEGA(KDLON, 2, KFLEV) ! SINGLE SCATTERING ALBEDO      DOUBLE PRECISION POMEGA(KDLON, 2, KFLEV) ! SINGLE SCATTERING ALBEDO
56        DOUBLE PRECISION PCG(KDLON, 2, KFLEV) ! ASYMETRY FACTOR
57      DOUBLE PRECISION PHEAT(KDLON, KFLEV) ! SHORTWAVE HEATING (K/DAY)      DOUBLE PRECISION PHEAT(KDLON, KFLEV) ! SHORTWAVE HEATING (K/DAY)
58      DOUBLE PRECISION PHEAT0(KDLON, KFLEV)! SHORTWAVE HEATING (K/DAY) clear-sky      DOUBLE PRECISION PHEAT0(KDLON, KFLEV)! SHORTWAVE HEATING (K/DAY) clear-sky
     DOUBLE PRECISION PALBPLA(KDLON) ! PLANETARY ALBEDO  
59      DOUBLE PRECISION PTOPSW(KDLON) ! SHORTWAVE FLUX AT T.O.A.      DOUBLE PRECISION PTOPSW(KDLON) ! SHORTWAVE FLUX AT T.O.A.
60      DOUBLE PRECISION PSOLSW(KDLON) ! SHORTWAVE FLUX AT SURFACE      DOUBLE PRECISION PSOLSW(KDLON) ! SHORTWAVE FLUX AT SURFACE
61      DOUBLE PRECISION PTOPSW0(KDLON) ! SHORTWAVE FLUX AT T.O.A. (CLEAR-SKY)      DOUBLE PRECISION PTOPSW0(KDLON) ! SHORTWAVE FLUX AT T.O.A. (CLEAR-SKY)
62      DOUBLE PRECISION PSOLSW0(KDLON) ! SHORTWAVE FLUX AT SURFACE (CLEAR-SKY)      DOUBLE PRECISION PSOLSW0(KDLON) ! SHORTWAVE FLUX AT SURFACE (CLEAR-SKY)
63        DOUBLE PRECISION ZFSUP(KDLON, KFLEV+1)
64        DOUBLE PRECISION ZFSDN(KDLON, KFLEV+1)
65        DOUBLE PRECISION ZFSUP0(KDLON, KFLEV+1)
66        DOUBLE PRECISION ZFSDN0(KDLON, KFLEV+1)
67    
68        DOUBLE PRECISION, intent(out):: PTOPSWAD(KDLON)
69        ! (diagnosed aerosol forcing)SHORTWAVE FLUX AT T.O.A.(+AEROSOL DIR)
70    
71        DOUBLE PRECISION, intent(out):: PSOLSWAD(KDLON)
72        ! (diagnosed aerosol forcing)SHORTWAVE FLUX AT SURFACE(+AEROSOL DIR)
73    
74      ! LOCAL VARIABLES:      logical, intent(in):: ok_ade ! use aerosol forcings or not?
75    
76        ! Local:
77    
78      DOUBLE PRECISION ZOZ(KDLON, KFLEV)      DOUBLE PRECISION ZOZ(KDLON, KFLEV)
79      DOUBLE PRECISION ZAKI(KDLON, 2)      DOUBLE PRECISION ZAKI(KDLON, 2)
80      DOUBLE PRECISION ZCLD(KDLON, KFLEV)      DOUBLE PRECISION ZCLD(KDLON, KFLEV)
81      DOUBLE PRECISION ZCLEAR(KDLON)      DOUBLE PRECISION ZCLEAR(KDLON)
82      DOUBLE PRECISION ZDSIG(KDLON, KFLEV)      DOUBLE PRECISION ZDSIG(KDLON, KFLEV)
83      DOUBLE PRECISION ZFACT(KDLON)      DOUBLE PRECISION ZFACT(KDLON)
84      DOUBLE PRECISION ZFD(KDLON, KFLEV+1)      DOUBLE PRECISION ZFD(KDLON, KFLEV+1)
# Line 85  contains Line 90  contains
90      DOUBLE PRECISION ZUD(KDLON, 5, KFLEV+1)      DOUBLE PRECISION ZUD(KDLON, 5, KFLEV+1)
91      DOUBLE PRECISION ZCLDSW0(KDLON, KFLEV)      DOUBLE PRECISION ZCLDSW0(KDLON, KFLEV)
92    
     DOUBLE PRECISION ZFSUP(KDLON, KFLEV+1)  
     DOUBLE PRECISION ZFSDN(KDLON, KFLEV+1)  
     DOUBLE PRECISION ZFSUP0(KDLON, KFLEV+1)  
     DOUBLE PRECISION ZFSDN0(KDLON, KFLEV+1)  
   
93      INTEGER inu, jl, jk, i, k, kpl1      INTEGER inu, jl, jk, i, k, kpl1
94    
95      INTEGER swpas ! Every swpas steps, sw is calculated      INTEGER, PARAMETER:: swpas = 1 ! Every swpas steps, sw is calculated
     PARAMETER(swpas=1)  
96    
97      INTEGER itapsw      INTEGER:: itapsw = 0
98      LOGICAL appel1er      LOGICAL:: appel1er = .TRUE.
     DATA itapsw /0/  
     DATA appel1er /.TRUE./  
99      !jq-Introduced for aerosol forcings      !jq-Introduced for aerosol forcings
     double precision flag_aer  
     logical, intent(in):: ok_ade, ok_aie ! use aerosol forcings or not?  
     double precision tauae(kdlon, kflev, 2) ! aerosol optical properties  
     double precision pizae(kdlon, kflev, 2)  
     ! aerosol optical properties(see aeropt.F)  
       
     double precision cgae(kdlon, kflev, 2) !aerosol optical properties -"-  
     DOUBLE PRECISION PTAUA(KDLON, 2, KFLEV)  
     ! CLOUD OPTICAL THICKNESS (pre-industrial value)  
   
     DOUBLE PRECISION POMEGAA(KDLON, 2, KFLEV) ! SINGLE SCATTERING ALBEDO  
     DOUBLE PRECISION PTOPSWAD(KDLON)  
     ! (diagnosed aerosol forcing)SHORTWAVE FLUX AT T.O.A.(+AEROSOL DIR)  
   
     DOUBLE PRECISION PSOLSWAD(KDLON)  
     ! (diagnosed aerosol forcing)SHORTWAVE FLUX AT SURFACE(+AEROSOL DIR)  
   
     DOUBLE PRECISION PTOPSWAI(KDLON)  
     ! (diagnosed aerosol forcing)SHORTWAVE FLUX AT T.O.A.(+AEROSOL IND)  
   
     DOUBLE PRECISION PSOLSWAI(KDLON)  
     ! (diagnosed aerosol forcing)SHORTWAVE FLUX AT SURFACE(+AEROSOL IND)  
100    
101      !jq - Fluxes including aerosol effects      !jq - Fluxes including aerosol effects
102      DOUBLE PRECISION ZFSUPAD(KDLON, KFLEV+1)      DOUBLE PRECISION, save:: ZFSUPAD(KDLON, KFLEV+1)
103      DOUBLE PRECISION ZFSDNAD(KDLON, KFLEV+1)      DOUBLE PRECISION, save:: ZFSDNAD(KDLON, KFLEV+1)
104      DOUBLE PRECISION ZFSUPAI(KDLON, KFLEV+1)  
105      DOUBLE PRECISION ZFSDNAI(KDLON, KFLEV+1)      logical:: initialized = .false.
106      logical initialized      REAL, PARAMETER :: dobson_u = 2.1415E-05 ! Dobson unit, in kg m-2
     SAVE ZFSUPAD, ZFSDNAD, ZFSUPAI, ZFSDNAI ! aerosol fluxes  
     !rv  
     save flag_aer  
     data initialized/.false./  
107    
108      !-------------------------------------------------------------------      !-------------------------------------------------------------------
109    
110      if(.not.initialized) then      if(.not.initialized) then
        flag_aer=0.  
111         initialized=.TRUE.         initialized=.TRUE.
112           ZFSUPAD = 0.
113           ZFSDNAD = 0.
114      endif      endif
115      !rv      !rv
116    
# Line 148  contains Line 120  contains
120         appel1er = .FALSE.         appel1er = .FALSE.
121      ENDIF      ENDIF
122    
123      IF (MOD(itapsw, swpas).EQ.0) THEN      IF (MOD(itapsw, swpas) == 0) THEN
124         DO JK = 1 , KFLEV         DO JK = 1, KFLEV
125            DO JL = 1, KDLON            DO JL = 1, KDLON
126               ZCLDSW0(JL, JK) = 0.0               ZCLDSW0(JL, JK) = 0.0
127               IF (bug_ozone) then               ZOZ(JL, JK) = POZON(JL, JK) / (dobson_u * 1E3 * rg) * PDP(JL, JK)
                 ZOZ(JL, JK) = POZON(JL, JK)*46.6968/RG &  
                      *PDP(JL, JK)*(101325.0/PPSOL(JL))  
              ELSE  
                 ! Correction MPL 100505  
                 ZOZ(JL, JK) = POZON(JL, JK)*RMD/RMO3*46.6968/RG*PDP(JL, JK)  
              ENDIF  
128            ENDDO            ENDDO
129         ENDDO         ENDDO
130    
# Line 167  contains Line 133  contains
133              PRMU0, PFRAC, PTAVE, PWV, &              PRMU0, PFRAC, PTAVE, PWV, &
134              ZAKI, ZCLD, ZCLEAR, ZDSIG, ZFACT, ZRMU, ZSEC, ZUD)              ZAKI, ZCLD, ZCLEAR, ZDSIG, ZFACT, ZRMU, ZSEC, ZUD)
135         INU = 1         INU = 1
136         CALL SW1S(INU, &         CALL SW1S(INU, PALBD, PALBP, PCG, ZCLD, ZCLEAR, ZDSIG, POMEGA, ZOZ, &
137              PAER, flag_aer, tauae, pizae, cgae, &              ZRMU, ZSEC, PTAU, ZUD, ZFD, ZFU)
             PALBD, PALBP, PCG, ZCLD, ZCLEAR, ZCLDSW0, &  
             ZDSIG, POMEGA, ZOZ, ZRMU, ZSEC, PTAU, ZUD, &  
             ZFD, ZFU)  
138         INU = 2         INU = 2
139         CALL SW2S(INU, &         CALL SW2S(INU, ZAKI, PALBD, PALBP, PCG, ZCLD, ZCLEAR, ZDSIG, POMEGA, &
140              PAER, flag_aer, tauae, pizae, cgae, &              ZOZ, ZRMU, ZSEC, PTAU, ZUD, PWV, PQS, ZFDOWN, ZFUP)
141              ZAKI, PALBD, PALBP, PCG, ZCLD, ZCLEAR, ZCLDSW0, &         DO JK = 1, KFLEV+1
             ZDSIG, POMEGA, ZOZ, ZRMU, ZSEC, PTAU, ZUD, &  
             PWV, PQS, &  
             ZFDOWN, ZFUP)  
        DO JK = 1 , KFLEV+1  
142            DO JL = 1, KDLON            DO JL = 1, KDLON
143               ZFSUP0(JL, JK) = (ZFUP(JL, JK) + ZFU(JL, JK)) * ZFACT(JL)               ZFSUP0(JL, JK) = (ZFUP(JL, JK) + ZFU(JL, JK)) * ZFACT(JL)
144               ZFSDN0(JL, JK) = (ZFDOWN(JL, JK) + ZFD(JL, JK)) * ZFACT(JL)               ZFSDN0(JL, JK) = (ZFDOWN(JL, JK) + ZFD(JL, JK)) * ZFACT(JL)
145            ENDDO            ENDDO
146         ENDDO         ENDDO
147    
        flag_aer=0.  
148         CALL SWU(PSCT, PCLDSW, PPMB, PPSOL, &         CALL SWU(PSCT, PCLDSW, PPMB, PPSOL, &
149              PRMU0, PFRAC, PTAVE, PWV, &              PRMU0, PFRAC, PTAVE, PWV, &
150              ZAKI, ZCLD, ZCLEAR, ZDSIG, ZFACT, ZRMU, ZSEC, ZUD)              ZAKI, ZCLD, ZCLEAR, ZDSIG, ZFACT, ZRMU, ZSEC, ZUD)
151         INU = 1         INU = 1
152         CALL SW1S(INU, &         CALL SW1S(INU, PALBD, PALBP, PCG, ZCLD, ZCLEAR, ZDSIG, POMEGA, ZOZ, &
153              PAER, flag_aer, tauae, pizae, cgae, &              ZRMU, ZSEC, PTAU, ZUD, ZFD, ZFU)
             PALBD, PALBP, PCG, ZCLD, ZCLEAR, PCLDSW, &  
             ZDSIG, POMEGA, ZOZ, ZRMU, ZSEC, PTAU, ZUD, &  
             ZFD, ZFU)  
154         INU = 2         INU = 2
155         CALL SW2S(INU, &         CALL SW2S(INU, ZAKI, PALBD, PALBP, PCG, ZCLD, ZCLEAR, ZDSIG, POMEGA, &
156              PAER, flag_aer, tauae, pizae, cgae, &              ZOZ, ZRMU, ZSEC, PTAU, ZUD, PWV, PQS, ZFDOWN, ZFUP)
             ZAKI, PALBD, PALBP, PCG, ZCLD, ZCLEAR, PCLDSW, &  
             ZDSIG, POMEGA, ZOZ, ZRMU, ZSEC, PTAU, ZUD, &  
             PWV, PQS, &  
             ZFDOWN, ZFUP)  
157    
158         ! cloudy-sky:         ! cloudy-sky:
159    
160         DO JK = 1 , KFLEV+1         DO JK = 1, KFLEV+1
161            DO JL = 1, KDLON            DO JL = 1, KDLON
162               ZFSUP(JL, JK) = (ZFUP(JL, JK) + ZFU(JL, JK)) * ZFACT(JL)               ZFSUP(JL, JK) = (ZFUP(JL, JK) + ZFU(JL, JK)) * ZFACT(JL)
163               ZFSDN(JL, JK) = (ZFDOWN(JL, JK) + ZFD(JL, JK)) * ZFACT(JL)               ZFSDN(JL, JK) = (ZFDOWN(JL, JK) + ZFD(JL, JK)) * ZFACT(JL)
# Line 215  contains Line 166  contains
166    
167         IF (ok_ade) THEN         IF (ok_ade) THEN
168            ! cloudy-sky + aerosol dir OB            ! cloudy-sky + aerosol dir OB
169            flag_aer=1.            CALL SWU(PSCT, PCLDSW, PPMB, PPSOL, PRMU0, PFRAC, PTAVE, PWV, ZAKI, &
170            CALL SWU(PSCT, PCLDSW, PPMB, PPSOL, &                 ZCLD, ZCLEAR, ZDSIG, ZFACT, ZRMU, ZSEC, ZUD)
                PRMU0, PFRAC, PTAVE, PWV, &  
                ZAKI, ZCLD, ZCLEAR, ZDSIG, ZFACT, ZRMU, ZSEC, ZUD)  
           INU = 1  
           CALL SW1S(INU, &  
                PAER, flag_aer, tauae, pizae, cgae, &  
                PALBD, PALBP, PCG, ZCLD, ZCLEAR, PCLDSW, &  
                ZDSIG, POMEGA, ZOZ, ZRMU, ZSEC, PTAU, ZUD, &  
                ZFD, ZFU)  
           INU = 2  
           CALL SW2S(INU, &  
                PAER, flag_aer, tauae, pizae, cgae, &  
                ZAKI, PALBD, PALBP, PCG, ZCLD, ZCLEAR, PCLDSW, &  
                ZDSIG, POMEGA, ZOZ, ZRMU, ZSEC, PTAU, ZUD, &  
                PWV, PQS, &  
                ZFDOWN, ZFUP)  
           DO JK = 1 , KFLEV+1  
              DO JL = 1, KDLON  
                 ZFSUPAD(JL, JK) = ZFSUP(JL, JK)  
                 ZFSDNAD(JL, JK) = ZFSDN(JL, JK)  
                 ZFSUP(JL, JK) = (ZFUP(JL, JK) + ZFU(JL, JK)) * ZFACT(JL)  
                 ZFSDN(JL, JK) = (ZFDOWN(JL, JK) + ZFD(JL, JK)) * ZFACT(JL)  
              ENDDO  
           ENDDO  
        ENDIF  
   
        IF (ok_aie) THEN  
           !jq cloudy-sky + aerosol direct + aerosol indirect  
           flag_aer=1.0  
           CALL SWU(PSCT, PCLDSW, PPMB, PPSOL, &  
                PRMU0, PFRAC, PTAVE, PWV, &  
                ZAKI, ZCLD, ZCLEAR, ZDSIG, ZFACT, ZRMU, ZSEC, ZUD)  
171            INU = 1            INU = 1
172            CALL SW1S(INU, &            CALL SW1S(INU, PALBD, PALBP, PCG, ZCLD, ZCLEAR, ZDSIG, POMEGA, ZOZ, &
173                 PAER, flag_aer, tauae, pizae, cgae, &                 ZRMU, ZSEC, PTAU, ZUD, ZFD, ZFU)
                PALBD, PALBP, PCG, ZCLD, ZCLEAR, PCLDSW, &  
                ZDSIG, POMEGAA, ZOZ, ZRMU, ZSEC, PTAUA, ZUD, &  
                ZFD, ZFU)  
174            INU = 2            INU = 2
175            CALL SW2S(INU, &            CALL SW2S(INU, ZAKI, PALBD, PALBP, PCG, ZCLD, ZCLEAR, ZDSIG, &
176                 PAER, flag_aer, tauae, pizae, cgae, &                 POMEGA, ZOZ, ZRMU, ZSEC, PTAU, ZUD, PWV, PQS, ZFDOWN, ZFUP)
177                 ZAKI, PALBD, PALBP, PCG, ZCLD, ZCLEAR, PCLDSW, &            DO JK = 1, KFLEV+1
                ZDSIG, POMEGAA, ZOZ, ZRMU, ZSEC, PTAUA, ZUD, &  
                PWV, PQS, &  
                ZFDOWN, ZFUP)  
           DO JK = 1 , KFLEV+1  
178               DO JL = 1, KDLON               DO JL = 1, KDLON
179                  ZFSUPAI(JL, JK) = ZFSUP(JL, JK)                  ZFSUPAD(JL, JK) = ZFSUP(JL, JK)
180                  ZFSDNAI(JL, JK) = ZFSDN(JL, JK)                  ZFSDNAD(JL, JK) = ZFSDN(JL, JK)
181                  ZFSUP(JL, JK) = (ZFUP(JL, JK) + ZFU(JL, JK)) * ZFACT(JL)                  ZFSUP(JL, JK) = (ZFUP(JL, JK) + ZFU(JL, JK)) * ZFACT(JL)
182                  ZFSDN(JL, JK) = (ZFDOWN(JL, JK) + ZFD(JL, JK)) * ZFACT(JL)                  ZFSDN(JL, JK) = (ZFDOWN(JL, JK) + ZFD(JL, JK)) * ZFACT(JL)
183               ENDDO               ENDDO
# Line 287  contains Line 200  contains
200         ENDDO         ENDDO
201      ENDDO      ENDDO
202      DO i = 1, KDLON      DO i = 1, KDLON
        PALBPLA(i) = ZFSUP(i, KFLEV+1)/(ZFSDN(i, KFLEV+1)+1.0e-20)  
   
203         PSOLSW(i) = ZFSDN(i, 1) - ZFSUP(i, 1)         PSOLSW(i) = ZFSDN(i, 1) - ZFSUP(i, 1)
204         PTOPSW(i) = ZFSDN(i, KFLEV+1) - ZFSUP(i, KFLEV+1)         PTOPSW(i) = ZFSDN(i, KFLEV+1) - ZFSUP(i, KFLEV+1)
205    
# Line 297  contains Line 208  contains
208    
209         PSOLSWAD(i) = ZFSDNAD(i, 1) - ZFSUPAD(i, 1)         PSOLSWAD(i) = ZFSDNAD(i, 1) - ZFSUPAD(i, 1)
210         PTOPSWAD(i) = ZFSDNAD(i, KFLEV+1) - ZFSUPAD(i, KFLEV+1)         PTOPSWAD(i) = ZFSDNAD(i, KFLEV+1) - ZFSUPAD(i, KFLEV+1)
   
        PSOLSWAI(i) = ZFSDNAI(i, 1) - ZFSUPAI(i, 1)  
        PTOPSWAI(i) = ZFSDNAI(i, KFLEV+1) - ZFSUPAI(i, KFLEV+1)  
211      ENDDO      ENDDO
212    
213    END SUBROUTINE SW    END SUBROUTINE SW

Legend:
Removed from v.62  
changed lines
  Added in v.346

  ViewVC Help
Powered by ViewVC 1.1.21