Add tutorial on implementing a complete model
Description
During the review for the JOSS paper on Utopia, it was suggested to add a tutorial or guide which walks through the entire process of implementing a model. The current guide only explains how to get a model scaffolding for further implementation, but leaves many questions unanswered. In particular, there is no explanation how specific library objects or model "ingredients" interact and how they are used.
Proposal
Add a tutorial for implementing a complete model. This model should already be implemented in Utopia for new users to see the final result of the guide. This is particularly useful as we could include segments of the code in the tutorial to highlight important bits. It could be a model we already have, or it could be a new one (e.g., the Ising model as very common physical model). The guide should also make the prerequisites clear: Programmers need to know C++, Python, and the command line. Ideally, we could hint at some useful online tutorials for these as well.
The steps for implementing a complete model are the following (to be extended/adapted):
- Copy a model scaffolding (guide already exists, but could maybe be shortened)
- Implement the C++ model:
- Choose data types/traits
- Define dynamics using "rules"
- Define time steps by applying rules/dynamics
- Write output
- Specify model config
- Add model specific data analysis/plots
- ... with a custom configuration of an existing base plot
- ... with a completely new plot script
- Executing the model (guide already exists)
How to test the implementation?
Not sure if there is a way to test the procedure. The tutorial will have to be updated whenever the code itself is updated.
Related issues
Meta: #259