casa_phenology.F90 Source File


Source Code

!==============================================================================
! This source code is part of the
! Australian Community Atmosphere Biosphere Land Exchange (CABLE) model.
! This work is licensed under the CSIRO Open Source Software License
! Agreement (variation of the BSD / MIT License).
!
! You may not use this file except in compliance with this License.
! A copy of the License (CSIRO_BSD_MIT_License_v2.0_CABLE.txt) is located
! in each directory containing CABLE code.
!
! ==============================================================================
! Purpose: defines/allocates variables for CASA-CNP
!
! Contact: Yingping.Wang@csiro.au
!
! History: Developed for offline CASA-CNP, code revision likely to better
!          suit ACCESS and to merge more consistently with CABLE code
!
!
! ==============================================================================
! casa_variable.f90
!
! the following modules are used when "casacnp" is coupled to "cable"
!   casadimension
!   casaparm
!   casavariable with subroutine alloc_casavariable
!   phenvariable with subroutine alloc_phenvariable

MODULE phenvariable
  USE casadimension
  IMPLICIT NONE
  TYPE phen_variable
     INTEGER,   DIMENSION(:),  POINTER :: phase
     REAL(r_2), DIMENSION(:),  POINTER :: TKshed
     INTEGER,   DIMENSION(:,:),POINTER :: doyphase
     REAL, DIMENSION(:),  POINTER :: phen   ! fraction of max LAI
     REAL, DIMENSION(:),  POINTER :: aphen  ! annual leaf on sum
     INTEGER,   DIMENSION(:,:),POINTER :: phasespin
     INTEGER,   DIMENSION(:,:),POINTER :: doyphasespin_1
     INTEGER,   DIMENSION(:,:),POINTER :: doyphasespin_2
     INTEGER,   DIMENSION(:,:),POINTER :: doyphasespin_3
     INTEGER,   DIMENSION(:,:),POINTER :: doyphasespin_4

  END TYPE phen_variable

CONTAINS

  SUBROUTINE alloc_phenvariable(phen,arraysize)

    IMPLICIT NONE
    TYPE(phen_variable), INTENT(INOUT) :: phen
    INTEGER,             INTENT(IN) :: arraysize

    ALLOCATE(phen%Tkshed(mvtype))
    ALLOCATE(phen%phase(arraysize),         &
         phen%doyphase(arraysize,mphase))
    ALLOCATE(phen%phen(arraysize), &
         phen%aphen(arraysize), &
         phen%phasespin(arraysize,mdyear), &
         phen%doyphasespin_1(arraysize,mdyear), &
         phen%doyphasespin_2(arraysize,mdyear), &
         phen%doyphasespin_3(arraysize,mdyear), &
         phen%doyphasespin_4(arraysize,mdyear))
  END SUBROUTINE alloc_phenvariable

END MODULE phenvariable