#include <misc.h>
#include <preproc.h>
module CASAiniTimeVarMod 1,1
#if (defined CASA) && (defined CLAMP)
!-----------------------------------------------------------------------
!BOP
!
! !MODULE: CASAiniTimeVarMod
!
! !DESCRIPTION:
! Module for initializing time vary variables used only in CASA'
!
! !USES:
use shr_kind_mod
, only: r8 => shr_kind_r8
implicit none
save
private
! !PUBLIC MEMBER FUNCTIONS:
public :: CASAiniTimeVar
!
! !REVISION HISTORY:
! 22 Sept 2006: Created by Forrest Hoffman
!
!EOP
!-----------------------------------------------------------------------
contains
!-----------------------------------------------------------------------
!BOP
!
! !IROUTINE: CASAiniTimeVar
!
! !INTERFACE:
subroutine CASAiniTimeVar() 1,5
!
! !DESCRIPTION:
! Initialize time varying variables used only in CASA'
!
! !USES:
use clmtype
use shr_kind_mod
, only: r8 => shr_kind_r8
use decompMod
, only: get_proc_bounds
use clm_varpar
, only: nlevgrnd
!
! !ARGUMENTS:
implicit none
!
! !CALLED FROM:
! subroutine initialize in file initializeMod.F90
!
! !REVISION HISTORY:
! 22 Sept 2006: Created by Forrest Hoffman
!
!
! local pointers to implicit in arguments
!
!
! local pointers to implicit out arguments
!
real(r8), pointer :: casa_agnpp(:) ! above-ground net primary production [gC/m2/s]
real(r8), pointer :: casa_ar(:) ! autotrophic respiration [gC/m2/s]
real(r8), pointer :: casa_bgnpp(:) ! below-ground net primary production [gC/m2/s]
real(r8), pointer :: casa_cwdc(:) ! coarse woody debris C [gC/m2]
real(r8), pointer :: casa_cwdc_hr(:) ! cwd heterotrophic respiration [gC/m2/s]
real(r8), pointer :: casa_cwdc_loss(:) ! cwd C loss [gC/m2/s]
real(r8), pointer :: casa_frootc(:) ! fine root C [gC/m2]
real(r8), pointer :: casa_frootc_alloc(:) ! fine root C allocation [gC/m2/s]
real(r8), pointer :: casa_frootc_loss(:) ! fine root C loss [gC/m2/s]
real(r8), pointer :: casa_gpp(:) ! gross primary production [gC/m2/s]
real(r8), pointer :: casa_hr(:) ! total heterotrophic respiration [gC/m2/s]
real(r8), pointer :: casa_leafc(:) ! leaf C [gC/m2]
real(r8), pointer :: casa_leafc_alloc(:) ! leaf C allocation [gC/m2/s]
real(r8), pointer :: casa_leafc_loss(:) ! leaf C loss [gC/m2/s]
real(r8), pointer :: casa_litterc(:) ! total litter C (excluding cwd C) [gC/m2]
real(r8), pointer :: casa_litterc_hr(:) ! litter heterotrophic respiration [gC/m2/s]
real(r8), pointer :: casa_litterc_loss(:) ! litter C loss [gC/m2/s]
real(r8), pointer :: casa_nee(:) ! net ecosystem exchange [gC/m2/s]
real(r8), pointer :: casa_nep(:) ! net ecosystem production [gC/m2/s]
real(r8), pointer :: casa_npp(:) ! net primary production [gC/m2/s]
real(r8), pointer :: casa_soilc(:) ! total soil organic matter C (excluding cwd and litter C) [gC/m2]
real(r8), pointer :: casa_soilc_hr(:) ! soil heterotrophic respiration [gC/m2/s]
real(r8), pointer :: casa_soilc_loss(:) ! total soil organic matter C loss [gC/m2/s]
real(r8), pointer :: casa_woodc(:) ! wood C [gC/m2]
real(r8), pointer :: casa_woodc_alloc(:) ! wood C allocation [gC/m2/s]
real(r8), pointer :: casa_woodc_loss(:) ! wood C loss [gC/m2/s]
real(r8), pointer :: soilpsi(:,:) ! soil water potential in each
!
! !LOCAL VARIABLES:
!EOP
integer :: g,l,c,p,j ! indices
integer :: begp, endp ! per-clump/proc beginning and ending pft indices
integer :: begc, endc ! per-clump/proc beginning and ending column indices
integer :: begl, endl ! per-clump/proc beginning and ending landunit indices
integer :: begg, endg ! per-clump/proc gridcell ending gridcell indices
!-----------------------------------------------------------------------
! assign local pointers at the gridcell level
! assign local pointers at the landunit level
! assign local pointers at the column level
soilpsi => clm3%g%l%c%cps%soilpsi
! assign local pointers at the pft level
casa_agnpp => clm3%g%l%c%p%pps%casa_agnpp
casa_ar => clm3%g%l%c%p%pps%casa_ar
casa_bgnpp => clm3%g%l%c%p%pps%casa_bgnpp
casa_cwdc => clm3%g%l%c%p%pps%casa_cwdc
casa_cwdc_hr => clm3%g%l%c%p%pps%casa_cwdc_hr
casa_cwdc_loss => clm3%g%l%c%p%pps%casa_cwdc_loss
casa_frootc => clm3%g%l%c%p%pps%casa_frootc
casa_frootc_alloc => clm3%g%l%c%p%pps%casa_frootc_alloc
casa_frootc_loss => clm3%g%l%c%p%pps%casa_frootc_loss
casa_gpp => clm3%g%l%c%p%pps%casa_gpp
casa_hr => clm3%g%l%c%p%pps%casa_hr
casa_leafc => clm3%g%l%c%p%pps%casa_leafc
casa_leafc_alloc => clm3%g%l%c%p%pps%casa_leafc_alloc
casa_leafc_loss => clm3%g%l%c%p%pps%casa_leafc_loss
casa_litterc => clm3%g%l%c%p%pps%casa_litterc
casa_litterc_hr => clm3%g%l%c%p%pps%casa_litterc_hr
casa_litterc_loss => clm3%g%l%c%p%pps%casa_litterc_loss
casa_nee => clm3%g%l%c%p%pps%casa_nee
casa_nep => clm3%g%l%c%p%pps%casa_nep
casa_npp => clm3%g%l%c%p%pps%casa_npp
casa_soilc => clm3%g%l%c%p%pps%casa_soilc
casa_soilc_hr => clm3%g%l%c%p%pps%casa_soilc_hr
casa_soilc_loss => clm3%g%l%c%p%pps%casa_soilc_loss
casa_woodc => clm3%g%l%c%p%pps%casa_woodc
casa_woodc_alloc => clm3%g%l%c%p%pps%casa_woodc_alloc
casa_woodc_loss => clm3%g%l%c%p%pps%casa_woodc_loss
! Determine subgrid bounds on this processor
call get_proc_bounds
(begg, endg, begl, endl, begc, endc, begp, endp)
! initialize column-level variables
! initialize pft-level variables
!dir$ concurrent
!cdir nodep
do p = begp, endp
casa_agnpp(p) = 0._r8
casa_ar(p) = 0._r8
casa_bgnpp(p) = 0._r8
casa_cwdc(p) = 0._r8
casa_cwdc_hr(p) = 0._r8
casa_cwdc_loss(p) = 0._r8
casa_frootc(p) = 0._r8
casa_frootc_alloc(p) = 0._r8
casa_frootc_loss(p) = 0._r8
casa_gpp(p) = 0._r8
casa_hr(p) = 0._r8
casa_leafc(p) = 0._r8
casa_leafc_alloc(p) = 0._r8
casa_leafc_loss(p) = 0._r8
casa_litterc(p) = 0._r8
casa_litterc_hr(p) = 0._r8
casa_litterc_loss(p) = 0._r8
casa_nee(p) = 0._r8
casa_nep(p) = 0._r8
casa_npp(p) = 0._r8
casa_soilc(p) = 0._r8
casa_soilc_hr(p) = 0._r8
casa_soilc_loss(p) = 0._r8
casa_woodc(p) = 0._r8
casa_woodc_alloc(p) = 0._r8
casa_woodc_loss(p) = 0._r8
end do ! end of loop over pfts
end subroutine CASAiniTimeVar
#endif
end module CASAiniTimeVarMod