Given the scenario above when there are no dependencies between model the following will occur when the composite model is run.
CompositeModel.Initialize() Model1.Initialize() Model2.Initialize() Model3.Initialize() Model1.Run() Model2.Run() Model3.Run() Model1.Initialize() Model2.Initialize() Model3.Initialize()
Basically the rule is:
While (there is a model with currenttime < compositemodel.currenttime + compositemodel.timestep) Run all models with currenttime < compositemodel.currenttime in order
After which the compositemodel currenttime is increased and all child models and run against the new time.