Add files via upload
This commit is contained in:
115
code/CO_strat_pl.f
Normal file
115
code/CO_strat_pl.f
Normal file
@ -0,0 +1,115 @@
|
||||
! $Id: CO_strat_pl.f,v 1.1 2009/06/09 21:51:50 daven Exp $
|
||||
SUBROUTINE CO_STRAT_PL( COPROD, COLOSS )
|
||||
!
|
||||
!******************************************************************************
|
||||
! Subroutine CO_STRAT_PL computes net production of CO above the
|
||||
! annual mean tropopause using archived rates for P(CO) and L(CO).
|
||||
! (bnd, qli, bmy, 12/9/99, 10/25/05)
|
||||
!
|
||||
! Arguments as Input:
|
||||
! ===========================================================================
|
||||
! (1 ) COPROD : (REAL*4) Zonally averaged P(CO) in [v/v/s]
|
||||
! (2 ) COLOSS : (REAL*4) Zonally averaged L(CO) in [1/s]
|
||||
!
|
||||
! NOTES:
|
||||
! (1 ) P(CO) and L(CO) rates were provided by Dylan Jones. Bob Yantosca
|
||||
! has regridded these rates to the GEOS-1 and GEOS-STRAT vertical
|
||||
! levels, for both 2 x 2.5 and 4 x 5 degree resolution.
|
||||
! (2 ) CO_STRAT_PL was specially adapted from Bryan Duncan's routine
|
||||
! "CO_strat.f" for use with the simple chemistry module "schem.f".
|
||||
! (3 ) Now reference AD from "dao_mod.f". Now reference IDTCO and IDTCH2O
|
||||
! from "tracerid_mod.f". (bmy, 11/6/02)
|
||||
! (4 ) Now use function GET_TS_CHEM from "time_mod.f". Updated comments.
|
||||
! (bmy, 2/11/03)
|
||||
! (5 ) Now references STT from "tracer_mod.f" (bmy, 7/20/04)
|
||||
! (6 ) Now use functions from "tropopause_mod.f" to diagnose whether a box
|
||||
! is in the stratosphere or not. Remove reference to CMN, it's
|
||||
! obsolete. (bmy, 8/22/05)
|
||||
! (7 ) Now reference XNUMOL and XNUMOLAIR from "tracer_mod.f" (bmy, 10/25/05)
|
||||
!******************************************************************************
|
||||
!
|
||||
! References to F90 modules
|
||||
USE DAO_MOD, ONLY : AD
|
||||
USE TIME_MOD, ONLY : GET_TS_CHEM
|
||||
USE TRACER_MOD, ONLY : STT, XNUMOL, XNUMOLAIR
|
||||
USE TRACERID_MOD, ONLY : IDTCO, IDTCH2O
|
||||
USE TROPOPAUSE_MOD, ONLY : ITS_IN_THE_TROP, GET_MIN_TPAUSE_LEVEL
|
||||
|
||||
IMPLICIT NONE
|
||||
|
||||
# include "CMN_SIZE" ! Size parameters
|
||||
|
||||
! Arguments
|
||||
REAL*4, INTENT(IN) :: COPROD(JJPAR,LLPAR)
|
||||
REAL*4, INTENT(IN) :: COLOSS(JJPAR,LLPAR)
|
||||
|
||||
! Local variables
|
||||
INTEGER :: I, J, L, M, N, LMIN
|
||||
|
||||
REAL*8 :: BAIRDENS, DT, GCO, STTTOGCO
|
||||
|
||||
! External functions
|
||||
REAL*8, EXTERNAL :: BOXVL
|
||||
|
||||
!=================================================================
|
||||
! CO_STRAT_PL begins here!
|
||||
!=================================================================
|
||||
|
||||
! Chemistry timestep [s]
|
||||
DT = GET_TS_CHEM() * 60d0
|
||||
|
||||
!=================================================================
|
||||
! Loop over all stratospheric grid boxes ( L >= LPAUSE(I,J) ).
|
||||
!
|
||||
! Compute the net CO from the P(CO) and L(CO) rates that are
|
||||
! stored in the COPROD and COLOSS arrays.
|
||||
!
|
||||
! Unit conversion to/from [kg/box] and [molec/cm3] is required.
|
||||
! The conversion factor is STTTOGCO, which is given below.
|
||||
!
|
||||
! kg CO box | mole CO | 6.022e23 molec CO
|
||||
! ------- * -----------+-------------+-------------------
|
||||
! box BOXVL cm3 | 28e-3 kg CO | mole CO
|
||||
!
|
||||
! = molec CO
|
||||
! --------
|
||||
! cm3
|
||||
!=================================================================
|
||||
|
||||
! Get the minimum extent of the tropopause
|
||||
LMIN = GET_MIN_TPAUSE_LEVEL()
|
||||
|
||||
DO L = LMIN, LLPAR
|
||||
DO J = 1, JJPAR
|
||||
DO I = 1, IIPAR
|
||||
|
||||
! Skip tropospheric grid boxes
|
||||
IF ( ITS_IN_THE_TROP(I,J,L) ) CYCLE
|
||||
|
||||
! conversion factor from [kg/box] to [molec/cm3]
|
||||
STTTOGCO = 6.022d23 / ( 28d-3 * BOXVL(I,J,L) )
|
||||
|
||||
! Convert STT from [kg/box] to [molec/cm3]
|
||||
GCO = STT(I,J,L,IDTCO) * STTTOGCO
|
||||
|
||||
! Air density in molec/cm3
|
||||
BAIRDENS = AD(I,J,L) * XNUMOLAIR / BOXVL(I,J,L)
|
||||
|
||||
! Apply P(CO) and L(CO) rates to GCO
|
||||
GCO = GCO * ( 1d0 - COLOSS(J,L) * DT ) +
|
||||
& ( COPROD(J,L) * DT * BAIRDENS )
|
||||
|
||||
! Compute production of CH2O (qli, 12/9/99)
|
||||
STT(I,J,L,IDTCH2O) = STT(I,J,L,IDTCH2O) +
|
||||
& XNUMOL(IDTCO) / XNUMOL(IDTCH2O) *
|
||||
& COPROD(J,L) * BAIRDENS /
|
||||
& STTTOGCO
|
||||
|
||||
! Convert STT from [molec/cm3] to [kg/box]
|
||||
STT(I,J,L,IDTCO) = GCO / STTTOGCO
|
||||
ENDDO
|
||||
ENDDO
|
||||
ENDDO
|
||||
|
||||
! Return to calling program
|
||||
END SUBROUTINE CO_STRAT_PL
|
Reference in New Issue
Block a user