Skip to content

Commit

Permalink
C4 diagrams (#770)
Browse files Browse the repository at this point in the history
Add diagrams for C4 model showing the different components for ribasim,
the preprocessing API, and the QGIS plugin.

We could go even further and make a detailed diagram of the different
modules that are connected to each other. But these diagrams already
give an overview of the components that are involved in the system.

---------

Co-authored-by: Martijn Visser <[email protected]>
  • Loading branch information
deltamarnix and visr authored Nov 10, 2023
1 parent 8e67335 commit ac48bb4
Show file tree
Hide file tree
Showing 4 changed files with 81 additions and 0 deletions.
39 changes: 39 additions & 0 deletions docs/assets/c4_component_ribasim.mmd
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
flowchart TB
modeler([Modeler]):::user

api["Ribasim Python\n[python]"]:::system
modeler-->|prepare model|api

subgraph ribasimBoundary[Ribasim]
ribasim["Ribasim.jl\n[julia]"]:::system
libribasim["libribasim\n[julia + python + BMI]"]:::system
cli["Ribasim CLI\n[julia]"]:::system
cli-->ribasim
libribasim-->ribasim
end
modeler-->|start|cli
modeler-->|coupled simulation|libribasim

subgraph qgisBoundary[QGIS]
QGIS[QGIS Application]:::system_ext
qgisPlugin["Ribasim QGIS plugin\n[python]"]:::system
QGIS-->qgisPlugin
end
modeler-->|prepare model|qgisBoundary

model[("input model data\n[toml + geopackage + arrow]")]:::system
qgisPlugin-->|read/write|model
api-->|read/write|model
ribasim-->|simulate|model

output[("simulation output\n[arrow]")]:::system
ribasim-->|write|output

class qgisBoundary,ribasimBoundary boundary

%% class definitions for C4 model
classDef default stroke-width:1px,stroke:white,color:white
classDef system fill:#1168bd
classDef user fill:#08427b
classDef system_ext fill:#999999
classDef boundary fill:transparent,stroke-dasharray:5 5,stroke:black,color:black
32 changes: 32 additions & 0 deletions docs/assets/c4_system.mmd
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
flowchart TB
modeler([Modeler]):::user

api["Ribasim Python\n[python]"]:::system
modeler-->|prepare model|api

ribasim["Ribasim\n[julia]"]:::system
modeler-->|start|ribasim

subgraph qgisBoundary[QGIS]
QGIS[QGIS Application]:::system_ext
qgisPlugin["Ribasim QGIS plugin\n[python]"]:::system
QGIS-->qgisPlugin
end
modeler-->|prepare model|qgisBoundary

model[("input model data\n[toml + geopackage + arrow]")]:::system
qgisPlugin-->|read/write|model
api-->|read/write|model
ribasim-->|simulate|model

output[("simulation results\n[arrow]")]:::system
ribasim-->|write|output

class qgisBoundary boundary

%% class definitions for C4 model
classDef default stroke-width:1px,stroke:white,color:white
classDef system fill:#1168bd
classDef user fill:#08427b
classDef system_ext fill:#999999
classDef boundary fill:transparent,stroke-dasharray:5 5,stroke:black,color:black
5 changes: 5 additions & 0 deletions docs/core/index.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,8 @@ The core is implemented in the [Julia programming language](https://julialang.or
can be found in the [Ribasim repository](https://github.com/Deltares/Ribasim) under the
`core/` folder. For developers we also advise to read the
[developer documentation](../contribute/core.qmd).

```{mermaid}
%%| file: ../assets/c4_component_ribasim.mmd
%%| fig-cap: "Component overview of Ribasim"
```
5 changes: 5 additions & 0 deletions docs/index.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,11 @@ Currently only Windows builds for `ribasim_cli.zip` are available.

See [Usage](core/usage.qmd) for more information.

```{mermaid}
%%| file: assets/c4_system.mmd
%%| fig-cap: "System overview of Ribasim"
```

# Status

The initial focus is on being able to
Expand Down

0 comments on commit ac48bb4

Please sign in to comment.