From 0c80cea7094f57fb456895631d84d1b2d99f653e Mon Sep 17 00:00:00 2001
From: Pascal Engeler <engelerp@phys.ethz.ch>
Date: Tue, 21 Jan 2020 10:29:38 +0100
Subject: [PATCH] How to implement a new project

---
 README.md | 20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)

diff --git a/README.md b/README.md
index 0f18324..04e59e0 100644
--- a/README.md
+++ b/README.md
@@ -30,8 +30,24 @@ contents is the following:
 ## Implementing a new project
 In order to implement a new project, follow these steps:
 
-1. Identify force
-   - $d^2_t x = F$
+1. Identify force on a single drum
+   - Depends on static parameters (w, m, a, etc.) and dynamic parameters and variables (x, v, etc.).
+   - Coupling and driving parameters are dynamic.
+2. Write custom versions of classes `DrumParameters` (everything that is static) and `DrumVariables`
+(everything that is dynamic) to accomodate these. Inspiration in `lib/drum_variables.hpp` and
+`lib/drum_parameters.hpp`.
+4. Write custom `Grabber` that extracts the relevant data (inspiration in `include/grabber.hpp`)
+3. Write custom child of `Force` to calculate the force.
+4. Write custom children of `Coupler` and `Driver` to correctly update the drive and couplings.
+5. If desired, write a custom child of `LatticeGenerator` to generate a custom lattice,
+or use the generator `projects/braidingTightBinding/include/rbcomb_generator_braid.hpp` to
+create the RBComb.
+6. If desired, write a child of `MatrixElementCalculator` to calculate matrix elements
+for the dynamic matrix.
+7. Check the unit tests (`unit_tests`) or other projects to see how a `main.cpp` could be
+constructed.
+
+
 
 <a name="Classes"></a>
 ## Classes
-- 
GitLab