[an error occurred while processing this directive] [an error occurred while processing this directive]

Ramped Forcing data for CSM b018.15 run (1870-1990 ramp)


Gases

co2 (ppmv), ch4 (ppbv), n2o (ppbv), f11 (pptv), f12 (pptv), adj (unitless), semis (Tg S/yr)


c##############################################################################

      subroutine ramp
C-----------------------------------------------------------------------
C
C Computes scale factor for ramping sulfate mass mixing ratios and the
C trace gas volume mixing ratios via interpolation of yearly input data.
C
C-----------------------------------------------------------------------
c
c $Id: implicit.h,v 1.1.14.1 1998/04/02 23:08:46 rosinski Exp $
c $Author: rosinski $
c
      implicit none
 
C-----------------------------------------------------------------------
c
c $Id: pmgrid.h,v 1.1.2.1 1998/04/02 23:10:51 rosinski Exp $
c $Author: rosinski $
c
C
C Grid point resolution parameters
C
      integer plon       ! number of longitudes
      integer plev       ! number of vertical levels
      integer plat       ! number of latitudes
      integer pcnst      ! number of constituents (including water vapor)
      integer pnats      ! number of non-advected trace species
      integer plevmx     ! number of subsurface levels
C
      integer plevp      ! plev + 1
      integer nxpt       ! no.of pts outside active domain of interpolant
      integer jintmx     ! number of extra latitudes in polar region
      integer plond      ! slt extended domain longitude
      integer platd      ! slt extended domain lat.
      integer p3d        ! dimensioning construct: num. of 3-d flds in /com3d/
C
      integer plevd      ! fold plev,pcnst indices into one
      integer i1         ! model starting longitude index
      integer j1         ! model starting latitude index
      integer numbnd     ! no.of latitudes passed N and S of forecast lat
C
      integer beglat     ! beg. index for latitudes owned by a given proc
      integer endlat     ! end. index for latitudes owned by a given proc
      integer beglatex   ! extended grid beglat
      integer endlatex   ! extended grid endlat
      integer numlats    ! number of latitudes owned by a given proc
C
      logical masterproc ! Flag for (iam eq 0)
C
      parameter (plon   = 128)
      parameter (plev   = 18)
      parameter (plat   = 64)
      parameter (pcnst  = 6)
      parameter (pnats  = 0)
      parameter (plevmx = 4)
      parameter (plevp  = plev + 1)
      parameter (nxpt   = 1)
      parameter (jintmx = 1)
      parameter (plond  = plon + 1 + 2*nxpt)
      parameter (platd  = plat + 2*nxpt + 2*jintmx)
      parameter (p3d    = 3 + pcnst + pnats)
      parameter (plevd  = plev*p3d)
      parameter (i1     = 1 + nxpt)
      parameter (j1     = 1 + nxpt + jintmx)
      parameter (numbnd = nxpt + jintmx)
C
      parameter (beglat   = 1)
      parameter (endlat   = plat)
      parameter (numlats  = plat)
      parameter (beglatex = 1)
      parameter (endlatex = platd)
      parameter (masterproc = .true.)
C
 
c
c $Id: pagrid.h,v 1.1.2.1 1998/04/02 23:10:50 rosinski Exp $
c $Author: rosinski $
c
C
C Model grid point resolution parameters.
C
      integer plnlv     ! Length of multilevel field slice
      integer plndlv    ! Length of multilevel 3-d field slice
      integer pbflnb    ! Length of buffer 1
      integer pbflna    ! Length of buffer 2
      integer pbflnm1   ! Length of buffer m1
C
      integer pflenb    ! Length of buffer 1, padded for unblocked I/O
      integer pflena    ! Length of buffer 2, padded for unblocked I/O
      integer plenalcl  ! Length of buffer 2, needed in SPEGRD
      integer ptifld    ! No. of fields on time-invariant bndary dataset
      integer ptvsfld   ! No. of fields on time-variant boundary dataset
C
      integer plenhi    ! Length of integer header record
      integer plenhc    ! Length of character header record
      integer plenhr    ! Length of real header record
      integer plexbuf   ! Len. of communication buffer for flux coupling
C
      integer ptapes    ! Maximum number of history tapes allowed
      integer pflds     ! Maximum number of fields in all history files
      integer ptileni   ! Length of time-invariant integer header
      integer ptilenc   ! Length of time-invariant character header
C
      integer ptvsleni  ! Length of time-variant integer header
      integer ptvslenc  ! Length of time-variant character header
      integer plenhis   ! Length of integer header scalars
      integer plenhcs   ! Length of character header scalars
C
      integer ptilenis  ! Length of time-invariant integer scalars
      integer ptilencs  ! Length of time-invariant character scalars
      integer ptolenis  ! Length of ozone integer header scalars
      integer ptolencs  ! Length of ozone character header scalars
      integer ptslenis  ! Length of time-variant integer header scalars
      integer ptslencs  ! Length of time-variant character header scalars
C
      parameter(plnlv=plon*plev,plndlv=plond*plev)
C
C In pbflnb, 9 multi-level fields include the plev levels of plol and
C plos. 2 multi-level fields are pcnst-dependent.
C PJR added 3 multi and 3 singl.
C
      parameter(pbflnb=(10 + 2*pcnst + 1*pnats)*plndlv +
     $                 (8+pcnst)*plond)
C
C In pbflna, there are 3 multi-level and 3 single-level fields.
C
      parameter(pbflna = (3 + 3*plev)*plond)
      parameter(pbflnm1 = (1 + 2*plev)*plond)
      parameter(pflenb = ((pbflnb + pbflnm1)/512 + 1)*512)
      parameter(pflena = (pbflna/512 + 1)*512)
C
C plenalcl is the buffer size as required in SPEGRD.  
C Only pflena is read/written.
C
      parameter(plenalcl = ((pbflna + 2*plndlv + plond)/512 + 1)*512)
      parameter(plexbuf = (((1 + 6*plev)*plond)/512+1)*512)
      parameter(ptapes = 6)
C
C Maximum total number of fields in all history files
C (primary and auxillary files)
C
      parameter(pflds=1000)
C
C Add 2 extra fields for tvbds     6 April 1995
C
      parameter(ptifld = 11, ptvsfld = 3)
C
C There are 37 scalar words in the integer header and 89 scalar words
C in the character header
C
      parameter(plenhis=37)
      parameter(plenhcs=89)
C
      parameter(plenhi=plenhis+3*pflds)
      parameter(plenhc=plenhcs+2*pflds)
      parameter(plenhr=3*(2*plev + 1) + 2*plat)
      parameter(ptilenis=plenhis) 
      parameter(ptilencs=plenhcs)
C
      parameter(ptileni=ptilenis+3*ptifld) 
      parameter(ptilenc=ptilencs+2*ptifld)
      parameter(ptolenis=plenhis) 
      parameter(ptolencs=plenhcs)
C
      parameter(ptslenis=plenhis) 
      parameter(ptslencs=plenhcs)
      parameter(ptvsleni=ptslenis+3*ptvsfld)
      parameter(ptvslenc=ptslencs+2*ptvsfld)
C
 
c
c $Id: pspect.h,v 1.1.2.1 1998/04/02 23:09:35 rosinski Exp $
c $Author: rosinski $
c
C
C Parameters related to spectral domain
C
      integer ptrm    ! M truncation parameter
      integer ptrn    ! N truncation parameter
      integer ptrk    ! K truncation parameter
      integer pmax    ! Number of diagonals
      integer pmaxp   ! Number of diagonals plus 1
      integer pnmax   ! Number of values of N
      integer pmmax   ! Number of values of M
      integer par0    ! Intermediate parameter
      integer par2    ! Intermediate parameter
      integer pspt    ! Total no. of complex spectral coeff's retained
      integer psp     ! 2 * pspt (real) size of coeff array per level
C
      parameter(ptrm=42 ,ptrn=42 ,ptrk=42)
      parameter(pmax=ptrn+1 ,pmaxp=pmax+1 ,pnmax=ptrk+1 ,pmmax=ptrm+1)
      parameter(par0=ptrm+ptrn-ptrk ,par2=par0*(par0+1)/2)
      parameter(pspt=(ptrn+1)*pmmax-par2 ,psp=2*pspt)
C
 
C-----------------------------------------------------------------------
      logical fixYear ! true => Ramped gases fixed at specified year.
      common /ramp_l/ fixYear

      integer rampYear  ! ramped gases fixed at this year
      common /ramp_i/ rampYear
C-----------------------------------------------------------------------
C
C Molecular weights
C
      real mwdry      ! molecular weight dry air
      real mwco2      ! molecular weight co2
      real mwh2o      ! molecular weight h2o
      real mwn2o      ! molecular weight n2o
      real mwch4      ! molecular weight ch4
      real mwf11      ! molecular weight cfc11
      real mwf12      ! molecular weight cfc12

      parameter (mwdry  = 29.)
      parameter (mwco2  = 44.)
      parameter (mwh2o =  18.)
      parameter (mwn2o =  44.)
      parameter (mwch4 =  16.)
      parameter (mwf11 = 136.)
      parameter (mwf12 = 120.)
C
C Ratios of molecular weights
C
      real rmwn2o   ! ratio of molecular weight n2o   to dry air
      real rmwch4   ! ratio of molecular weight ch4   to dry air
      real rmwf11   ! ratio of molecular weight cfc11 to dry air
      real rmwf12   ! ratio of molecular weight cfc12 to dry air
      real rmwco2   ! ratio of molecular weight co2   to dry air 
      real rh2och4  ! ratio of molecular weight h2o   to ch4

      parameter (rmwco2 = mwco2/mwdry)
      parameter (rmwn2o = mwn2o/mwdry)
      parameter (rmwch4 = mwch4/mwdry)
      parameter (rmwf11 = mwf11/mwdry)
      parameter (rmwf12 = mwf12/mwdry)
      parameter (rh2och4= mwh2o/mwch4)
C
C Volume mixing ratios
C
      real co2vmr   ! co2   volume mixing ratio 
      real n2ovmr   ! n2o   volume mixing ratio 
      real ch4vmr   ! ch4   volume mixing ratio 
      real f11vmr   ! cfc11 volume mixing ratio 
      real f12vmr   ! cfc12 volume mixing ratio 
      
      common /commrat/ co2vmr, n2ovmr, ch4vmr, f11vmr, f12vmr
C-----------------------------------------------------------------------
c
c $Id: crdcon.h,v 1.1.2.1 1998/04/02 23:12:11 rosinski Exp $
c $Author: rosinski $
c
C
C Radiation constants
C
      common/crdcon/gravit  ,rga     ,cpair   ,epsilo  ,sslp    ,
     $              stebol  ,rgsslp  ,co2mmr  ,dpfo3   ,dpfco2  ,
     $              dayspy  ,pie
C
      real gravit     ! Acceleration of gravity
      real rga        ! 1./gravit
      real cpair      ! Specific heat of dry air
      real epsilo     ! Ratio of mol. wght of H2O to dry air
      real sslp       ! Standard sea-level pressure
      real stebol     ! Stefan-Boltzmann's constant
      real rgsslp     ! 0.5/(gravit*sslp)
      real co2mmr     ! CO2 mass mixing ratio
      real dpfo3      ! Voigt correction factor for O3
      real dpfco2     ! Voigt correction factor for CO2
      real dayspy     ! Number of days per 1 year
      real pie        ! 3.14.....
C
 
C-----------------------------------------------------------------------
c
c $Id: comtim.h,v 1.1.2.1 1998/04/02 23:09:16 rosinski Exp $
c $Author: rosinski $
c
C
C Model time variables
C
      common/comtim/calday  ,dtime   ,twodt   ,divdampn,nrstrt  ,
     $              nstep   ,nstepr  ,nestep  ,nelapse ,nstop   ,
     $              mdbase  ,msbase  ,mdcur   ,mscur   ,mbdate  ,
     $              mbsec   ,mcdate  ,mcsec   ,nndbas  ,nnsbas  ,
     $              nnbdat  ,nnbsec  ,doabsems,dosw    ,dolw    
C
      real calday       ! Current calendar day = julian day + fraction
      real dtime        ! Time step in seconds (delta t)
      real twodt        ! 2 * delta t 
      real divdampn     ! Number of days to invoke divergence damper
      integer nrstrt    ! Starting time step of restart run (constant) 
      integer nstep     ! Current time step
      integer nstepr    ! Current time step of restart (updated w/nstep)
      integer nestep    ! Time step on which to stop run
      integer nelapse   ! Requested elapsed time for model run
      integer nstop     ! nestep + 1
      integer mdbase    ! Base day of run
      integer msbase    ! Base seconds of base day
      integer mdcur     ! Current day of run
      integer mscur     ! Current seconds of current day
      integer mbdate    ! Base date of run (yymmdd format)
      integer mbsec     ! Base seconds of base date
      integer mcdate    ! Current date of run (yymmdd format)
      integer mcsec     ! Current seconds of current date
      integer nndbas    ! User input base day
      integer nnsbas    ! User input base seconds of input base day
      integer nnbdat    ! User input base date (yymmdd format)
      integer nnbsec    ! User input base seconds of input base date
      logical doabsems  ! True => abs/emiss calculation this timestep
      logical dosw      ! True => shortwave calculation this timestep
      logical dolw      ! True => longwave calculation this timestep
C
 
C---------------------------Local variables-----------------------------

      integer ntim
      parameter(ntim=130)

      real semis_ref                ! reference value for sulfer emissions (1985)
      parameter (semis_ref = 65.0)  ! Hardwired as per discussion with Byron (1May98) 
      
      integer yrmodel           ! model year
      integer yrdata(ntim)      ! yearly data values
      integer nyrm              ! year index 
      integer nyrp              ! year index  
      real doymodel             ! model day of year 
      real doydatam             ! day of year for input data yrdata(nyrm)
      real doydatap             ! day or year for input data yrdata(nyrp)
      real deltat               ! delta time
      real fact1, fact2         ! time interpolation factors
      real cfcscl               ! cfc scale factor for f11

      real co2(ntim)            ! input co2   in ppmv
      real ch4(ntim)            ! input ch4   in ppbv
      real n2o(ntim)            ! input n2o   in ppbv 
      real f11(ntim)            ! input cfc11 in pptv
      real f12(ntim)            ! input cfc12 in pptv
      real adj(ntim)            ! input adjustment factor for f11 and f12
      real semis(ntim)          ! input Global sulfer emissisions (Tg S/yr)

C Input data values

      data yrdata /
     $     1870  ,1871  ,1872  ,1873  ,1874  ,
     $     1875  ,1876  ,1877  ,1878  ,1879  ,
     $     1880  ,1881  ,1882  ,1883  ,1884  ,
     $     1885  ,1886  ,1887  ,1888  ,1889  ,
     $     1890  ,1891  ,1892  ,1893  ,1894  ,
     $     1895  ,1896  ,1897  ,1898  ,1899  ,
     $     1900  ,1901  ,1902  ,1903  ,1904  ,
     $     1905  ,1906  ,1907  ,1908  ,1909  ,
     $     1910  ,1911  ,1912  ,1913  ,1914  ,
     $     1915  ,1916  ,1917  ,1918  ,1919  ,
     $     1920  ,1921  ,1922  ,1923  ,1924  ,
     $     1925  ,1926  ,1927  ,1928  ,1929  ,
     $     1930  ,1931  ,1932  ,1933  ,1934  ,
     $     1935  ,1936  ,1937  ,1938  ,1939  ,
     $     1940  ,1941  ,1942  ,1943  ,1944  ,
     $     1945  ,1946  ,1947  ,1948  ,1949  ,
     $     1950  ,1951  ,1952  ,1953  ,1954  ,
     $     1955  ,1956  ,1957  ,1958  ,1959  ,
     $     1960  ,1961  ,1962  ,1963  ,1964  ,
     $     1965  ,1966  ,1967  ,1968  ,1969  ,
     $     1970  ,1971  ,1972  ,1973  ,1974  ,
     $     1975  ,1976  ,1977  ,1978  ,1979  ,
     $     1980  ,1981  ,1982  ,1983  ,1984  ,
     $     1985  ,1986  ,1987  ,1988  ,1989  ,
     $     1990  ,1991  ,1992  ,1993  ,1994  ,
     $     1995  ,1996  ,1997  ,1998  ,1999  /

       data co2 /            ! ppmv
     $ 289.263, 289.416, 289.577, 289.745, 289.919,
     $ 290.102, 290.293, 290.491, 290.696, 290.909,
     $ 291.129, 291.355, 291.587, 291.824, 292.066,
     $ 292.313, 292.563, 292.815, 293.071, 293.328,
     $ 293.586, 293.843, 294.098, 294.350, 294.598,
     $ 294.842, 295.082, 295.320, 295.558, 295.797,
     $ 296.038, 296.284, 296.535, 296.794, 297.062,
     $ 297.338, 297.620, 297.910, 298.204, 298.504,
     $ 298.806, 299.111, 299.419, 299.729, 300.040,
     $ 300.352, 300.666, 300.980, 301.294, 301.608,
     $ 301.923, 302.237, 302.551, 302.863, 303.172,
     $ 303.478, 303.779, 304.075, 304.366, 304.651,
     $ 304.930, 305.206, 305.478, 305.746, 306.013,
     $ 306.280, 306.546, 306.815, 307.087, 307.365,
     $ 307.650, 307.943, 308.246, 308.560, 308.887,
     $ 309.228, 309.584, 309.956, 310.344, 310.749,
     $ 311.172, 311.614, 312.077, 312.561, 313.068,
     $ 313.599, 314.154, 314.737, 315.347, 315.984,
     $ 316.646, 317.328, 318.026, 318.742, 319.489,
     $ 320.282, 321.133, 322.045, 323.021, 324.060,
     $ 325.155, 326.299, 327.484, 328.698, 329.933,
     $ 331.194, 332.499, 333.854, 335.254, 336.690,
     $ 338.150, 339.628, 341.125, 342.650, 344.206,
     $ 345.797, 347.397, 348.980, 350.551, 352.100,
     $ 353.636, 354.46,  355.86,  356.56,  358.45 ,
     $ 360.47,  362.14,  363.98,  365.86,  367.82 /

      data ch4 /                        ! ppbv
     $ 901.355, 903.486, 905.637, 907.809, 910.001,
     $ 912.213, 914.445, 916.697, 918.969, 921.262,
     $ 923.575, 925.908, 928.261, 930.635, 933.029,
     $ 935.443, 937.877, 940.331, 942.805, 945.300,
     $ 947.815, 950.350, 952.905, 955.481, 958.077,
     $ 960.693, 963.329, 965.985, 968.661, 971.358,
     $ 974.075, 976.812, 979.569, 982.347, 985.145,
     $ 987.963, 990.801, 993.659, 996.537, 999.436,
     $ 1002.355, 1005.294, 1008.253, 1011.233, 1014.233,
     $ 1017.253, 1020.293, 1023.353, 1026.433, 1029.534,
     $ 1032.655, 1035.796, 1038.957, 1042.139, 1045.341,
     $ 1048.563, 1051.805, 1055.067, 1058.349, 1061.652,
     $ 1064.975, 1068.318, 1071.681, 1075.065, 1078.469,
     $ 1081.893, 1085.337, 1088.801, 1092.285, 1095.790,
     $ 1099.325, 1102.968, 1106.796, 1110.819, 1115.037,
     $ 1119.451, 1124.060, 1128.865, 1133.864, 1139.059,
     $ 1144.450, 1150.035, 1155.816, 1161.792, 1167.964,
     $ 1174.414, 1181.578, 1189.860, 1199.279, 1209.776,
     $ 1221.286, 1233.749, 1247.103, 1261.286, 1276.237,
     $ 1291.892, 1308.192, 1325.074, 1342.476, 1360.336,
     $ 1378.593, 1397.185, 1416.049, 1435.126, 1454.351,
     $ 1473.665, 1493.005, 1512.308, 1531.514, 1550.561,
     $ 1569.302, 1587.137, 1603.569, 1618.667, 1632.584,
     $ 1645.476, 1657.498, 1668.806, 1679.553, 1689.896,
     $ 1700.000, 1710.234, 1720.943, 1732.080, 1743.612,
     $ 1755.507, 1767.774, 1780.418, 1793.410, 1806.725/

      data n2o /                        ! ppbv
     $ 281.351, 281.459, 281.568, 281.676, 281.784,
     $ 281.892, 282.000, 282.108, 282.216, 282.324,
     $ 282.432, 282.541, 282.649, 282.757, 282.865,
     $ 282.973, 283.081, 283.189, 283.297, 283.405,
     $ 283.514, 283.622, 283.730, 283.838, 283.946,
     $ 284.054, 284.162, 284.270, 284.378, 284.486,
     $ 284.595, 284.703, 284.811, 284.919, 285.027,
     $ 285.135, 285.243, 285.351, 285.459, 285.568,
     $ 285.676, 285.784, 285.892, 286.000, 286.108,
     $ 286.216, 286.324, 286.432, 286.541, 286.649,
     $ 286.757, 286.865, 286.973, 287.081, 287.189,
     $ 287.297, 287.405, 287.514, 287.622, 287.730,
     $ 287.838, 287.946, 288.054, 288.162, 288.270,
     $ 288.378, 288.486, 288.595, 288.703, 288.811,
     $ 288.919, 289.027, 289.135, 289.243, 289.351,
     $ 289.459, 289.568, 289.676, 289.784, 289.892,
     $ 290.018, 290.186, 290.381, 290.588, 290.808,
     $ 291.039, 291.282, 291.537, 291.803, 292.082,
     $ 292.372, 292.674, 292.988, 293.314, 293.652,
     $ 294.037, 294.500, 295.000, 295.500, 296.000,
     $ 296.500, 297.000, 297.500, 298.000, 298.500,
     $ 299.000, 299.500, 300.000, 300.500, 301.000,
     $ 301.500, 302.000, 302.500, 303.000, 303.500,
     $ 304.075, 304.800, 305.600, 306.400, 307.200,
     $ 308.000, 308.801, 309.607, 310.424, 311.250,
     $ 312.086, 312.934, 313.795, 314.670, 315.558/

      data f11 /                        ! pptv
     $     0.0000  ,0.0000  ,0.0000  ,0.0000  ,0.0000  ,
     $     0.0000  ,0.0000  ,0.0000  ,0.0000  ,0.0000  ,
     $     0.0000  ,0.0000  ,0.0000  ,0.0000  ,0.0000  ,
     $     0.0000  ,0.0000  ,0.0000  ,0.0000  ,0.0000  ,
     $     0.0000  ,0.0000  ,0.0000  ,0.0000  ,0.0000  ,
     $     0.0000  ,0.0000  ,0.0000  ,0.0000  ,0.0000  ,
     $     0.0000  ,0.0000  ,0.0000  ,0.0000  ,0.0000  ,
     $     0.0000  ,0.0000  ,0.0000  ,0.0000  ,0.0000  ,
     $     0.0000  ,0.0000  ,0.0000  ,0.0000  ,0.0000  ,
     $     0.0000  ,0.0000  ,0.0000  ,0.0000  ,0.0000  ,
     $     0.0000  ,0.0000  ,0.0000  ,0.0000  ,0.0000  ,
     $     0.0000  ,0.0000  ,0.0000  ,0.0000  ,0.0000  ,
     $     0.0000  ,0.0000  ,0.0000  ,0.0000  ,0.0000  ,
     $     0.0000  ,0.0000  ,0.0000  ,0.0000  ,0.01000 ,
     $     0.01000 ,0.01000 ,0.02000 ,0.02000 ,0.03000 ,
     $     0.04000 ,0.05000 ,0.08000 ,0.13000 ,0.23000 ,
     $     0.40000 ,0.63000 ,0.96000 ,1.4400  ,2.0700  ,
     $     2.8600  ,3.8300  ,5.0300  ,6.3700  ,7.5900  ,
     $     8.8100  ,10.440  ,12.550  ,15.200  ,18.450  ,
     $     22.300  ,26.660  ,31.510  ,36.990  ,43.210  ,
     $     50.410  ,58.820  ,68.270  ,79.000  ,91.400  ,
     $     105.12  ,118.19  ,130.66  ,142.86  ,153.92  ,
     $     163.49  ,172.26  ,180.82  ,188.67  ,197.22  ,
     $     206.06  ,215.24  ,225.80  ,237.18  ,247.38  ,
     $     255.61  ,263.70  ,267.82  ,270.17  ,270.97  ,
     $     270.87  ,270.19  ,269.72  ,268.96  ,267.94  /

      data f12 /                        ! pptv
     $     0.0000  ,0.0000  ,0.0000  ,0.0000  ,0.0000  ,
     $     0.0000  ,0.0000  ,0.0000  ,0.0000  ,0.0000  ,
     $     0.0000  ,0.0000  ,0.0000  ,0.0000  ,0.0000  ,
     $     0.0000  ,0.0000  ,0.0000  ,0.0000  ,0.0000  ,
     $     0.0000  ,0.0000  ,0.0000  ,0.0000  ,0.0000  ,
     $     0.0000  ,0.0000  ,0.0000  ,0.0000  ,0.0000  ,
     $     0.0000  ,0.0000  ,0.0000  ,0.0000  ,0.0000  ,
     $     0.0000  ,0.0000  ,0.0000  ,0.0000  ,0.0000  ,
     $     0.0000  ,0.0000  ,0.0000  ,0.0000  ,0.0000  ,
     $     0.0000  ,0.0000  ,0.0000  ,0.0000  ,0.0000  ,
     $     0.0000  ,0.0000  ,0.0000  ,0.0000  ,0.0000  ,
     $     0.0000  ,0.0000  ,0.0000  ,0.0000  ,0.0000  ,
     $     0.0000  ,0.0000  ,0.0000  ,0.0000  ,0.0100  ,
     $     0.0200  ,0.0400  ,0.0600  ,0.1000  ,0.1600  ,
     $     0.2400  ,0.3500  ,0.4900  ,0.6700  ,0.8800  ,
     $     1.1700  ,1.5500  ,2.2200  ,3.2400  ,4.4200  ,
     $     5.6900  ,7.0800  ,8.6000  ,10.160  ,11.920  ,
     $     13.910  ,16.130  ,18.710  ,21.660  ,24.730  ,
     $     28.150  ,32.240  ,36.810  ,42.060  ,48.190  ,
     $     55.320  ,63.370  ,72.300  ,82.360  ,94.210  ,
     $     107.96  ,123.02  ,139.18  ,156.72  ,176.18  ,
     $     197.22  ,217.36  ,236.41  ,254.20  ,270.21  ,
     $     286.69  ,303.60  ,320.09  ,336.09  ,352.72  ,
     $     370.10  ,387.83  ,406.13  ,424.91  ,444.14  ,
     $     462.67  ,481.09  ,493.66  ,505.03  ,513.77  ,
     $     520.35  ,523.77  ,528.35  ,531.51  ,533.62  /

      data adj /                        ! unitless
     $     0.000    , 0.000   , 0.000   , 0.000   , 0.000   ,
     $     0.000    , 0.000   , 0.000   , 0.000   , 0.000   ,
     $     0.000    , 0.000   , 0.000   , 0.000   , 0.000   ,
     $     0.000    , 0.000   , 0.000   , 0.000   , 0.000   ,
     $     0.000    , 0.000   , 0.000   , 0.000   , 0.000   ,
     $     0.000    , 0.000   , 0.000   , 0.000   , 0.000   ,
     $     0.000    , 0.000   , 0.000   , 0.000   , 0.000   ,
     $     0.000    , 0.000   , 0.000   , 0.000   , 0.000   ,
     $     0.000    , 0.000   , 0.000   , 0.000   , 0.000   ,
     $     0.000    , 0.000   , 0.000   , 0.000   , 0.000   ,
     $     0.000    , 0.000   , 0.000   , 0.000   , 0.000   ,
     $     0.000    , 0.000   , 0.000   , 0.000   , 0.000   ,
     $     0.000    , 0.000   , 0.000   , 0.000   , 0.000   ,
     $     0.000    , 0.000   , 0.000   , 0.000   , 0.000   ,
     $     0.000    , 0.000   , 0.000   , 0.000   , 0.000   ,
     $     0.000    , 0.000   , 0.000   , 0.000   ,32.000   ,
     $     34.000   ,36.000   ,19.500   ,13.667   ,8.6000   ,
     $     7.3333   ,5.7500   ,4.2727   ,3.4286   ,3.0000   ,
     $     2.8421   ,2.4348   ,2.1071   ,1.8788   ,1.6098   ,
     $     1.4490   ,1.3051   ,1.2464   ,1.1975   ,1.1368   ,
     $     1.0721   ,1.0388   ,0.98667  ,0.92529  ,0.87065  ,
     $     0.83550  ,0.80385  ,0.79443  ,0.78981  ,0.79351  ,
     $     0.81111  ,0.83377  ,0.85176  ,0.86988  ,0.88249  ,
     $     0.90066  ,0.91772  ,0.93360  ,0.95019  ,0.97426  ,
     $     1.0107   ,1.08966  ,1.11885  ,1.15320  ,1.17282  ,
     $     1.18960  ,1.20707  ,1.21585  ,1.23311  ,1.30153  /       

      data semis /                      ! Tg S/yr
     $     2.18     ,2.36     ,2.54     ,2.72     ,2.9      ,
     $     3.08     ,3.26     ,3.44     ,3.62     ,3.8      ,
     $     3.98     ,4.222    ,4.464    ,4.706    ,4.948    ,
     $     5.19     ,5.432    ,5.674    ,5.916    ,6.158    ,
     $     6.4      ,6.761    ,7.122    ,7.483    ,7.844    ,
     $     8.205    ,8.566    ,8.927    ,9.288    ,9.649    ,
     $     10.01    ,10.545   ,11.08    ,11.615   ,12.15    ,
     $     12.685   ,13.22    ,13.755   ,14.29    ,14.825   ,
     $     15.36    ,15.601   ,15.842   ,16.083   ,16.324   ,
     $     16.565   ,16.806   ,17.047   ,17.288   ,17.529   ,
     $     17.77    ,18.018   ,18.266   ,18.514   ,18.762   ,
     $     19.01    ,19.258   ,19.506   ,19.754   ,20.002   ,
     $     20.25    ,20.525   ,20.8     ,21.075   ,21.35    ,
     $     21.625   ,21.9     ,22.175   ,22.45    ,22.725   ,
     $     23.      ,23.528   ,24.056   ,24.584   ,25.112   ,
     $     25.64    ,26.168   ,26.696   ,27.224   ,27.752   ,
     $     28.28    ,29.794   ,31.308   ,32.822   ,34.336   ,
     $     35.85    ,37.364   ,38.878   ,40.392   ,41.906   ,
     $     43.42    ,45.384   ,47.348   ,49.312   ,51.276   ,
     $     53.24    ,55.204   ,57.168   ,59.132   ,61.096   ,
     $     63.06    ,63.821   ,64.582   ,65.343   ,66.104   ,
     $     66.865   ,67.626   ,68.387   ,69.148   ,69.909   ,
     $     70.67    ,71.1242  ,71.5785  ,72.0327  ,72.4869  ,
     $     72.9412  ,73.1671  ,73.393   ,73.6189  ,73.8448  ,
     $     74.0707  ,74.0707  ,74.8608  ,75.2558  ,75.6509  ,
     $     76.0459  ,76.2434  ,76.4410  ,76.6385  ,76.8360  /
c
c ---------------------------------------------------------------------
c
c determine index into input data
c
      if ( fixYear ) then
         yrmodel  = rampYear
      else
         yrmodel  = mcdate/10000
      end if
      
      nyrm       = yrmodel - yrdata(1) + 1
      nyrp       = nyrm + 1
c
c if current date is before 1870, quit
c
      if (nyrm .lt. 1) then
         write(6,*)'RAMP: data time index is out of bounds'
         write(6,*)'nyrm = ',nyrm,' nyrp= ',nyrp, ' mcdate= ', mcdate
         call endrun
      endif
c
c if current date later than 1998, just use 1998 values
c
      if (nyrp .gt. ntim) then
         co2vmr = co2(ntim)*1.e-06
         ch4vmr = ch4(ntim)*1.e-09
         n2ovmr = n2o(ntim)*1.e-09
         cfcscl = adj(ntim)
         f11vmr = f11(ntim)*1.e-12*(1.+cfcscl)
         f12vmr = f12(ntim)*1.e-12
         call setso4ramp( semis(ntim)/semis_ref )
         co2mmr = rmwco2 * co2vmr
         return
      endif
c
c determine time interpolation factors, check sanity
c of interpolation factors to within 32-bit roundoff
c assume that day of year is 1 for all input data
c
      doymodel = yrmodel*365.    + calday 
      doydatam = yrdata(nyrm)*365. + 1.
      doydatap = yrdata(nyrp)*365. + 1.
      deltat   = doydatap - doydatam
      fact1    = (doydatap - doymodel)/deltat
      fact2    = (doymodel - doydatam)/deltat

      if (abs(fact1+fact2-1.).gt.1.e-6 .or. 
     $     fact1.gt.1.000001 .or. fact1.lt.-1.e-6 .or.
     $     fact2.gt.1.000001 .or. fact2.lt.-1.e-6) then
         write(6,*)'RAMP: Bad fact1 and/or fact2=',fact1,fact2
         call endrun
      end if
c
c do time interpolation:
c   co2     in ppmv
c   n2o,ch4 in ppbv
c   f11,f12 in pptv
c
      co2vmr = (co2(nyrm)*fact1 + co2(nyrp)*fact2)*1.e-06
      ch4vmr = (ch4(nyrm)*fact1 + ch4(nyrp)*fact2)*1.e-09
      n2ovmr = (n2o(nyrm)*fact1 + n2o(nyrp)*fact2)*1.e-09

      cfcscl = (adj(nyrm)*fact1 + adj(nyrp)*fact2)
      f11vmr = (f11(nyrm)*fact1 + f11(nyrp)*fact2)*1.e-12*(1.+cfcscl)
      f12vmr = (f12(nyrm)*fact1 + f12(nyrp)*fact2)*1.e-12

      call setso4ramp((semis(nyrm)*fact1 + semis(nyrp)*fact2)/semis_ref)

      co2mmr = rmwco2 * co2vmr

      write(6,'(a,f8.2,6(1pe22.14))') 'calday1 = ',calday
     $ ,co2vmr/1.e-06
     $ ,ch4vmr/1.e-09
     $ ,n2ovmr/1.e-09
      write(6,'(a,f8.2,6(1pe22.14))') 'calday2 = ',calday
     $ ,cfcscl
     $ ,(f11(nyrm)*fact1 + f11(nyrp)*fact2)
     $ ,f12vmr/1.e-12

      return
      end
      subroutine setso4ramp( x )

c Set so4 ramp value.

      implicit none
C-----------------------------------------------------------------------
c
c $Id: pmgrid.h,v 1.1.2.1 1998/04/02 23:10:51 rosinski Exp $
c $Author: rosinski $
c
C
C Grid point resolution parameters
C
      integer plon       ! number of longitudes
      integer plev       ! number of vertical levels
      integer plat       ! number of latitudes
      integer pcnst      ! number of constituents (including water vapor)
      integer pnats      ! number of non-advected trace species
      integer plevmx     ! number of subsurface levels
C
      integer plevp      ! plev + 1
      integer nxpt       ! no.of pts outside active domain of interpolant
      integer jintmx     ! number of extra latitudes in polar region
      integer plond      ! slt extended domain longitude
      integer platd      ! slt extended domain lat.
      integer p3d        ! dimensioning construct: num. of 3-d flds in /com3d/
C
      integer plevd      ! fold plev,pcnst indices into one
      integer i1         ! model starting longitude index
      integer j1         ! model starting latitude index
      integer numbnd     ! no.of latitudes passed N and S of forecast lat
C
      integer beglat     ! beg. index for latitudes owned by a given proc
      integer endlat     ! end. index for latitudes owned by a given proc
      integer beglatex   ! extended grid beglat
      integer endlatex   ! extended grid endlat
      integer numlats    ! number of latitudes owned by a given proc
C
      logical masterproc ! Flag for (iam eq 0)
C
      parameter (plon   = 128)
      parameter (plev   = 18)
      parameter (plat   = 64)
      parameter (pcnst  = 6)
      parameter (pnats  = 0)
      parameter (plevmx = 4)
      parameter (plevp  = plev + 1)
      parameter (nxpt   = 1)
      parameter (jintmx = 1)
      parameter (plond  = plon + 1 + 2*nxpt)
      parameter (platd  = plat + 2*nxpt + 2*jintmx)
      parameter (p3d    = 3 + pcnst + pnats)
      parameter (plevd  = plev*p3d)
      parameter (i1     = 1 + nxpt)
      parameter (j1     = 1 + nxpt + jintmx)
      parameter (numbnd = nxpt + jintmx)
C
      parameter (beglat   = 1)
      parameter (endlat   = plat)
      parameter (numlats  = plat)
      parameter (beglatex = 1)
      parameter (endlatex = platd)
      parameter (masterproc = .true.)
C
 
C-----------------------------------------------------------------------
!
! Floating point data
!
      real sulfbioi(plon,plev,plat,2)  ! input sulfate bio mixing ratios
      real sulfbio (plond,plev,plat)   ! time imterpolated sulfate bio mixing ratios 
      real sulfanti(plon,plev,plat,2)  ! input sulfate ant mixing ratios
      real sulfant (plond,plev,plat)   ! time imterpolated sulfate ant mixing ratios 
      real sulfscalef ! Sulfate scale factor (for 1870->1990 ramp) 
      real cdaysulfm  ! calendar day for prv. month sulfate values read in
      real cdaysulfp  ! calendar day for nxt. month sulfate values read in

      common /sulf_r/ sulfbioi, sulfanti, sulfbio, sulfant, sulfscalef,
     $                cdaysulfm, cdaysulfp
!
! Pointers to dynamic memory
!
      pointer (pdate_sulf,date_sulf)
      pointer (psec_sulf ,sec_sulf )

      integer date_sulf(*) ! Date on sulfate dataset (YYYYMMDD)
      integer sec_sulf(*)  ! seconds of date on sulfate dataset (0-86399)

      common/sulf_date/ pdate_sulf, psec_sulf
!
! Integer data
!
      integer nm,np      ! Array indices for prv., nxt month sulfate data
      integer np1        ! current forward time index of sulfate dataset
      integer ncid_sulf  ! sulfate dataset id
      integer sulfbio_id ! netcdf id for sulfate mmr bio variable
      integer sulfant_id ! netcdf id for sulfate mmr anth variable
      integer lonsiz     ! size of longitude dimension on sulfate dataset
      integer levsiz     ! size of level dimension on sulfate dataset
      integer latsiz     ! size of latitude dimension on sulfate dataset
      integer timsiz     ! size of time dimension on sulfate dataset
 
      common/sulf_i/nm, np, np1, ncid_sulf, sulfbio_id, sulfant_id,
     $     lonsiz, levsiz, latsiz, timsiz  
!
! Logical variables
!
      logical sulfcyc
      common/ sulf_l/ sulfcyc

      character*80  sulfdata ! full pathname for sulfate dataset
      common /sulf_c/ sulfdata
C-----------------------------------------------------------------------

c Input arg.
      real x  ! sulfate scale factor computed in ramp subroutine
C-----------------------------------------------------------------------
      sulfscalef = x
      return
      end