Module holding routines used in phenology model for coupled carbon nitrogen code.
USES:
use clmtype use shr_kind_mod, only: r8 => shr_kind_r8 use clm_varcon , only: tfrz use clm_varctl , only: iulog use clm_varpar , only: numpft use shr_sys_mod , only: shr_sys_flush use abortutils , only: endrun implicit none save privatePUBLIC MEMBER FUNCTIONS:
public :: CNPhenologyInit ! Initialization public :: CNPhenology ! UpdateREVISION HISTORY:
8/1/03: Created by Peter Thornton
10/23/03, Peter Thornton: migrated all routines to vector data structures
2/4/08, slevis: adding crop phenology from AgroIBIS
!PRIVATE DATA MEMBERS:
real(r8) :: dt ! radiation time step delta t (seconds)
real(r8) :: fracday ! dtime as a fraction of day
real(r8) :: crit_dayl ! critical daylength for offset (seconds)
real(r8) :: ndays_on ! number of days to complete onset
real(r8) :: ndays_off ! number of days to complete offset
real(r8) :: fstor2tran ! fraction of storage to move to transfer on each onset
real(r8) :: crit_onset_fdd ! critical number of freezing days
real(r8) :: crit_onset_swi ! water stress days for offset trigger
real(r8) :: soilpsi_on ! water potential for onset trigger (MPa)
real(r8) :: crit_offset_fdd ! critical number of freezing degree days
! to trigger offset
real(r8) :: crit_offset_swi ! water stress days for offset trigger
real(r8) :: soilpsi_off ! water potential for offset trigger (MPa)
real(r8) :: lwtop ! live wood turnover proportion (annual fraction)
! CropPhenology variables and constants
real(r8) :: p1d, p1v ! photoperiod factor constants for crop vernalization
real(r8) :: hti ! cold hardening index threshold for vernalization
real(r8) :: tbase ! base temperature for vernalization
integer, parameter :: NOT_Planted = 999 ! If not planted yet in year
integer, parameter :: NOT_Harvested = 999 ! If not harvested yet in year
integer, parameter :: inNH = 1 ! Northern Hemisphere
integer, parameter :: inSH = 2 ! Southern Hemisphere
integer, pointer :: inhemi(:) ! Hemisphere that pft is in
integer :: minplantjday(0:numpft,inSH) ! minimum planting julian day
integer :: maxplantjday(0:numpft,inSH) ! maximum planting julian day
integer :: jdayyrstart(inSH) ! julian day of start of year