@startuml

participant aModelRun
participant aSosModel
participant aModelSet
participant aScenarioModel
participant aSectorModel
participant bSectorModel

aModelRun -> aSosModel : simulate(timestep, data)
activate aSosModel
aSosModel -> aScenarioModel : simulate(timestep, data)
aSosModel <-- aScenarioModel : results
create aModelSet
aSosModel -> aModelSet : simulate(timestep, data)
activate aModelSet
aModelSet -> aSectorModel : simulate(timestep, data)
aModelSet <-- aSectorModel : results  
aModelSet -> bSectorModel : simulate(timestep, data)
aModelSet <-- bSectorModel : results
aSosModel <-- aModelSet : results
deactivate aModelSet
destroy aModelSet
aSosModel --> aModelRun : results
deactivate aSosModel

@enduml