Skip to content
This repository has been archived by the owner on Sep 14, 2018. It is now read-only.

Commit

Permalink
Import the fates-clm-v0.3 tag from ed-clm repo and svn.
Browse files Browse the repository at this point in the history
  • Loading branch information
bandre-ucar committed May 12, 2017
1 parent ad18acf commit 47fdb33
Show file tree
Hide file tree
Showing 34 changed files with 23,328 additions and 0 deletions.
1,456 changes: 1,456 additions & 0 deletions biogeochem/EDCanopyStructureMod.F90

Large diffs are not rendered by default.

1,271 changes: 1,271 additions & 0 deletions biogeochem/EDCohortDynamicsMod.F90

Large diffs are not rendered by default.

442 changes: 442 additions & 0 deletions biogeochem/EDGrowthFunctionsMod.F90

Large diffs are not rendered by default.

1,599 changes: 1,599 additions & 0 deletions biogeochem/EDPatchDynamicsMod.F90

Large diffs are not rendered by default.

1,701 changes: 1,701 additions & 0 deletions biogeochem/EDPhysiologyMod.F90

Large diffs are not rendered by default.

116 changes: 116 additions & 0 deletions biogeophys/EDAccumulateFluxesMod.F90
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
module EDAccumulateFluxesMod

!------------------------------------------------------------------------------
! !DESCRIPTION:
! This routine accumulates NPP, GPP and respiration of each cohort over the course of each 24 hour period.
! The fluxes are stored per cohort, and the npp_tstep (etc) fluxes are calcualted in EDPhotosynthesis
! This routine cannot be in EDPhotosynthesis because EDPhotosynthesis is a loop and therefore would
! erroneously add these things up multiple times.
! Rosie Fisher. March 2014.
!
! !USES:
use FatesGlobals, only : fates_endrun
use FatesGlobals, only : fates_log
use shr_log_mod , only : errMsg => shr_log_errMsg
use FatesConstantsMod , only : r8 => fates_r8
implicit none
private
!
public :: AccumulateFluxes_ED

logical :: DEBUG = .false. ! for debugging this module

character(len=*), parameter, private :: sourcefile = &
__FILE__

contains

!------------------------------------------------------------------------------

subroutine AccumulateFluxes_ED(nsites, sites, bc_in, bc_out, dt_time)

!
! !DESCRIPTION:
! see above
!
! !USES:

use EDTypesMod , only : ed_patch_type, ed_cohort_type, &
ed_site_type, AREA
use FatesInterfaceMod , only : bc_in_type,bc_out_type

!
! !ARGUMENTS
integer, intent(in) :: nsites
type(ed_site_type), intent(inout), target :: sites(nsites)
type(bc_in_type), intent(in) :: bc_in(nsites)
type(bc_out_type), intent(inout) :: bc_out(nsites)
real(r8), intent(in) :: dt_time ! timestep interval
!
! !LOCAL VARIABLES:
type(ed_cohort_type), pointer :: ccohort ! current cohort
type(ed_patch_type) , pointer :: cpatch ! current patch
integer :: iv !leaf layer
integer :: c ! clm/alm column
integer :: s ! ed site
integer :: ifp ! index fates patch
real(r8):: n_perm2
!----------------------------------------------------------------------

do s = 1, nsites

ifp = 0
sites(s)%npp = 0.0_r8
cpatch => sites(s)%oldest_patch
do while (associated(cpatch))
ifp = ifp+1

if( bc_in(s)%filter_photo_pa(ifp) == 3 ) then
ccohort => cpatch%shortest
do while(associated(ccohort))

! Accumulate fluxes from hourly to daily values.
! _tstep fluxes are KgC/indiv/timestep _acc are KgC/indiv/day

if ( DEBUG ) then

write(fates_log(),*) 'EDAccumFlux 64 ',ccohort%npp_tstep
write(fates_log(),*) 'EDAccumFlux 66 ',ccohort%gpp_tstep
write(fates_log(),*) 'EDAccumFlux 67 ',ccohort%resp_tstep

endif

ccohort%npp_acc = ccohort%npp_acc + ccohort%npp_tstep
ccohort%gpp_acc = ccohort%gpp_acc + ccohort%gpp_tstep
ccohort%resp_acc = ccohort%resp_acc + ccohort%resp_tstep

!----- THE FOLLOWING IS ONLY IMPLEMENTED TEMPORARILY FOR B4B reproducibility
!----- ALSO, THERE IS NO REASON TO USE THE ISNEW FLAG HERE
if ((cpatch%area .gt. 0._r8) .and. (cpatch%total_canopy_area .gt. 0._r8)) then
n_perm2 = ccohort%n/AREA
else
n_perm2 = 0.0_r8
endif
if ( .not. ccohort%isnew ) then
sites(s)%npp = sites(s)%npp + ccohort%npp_tstep * n_perm2 * 1.e3_r8 / dt_time
endif

do iv=1,ccohort%nv
if(ccohort%year_net_uptake(iv) == 999._r8)then ! note that there were leaves in this layer this year.
ccohort%year_net_uptake(iv) = 0._r8
end if
ccohort%year_net_uptake(iv) = ccohort%year_net_uptake(iv) + ccohort%ts_net_uptake(iv)
enddo

ccohort => ccohort%taller
enddo ! while(associated(ccohort))
end if
cpatch => cpatch%younger
end do ! while(associated(cpatch))
end do
return

end subroutine AccumulateFluxes_ED

end module EDAccumulateFluxesMod

Loading

0 comments on commit 47fdb33

Please sign in to comment.