/[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

revision 219 by guez, Thu Mar 30 15:59:45 2017 UTC revision 220 by guez, Tue Apr 4 14:52:21 2017 UTC
# Line 7  contains Line 7  contains
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, PCLDSW, PTAU, POMEGA, PCG, PHEAT, PHEAT0, PALBPLA, &         PWV, PQS, POZON, PCLDSW, PTAU, POMEGA, PCG, PHEAT, PHEAT0, PALBPLA, &
9         PTOPSW, PSOLSW, PTOPSW0, PSOLSW0, ZFSUP, ZFSDN, ZFSUP0, ZFSDN0, &         PTOPSW, PSOLSW, PTOPSW0, PSOLSW0, ZFSUP, ZFSDN, ZFSUP0, ZFSDN0, &
10         PTOPSWAD, PSOLSWAD, PTOPSWAI, PSOLSWAI, ok_ade)         PTOPSWAD, PSOLSWAD, ok_ade)
11    
12      ! Purpose.      ! Purpose.
13      ! This routine computes the shortwave radiation fluxes in two      ! This routine computes the shortwave radiation fluxes in two
# Line 34  contains Line 34  contains
34      USE suphec_m, ONLY: rcpd, rday, rg      USE suphec_m, ONLY: rcpd, rday, rg
35      use sw1s_m, only: sw1s      use sw1s_m, only: sw1s
36      use sw2s_m, only: sw2s      use sw2s_m, only: sw2s
37        use swu_m, only: swu
38    
39      ! ARGUMENTS:      ! ARGUMENTS:
40    
# Line 65  contains Line 66  contains
66      DOUBLE PRECISION ZFSUP0(KDLON, KFLEV+1)      DOUBLE PRECISION ZFSUP0(KDLON, KFLEV+1)
67      DOUBLE PRECISION ZFSDN0(KDLON, KFLEV+1)      DOUBLE PRECISION ZFSDN0(KDLON, KFLEV+1)
68    
69      DOUBLE PRECISION, intent(out):: PTOPSWAD(KDLON)      DOUBLE PRECISION, intent(out):: PTOPSWAD(KDLON)
70      ! (diagnosed aerosol forcing)SHORTWAVE FLUX AT T.O.A.(+AEROSOL DIR)      ! (diagnosed aerosol forcing)SHORTWAVE FLUX AT T.O.A.(+AEROSOL DIR)
71    
72      DOUBLE PRECISION, intent(out):: PSOLSWAD(KDLON)      DOUBLE PRECISION, intent(out):: PSOLSWAD(KDLON)
73      ! (diagnosed aerosol forcing)SHORTWAVE FLUX AT SURFACE(+AEROSOL DIR)      ! (diagnosed aerosol forcing)SHORTWAVE FLUX AT SURFACE(+AEROSOL DIR)
74    
     DOUBLE PRECISION, intent(out):: PTOPSWAI(KDLON)  
     ! (diagnosed aerosol forcing)SHORTWAVE FLUX AT T.O.A.(+AEROSOL IND)  
   
     DOUBLE PRECISION, intent(out):: PSOLSWAI(KDLON)  
     ! (diagnosed aerosol forcing)SHORTWAVE FLUX AT SURFACE(+AEROSOL IND)  
   
75      logical, intent(in):: ok_ade ! use aerosol forcings or not?      logical, intent(in):: ok_ade ! use aerosol forcings or not?
76    
77      ! Local:      ! Local:
78    
79      DOUBLE PRECISION ZOZ(KDLON, KFLEV)      DOUBLE PRECISION ZOZ(KDLON, KFLEV)
80      DOUBLE PRECISION ZAKI(KDLON, 2)      DOUBLE PRECISION ZAKI(KDLON, 2)
81      DOUBLE PRECISION ZCLD(KDLON, KFLEV)      DOUBLE PRECISION ZCLD(KDLON, KFLEV)
82      DOUBLE PRECISION ZCLEAR(KDLON)      DOUBLE PRECISION ZCLEAR(KDLON)
83      DOUBLE PRECISION ZDSIG(KDLON, KFLEV)      DOUBLE PRECISION ZDSIG(KDLON, KFLEV)
84      DOUBLE PRECISION ZFACT(KDLON)      DOUBLE PRECISION ZFACT(KDLON)
85      DOUBLE PRECISION ZFD(KDLON, KFLEV+1)      DOUBLE PRECISION ZFD(KDLON, KFLEV+1)
# Line 107  contains Line 102  contains
102      !jq - Fluxes including aerosol effects      !jq - Fluxes including aerosol effects
103      DOUBLE PRECISION, save:: ZFSUPAD(KDLON, KFLEV+1)      DOUBLE PRECISION, save:: ZFSUPAD(KDLON, KFLEV+1)
104      DOUBLE PRECISION, save:: ZFSDNAD(KDLON, KFLEV+1)      DOUBLE PRECISION, save:: ZFSDNAD(KDLON, KFLEV+1)
     DOUBLE PRECISION, save:: ZFSUPAI(KDLON, KFLEV+1)  
     DOUBLE PRECISION, save:: ZFSDNAI(KDLON, KFLEV+1)  
105    
106      logical:: initialized = .false.      logical:: initialized = .false.
107      REAL, PARAMETER :: dobson_u = 2.1415E-05 ! Dobson unit, in kg m-2      REAL, PARAMETER :: dobson_u = 2.1415E-05 ! Dobson unit, in kg m-2
# Line 119  contains Line 112  contains
112         initialized=.TRUE.         initialized=.TRUE.
113         ZFSUPAD = 0.         ZFSUPAD = 0.
114         ZFSDNAD = 0.         ZFSDNAD = 0.
        ZFSUPAI = 0.  
        ZFSDNAI = 0.  
115      endif      endif
116      !rv      !rv
117    
# Line 130  contains Line 121  contains
121         appel1er = .FALSE.         appel1er = .FALSE.
122      ENDIF      ENDIF
123    
124      IF (MOD(itapsw, swpas).EQ.0) THEN      IF (MOD(itapsw, swpas) == 0) THEN
125         DO JK = 1 , KFLEV         DO JK = 1, KFLEV
126            DO JL = 1, KDLON            DO JL = 1, KDLON
127               ZCLDSW0(JL, JK) = 0.0               ZCLDSW0(JL, JK) = 0.0
128               ZOZ(JL, JK) = POZON(JL, JK) / (dobson_u * 1E3 * rg) * PDP(JL, JK)               ZOZ(JL, JK) = POZON(JL, JK) / (dobson_u * 1E3 * rg) * PDP(JL, JK)
# Line 148  contains Line 139  contains
139         INU = 2         INU = 2
140         CALL SW2S(INU, ZAKI, PALBD, PALBP, PCG, ZCLD, ZCLEAR, ZDSIG, POMEGA, &         CALL SW2S(INU, ZAKI, PALBD, PALBP, PCG, ZCLD, ZCLEAR, ZDSIG, POMEGA, &
141              ZOZ, ZRMU, ZSEC, PTAU, ZUD, PWV, PQS, ZFDOWN, ZFUP)              ZOZ, ZRMU, ZSEC, PTAU, ZUD, PWV, PQS, ZFDOWN, ZFUP)
142         DO JK = 1 , KFLEV+1         DO JK = 1, KFLEV+1
143            DO JL = 1, KDLON            DO JL = 1, KDLON
144               ZFSUP0(JL, JK) = (ZFUP(JL, JK) + ZFU(JL, JK)) * ZFACT(JL)               ZFSUP0(JL, JK) = (ZFUP(JL, JK) + ZFU(JL, JK)) * ZFACT(JL)
145               ZFSDN0(JL, JK) = (ZFDOWN(JL, JK) + ZFD(JL, JK)) * ZFACT(JL)               ZFSDN0(JL, JK) = (ZFDOWN(JL, JK) + ZFD(JL, JK)) * ZFACT(JL)
# Line 167  contains Line 158  contains
158    
159         ! cloudy-sky:         ! cloudy-sky:
160    
161         DO JK = 1 , KFLEV+1         DO JK = 1, KFLEV+1
162            DO JL = 1, KDLON            DO JL = 1, KDLON
163               ZFSUP(JL, JK) = (ZFUP(JL, JK) + ZFU(JL, JK)) * ZFACT(JL)               ZFSUP(JL, JK) = (ZFUP(JL, JK) + ZFU(JL, JK)) * ZFACT(JL)
164               ZFSDN(JL, JK) = (ZFDOWN(JL, JK) + ZFD(JL, JK)) * ZFACT(JL)               ZFSDN(JL, JK) = (ZFDOWN(JL, JK) + ZFD(JL, JK)) * ZFACT(JL)
# Line 184  contains Line 175  contains
175            INU = 2            INU = 2
176            CALL SW2S(INU, ZAKI, PALBD, PALBP, PCG, ZCLD, ZCLEAR, ZDSIG, &            CALL SW2S(INU, ZAKI, PALBD, PALBP, PCG, ZCLD, ZCLEAR, ZDSIG, &
177                 POMEGA, ZOZ, ZRMU, ZSEC, PTAU, ZUD, PWV, PQS, ZFDOWN, ZFUP)                 POMEGA, ZOZ, ZRMU, ZSEC, PTAU, ZUD, PWV, PQS, ZFDOWN, ZFUP)
178            DO JK = 1 , KFLEV+1            DO JK = 1, KFLEV+1
179               DO JL = 1, KDLON               DO JL = 1, KDLON
180                  ZFSUPAD(JL, JK) = ZFSUP(JL, JK)                  ZFSUPAD(JL, JK) = ZFSUP(JL, JK)
181                  ZFSDNAD(JL, JK) = ZFSDN(JL, JK)                  ZFSDNAD(JL, JK) = ZFSDN(JL, JK)
182                  ZFSUP(JL, JK) = (ZFUP(JL, JK) + ZFU(JL, JK)) * ZFACT(JL)                  ZFSUP(JL, JK) = (ZFUP(JL, JK) + ZFU(JL, JK)) * ZFACT(JL)
183                  ZFSDN(JL, JK) = (ZFDOWN(JL, JK) + ZFD(JL, JK)) * ZFACT(JL)                  ZFSDN(JL, JK) = (ZFDOWN(JL, JK) + ZFD(JL, JK)) * ZFACT(JL)
184               ENDDO               ENDDO
# Line 220  contains Line 211  contains
211    
212         PSOLSWAD(i) = ZFSDNAD(i, 1) - ZFSUPAD(i, 1)         PSOLSWAD(i) = ZFSDNAD(i, 1) - ZFSUPAD(i, 1)
213         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)  
214      ENDDO      ENDDO
215    
216    END SUBROUTINE SW    END SUBROUTINE SW

Legend:
Removed from v.219  
changed lines
  Added in v.220

  ViewVC Help
Powered by ViewVC 1.1.21