Open HamishBrownPFR opened 3 years ago
This was a huge issue in APSIM classic. A good examples were 1) The broccoli model needing to deal differently with sown (seed) and transplanted (seedling) crops, with various state variables being different. 2) Trees - needing to start a simulation with mature trees 3) grapes (see Hamish's stuff) 4) Sugarcane (start with sowing, or at the beginning of a ratoon crop which has established root systems)
It might even be good for prevernalised seed, use in unit tests, parameter optimisation, etc
From: Hamish Brown notifications@github.com Sent: Wednesday, 24 February 2021 12:52 PM To: APSIMInitiative/ApsimX ApsimX@noreply.github.com Cc: Huth, Neil (A&F, Toowoomba) Neil.Huth@csiro.au; Mention mention@noreply.github.com Subject: [APSIMInitiative/ApsimX] Should we have separate methods for sowing and initializing plants (#6200)
@hol353https://github.com/hol353 @hut104https://github.com/hut104 @sme016https://github.com/sme016 @junqi108https://github.com/junqi108 @ed2014https://github.com/ed2014 We sow and annual crop in simulations.
For the SimpleFruitTree model we use the sow method to initialize the trees and then set the age of the trees. I.e we don't start simulations with a seedling. I have added PlantAge into the sow method so this can be taken into consideration but it doesn't feel like the right place for it.
Would we be better to have another method called initialize() which has information specific to perennial plants and maybe transplanted annuals that are not starting as a seed?
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHubhttps://github.com/APSIMInitiative/ApsimX/issues/6200, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AC2UVWWC5FEI2V44RTG3GADTARSXDANCNFSM4YDU527A.
I have had a play with setting up an Initialization method in addition to the sow method but I don't think this is the right approach as there is alot of duplication with the sow method. Perhaps it is better turn the sow method into an Establish method that could be be sowing, transplanting or initalisating at an arbitrary stage of the crops life. For the latter two we would need to pass in some initial states for organ biomass, dimensions (LAI, root depth etc) and phenology.
Combining methods in one seem good idea at first, but I think we need to consider how complicated the method would become. Sow
already requires quite a few inputs, and a Establish
method for initialising plants would need a number considerably higher. Even if a number of the inputs would be optional, things could get complicated (just thinking on the list that would show up in intellisense). Having more than one method would, in my opinion, make things a bit easier to understand, especially for users that are not very familiar with Apsim (or coding). The differences between sow and transplant (and whatever name is for planting non seed stuff, like sugarcane) may not be enough for separating in two methods (or may be, I have not dealt with this much), but I do think there is scope for having a method to initialise perennial crops (forages and trees - In AgPasture this is done on model initialisation, but not ideal). This type of initialisation requires a lot of inputs (biomass status for each organ, height, root depth and maybe others) that are not really needed for sowing (or it is easier to predefine a few things like biomass partition at this stage than it is to fully established plants).
Hi all, having a sow method that can differentiate initialisation from sowing or transplanting will be certainly better for rice crop in addition of the differentiation between method of establishment of direct seeded and transplanted as it was in the APSIM Classic. Particularly for transplanted rice we have to account for slow growth during the period of recovery of the transplanting shock. It will allow as well a better dynamic in crop rotation as in intensive rice systems, harvesting of the first crop is happening while the second crop is in seedbed.
@hol353 @hut104 @sme016 @junqi108 @ed2014 We sow and annual crop in simulations.
For the SimpleFruitTree model we use the sow method to initialize the trees and then set the age of the trees. I.e we don't start simulations with a seedling. I have added PlantAge into the sow method so this can be taken into consideration but it doesn't feel like the right place for it.
Would we be better to have another method called initialize() which has information specific to perennial plants and maybe transplanted annuals that are not starting as a seed?