module scyc 2,1
!-----------------------------------------------------------------------
! Purpose:
! Provide logical control functions for the prognostic sulfur cycle
! parameterization.
!
! Author: B. Eaton
!-----------------------------------------------------------------------
use cam_logfile
, only: iulog
implicit none
save
private
public :: &
scycini, &! initialize control functions for sulfur cycle
doscyc, &! returns .true. when prognostic sulfur cycle is enabled
useGEIA, &! returns .true. when using 1985 GEIA sulfur emissions data
add_volc_emis, &! returns .true. when including non-eruptive volcano emissions
scyc_ncomp, &! returns number of sulfur cycle components
scyc_idx1, &! returns constituent index of 1st sulfur cycle component
scyc_idx_set ! set constituent index of 1st sulfur cycle component
integer, parameter :: ncomp = 4 ! number of sulfur cycle components
integer sulfur_idx1 ! start constituent index for first sulfur cycle component
logical :: &
progsul, &! true => prognostic sulfur (full sulfur cycle)
geia_emis, &! true => use the GEIA emission data from M. Barth.
volc_emis ! true => include non-eruptive volcano emissions
!##############################################################################
contains
!##############################################################################
subroutine scycini( xprogsul, emis_type, xvolc_emis )
!-----------------------------------------------------------------------
! Purpose: Initialize the logical control functions.
!
! Author: B. Eaton
!-----------------------------------------------------------------------
implicit none
logical, intent(in) :: &
xprogsul, &! true => prognostic sulfur (full sulfur cycle)
xvolc_emis ! true => include non-eruptive volcano emissions
character(len=*) ::&
emis_type ! emission dataset type. Either SMITH or GEIA. SMITH is
! the default.
!-----------------------------------------------------------------------
progsul = xprogsul
geia_emis = .false.
if ( trim( emis_type ) == 'GEIA' ) geia_emis = .true.
volc_emis = xvolc_emis
if ( progsul ) then
write(iulog,*)'Sulfur cycle configuration:'
if ( geia_emis ) then
write(iulog,*)' Emissions from 1985 GEIA data prepared by M. Barth.'
else
write(iulog,*)' Emissions from GEIA/SMITH multiyear dataset.'
end if
if ( volc_emis ) then
write(iulog,*)' Include non-eruptive volcano emissions.'
else
write(iulog,*)' No volcano emissions.'
end if
else
write(iulog,*)'Sulfur cycle disabled.'
end if
end subroutine scycini
!#######################################################################
logical function doscyc ()
!-----------------------------------------------------------------------
! Purpose: Return .true. when prognostic sulfur cycle is being used.
!
! Author: B. Eaton
!-----------------------------------------------------------------------
implicit none
doscyc = progsul
end function doscyc
!#######################################################################
logical function useGEIA()
!-----------------------------------------------------------------------
! Purpose: Return .true. when using the 1985 GEIA sulfur emissions data
! prepared by M. Barth.
!
! Author: B. Eaton
!-----------------------------------------------------------------------
implicit none
useGEIA = geia_emis
end function useGEIA
!#######################################################################
integer function scyc_ncomp()
implicit none
scyc_ncomp = ncomp
end function scyc_ncomp
!#######################################################################
subroutine scyc_idx_set(m)
! store the start index of the sulfur species
implicit none
integer m
write(iulog,*) ' scyc: scyc_idx_set to ', m
sulfur_idx1 = m
end subroutine scyc_idx_set
integer function scyc_idx1()
implicit none
scyc_idx1 = sulfur_idx1
end function scyc_idx1
!#######################################################################
logical function add_volc_emis()
implicit none
add_volc_emis = volc_emis
end function add_volc_emis
!#######################################################################
end module scyc