Skip to content

V73: Premature end of the growing period and improvement for ageing of KcTrx#372

Open
mbechtold wants to merge 9 commits intoKUL-RSDA:mainfrom
mbechtold:V73_PR2_Premature_End
Open

V73: Premature end of the growing period and improvement for ageing of KcTrx#372
mbechtold wants to merge 9 commits intoKUL-RSDA:mainfrom
mbechtold:V73_PR2_Premature_End

Conversation

@mbechtold
Copy link
Collaborator

@mbechtold mbechtold commented Jan 27, 2026

This PR implements a mechanism for the premature termination of the growing cycle of annual crops when temperatures drop too low toward the end of the year. In cold years, when the growing cycle becomes excessively prolonged and would otherwise extend into the following year, the crop’s growing cycle is terminated early on a date specified in the crop file.
This PR requires a change in the CRO file. The line
: dummy - Parameter no Longer required is replaced with
: DayNr Premature end (counting from 1 January of planting year) - only applicable for annual crops

This PR also includes an improvement for the ageing of the maximum crop transpiration coefficient (KCTr,x)
This PR requires a change in the CRO file. The line
: Decline of crop coefficient (%/day) as a result of ageing, nitrogen deficiency, etc.
with
: Cumulative decrease (%) at maturity of crop coefficient as a result of ageing, nitrogen deficiency, etc.
The new parameter has a default value of 11.

All V73 pull requests have been merged into a single version of the Fortran-based AquaCrop code. The outputs were verified against the Delphi-based standalone version that is the current engine of the AquaCrop GUI, with no differences observed in outputs.

@mbechtold mbechtold changed the title V73 pr2 premature end V73: Premature end of the growing period of annual crops Jan 27, 2026
Copy link
Collaborator

@gdelannoy gdelannoy left a comment

Choose a reason for hiding this comment

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

looks good, one minor question

end select

! Simulation period cannot exceed Premature End of crop growth - Version 7.1
call DetermineDate(GetCrop_Day1(), dayi, monthi, ThePlantingYear) ! planting year
Copy link
Collaborator

Choose a reason for hiding this comment

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

version 7.1 right?

Copy link
Collaborator

Choose a reason for hiding this comment

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

7.3 right?

Copy link
Collaborator

@lbusschaert lbusschaert left a comment

Choose a reason for hiding this comment

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

Great! Only left minor comments + started pointing out things that we have to think about for future coupling with LIS

end if
write(fhandle, '(a)') ' -9 : dummy - Parameter no Longer required'

! New 7.3 Premature end of growth of annual crops when too cold to reach maturity (existing dummy replaced)
Copy link
Collaborator

Choose a reason for hiding this comment

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

That answers the comments of the other PR :)

end select

! Simulation period cannot exceed Premature End of crop growth - Version 7.1
call DetermineDate(GetCrop_Day1(), dayi, monthi, ThePlantingYear) ! planting year
Copy link
Collaborator

Choose a reason for hiding this comment

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

7.3 right?

call SetSimulation_ToDayNr(GetSimulation_DayNrPrematureEnd() - 1)
call SetCrop_LastDayNr(GetSimulation_DayNrPrematureEnd() - 1)
else
call SetCrop_LastDayNr(GetCrop_DayN())
Copy link
Collaborator

Choose a reason for hiding this comment

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

I will start adding comments related to future implementation in LIS and gather them in the AC documentation (sandbox) on Overleaf.

To tackle growth cycles that were too long compared to the simulation period (calendar year), I implemented two things:

  1. I added checks in the ac72_main, resulting in a flag in the output crop_cycle_complete that could be one or zero
  2. If there were less than 10% of days with mean temperatures above Tbase, there is no simulation on that pixel. If this was not implemented, it kept looking for enough days to calibrate the fertility.

With the changes to v7.3, we probably still need 1. to flag if it was a premature end, and also 2?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

I think yes, we still need both. To be tested. Great that you add that in overleaf.

call SetSimulation_FromDayNr(ProjectInput(NrRun)%Simulation_DayNr1)
call SetSimulation_ToDayNr(ProjectInput(NrRun)%Simulation_DayNrN)
call SetCrop_Day1(ProjectInput(NrRun)%Crop_Day1)
! call SetCrop_DayN(ProjectInput(NrRun)%Crop_DayN)
Copy link
Collaborator

Choose a reason for hiding this comment

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

Again, do we leave comments or do we remove them since the history is on GitHub?


! Adjust crop parameters of Perennials
if (GetCrop_subkind() == subkind_Forage) then
! Valid since Perennials have their own end of season based on Temperature - added Version 7.1
Copy link
Collaborator

Choose a reason for hiding this comment

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

7.3?

end if

call AdjustCalendarCrop(GetCrop_Day1())
! added Version 7.1 since Crop.DayN is no longer READ for annuals
Copy link
Collaborator

Choose a reason for hiding this comment

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

7.3?

@mbechtold mbechtold changed the title V73: Premature end of the growing period of annual crops V73: Premature end of the growing period and improvement for ageing of KcTrx Feb 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants