M3 Linkages¶
The M3 linkages repository automates running several open models in sequence so that the outputs of one become the inputs of the next: energy-technology choice (CIMS), electricity capacity expansion (COPPER), hourly dispatch (SILVER), probabilistic resource adequacy (PRAS), the provincial macro-economy (MacroABM-CA) and the labour market (LabourABM).
M3 is not one workflow. It is a set of linkages, each a separate workflow with its own orchestrator, scenario folders, pinned model versions and documentation. Running one linkage never touches another.
This documentation has two halves:
- Linkages describe each workflow in general: what it does, how to install it, how to run it, and what every configuration key means.
- Publications and projects record specific applications of M3: the exact model versions, scenarios, assumptions and data behind a piece of published analysis, and how to replicate it.
Linkages¶
| Linkage | What it answers | Models | Start here |
|---|---|---|---|
| Electricity supply and demand (CIMS-COPPER-SILVER) | How does the electricity system have to expand, and can it dispatch hour by hour, under an economy-wide policy scenario? | CIMS ⇄ COPPER → SILVER, iterated until electricity prices converge | Overview |
| Energy-economy (CIMS-COPPER-MacroABM-LabourABM) | What does a self-consistent energy pathway do to provincial GDP, investment, employment and occupations? | CIMS + COPPER → MacroABM-CA → LabourABM, one-way | Overview |
| Energy-economy feedback loop (CIMS-MacroABM) | Would the economy sustain the energy pathway once its own response feeds back into energy demand? | CIMS ⇄ MacroABM-CA, iterated | Overview |
| Resource adequacy (COPPER-PRAS) | Does a COPPER capacity plan keep the lights on under random outages, extreme weather and limited-energy resources? | COPPER → PRAS via the pras-linkage preprocessor | Overview |
Which energy-economy linkage? The one-way CIMS-COPPER-MacroABM-LabourABM linkage is the default for scenario analysis: it takes a finished CIMS-COPPER scenario as fixed input, adds COPPER's electricity supply explicitly, and costs one macroABM run per scenario. Use the CIMS-MacroABM feedback loop only when the question is specifically whether the economy would re-solve the energy pathway, so the economic response must feed back into CIMS.
Publications and projects¶
Each project page records what a technically-enabled reader needs to understand and replicate the analysis: the publication it supports, the linkage and the exact model versions (repository, branch, commit) used, the scenarios, every assumption and data source that differs from the linkage defaults, the run recipe, and where the outputs live.
| Project | Linkage | Status of this page |
|---|---|---|
| Powering Canada's Growth | CER-MacroABM | Methodology and quick-start |
| CP Saskatchewan (A Nuclear Grand Bargain, Clean Prosperity) | CIMS-COPPER-SILVER | Model versions, scenarios and assumptions recorded; dashboard to come |
| Building Grid Resilience through Interprovincial Interties (Electricity Canada) | COPPER-PRAS | Model versions, scenarios and assumptions recorded; dashboard to come |
| EPM Budget 2026 Dry Run | CIMS-COPPER (+ MacroABM / LabourABM handoff) | CIMS–COPPER design and scenarios recorded; MacroABM details and pinned commits to complete |
Adding to this documentation¶
The site is built with MkDocs from the Markdown files
under docs/ and is published by GitLab Pages on every push to main
(see .gitlab-ci.yml; the build runs in strict mode, so a broken link fails
the pipeline rather than publishing a broken page).
- A new linkage gets a folder
docs/linkages/<workflow_name>/with at leastindex.md(overview),setup.mdandquickstart.md, plusconfigFile.mdormethodology.mdwhere they earn their place, and a block in thenav:section ofmkdocs.ymlunder Linkages. - A new project gets
docs/projects/<project_name>/index.mdfollowing the section layout of the existing project pages, and one line under Publications and projects inmkdocs.yml. A methodology page can sit beside it in the same folder; dated working notes stay on the project's own branch rather than in these docs. - To preview locally:
pip install mkdocsthenmkdocs servefrom the repository root.