327 lines
11 KiB
Fortran
327 lines
11 KiB
Fortran
! $Id: get_global_ch4.f,v 1.1 2009/06/09 21:51:51 daven Exp $
|
|
SUBROUTINE GET_GLOBAL_CH4( THISYEAR, VARIABLE_CH4,
|
|
& A3090S, A0030S, A0030N, A3090N )
|
|
!
|
|
!******************************************************************************
|
|
! Subroutine GET_GLOBAL_CH4 computes the latitudinal gradient in CH4
|
|
! corresponding to year (jsw, bnd, bmy, 1/3/01, 1/25/08)
|
|
!
|
|
! Arguments as Input:
|
|
! ===========================================================================
|
|
! (1 ) THISYEAR (INTEGER) : Current month number (1-12)
|
|
! (2 ) VARIABLE_CH4 (LOGICAL) : Flag for selecting variable or constant CH4
|
|
!
|
|
! Arguments as Output:
|
|
! ===========================================================================
|
|
! (3 ) A3090S (REAL*8 ) : CH4 concentration [ppbv], 90S - 30S lat
|
|
! (4 ) A0030S (REAL*8 ) : CH4 concentration [ppbv], 30S - 00 lat
|
|
! (5 ) A0030N (REAL*8 ) : CH4 concentration [ppbv], 00 - 30N lat
|
|
! (6 ) A3090N (REAL*8 ) : CH4 concentration [ppbv], 30N - 90N lat
|
|
!
|
|
! NOTES:
|
|
! (1 ) GET_GLOBAL_CH4 only has to be called at the start of the new year,
|
|
! as long as A3090S, A0030S, A0030N, A3090N are saved in the
|
|
! calling program (bmy, 1/3/01)
|
|
! (2 ) Also need to compute yearly gradients for CH4 beyond 1997 --
|
|
! will do this later (bmy, 1/3/01)
|
|
! (3 ) Bug fix: add missing comma to FORMAT statement (bmy, 3/23/03)
|
|
! (4 ) Place WRITE statments w/in an !$OMP CRITICAL block, so as to make
|
|
! sure that only one processor at a time writes them. Also now use
|
|
! F90 REPEAT intrinsic function. Also replaced old CH4 gradient values
|
|
! with updated values for 1983-2001. Use data for 2001 as a proxy for
|
|
! years past 2001, since data for those years has not been reported
|
|
! yet. (mje, bmy, 7/7/03)
|
|
! (5 ) Split off from module "global_ch4_mod.f". Updated for IPCC future
|
|
! emissions scenarios. (swu, bmy, 5/30/06)
|
|
! (6 ) Add the preindustrial CH4 scenarios. Also set 2001 as the default
|
|
! in case we are running 2030 or 2050 met but present-day emissions.
|
|
! (swu, havala, bmy, 1/25/08)
|
|
!******************************************************************************
|
|
!
|
|
! References to F90 modules
|
|
USE FUTURE_EMISSIONS_MOD, ONLY : GET_FUTURE_SCENARIO
|
|
USE LOGICAL_MOD, ONLY : LFUTURE, LHTAP
|
|
|
|
IMPLICIT NONE
|
|
|
|
! Arguments
|
|
INTEGER, INTENT(IN) :: THISYEAR
|
|
LOGICAL, INTENT(IN) :: VARIABLE_CH4
|
|
REAL*8, INTENT(OUT) :: A3090S, A0030S, A0030N, A3090N
|
|
|
|
! Local variables
|
|
CHARACTER(LEN=2) :: FUTURE_SCENARIO
|
|
|
|
!=================================================================
|
|
! GET_GLOBAL_CH4 begins here!
|
|
!
|
|
! New methane data from 1983-2001 (mje, bmy, 7/7/03)
|
|
!
|
|
! Methane measurements are from CMDL website:
|
|
! ftp://140.172.192.211/ccg/ch4/flask/month
|
|
!
|
|
! Measurements includes all sites other than:
|
|
! BAL BSC HUN MHD OXK TAP SEY IZO KUM MID ASK
|
|
!
|
|
! Sites are separated into 4 latitude bands:
|
|
! (1) 90S - 30S; (2) 30S - 00S;
|
|
! (3) 00N - 30N; (4) 30N - 90N
|
|
!
|
|
! Bob Yantosca (bmy@io.harvard.edu) maintains the archive
|
|
! of the IDL code needed to process the methane data.
|
|
!
|
|
! Also add future emission scenarios for GCAP, as well as
|
|
! the preindustrial CH4 levels (swu, havala, bmy, 1/25/08)
|
|
!=================================================================
|
|
IF ( VARIABLE_CH4 ) THEN
|
|
|
|
! Get IPCC future scenario (e.g. A1, A2, B1, B2)
|
|
IF ( LFUTURE ) THEN
|
|
FUTURE_SCENARIO = GET_FUTURE_SCENARIO()
|
|
ENDIF
|
|
|
|
! Select latitudinal CH4 gradient by year...
|
|
SELECT CASE ( THISYEAR )
|
|
|
|
! Preindustrial years
|
|
CASE ( :1750 )
|
|
A3090S = 700.0d0
|
|
A0030S = 700.0d0
|
|
A0030N = 700.0d0
|
|
A3090N = 700.0d0
|
|
|
|
! Modern-day years ...
|
|
CASE( 1983 )
|
|
A3090S = 1559.89d0
|
|
A0030S = 1575.68d0
|
|
A0030N = 1627.04d0
|
|
A3090N = 1682.40d0
|
|
|
|
CASE( 1984 )
|
|
A3090S = 1578.59d0
|
|
A0030S = 1587.03d0
|
|
A0030N = 1635.20d0
|
|
A3090N = 1702.69d0
|
|
|
|
CASE( 1985 )
|
|
A3090S = 1588.78d0
|
|
A0030S = 1600.98d0
|
|
A0030N = 1648.02d0
|
|
A3090N = 1716.23d0
|
|
|
|
CASE( 1986 )
|
|
A3090S = 1598.28d0
|
|
A0030S = 1612.76d0
|
|
A0030N = 1664.98d0
|
|
A3090N = 1731.23d0
|
|
|
|
CASE( 1987 )
|
|
A3090S = 1611.65d0
|
|
A0030S = 1622.34d0
|
|
A0030N = 1681.88d0
|
|
A3090N = 1741.44d0
|
|
|
|
CASE( 1988 )
|
|
A3090S = 1620.31d0
|
|
A0030S = 1634.43d0
|
|
A0030N = 1691.88d0
|
|
A3090N = 1753.92d0
|
|
|
|
CASE( 1989 )
|
|
A3090S = 1634.89d0
|
|
A0030S = 1647.15d0
|
|
A0030N = 1699.20d0
|
|
A3090N = 1759.64d0
|
|
|
|
CASE( 1990 )
|
|
A3090S = 1643.58d0
|
|
A0030S = 1653.97d0
|
|
A0030N = 1712.33d0
|
|
A3090N = 1769.97d0
|
|
|
|
CASE( 1991 )
|
|
A3090S = 1654.38d0
|
|
A0030S = 1665.13d0
|
|
A0030N = 1722.64d0
|
|
A3090N = 1779.76d0
|
|
|
|
CASE( 1992 )
|
|
A3090S = 1668.22d0
|
|
A0030S = 1673.40d0
|
|
A0030N = 1732.30d0
|
|
A3090N = 1786.76d0
|
|
|
|
CASE( 1993 )
|
|
A3090S = 1667.04d0
|
|
A0030S = 1677.26d0
|
|
A0030N = 1733.96d0
|
|
A3090N = 1790.82d0
|
|
|
|
CASE( 1994 )
|
|
A3090S = 1670.85d0
|
|
A0030S = 1681.07d0
|
|
A0030N = 1740.88d0
|
|
A3090N = 1797.05d0
|
|
|
|
CASE( 1995 )
|
|
A3090S = 1681.00d0
|
|
A0030S = 1689.19d0
|
|
A0030N = 1751.25d0
|
|
A3090N = 1802.51d0
|
|
|
|
CASE( 1996 )
|
|
A3090S = 1682.23d0
|
|
A0030S = 1690.72d0
|
|
A0030N = 1751.64d0
|
|
A3090N = 1805.18d0
|
|
|
|
CASE( 1997 )
|
|
A3090S = 1687.94d0
|
|
A0030S = 1693.35d0
|
|
A0030N = 1755.41d0
|
|
A3090N = 1805.92d0
|
|
|
|
CASE( 1998 )
|
|
A3090S = 1696.98d0
|
|
A0030S = 1703.54d0
|
|
A0030N = 1764.94d0
|
|
A3090N = 1820.58d0
|
|
|
|
CASE( 1999 )
|
|
A3090S = 1705.64d0
|
|
A0030S = 1714.18d0
|
|
A0030N = 1769.83d0
|
|
A3090N = 1823.48d0
|
|
|
|
CASE( 2000 )
|
|
A3090S = 1707.14d0
|
|
A0030S = 1715.63d0
|
|
A0030N = 1769.11d0
|
|
A3090N = 1822.85d0
|
|
|
|
CASE( 2001 )
|
|
A3090S = 1705.68d0
|
|
A0030S = 1709.52d0
|
|
A0030N = 1767.51d0
|
|
A3090N = 1822.53d0
|
|
|
|
! Future year 2030
|
|
CASE( 2025:2035 )
|
|
|
|
! Pick the IPCC scenario. If LFUTURE=F and FUTURE_SCENARIO
|
|
! are undefined, then we are running 2030 meteorology with
|
|
! present-day emissions. In this case, default to 2001 CH4
|
|
! concentrations. (havala, 1/25/08)
|
|
SELECT CASE( FUTURE_SCENARIO )
|
|
CASE( 'A1' )
|
|
A3090S = 2202.0d0
|
|
A0030S = 2202.0d0
|
|
A0030N = 2202.0d0
|
|
A3090N = 2202.0d0
|
|
CASE( 'B1' )
|
|
A3090S = 1927.0d0
|
|
A0030S = 1927.0d0
|
|
A0030N = 1927.0d0
|
|
A3090N = 1927.0d0
|
|
CASE( 'A2' )
|
|
! Not defined yet
|
|
CASE( 'B2' )
|
|
! Not defined yet
|
|
CASE DEFAULT
|
|
! 2001 is the default
|
|
A3090S = 1705.68d0
|
|
A0030S = 1709.52d0
|
|
A0030N = 1767.51d0
|
|
A3090N = 1822.53d0
|
|
END SELECT
|
|
|
|
! Future year 2050
|
|
CASE( 2045:2055 )
|
|
|
|
! Pick the IPCC scenario. If LFUTURE=F and FUTURE_SCENARIO
|
|
! is undefined, then we are running 2050 meteorology with
|
|
! present-day emissions. In this case, default to 2001 CH4
|
|
! concentrations. (havala, 1/25/08)
|
|
SELECT CASE ( FUTURE_SCENARIO )
|
|
CASE ( 'A1' )
|
|
A3090S = 2400.0d0
|
|
A0030S = 2400.0d0
|
|
A0030N = 2400.0d0
|
|
A3090N = 2400.0d0
|
|
CASE ( 'B1' )
|
|
A3090S = 1881.0d0
|
|
A0030S = 1881.0d0
|
|
A0030N = 1881.0d0
|
|
A3090N = 1881.0d0
|
|
CASE ( 'A2' )
|
|
A3090S = 2562.0d0
|
|
A0030S = 2562.0d0
|
|
A0030N = 2562.0d0
|
|
A3090N = 2562.0d0
|
|
CASE ( 'B2' )
|
|
A3090S = 2363.0d0
|
|
A0030S = 2363.0d0
|
|
A0030N = 2363.0d0
|
|
A3090N = 2363.0d0
|
|
CASE DEFAULT
|
|
! 2001 is the default
|
|
A3090S = 1705.68d0
|
|
A0030S = 1709.52d0
|
|
A0030N = 1767.51d0
|
|
A3090N = 1822.53d0
|
|
END SELECT
|
|
|
|
! Default is to use 2001 data for other years
|
|
! for which we do not yet have data (bmy, 5/30/06)
|
|
CASE DEFAULT
|
|
IF ( LHTAP ) THEN
|
|
A3090S = 1798d0
|
|
A0030S = 1798d0
|
|
A0030N = 1798d0
|
|
A3090N = 1798d0
|
|
ELSE
|
|
A3090S = 1705.68d0
|
|
A0030S = 1709.52d0
|
|
A0030N = 1767.51d0
|
|
A3090N = 1822.53d0
|
|
ENDIF
|
|
END SELECT
|
|
|
|
ELSE
|
|
|
|
! ...otherwise assume constant global CH4
|
|
A3090S = 1700.0d0
|
|
A0030S = 1700.0d0
|
|
A0030N = 1700.0d0
|
|
A3090N = 1700.0d0
|
|
|
|
ENDIF
|
|
|
|
!=================================================================
|
|
! Print the latitudinal CH4 gradient for this year to stdout
|
|
!=================================================================
|
|
!$OMP CRITICAL
|
|
WRITE( 6, '(a)' ) REPEAT( '=', 79 )
|
|
WRITE( 6, 105 ) THISYEAR
|
|
105 FORMAT( 'GET_GLOBAL_CH4: YEAR = ', i4 )
|
|
|
|
WRITE( 6, 110 ) A3090N, A0030N, A0030S, A3090S
|
|
110 FORMAT( 'CH4 (90N - 30N) : ', f7.1, ' [ppbv]', /,
|
|
& 'CH4 (30N - 00 ) : ', f7.1, ' [ppbv]', /,
|
|
& 'CH4 (00 - 30S) : ', f7.1, ' [ppbv]', /,
|
|
& 'CH4 (30S - 90S) : ', f7.1, ' [ppbv]' )
|
|
|
|
! Indicate to the log file if we are using CH4 gradient data
|
|
! from 2001 as a proxy for years past 2001 (mje, bmy, 7/7/03)
|
|
IF ( THISYEAR > 2001 ) THEN
|
|
WRITE( 6, 115 )
|
|
115 FORMAT( /, 'Using CH4 gradient data from 2001 as a proxy',
|
|
& /, 'since 2001 is the last year with reported data!' )
|
|
ENDIF
|
|
|
|
WRITE( 6, '(a)' ) REPEAT( '=', 79 )
|
|
!$OMP END CRITICAL
|
|
|
|
! Return to calling program
|
|
END SUBROUTINE GET_GLOBAL_CH4
|