diff --git a/build/README.md b/build/README.md new file mode 100644 index 0000000..53af743 --- /dev/null +++ b/build/README.md @@ -0,0 +1,15 @@ +# SIMoN Architecture + +## Description + +SIMoN is written in Python, and uses Docker to manage its models and their integration. In order to increase flexibility and scalability, each model runs in discrete iterations (called increment steps) within its own Docker container. An additional container hosts the system's centralized Broker, which orchestrates model runs by receiving each model's data outputs via a ZeroMQ publish-subscribe messaging pattern, then redirecting the data to any models that request it. The models can then use this data as their inputs for the next incremental step in the system's synchronized run. + +Upon the initialization of a SIMoN run, the broker publishes status messages to the models. Each model connects to the broker, bootstraps on the initialization data provided in its `config` directory, publishes its output data, then waits for other models to do the same. Once all models have received their necessary data inputs from the published data outputs of other models (from the previous iteration), they will perform their next iteration. In this way, models will run in tandem. Once the final iteration has completed, the Broker and the model containers will close down. + +![framework diagram](framework_diagram.png) + +The Inner Wrappers are interfaces tailored to each model, and support the models' internal logic and data calculations. The Outer Wrappers are interfaces common to each model, and support the models' connectivity to the central broker and automated data translations between geographic granularities. + +## Configuration + +Adjust parameters in the `build/config.json` file. diff --git a/build/framework_diagram.png b/build/framework_diagram.png new file mode 100644 index 0000000..3500da1 Binary files /dev/null and b/build/framework_diagram.png differ