The generic nature of PlantSimEngine makes it harder to know what models or which independent subgraphs of the depency graph should be prioritised.
The exact order will heavily depend on the complexity of the models, and on their coupling, making it very case-specific. Sometimes a specific model might be quite computationally complex to run and a bottleneck to prioritise, sometimes there might be long dependency chains that outweigh the other bottlenecks.
One possible way of determining a usually good order when the user needs to run a simulation over many timesteps would be to have a short dry run that collects a little data, to then determine what seems like the potential ideal order in which the subgraphs and models should be run.
This might not be trivial with multi-scale, hard dependencies and soft dependencies. Perhaps having modelers declare some particularly complex models as being heavier to handle could help, as well.
The generic nature of PlantSimEngine makes it harder to know what models or which independent subgraphs of the depency graph should be prioritised.
The exact order will heavily depend on the complexity of the models, and on their coupling, making it very case-specific. Sometimes a specific model might be quite computationally complex to run and a bottleneck to prioritise, sometimes there might be long dependency chains that outweigh the other bottlenecks.
One possible way of determining a usually good order when the user needs to run a simulation over many timesteps would be to have a short dry run that collects a little data, to then determine what seems like the potential ideal order in which the subgraphs and models should be run.
This might not be trivial with multi-scale, hard dependencies and soft dependencies. Perhaps having modelers declare some particularly complex models as being heavier to handle could help, as well.