Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rosie colddec #6

Merged
merged 8 commits into from
Oct 1, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 31 additions & 4 deletions biogeochem/EDPhysiologyMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -661,10 +661,31 @@ subroutine phenology( currentSite, bc_in )
endif
!
! accumulate the GDD using daily mean temperatures
if (bc_in%t_veg24_si .gt. tfrz) then
! Don't accumulate GDD during the growing season (that wouldn't make sense)
if (bc_in%t_veg24_si .gt. tfrz.and. currentSite%cstatus == phen_cstat_iscold) then
currentSite%grow_deg_days = currentSite%grow_deg_days + bc_in%t_veg24_si - tfrz
endif

!this logic is to prevent GDD accumulating after the leaves have fallen and before the
! beginnning of the accumulation period, to prevend erroneous autumn leaf flushing.
if(model_day_int>365)then !only do this after the first year to prevent odd behaviour

if(currentSite%lat .gt. 0.0_r8)then !Northern Hemisphere
! In the north, don't accumulate when we are past the leaf fall date.
! Accumulation starts on day 1 of year in NH.
! The 180 is to prevent going into an 'always off' state after initialization
if( model_day_int .gt. currentSite%cleafoffdate.and.hlm_day_of_year.gt.180)then !
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@rosiealice , I think it would be nice to give 180 an explicit constant name as well.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, although the 'start of counting date' might be more tractable and we could key the 180 off that?

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sounds good

currentSite%grow_deg_days = 0._r8
endif
else !Southern Hemisphere
! In the South, don't accumulate after the leaf off date, and before the start of
! the accumulation phase (day 181).
if(model_day_int .gt. currentSite%cleafoffdate.and.hlm_day_of_year.lt.gddstart) then!
currentSite%grow_deg_days = 0._r8
endif
endif
endif !year1

! Calculate the number of days since the leaves last came on
! and off. If this is the beginning of the simulation, that day might
! not had occured yet, so set it to last year to get things rolling
Expand Down Expand Up @@ -694,9 +715,12 @@ subroutine phenology( currentSite, bc_in )
if ( (currentSite%cstatus == phen_cstat_iscold .or. &
currentSite%cstatus == phen_cstat_nevercold) .and. &
(currentSite%grow_deg_days > gdd_threshold) .and. &
(dayssincecleafoff > ED_val_phen_mindayson) .and. &
(currentSite%nchilldays >= 1)) then
currentSite%cstatus = phen_cstat_notcold ! Set to not-cold status (leaves can come on)
currentSite%cleafondate = model_day_int
dayssincecleafon = 0
currentSite%grow_deg_days = 0._r8 ! zero GDD for the rest of the year until counting season begins.
if ( debug ) write(fates_log(),*) 'leaves on'
endif !GDD

Expand Down Expand Up @@ -907,7 +931,7 @@ subroutine phenology_leafonoff(currentSite)
real(r8) :: store_c_transfer_frac ! Fraction of storage carbon used to flush leaves
integer :: ipft
real(r8), parameter :: leaf_drop_fraction = 1.0_r8

real(r8), parameter :: carbon_store_buffer = 0.10_r8
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@rosiealice , would it be most desirable to add this to the parameter file? We could flag this to be added whenever we have a critical mass of changes to implement.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe, but

  1. it's really there to stop us triggering the termination mortality logic, and so is perhaps better thought of as some sort of internal maths?
    however:

  2. Taking the plant into a very low storage state might in preinciple trigger carbon starvation mortality, even though this is really how deciduous trees are 'supposed' to work. I couldn't really follow the logic of how the target C was calculated in PARTEH well enough to know if there was dispensation for deciduous trees, but irrespective, we don't want to go around killing trees that are really just doing their deciduous things. Then that raises the question of how we -do- get carbon starvation to happen in deciduous trees, and whether those trees should all have a target storage >>1...

  3. Having this as a parameter would allow interrogation of the 'save carbon for a drought' vs. 'put it all in the display pools in the spring' strategies.

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

currentPatch => CurrentSite%oldest_patch
Expand Down Expand Up @@ -936,8 +960,11 @@ subroutine phenology_leafonoff(currentSite)
! stop flow of carbon out of bstore.

if(store_c>nearzero) then
store_c_transfer_frac = &
min(EDPftvarcon_inst%phenflush_fraction(ipft)*currentCohort%laimemory, store_c)/store_c
! flush either the amount required from the laimemory, or -most- of the storage pool
! RF: added a criterium to stop the entire store pool emptying and triggering termination mortality
! n.b. this might not be necessary if we adopted a more gradual approach to leaf flushing...
store_c_transfer_frac = min((EDPftvarcon_inst%phenflush_fraction(ipft)* &
currentCohort%laimemory)/store_c,(1.0_r8-carbon_store_buffer))
else
store_c_transfer_frac = 0.0_r8
end if
Expand Down
2 changes: 1 addition & 1 deletion parameter_files/fates_params_default.cdl
Original file line number Diff line number Diff line change
Expand Up @@ -1172,7 +1172,7 @@ data:

fates_phen_drought_threshold = 0.15 ;

fates_phen_mindayson = 30 ;
fates_phen_mindayson = 90 ;

fates_phen_ncolddayslim = 5 ;

Expand Down