OpenM++ runtime library (libopenm)
OpenM++ runtime library (libopenm)

OpenM++ runtime library provides life cycle support to run the models:

  • main() model entry point
  • model initialization:
    • read model input parameters
    • create modeling threads for each sub-value
  • run model event loop (do the simulation)
  • model shutdown:
    • get output results for each sub-value
    • write output tables
    • do sub-values aggregation

There are four isolated parts in runtime library:

  • model part: sources are in openm/model
  • data access part: sources are in openm/db
  • message passing part: sources are in openm/msg
  • common helper utilities part: sources are in openm/common

Model part is a top level portion of runtime to control openM++ model model life cycle. It implement IModel and IRun public interfaces to read model input, write output results, update progress, etc.

Data access and message passing are isolated parts of runtime and accessible through openm::IDbExec and openm::IMsgExec public interfaces.

Common portion of runtime contains set of helper functions and utility classes, like openm::ILog. They are used everywhere inside of the model runtime code.