*IF DEF,A02_1C LWPTSC1C.2 C ******************************COPYRIGHT****************************** GTS2F400.5671 C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. GTS2F400.5672 C GTS2F400.5673 C Use, duplication or disclosure of this code is subject to the GTS2F400.5674 C restrictions as set forth in the contract. GTS2F400.5675 C GTS2F400.5676 C Meteorological Office GTS2F400.5677 C London Road GTS2F400.5678 C BRACKNELL GTS2F400.5679 C Berkshire UK GTS2F400.5680 C RG12 2SZ GTS2F400.5681 C GTS2F400.5682 C If no contract has been raised with this copy of the code, the use, GTS2F400.5683 C duplication or disclosure of it is strictly prohibited. Permission GTS2F400.5684 C to do so must first be obtained in writing from the Head of Numerical GTS2F400.5685 C Modelling at the above address. GTS2F400.5686 C ******************************COPYRIGHT****************************** GTS2F400.5687 C GTS2F400.5688 !+ Calculates scaled pathlengths for longwave transmissivities LWPTSC1C.3 ! LWPTSC1C.4 ! Subroutine Interface: LWPTSC1C.5SUBROUTINE LWPTSC (H2O,CO2,O3,N2O,CH4,CFC11,CFC12, 2LWPTSC1C.6 & PSTAR, AC, BC, AB, BB, TAC, LWPTSC1C.7 & L2, GSS2F402.35 & NWET, NOZONE, NLEVS, L1, DPATH) LWPTSC1C.11 ! LWPTSC1C.12 IMPLICIT NONE LWPTSC1C.13 ! LWPTSC1C.14 ! Description: LWPTSC1C.15 ! LWPTSC1C.16 ! LWPTSC calculates the scaled pathlength for each of the absorbing LWPTSC1C.17 ! gases in the longwave. It takes account of temperature and LWPTSC1C.18 ! pressure scaling . CFCs are assumed to be in the weak limit so LWPTSC1C.19 ! the scaled pathlength is set to the unscaled value. LWPTSC1C.20 ! It is called by LWMAST. ( The pathlengths are later summed in LWPTSC1C.21 ! LWMAST to obtain the total pathlength between pairs of layers LWPTSC1C.22 ! which is then used in the calculation of transmissivities) LWPTSC1C.23 ! LWPTSC1C.24 ! Method: LWPTSC1C.25 ! LWPTSC1C.26 ! The structure of the code is not completely straightforward, as it LWPTSC1C.27 ! has been written for efficiency LWPTSC1C.28 ! LWPTSC1C.29 ! The aim is to calculate the scaled pathlength ( dpath ) ... LWPTSC1C.30 ! (NB corrections for doppler broadening are included LWPTSC1C.31 ! in the P terms ) LWPTSC1C.32 ! LWPTSC1C.33 ! for self-broadened continuum (scaled) LWPTSC1C.34 ! 1.66 * mmr * mmr * T**(b-1) * delta(P**(a+2)) / LWPTSC1C.35 ! Tref**b *g *Pref**a *(a+2) LWPTSC1C.36 ! LWPTSC1C.37 ! for foreign-broadened continuum (scaled) LWPTSC1C.38 ! 1.66 * mmr * ( 1 - mmr) * T**(b-1) * delta(P**(a+2)) / LWPTSC1C.39 ! Tref**b *g *Pref**a *(a+2) LWPTSC1C.40 ! LWPTSC1C.41 ! for lines (scaled) LWPTSC1C.42 ! 1.66 *mmr * T**b * delta(P**(a+1)) / LWPTSC1C.43 ! Tref**b * g * Pref**a * (a+1) LWPTSC1C.44 ! LWPTSC1C.45 ! for CFCs LWPTSC1C.46 ! 2. * mmr * deltaP / g LWPTSC1C.47 ! LWPTSC1C.48 ! for unscaled self-broadened continuum LWPTSC1C.49 ! 1.66* mmr * mmr * deltaP**2 /(2 * g * R * T) LWPTSC1C.50 ! LWPTSC1C.51 ! for unscaled foreign-broadened continuum LWPTSC1C.52 ! 1.66* mmr * (1 - mmr ) * deltaP**2 /(2 * g * R * T) LWPTSC1C.53 ! LWPTSC1C.54 ! for unscaled lines LWPTSC1C.55 ! 1.66 * mmr * deltaP / g LWPTSC1C.56 ! LWPTSC1C.57 ! LWPTSC1C.58 ! Doppler broadening is included within the tables LWPTSC1C.59 ! LWPTSC1C.60 ! The scaled pathlengths are returned in DPATH , to LWMAST. LWPTSC1C.61 ! LWPTSC1C.62 ! Offline documentation on the radiation code is in UMDP23 LWPTSC1C.63 ! LWPTSC1C.64 ! Current Code Owner: Stephanie Woodward LWPTSC1C.65 ! LWPTSC1C.66 ! History: LWPTSC1C.67 ! Version Date Comment LWPTSC1C.68 ! ------- ---- ------- LWPTSC1C.69 ! 3.0 28/9/94 Original code. Stephanie Woodward LWPTSC1C.70 ! 4.2 Sept.96 T3E migration: *DEF CRAY removed; GSS2F402.36 ! *DEF T3E used for T3E library functions; GSS2F402.37 ! dynamic allocation no longer *DEF controlled; GSS2F402.38 ! cray HF functions replaced by T3E lib functions. GSS2F402.39 ! S.J.Swarbrick GSS2F402.40 ! LWPTSC1C.71 ! Code Description: LWPTSC1C.72 ! Language: FORTRAN 77 + common extensions. LWPTSC1C.73 ! This code is written to UMDP3 v6 programming standards. LWPTSC1C.74 ! LWPTSC1C.75 ! System component covered: A LWPTSC1C.76 ! System Task: P23 LWPTSC1C.77 ! LWPTSC1C.78 ! Declarations: LWPTSC1C.79 ! LWPTSC1C.80 ! Global variables (*CALLed COMDECKs etc...): LWPTSC1C.81 *CALL C_G
LWPTSC1C.82 *CALL C_EPSLON
LWPTSC1C.83 *CALL C_R_CP
LWPTSC1C.84 *CALL LWNGASES
LWPTSC1C.85 *CALL LWNBANDS
LWPTSC1C.86 *CALL LWGSINBS
LWPTSC1C.87 ! LWPTSC1C.91 ! Subroutine arguments LWPTSC1C.92 ! Scalar arguments with intent(in): LWPTSC1C.93 ! LWPTSC1C.94 ! LWPTSC1C.95 REAL LWPTSC1C.96 & CO2 ! mmr for CO2 ! LWPTSC1C.97 ! LWPTSC1C.98 INTEGER LWPTSC1C.99 & L2, LWPTSC1C.101 ! ! number of points to be treated LWPTSC1C.102 & NLEVS, ! number of levels LWPTSC1C.104 & L1, ! number of points LWPTSC1C.105 & NOZONE, ! number of ozone levels LWPTSC1C.106 & NWET ! number of wet levels LWPTSC1C.107 ! LWPTSC1C.108 ! Array arguments with intent(in): LWPTSC1C.109 REAL LWPTSC1C.110 & H2O(L1,NWET), ! m.m.r.'s of gases LWPTSC1C.111 & O3(L1,NOZONE), ! LWPTSC1C.112 & N2O(NLEVS), ! LWPTSC1C.113 & CH4(NLEVS), ! LWPTSC1C.114 & CFC11(NLEVS), ! LWPTSC1C.115 & CFC12(NLEVS), ! LWPTSC1C.116 & TAC(L1,NLEVS), ! mid-layer temperatures LWPTSC1C.117 & PSTAR(L1), ! surface pressure LWPTSC1C.118 & AC(NLEVS), BC(NLEVS), ! a & b for layer centres and LWPTSC1C.119 & AB(NLEVS+1), BB(NLEVS+1) !...and boundaries LWPTSC1C.120 ! LWPTSC1C.121 ! LWPTSC1C.122 REAL LWPTSC1C.123 & DPATH(L2,NLEVS,NGASUS,NBANDS) ! Scaled Pathlengths LWPTSC1C.124 ! LWPTSC1C.125 ! Local parameters: LWPTSC1C.126 INTEGER LWPTSC1C.127 & NGXB ! total number of gas-band LWPTSC1C.128 ! ! combinations LWPTSC1C.129 PARAMETER (NGXB = NGASUS*NBANDS) LWPTSC1C.130 ! LWPTSC1C.131 REAL LWPTSC1C.132 & H2OMIN ! min val for h2o, to avoid LWPTSC1C.133 ! ! underflow exceptions LWPTSC1C.134 ! LWPTSC1C.135 PARAMETER (H2OMIN = 1.E-20) LWPTSC1C.136 ! LWPTSC1C.137 ! Local scalars: LWPTSC1C.138 ! LWPTSC1C.139 INTEGER LWPTSC1C.140 & INDXB(NGXB), ! index to bands in gas_band LWPTSC1C.141 ! ! combinations for scaling LWPTSC1C.142 & INDXG(NGXB), ! index to gases as indxb LWPTSC1C.143 & NGBCOM, ! number of gas-band LWPTSC1C.144 ! ! combinations for scaling LWPTSC1C.145 & LEVEL, ! level index LWPTSC1C.146 & J, ! point index LWPTSC1C.147 & GAS, ! gas index LWPTSC1C.148 & BAND, ! band index LWPTSC1C.149 & GBCOM, ! gas-band combination index LWPTSC1C.150 & ONETWO, ! 'flipper' takes val 1 or 2 LWPTSC1C.151 & GASOLD ! gas number in previous calc LWPTSC1C.152 ! LWPTSC1C.153 REAL LWPTSC1C.154 & PTOP, ! pressure at top of current layer LWPTSC1C.155 & DP, ! pressure thickness of current layer LWPTSC1C.156 & COCOTM, ! const term in contin calcs(unscaled) LWPTSC1C.157 & DSTRNG, !Diffusivity factor in strong limit(1.6) LWPTSC1C.158 & DWEAK ! Diffusivity factor in weak limit (2.0) LWPTSC1C.159 ! LWPTSC1C.160 PARAMETER ( DSTRNG = 1.66) LWPTSC1C.161 PARAMETER ( DWEAK = 2.0) LWPTSC1C.162 LWPTSC1C.163 ! Local dynamic arrays: LWPTSC1C.164 ! ! WORK IS THE ONLY DYNAMICALLY ALLOCATED ARRAY GSS2F402.41 REAL WORK(L2,2,NGXB) LWPTSC1C.169 ! ! work is used to hold powers of layer boundary pressures used LWPTSC1C.170 ! ! in 2.3.1 and passed from one level to the next to save LWPTSC1C.171 ! ! re-calculation. (this does prevent autotasking over levels.) LWPTSC1C.172 ! LWPTSC1C.173 REAL LWPTSC1C.174 & PSCALE(NGASMX,NBANDS), ! pressure scaling terms LWPTSC1C.175 & TSCALE(NGASMX,NBANDS), ! temp scaling terms LWPTSC1C.176 & PREFS(NSCGMX), ! reference p for scaled gases LWPTSC1C.177 & TREFS(NSCGMX), ! reference tmp for scaled gases LWPTSC1C.178 & ALPHA(NGASMX,NBANDS), ! P scaling power factors LWPTSC1C.179 & BETA(NGASMX,NBANDS), ! T scaling power factors LWPTSC1C.180 & DAB(NLEVS), ! diffs of A across levels LWPTSC1C.181 & DBB(NLEVS), ! diffs of B across levels LWPTSC1C.182 & TMPGAS(L1), ! temporary space LWPTSC1C.183 & GBTM(NSCGMX,NBANDS), ! gas/band dep. term in cont calcs LWPTSC1C.184 & DOPPL(NSCGUS) ! doppler broadening terms LWPTSC1C.185 ! LWPTSC1C.186 LOGICAL SCALE(NSCGMX,NBANDS) ! true for gas/band combinations LWPTSC1C.187 ! ! to be scaled LWPTSC1C.188 ! LWPTSC1C.189 ! Function & Subroutine calls: LWPTSC1C.190 ! External LWPTSC1C.191 ! LWPTSC1C.192 !- End of header LWPTSC1C.193 !---------------------------------------------------------------------- LWPTSC1C.194 ! LWPTSC1C.195 ! LWPTSC1C.196 ! Data statements: LWPTSC1C.197 ! ! PREFS & TREFS shouldbe set to 0 for those gases which are LWPTSC1C.198 ! ! not scaled LWPTSC1C.199 ! LWPTSC1C.200 ! ...gas..... s f l co2 o3 n20 ch4 LWPTSC1C.201 DATA PREFS/5.e4 , 5.e4 ,5.e4 , 2.5e4, 2.5e4 ,2.5e4, 2.5e4/ LWPTSC1C.202 DATA TREFS/ 250., 250., 250., 225., 225. , 225., 225./ LWPTSC1C.203 ! LWPTSC1C.204 DATA ALPHA/ LWPTSC1C.205 ! self forn h2o co2 o3 n2o ch4 cfc11 cfc12 LWPTSC1C.206 & 0.0, 0.0, .97, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, LWPTSC1C.207 & -.05, 0.0, .97, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, LWPTSC1C.208 & -.06, 0.0, .97, .82, .17, .81, 0.0, 0.0, 0.0, LWPTSC1C.209 & 0.0, 0.0, .96, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, LWPTSC1C.210 & 0.0, 0.0, .94, .68, 0.0, 0.0, 0.0, 0.0, 0.0, LWPTSC1C.211 & 0.0, 0.0, .93, .68, .32, 0.0, 0.0, 0.0, 0.0, LWPTSC1C.212 & 0.0, 0.0, .92, 0.0, 0.0, .82, 0.0, 0.0, 0.0, LWPTSC1C.213 & -.03, 0.0, .90, 0.0, 0.0, .82, .83, 0.0, 0.0, LWPTSC1C.214 & 0.0, 0.0, .95, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0/ LWPTSC1C.215 ! LWPTSC1C.216 DATA BETA/ LWPTSC1C.217 ! self forn h2o co2 o3 n2o ch4 cfc11 cfc12 LWPTSC1C.218 & 0.0,-1.4, .82, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, LWPTSC1C.219 & -2.0,-1.2, 3.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, LWPTSC1C.220 & -2.8,-2.3, 4.3, 2.4, .13, -3.1, 0.0, 0.0, 0.0, LWPTSC1C.221 & -3.5,-.27, 6.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, LWPTSC1C.222 & -3.5, 0.0, 7.2, 8.9, 0.0, 0.0, 0.0, 0.0, 0.0, LWPTSC1C.223 & -3.6, 0.0, 7.5, 8.3, .02, 0.0, 0.0, 0.0, 0.0, LWPTSC1C.224 & -3.0, 0.0, 5.5, 0.0, 0.0, 5.1, 0.0, 0.0, 0.0, LWPTSC1C.225 & -1.2,-.62, 4.7, 0.0, 0.0, -2.4, .68, 0.0, 0.0, LWPTSC1C.226 & 0.0, 0.0,-1.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0/ LWPTSC1C.227 ! LWPTSC1C.228 DATA SCALE/ LWPTSC1C.229 & .FALSE. ,.TRUE. ,.TRUE.,.FALSE.,.FALSE.,.FALSE.,.FALSE., LWPTSC1C.230 & .TRUE. ,.TRUE. ,.TRUE.,.FALSE.,.FALSE.,.FALSE.,.FALSE., LWPTSC1C.231 & .TRUE. ,.TRUE. ,.TRUE.,.TRUE. ,.TRUE. ,.TRUE. ,.FALSE., LWPTSC1C.232 & .TRUE. ,.TRUE. ,.TRUE.,.FALSE.,.FALSE.,.FALSE.,.FALSE., LWPTSC1C.233 & .TRUE. ,.FALSE. ,.TRUE.,.TRUE. ,.FALSE.,.FALSE.,.FALSE., LWPTSC1C.234 & .TRUE. ,.FALSE. ,.TRUE.,.TRUE. ,.TRUE. ,.FALSE.,.FALSE., LWPTSC1C.235 & .TRUE. ,.FALSE. ,.TRUE.,.FALSE.,.FALSE.,.TRUE. ,.FALSE., LWPTSC1C.236 & .TRUE. ,.TRUE. ,.TRUE.,.FALSE.,.FALSE.,.TRUE. ,.TRUE. , LWPTSC1C.237 & .FALSE. ,.FALSE. ,.TRUE.,.FALSE.,.FALSE.,.FALSE.,.FALSE./ LWPTSC1C.238 ! LWPTSC1C.239 DATA DOPPL/0.0, 0.0, 3.E3, 150., 1E5, 0.0 , 0.0/ LWPTSC1C.240 ! LWPTSC1C.241 !...................................................................... LWPTSC1C.242 ! LWPTSC1C.243 ! LWPTSC1C.244 !...Set up dab's and dbb's LWPTSC1C.245 ! LWPTSC1C.246 DO LEVEL = 1, NLEVS LWPTSC1C.247 DAB(LEVEL) = AB(LEVEL) - AB(LEVEL+1) LWPTSC1C.248 DBB(LEVEL) = BB(LEVEL) - BB(LEVEL+1) LWPTSC1C.249 ENDDO ! LEVELS LWPTSC1C.250 ! LWPTSC1C.251 ! LWPTSC1C.252 !...For the gas-band combinations for which scaling is required: LWPTSC1C.253 ! - set up index arrays to point to the gases and bands LWPTSC1C.254 ! For others LWPTSC1C.255 ! - set dpath = absamt * diffusivity factor straight away LWPTSC1C.256 ! LWPTSC1C.257 NGBCOM = 0 LWPTSC1C.258 ! LWPTSC1C.259 ! LWPTSC1C.260 DO BAND = 1,NBANDS LWPTSC1C.261 DO GAS = 1,NSCGUS LWPTSC1C.262 IF ((GSINBS(GAS,BAND).EQ.1).AND.(SCALE(GAS,BAND))) THEN LWPTSC1C.263 NGBCOM = NGBCOM + 1 LWPTSC1C.264 INDXB(NGBCOM) = BAND LWPTSC1C.265 INDXG(NGBCOM) = GAS LWPTSC1C.266 ENDIF LWPTSC1C.267 ENDDO ! GAS LWPTSC1C.268 ENDDO ! BAND LWPTSC1C.269 ! LWPTSC1C.270 !... for unscaled combinations.... LWPTSC1C.271 ! LWPTSC1C.272 COCOTM=DSTRNG/(2.*G*RMOL) LWPTSC1C.273 DO BAND=1,NBANDS LWPTSC1C.274 ! ...H2OS LWPTSC1C.275 IF((GSINBS(NH2OS,BAND).EQ.1).AND.(.NOT.SCALE(NH2OS,BAND)))THEN LWPTSC1C.276 DO LEVEL = 1,NWET LWPTSC1C.277 DO J=1,L2 LWPTSC1C.278 DPATH(J,LEVEL,NH2OS,BAND)= LWPTSC1C.279 & H2O(J,LEVEL)*H2O(J,LEVEL) * LWPTSC1C.280 & (DAB(LEVEL)+DBB(LEVEL)*PSTAR(J))* LWPTSC1C.281 & (DAB(LEVEL)+DBB(LEVEL)*PSTAR(J))* LWPTSC1C.282 & COCOTM / TAC(J,LEVEL) LWPTSC1C.283 ENDDO ! J LWPTSC1C.284 ENDDO ! LEVEL LWPTSC1C.285 ! LWPTSC1C.286 DO LEVEL = NWET+1,NLEVS LWPTSC1C.287 DO J=1,L2 LWPTSC1C.288 DPATH(J,LEVEL,NH2OS,BAND)= LWPTSC1C.289 & H2OMIN*H2OMIN * LWPTSC1C.290 & (DAB(LEVEL)+DBB(LEVEL)*PSTAR(J))* LWPTSC1C.291 & (DAB(LEVEL)+DBB(LEVEL)*PSTAR(J))* LWPTSC1C.292 & COCOTM / TAC(J,LEVEL) LWPTSC1C.293 ENDDO ! J LWPTSC1C.294 ENDDO ! LEVEL LWPTSC1C.295 END IF LWPTSC1C.296 ! LWPTSC1C.297 ! H2O-foreign LWPTSC1C.298 ! LWPTSC1C.299 IF((GSINBS(NH2OF,BAND).EQ.1).AND.(.NOT.SCALE(NH2OF,BAND)))THEN LWPTSC1C.300 DO LEVEL = 1,NWET LWPTSC1C.301 DO J=1,L2 LWPTSC1C.302 DPATH(J,LEVEL,NH2OS,BAND)= LWPTSC1C.303 & H2O(J,LEVEL)*(1.-H2O(J,LEVEL)) * LWPTSC1C.304 & (DAB(LEVEL)+DBB(LEVEL)*PSTAR(J))* LWPTSC1C.305 & (DAB(LEVEL)+DBB(LEVEL)*PSTAR(J))* LWPTSC1C.306 & COCOTM / TAC(J,LEVEL) LWPTSC1C.307 ENDDO ! J LWPTSC1C.308 ENDDO ! LEVEL LWPTSC1C.309 ! LWPTSC1C.310 DO LEVEL = NWET+1,NLEVS LWPTSC1C.311 DO J=1,L2 LWPTSC1C.312 DPATH(J,LEVEL,NH2OS,BAND)= LWPTSC1C.313 & H2OMIN*(1.-H2OMIN) * LWPTSC1C.314 & (DAB(LEVEL)+DBB(LEVEL)*PSTAR(J))* LWPTSC1C.315 & (DAB(LEVEL)+DBB(LEVEL)*PSTAR(J))* LWPTSC1C.316 & COCOTM / TAC(J,LEVEL) LWPTSC1C.317 ENDDO ! J LWPTSC1C.318 ENDDO ! LEVEL LWPTSC1C.319 END IF LWPTSC1C.320 ! LWPTSC1C.321 ! H2O-line LWPTSC1C.322 ! LWPTSC1C.323 IF((GSINBS(NH2OL,BAND).EQ.1).AND.(.NOT.SCALE(NH2OL,BAND)))THEN LWPTSC1C.324 DO LEVEL = 1,NWET LWPTSC1C.325 DO J=1,L2 LWPTSC1C.326 DPATH(J,LEVEL,NH2OL,BAND) = DSTRNG * H2O(J,LEVEL) * LWPTSC1C.327 & (PSTAR(J)*DBB(LEVEL)+DAB(LEVEL)) / G LWPTSC1C.328 ENDDO ! J LWPTSC1C.329 ENDDO ! LEVEL LWPTSC1C.330 ! LWPTSC1C.331 DO LEVEL = NWET+1,NLEVS LWPTSC1C.332 DO J=1,L2 LWPTSC1C.333 DPATH(J,LEVEL,NH2OL,BAND) = DSTRNG * H2OMIN * LWPTSC1C.334 & (PSTAR(J)*DBB(LEVEL)+DAB(LEVEL)) / G LWPTSC1C.335 ENDDO ! J LWPTSC1C.336 ENDDO ! LEVEL LWPTSC1C.337 END IF LWPTSC1C.338 ! LWPTSC1C.339 ! CO2 LWPTSC1C.340 ! LWPTSC1C.341 IF((GSINBS(NCO2,BAND).EQ.1).AND.(.NOT.SCALE(NCO2,BAND)))THEN LWPTSC1C.342 DO LEVEL = 1,NLEVS LWPTSC1C.343 DO J=1,L2 LWPTSC1C.344 DPATH(J,LEVEL,NCO2,BAND) = DSTRNG * CO2 * LWPTSC1C.345 & (PSTAR(J)*DBB(LEVEL)+DAB(LEVEL)) / G LWPTSC1C.346 ENDDO ! J LWPTSC1C.347 ENDDO !LEVEL LWPTSC1C.348 END IF LWPTSC1C.349 ! LWPTSC1C.350 ! O3 LWPTSC1C.351 ! LWPTSC1C.352 IF((GSINBS(NO3,BAND).EQ.1).AND.(.NOT.SCALE(NO3,BAND)))THEN LWPTSC1C.353 DO LEVEL = 1,NLEVS-NOZONE LWPTSC1C.354 DO J=1,L2 LWPTSC1C.355 DPATH(J,LEVEL,NO3,BAND)=DSTRNG*O3(J,1) * LWPTSC1C.356 & (PSTAR(J)*DBB(LEVEL)+DAB(LEVEL)) / G LWPTSC1C.357 ENDDO ! J LWPTSC1C.358 ENDDO ! LEVEL LWPTSC1C.359 ! LWPTSC1C.360 DO LEVEL = NLEVS-NOZONE+1,NLEVS LWPTSC1C.361 DO J=1,L2 LWPTSC1C.362 DPATH(J,LEVEL,NO3,BAND)=DSTRNG*O3(J,LEVEL+NOZONE-NLEVS)* LWPTSC1C.363 & (PSTAR(J)*DBB(LEVEL)+DAB(LEVEL)) / G LWPTSC1C.364 ENDDO ! J LWPTSC1C.365 ENDDO ! LEVEL LWPTSC1C.366 END IF LWPTSC1C.367 ! LWPTSC1C.368 ! N2O LWPTSC1C.369 ! LWPTSC1C.370 IF((GSINBS(NN2O,BAND).EQ.1).AND.(.NOT.SCALE(NN2O,BAND)))THEN LWPTSC1C.371 DO LEVEL = 1,NLEVS LWPTSC1C.372 DO J=1,L2 LWPTSC1C.373 DPATH(J,LEVEL,NN2O,BAND) = DSTRNG * N2O(LEVEL) * LWPTSC1C.374 & (PSTAR(J)*DBB(LEVEL)+DAB(LEVEL)) / G LWPTSC1C.375 ENDDO ! J LWPTSC1C.376 ENDDO ! LEVEL LWPTSC1C.377 END IF LWPTSC1C.378 ! LWPTSC1C.379 ! CH4 LWPTSC1C.380 IF((GSINBS(NCH4,BAND).EQ.1).AND.(.NOT.SCALE(NCH4,BAND)))THEN LWPTSC1C.381 DO LEVEL = 1,NLEVS LWPTSC1C.382 DO J=1,L2 LWPTSC1C.383 DPATH(J,LEVEL,NCH4,BAND) = DSTRNG * CH4(LEVEL) * LWPTSC1C.384 & (PSTAR(J)*DBB(LEVEL)+DAB(LEVEL)) / G LWPTSC1C.385 ENDDO ! J LWPTSC1C.386 ENDDO ! LEVEL LWPTSC1C.387 END IF LWPTSC1C.388 ! LWPTSC1C.389 ENDDO ! BAND LWPTSC1C.390 ! LWPTSC1C.391 ! LWPTSC1C.392 !...for CFCs just set up pathlength * diffusivity factor LWPTSC1C.393 ! LWPTSC1C.394 DO BAND = 1,NBANDS LWPTSC1C.395 ! LWPTSC1C.396 IF (GSINBS(NCFC11,BAND).EQ.1) THEN LWPTSC1C.397 DO LEVEL = 1,NLEVS LWPTSC1C.398 DO J = 1,L2 LWPTSC1C.399 DPATH(J,LEVEL,NCFC11,BAND) = DWEAK *CFC11(LEVEL)* LWPTSC1C.400 & (PSTAR(J)*DBB(LEVEL)+DAB(LEVEL)) / G LWPTSC1C.401 ENDDO ! J LWPTSC1C.402 ENDDO ! LEVEL LWPTSC1C.403 END IF LWPTSC1C.404 LWPTSC1C.405 IF (GSINBS(NCFC12,BAND).EQ.1) THEN LWPTSC1C.406 DO LEVEL = 1,NLEVS LWPTSC1C.407 DO J = 1,L2 LWPTSC1C.408 DPATH(J,LEVEL,NCFC12,BAND) = DWEAK * CFC12(LEVEL)* LWPTSC1C.409 & (PSTAR(J)*DBB(LEVEL)+DAB(LEVEL)) / G LWPTSC1C.410 ENDDO ! J LWPTSC1C.411 ENDDO ! LEVEL LWPTSC1C.412 END IF LWPTSC1C.413 LWPTSC1C.414 ENDDO ! BAND LWPTSC1C.415 ! LWPTSC1C.416 !.....calculate constant terms in scaling calc LWPTSC1C.417 ! and initialise work array at surface for start of scaling loop LWPTSC1C.418 ! LWPTSC1C.419 COCOTM=DSTRNG/G LWPTSC1C.420 ! LWPTSC1C.421 DO GBCOM = 1,NGBCOM LWPTSC1C.422 GAS = INDXG(GBCOM) LWPTSC1C.423 BAND = INDXB(GBCOM) LWPTSC1C.424 GBTM(GAS,BAND) = TREFS(GAS)**BETA(GAS,BAND) LWPTSC1C.425 & *(PREFS(GAS)+DOPPL(GAS))**ALPHA(GAS,BAND) LWPTSC1C.426 & *(ALPHA(GAS,BAND)+ALPADD(GAS)) LWPTSC1C.427 & * MULTR(GAS) LWPTSC1C.428 ! LWPTSC1C.429 DO J = 1,L2 LWPTSC1C.430 WORK(J,1,GBCOM) = (PSTAR(J)+DOPPL(GAS)) ** LWPTSC1C.431 & (ALPHA(GAS,BAND)+ALPADD(GAS)) LWPTSC1C.432 ENDDO ! J LWPTSC1C.433 ! LWPTSC1C.434 ENDDO ! GBCOM LWPTSC1C.435 ! LWPTSC1C.436 !...calculate other terms for scaled gases LWPTSC1C.437 ! LWPTSC1C.438 ! first get the gas dependent terms LWPTSC1C.439 ! LWPTSC1C.440 ! LWPTSC1C.441 ONETWO = 1 LWPTSC1C.442 C LWPTSC1C.443 DO LEVEL = 1,NLEVS LWPTSC1C.444 GASOLD = 0 LWPTSC1C.445 LWPTSC1C.446 DO GBCOM = 1,NGBCOM LWPTSC1C.447 BAND = INDXB(GBCOM) LWPTSC1C.448 GAS = INDXG(GBCOM) LWPTSC1C.449 C LWPTSC1C.450 IF (GAS.NE.GASOLD) THEN LWPTSC1C.451 ! LWPTSC1C.452 IF (GAS.EQ.NH2OS) THEN LWPTSC1C.453 IF (LEVEL.LE.NWET) THEN LWPTSC1C.454 DO J=1,L2 LWPTSC1C.455 TMPGAS(J)= H2O(J,LEVEL)*H2O(J,LEVEL) LWPTSC1C.456 ENDDO ! J LWPTSC1C.457 ELSE LWPTSC1C.458 DO J=1,L2 LWPTSC1C.459 TMPGAS(J)= H2OMIN LWPTSC1C.460 ENDDO ! J LWPTSC1C.461 END IF LWPTSC1C.462 ! LWPTSC1C.463 ELSE IF (GAS.EQ.NH2OF) THEN LWPTSC1C.464 IF (LEVEL.LE.NWET) THEN LWPTSC1C.465 DO J=1,L2 LWPTSC1C.466 TMPGAS(J)= H2O(J,LEVEL)*(1.-H2O(J,LEVEL)) LWPTSC1C.467 ENDDO ! J LWPTSC1C.468 ELSE LWPTSC1C.469 DO J=1,L2 LWPTSC1C.470 TMPGAS(J)= H2OMIN LWPTSC1C.471 ENDDO ! J LWPTSC1C.472 END IF LWPTSC1C.473 ! LWPTSC1C.474 ELSE IF (GAS.EQ.NH2OL) THEN LWPTSC1C.475 IF (LEVEL.LE.NWET) THEN LWPTSC1C.476 DO J = 1,L2 LWPTSC1C.477 TMPGAS(J) = H2O(J,LEVEL) LWPTSC1C.478 ENDDO ! J LWPTSC1C.479 ELSE LWPTSC1C.480 DO J = 1,L2 LWPTSC1C.481 TMPGAS(J) = H2OMIN LWPTSC1C.482 ENDDO ! J LWPTSC1C.483 END IF LWPTSC1C.484 ! LWPTSC1C.485 ELSE IF (GAS.EQ.NCO2) THEN LWPTSC1C.486 DO J = 1,L2 LWPTSC1C.487 TMPGAS(J) = CO2 LWPTSC1C.488 ENDDO ! J LWPTSC1C.489 ! LWPTSC1C.490 ELSE IF (GAS.EQ.NO3) THEN LWPTSC1C.491 IF (LEVEL.LE.NLEVS-NOZONE) THEN LWPTSC1C.492 DO J = 1,L2 LWPTSC1C.493 TMPGAS(J) = O3(J,1) LWPTSC1C.494 ENDDO ! J LWPTSC1C.495 ELSE LWPTSC1C.496 DO J = 1,L2 LWPTSC1C.497 TMPGAS(J) = O3(J,LEVEL+NOZONE-NLEVS) LWPTSC1C.498 ENDDO ! J LWPTSC1C.499 END IF LWPTSC1C.500 ! LWPTSC1C.501 ELSE IF (GAS.EQ.NN2O) THEN LWPTSC1C.502 DO J = 1,L2 LWPTSC1C.503 TMPGAS(J) = N2O(LEVEL) LWPTSC1C.504 ENDDO ! J LWPTSC1C.505 ! LWPTSC1C.506 ELSE IF (GAS.EQ.NCH4) THEN LWPTSC1C.507 DO J = 1,L2 LWPTSC1C.508 TMPGAS(J) = CH4(LEVEL) LWPTSC1C.509 ENDDO ! J LWPTSC1C.510 END IF LWPTSC1C.511 ! LWPTSC1C.512 END IF LWPTSC1C.513 ! LWPTSC1C.514 !...now the rest, and put everything together LWPTSC1C.515 ! LWPTSC1C.516 DO J = 1,L2 LWPTSC1C.517 ! LWPTSC1C.518 PTOP = PSTAR(J) * BB(LEVEL+1) + AB(LEVEL+1) LWPTSC1C.519 WORK(J,3-ONETWO,GBCOM)=(PTOP+DOPPL(GAS)) LWPTSC1C.520 & **(ALPHA(GAS,BAND)+ALPADD(GAS)) LWPTSC1C.521 DPATH(J,LEVEL,GAS,BAND) = LWPTSC1C.522 & ( (WORK(J,ONETWO,GBCOM) - WORK(J,3-ONETWO,GBCOM)) LWPTSC1C.523 & * TAC(J,LEVEL)**(BETA(GAS,BAND)-BETMIN(GAS)) LWPTSC1C.524 & * TMPGAS(J) * COCOTM / GBTM(GAS,BAND) ) LWPTSC1C.525 ! LWPTSC1C.526 ENDDO ! J LWPTSC1C.527 GASOLD = GAS LWPTSC1C.528 ! LWPTSC1C.529 ENDDO ! GBCOM LWPTSC1C.530 ONETWO = 3 - ONETWO LWPTSC1C.531 ! LWPTSC1C.532 ENDDO ! LEVEL LWPTSC1C.533 ! LWPTSC1C.534 ! LWPTSC1C.535 ! LWPTSC1C.536 RETURN LWPTSC1C.537 END LWPTSC1C.538 ! LWPTSC1C.539 *ENDIF A02_1C LWPTSC1C.540