Simulation Modelling Integration Framework

nismod/smif on github Travis CI build status Appveyor CI Build status Code Coverage PyPI package conda-forge package Archive Journal of Open Research Software paper Documentation Status

smif is a framework for handling the creation, management and running of system-of-systems models.

A system-of-systems model is a collection of system simulation models that are coupled through dependencies on data produced by each other.

smif provides a user with the ability to

  • create system-of-systems models
    • add simulation models to a system-of-systems model
    • create dependencies between models by linking model inputs and outputs
    • pick from a library of data adapters which perform common data conversions across dependencies
    • create user-defined data adapters for more special cases
    • add scenario data sources and link those to model inputs within a system-of-systems
  • add a simulation model to a library of models
    • write a simulation model wrapper which allows smif to run the model
    • define multi-dimensional model inputs, outputs and parameters and appropriate metadata
  • run system-of-systems models
    • link concrete scenario data sets to a system-of-systems model
    • define one or more decision modules that operate across the system-of-systems
    • define a narrative to parameterise the contained models
    • persist intermediate data for each model output, and write results to a data store for subsequent analysis

In summary, the framework facilitates the hard coupling of complex systems models into a system-of-systems.

Should I use smif?

There are number of practical limits imposed by the implementation of smif. These are a result of a conscious design decision that stems from the requirements of coupling the infrastructure system models to create the next generation National Infrastructure System Model (NISMOD2).

The discussion below may help you determine whether smif is an appropriate tool for you.

  • smif is not a scheduler, but has been designed to make performing system-of-systems analyses with a scheduler easier
  • Geographical extent is expected to be defined explicitly by a vector geometry
    • smif is not optimised for models which simulate on a grid, though they can be accomodated
    • smif is designed for models that read and write spatial data defined over irregular grids or polygons using any spatial format readable by fiona
  • Inputs and outputs are exchanged at the ‘planning timestep’ resolution
    • smif makes a distinction between simulation of operation, which happens at a model-defined timestep resolution, and application of planning decisions which happens at a timestep which is synchronised between all models
    • smif is not focussed on tight coupling between models which need to exchange data at every simulation timestep (running in lockstep)
    • smif does accomodate individual models with different spatial and temporal (and other dimensional) resolutions, by providing data adaptors to convert from one resolution to another
  • smif has been designed to support the coupling of bottom-up, engineering simulation models built to simulate the operation of a given infrastructure system
    • smif provides a mechanism for passing information from the system-of-systems level (at planning timesteps scale) to the contained models
    • smif is appropriate for coupling large complex models that exchange resources and information at relatively course timesteps
  • smif is not appropriate for
    • discrete event system simulation models (e.g. queuing systems)
-V, --version show the current version of smif


If you use smif for research, please cite the software directly:

  • Will Usher, Tom Russell, Roald Schoenmakers, Craig Robson, Fergus Cooper, Thibault Lestang & Rose Dickinson. (2019). nismod/smif vX.Y.Z (Version vX.Y.Z). Zenodo.

Here’s an example BibTeX entry:

      author       = {Will Usher and Tom Russell and Roald Schoenmakers and Craig Robson and Fergus Cooper and Thibault Lestang and Rose Dickinson},
      title        = {nismod/smif vX.Y.Z},
      month        = Aug,
      year         = 2018,
      doi          = {10.5281/zenodo.1309336},
      url          = {}

Please also cite the software description paper:

  • Will Usher and Tom Russell. (2019) A Software Framework for the Integration of Infrastructure Simulation Models. Journal of Open Research Software, 7: 16 DOI:

Here’s an example BibTeX entry:

      author       = {Will Usher and Tom Russell},
      title        = {A Software Framework for the Integration of Infrastructure Simulation Models},
      journal      = {Journal of Open Research Software},
      volume       = {7},
      number       = {16},
      pages        = {1--5},
      month        = May,
      year         = {2019},
      doi          = {10.5334/jors.265},
      url          = {}

A word from our sponsors

smif was written and developed at the Environmental Change Institute, University of Oxford within the EPSRC sponsored MISTRAL programme, as part of the Infrastructure Transition Research Consortium.


Indexes and tables