*ID SOLVAR */ */ Peter Stott 22/12/99 */ solvarLBB_right_new includes data from 1998 and 1999 using latest */ data from Judith Lean and from 1999 onwards uses average of */ 1989-1999 11-year period */ */ solvarLBB_right is a corrected version of solvarLBB, which was used in some */ experiments at vn4.4. */ */ 4.5 modset to include long-term variations of the solar "constant" */ in HadCM3 runs, and minor accompanying changes in spectral file */ stuff but no variation in ozone amounts, which is probably more */ important. */ The solar variability is as in Lean, Beer & Bradley (1995, GRL, 22, */ 3195-3198) extended to 1997 (Lean, pers. comm., 1998). It does */ check the year is in the range covered. */ This modset is based on existing modsets that vary it in line with */ the Hoyt & Schatten reconstruction. Note that earlier modsets */ just altered the total solar irradiance, as in HadCM2. */ There is some discussion on http://www_hc/~hadeb/fcgmenu.html & I */ wrote a short report on natural forcings of climate 12/97. WJI */ *DECLARE RAD_CTL1 */ *B ADB2F404.975 */ CL Tweak SCS and SW spectral file to allow for solar variability - CL the total output & its spectral distribution: CALL SOLVAR (PREVIOUS_TIME(1), SCS, NPD_BAND_SW, & SOLAR_FLUX_BAND_SW, RAYLEIGH_COEFFICIENT_SW, & W_ESFT_SW(1+2*NPD_ESFT_TERM_SW*NPD_BAND_SW,1,1), C ! 2* to skip two species & get to ozone, the third - can't put C ! W_ESFT_SW(1,1,3) as here it is dimensioned by NPD_ESFT_TERM C ! & NPD_BAND, but its contents are arranged as if dimensioned C ! by NPD_ESFT_TERM_SW & NPD_BAND_SW. & CMESSAGE, ICODE) IF ( ICODE .GT. 0 ) RETURN */ *DECLARE CLDCTL1 */ *I CLDCTL1.102 & DUMMY, *I CLDCTL1.327 CL Tweak SCS to allow for variation in total solar output: CALL SOLVAR (PREVIOUS_TIME(1), SCS, DUMMY, DUMMY, DUMMY, DUMMY, & CMESSAGE, ICODE) */ */ *DECK SOLVAR1A !+ Represent variation of solar output - its total & distribution. ! Subroutine Interface: SUBROUTINE SOLVAR (YEAR, SCS, NBANDS, FB, RA, OZWB1, & ErrorMessage, ErrorStatus) IMPLICIT NONE ! Description: ! SOLVAR allows for solar variability: its effects on the total solar ! output, and on its distribution with wavelength - or at least some ! of those things that depend on the latter, namely spectrally ! averaged items in the shortwave spectral file. It assumes that the ! empirical (but theoretically plausible) correlations between total ! solar output & its spectral distribution over recent solar cycles ! due to Lean et al apply across the board, even down to Maunder ! minimum, & the time variation is as in Lean, Beer & Bradley (1995, ! GRL, 22, 3195-3198) extended to 1997 (Lean, pers. comm., 1998). ! It is written to work with the HadCM3 SW spectral file (or slight ! variations) only. Only the division of the total energy between ! the bands, ozone absorption in band 1 & Rayleigh scattering are ! worth bothering with (& the last only because it's so easy). The ! ozone absorption can be done just by tweaking the weights, thanks ! to Stephen C. ! ! Method: ! First time in, save the "standard" values of the quantities ! concerned in the spectral file. ! Every time the year changes, the quantities to be altered in the ! spectral file are varied as functions of the solar "constant". ! Every call re-set SCS, which is set fresh every timestep by SOLPOS. ! ! Current Code Owner: William Ingram ! ! History: ! Version Date Comment ! ======= ==== ======= ! 4.5 14/6/99 Original version, based on corresponding HS modset ! with data from HadCM2-style LBB modset. (William Ingram) ! ! Code description: ! FORTRAN 77 + common extensions also in fortran 90. ! This code is written to UM programming standards version 6 ! ! System component covered: not applicable ! System task: not applicable ! ! Declarations: these are of the form:- ! INTEGER ExampleVariable !Description of variable ! ! Global variables (*CALLed common blocks etc.) *CALL SWSC ! Subroutine arguments ! Scalar arguments with intent(in): INTEGER YEAR, ! Current year & NBANDS ! Number of bands in spectral file CHARACTER*80 ErrorMessage ! ! Scalar arguments with intent(InOut): REAL SCS ! Solar constant scaling factor, taking into consideration the ! changes in solar irradiance & the earth-sun distance. ! Array arguments with intent(InOut): REAL FB(6), ! Fraction of insolation in each band & RA(6), ! Rayleigh coefficients for each band & OZWB1(5) ! Ozone esft weights in band 1 ! ErrorStatus: INTEGER ErrorStatus !+ve = fatal error ! Local parameters: REAL FC2B1D, ! Used to convert FCSC to BAND1D & FBSEN1, ! Sensitivity of FB(1) to BAND1D & FBSEN2, ! Sensitivity of FB(2) to FCSC & RASEN1, ! Sensitivity of RA(1) to BAND1D & RASEN2 ! Sensitivity of RA(2) to FCSC PARAMETER ( FC2B1D = 213. ) PARAMETER ( FBSEN1 = 5.212, FBSEN2 = 0.1458 ) PARAMETER ( RASEN1 = 4.360, RASEN2 = 0.2185 ) ! Local scalars: REAL SOV ! Solar "constant" for the year REAL MNFB(6), MNRA(2), MNOZ(5) ! Reference values for FB, RA and OZWB1. REAL FCSC, ! Fractional change in solar constant & BAND1D ! Factor representing the band-1 quantities's quadratic dependence ! on solar constant (in band 2 they vary linearly). ! ADD in extra two numbers here when we have them REAL LBBSIV (1748:2008) ! Year-to-year variation of the solar "constant". C C The new data comes from Judith Lean C 1998 Judith's no 1367.47 -> 3.46997 C subtract off 1363.3718 and then subtract off 0.628174 C the latter being the offset between Judith's data and what C in the modeset for data up to 1997 C For future data we need to multiply Judith's data by 1.001 C before the factors above C 1999 1366.36 -> 3.72644 C 2000 1366.49 -> 3.85657 C 2001 1366.41 -> 3.77649 C 2002 1366.21 -> 3.57629 C 2003 1365.98 -> 3.34607 C 2004 1365.80 -> 3.16589 C 2005 1365.71 -> 3.07568 C 2006 1365.70 -> 3.06567 C 2007 1365.75 -> 3.11584 C 2008 1366.05 -> 3.41614 C C Below is `head -n 2386 ~/Haigh/Lean/Mail | tail -n 250 | C awk '{print $4-1364. ","}' | paste -s -d' \n' - | C awk '{print " & " $0}'` with spaces added for neatness. DATA LBBSIV / & 2.5131, 2.2513, 2.2868, 2.0362, 1.9468, 1.8269, 1.679, 1.5999, & 1.573, 1.6547, 1.7453, 1.8192, 1.7565, 1.857, 1.7772, 1.7036, & 1.6824, 1.5719, 1.5847, 1.8602, 2.1301, 2.3445, 2.3838, 2.3062, & 2.2242, 2.0195, 1.976, 1.8232, 1.8978, 2.0672, 2.4796, 2.4437, & 2.2016, 2.331, 2.0422, 1.957, 1.8415, 1.9636, 2.4103, 2.6607, & 2.6225, 2.5939, 2.4756, 2.2624, 2.2194, 2.0312, 1.9765, 1.783, & 1.6801, 1.5353, 1.4136, 1.3227, 1.3017, 1.5357, 1.3426, 1.068, & 1.026, 0.9907, 0.8004, 0.709, 0.6664, 0.623, 0.595, 0.5864, & 0.6153, 0.6402, 0.6487, 0.6964, 0.8557, 0.8572, 0.8376, 0.8506, & 0.8128, 0.8119, 0.8462, 0.8818, 0.9686, 1.1047, 1.2742, 1.4579, & 1.631, 1.7284, 1.8503, 1.761, 1.7187, 1.6883, 1.8063, 2.1567, & 2.624, 2.7331, 2.549, 2.4847, 2.3706, 2.1989, 2.1174, 2.0053, & 1.9915, 2.0787, 2.1284, 2.2352, 2.4086, 2.383, 2.1222, 2.1305, & 2.0579, 1.9297, 1.7667, 1.665, 1.661, 1.794, 2.0168, 2.3193, & 2.3914, 2.2743, 2.1073, 2.0474, 2.0001, 1.8863, 1.8231, 1.7582, & 1.9292, 2.1888, 2.476, 2.3867, 2.316, 2.0624, 1.884, 1.6433, & 1.599, 1.5752, 1.4549, 1.4544, 1.5734, 1.746, 1.6472, 1.5213, & 1.6045, 1.5679, 1.4443, 1.4098, 1.3943, 1.436, 1.4713, 1.6953, & 1.9115, 1.9316, 1.9647, 1.9514, 1.8818, 1.646, 1.6906, 1.6201, & 1.5619, 1.4493, 1.4087, 1.5463, 1.6971, 1.5142, 1.6523, 1.5702, & 1.6274, 1.5968, 1.5139, 1.4962, 1.5497, 1.6208, 1.7056, 2.0476, & 2.2342, 2.4705, 2.4392, 2.2164, 2.1059, 2.0237, 1.9178, 1.9088, & 1.9033, 1.9759, 2.0011, 2.1698, 2.074, 1.9751, 2.0317, 1.9969, & 1.9665, 1.9631, 2.0975, 2.3026, 2.7184, 2.7072, 2.7317, 2.7241, & 2.7949, 2.7592, 2.6771, 2.5566, 2.6024, 2.8141, 2.8834, 3.2546, & 3.4923, 3.359, 3.1998, 3.0516, 2.9825, 2.8958, 2.8778, 3.1282, & 3.6656, 3.9917, 3.8818, 3.5702, 3.6231, 3.334, 3.1234, 3.0128, & 2.834, 2.7924, 2.9315, 3.0203, 3.0933, 3.0899, 2.9377, 2.7375, & 2.8318, 2.6555, 2.6838, 2.5701, 2.5808, 2.8432, 3.4533, 4.0713, & 4.1172, 3.9037, 3.579, 3.4649, 3.1799, 3.0409, 3.001, 3.2029, & 3.8157, 4.2017, 4.1651, 3.9996, 3.7051, 3.4, 3.1455, 3.1006, & 3.0186, 3.1216, 3.4700, 3.7264, 3.8566, 3.7765, 3.5763, 3.3461, & 3.1659, 3.0757, 3.0657, 3.1158, 3.4161 / C 1999 1366.36 -> 3.72644 C 2000 1366.49 -> 3.85657 C 2001 1366.41 -> 3.77649 C 2002 1366.21 -> 3.57629 C 2003 1365.98 -> 3.34607 C 2004 1365.80 -> 3.16589 C 2005 1365.71 -> 3.07568 C 2006 1365.70 -> 3.06567 C 2007 1365.75 -> 3.11584 C 2008 1366.05 -> 3.41614 C C The average over the last 11 years 1998-2008 is 3.41737 C The average over the past 11 years 1989-1999 is 3.55038 REAL OZSEN(5) ! Sensitivities of OZWB1 to BAND1D DATA OZSEN / -3.65009, -3.84821, -2.57906, 2.44108, 12.7060 / LOGICAL FIRST ! First time in ? DATA FIRST / .TRUE. / INTEGER LASTYR ! Year last time through DATA LASTYR / -99999 / SAVE FIRST, LASTYR, MNRA, MNFB, MNOZ, FCSC !- End of header IF ( FIRST ) THEN C Check only on the number of bands & that there seem to be 5 esft C terms for the first gas in the first band - any more complex test C say, the total size of the file, or band limits would be confused by C adding more aerosols or re-labelling the (pseudo-)band limits. IF ( SUM(OZWB1) .GT. 1.0001 .OR. SUM(OZWB1) .LE. 0.9999 & .OR. NBANDS .NE. 6 ) THEN ErrorMessage = ' SOLVAR: Inappropriate spectral file' WRITE (6, *) NBANDS, OZWB1 WRITE (6, *) ErrorMessage ErrorStatus = 8 RETURN ENDIF C Store reference values. MNFB = FB MNRA = RA(1:2) MNOZ = OZWB1 FIRST = .FALSE. ENDIF IF ( YEAR .LT. 1748 ) THEN ErrorMessage = ' SOLVAR: Only years from 1748 covered' WRITE (6, *) YEAR WRITE (6, *) ErrorMessage ErrorStatus = 9 RETURN ENDIF IF ( YEAR .NE. LASTYR ) THEN ! Calculate this year's solar constant & thence FCSC and BAND1D ! IF (YEAR .LE. 2008) THEN IF (YEAR .LE. 1999) THEN SOV = LBBSIV(YEAR) + 1363.3718 ENDIF ! IF (YEAR .GT. 2008) THEN ! SOV = 3.41737 + 1363.3718 ! ENDIF IF (YEAR .GT. 1999) THEN SOV = 3.55038 + 1363.3718 ENDIF ! 1363.3718 = SC - mean(LBBSIV) FCSC = SOV / SC - 1. BAND1D = FCSC * ( 1. + FC2B1D * FCSC ) ! Set FB(1,2) using BAND1D & FCSC and the rest by normalization. FB(1) = ( 1. + FBSEN1 * BAND1D ) * MNFB (1) FB(2) = ( 1. + FBSEN2 * FCSC ) * MNFB (2) FB(3:6) = MNFB(3:6) * ( 1. - FB(1) - FB(2) ) / SUM(MNFB(3:6)) ! Set RA(1,2) using BAND1D & FCSC: the rest are insignificant. RA(1) = ( 1. + RASEN1 * BAND1D ) * MNRA (1) RA(2) = ( 1. + RASEN2 * FCSC ) * MNRA (2) ! Set OZWB1 using BAND1D but must then re-normalize. OZWB1 = ( 1. + OZSEN * BAND1D ) * MNOZ OZWB1 = OZWB1 / SUM(OZWB1) LASTYR = YEAR ENDIF SCS = SCS * ( 1. + FCSC ) RETURN END