From 5e9f22e7e560ebc4effad84993328460995eea69 Mon Sep 17 00:00:00 2001
From: Pascal Engeler <engelerp@phys.ethz.ch>
Date: Mon, 20 Jan 2020 17:43:21 +0100
Subject: [PATCH] TOC update

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

diff --git a/README.md b/README.md
index de9ef03..42bfd1b 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,16 @@
 1. [ RBComb Simulation Framework. ](#RSF)
 2. [ Classes. ](#Classes)
    - [ Vec2. ](#vec2)
+   - [ Diagonalizer. ](#diagonalizer)
+   - [ Drum. ](#drum)
+   - [ Force. ](#force)
+   - [ Driver. ](#driver)
+   - [ Coupler. ](#coupler)
+   - [ LatticeGenerator. ](#latticegenerator)
+     - [ Neighbour Ordering Convention. ](#noc)
+     - [ Inexistent Neighbour Convention. ](#inc)
+   - [ MatrixElementCalculator. ](#mec)
+   - [ Rk4Stepper ](#rk4s)
 
 
 
@@ -55,6 +65,7 @@ where it improves legibility. Consult the source files for more information.
      - `[]` with `std::size_t`
      - `<<` with `std::ostream`
 
+<a name="diagonalizer"></a>
 ### Type `Diagonalizer` (diagonalizer.hpp), class to diagonalize symmetric Matrices
 1. Member functions
    - `std::vector<double> ev(std::vector<double> mat, size_t N)`
@@ -66,6 +77,7 @@ where it improves legibility. Consult the source files for more information.
 2. Further developments
    - Only finding eigenvectors and -values in a certain range may be added later on
 
+<a name="drum"></a>
 ### Template Type `Drum` (drum.hpp), represents a single drum top resonator
 1. Template arguments
    - `value_t`: Scalar type
@@ -101,6 +113,7 @@ this class is `delete`'d. It should be constructed from an object of type `param
 Abstract interfaces for `params_t` and `vars_t` could be added, but they would
 be trivial.
 
+<a name="force"></a>
 ### Interface template type `Force` (force.hpp), force functional
 1. Template arguments
    - `value_t`: Scalar type
@@ -121,6 +134,7 @@ access members `get_parameters()` and `get_variables()`. The `time` argument of
 functional exists to fit special cases as well. The file `include/force_simple.hpp`
 showcases how a real force functional could be written.
 
+<a name="driver"></a>
 ### Interface template type `Driver` (driver.hpp), calculate drive of drums
 1. Template arguments
    - `value_t`: Scalar type
@@ -150,6 +164,7 @@ The functional should return the current drive on the drum with index passed as
 
 An example implementation of a `Driver` is shown in `include/driver_simple.hpp`.
 
+<a name="coupler"></a>
 ### Interface template type `Coupler` (coupler.hpp), calculate couplings between drums
 1. Template arguments
    - `value_t`: Scalar type
@@ -179,6 +194,7 @@ The functional should return the current coupling between the two drums with ind
 
 An example implementation of a `Coupler` is shown in `include/coupler_simple.hpp`.
 
+<a name="latticegenerator"></a>
 ### Interface template type `LatticeGenerator` (lattice_generator.hpp), generates drum lattices
 1. Template arguments
    - `value_t`: Scalar type
@@ -206,6 +222,7 @@ differently.
    - `params_t`
      - Existence of `position` member
 
+<a name="noc"></a>
 #### Neighbour ordering convention
 An important note is the __convention of neighbour ordering__. Each drum has neighbours 0 thru 3.
 For drums in different sublattices, these neighbours are:
@@ -224,6 +241,7 @@ are assumed to respect the above convention. Note that with this convention,
 neighbours see each other as the same neighbour index (the i-th neighbour of j
   sees j as its i-th neighbour). __Never violate this convention__.
 
+<a name="inc"></a>
 #### Inexistent neighbour convention
 Another __convention__ concerns __inexistent neighbours__. For that purpose, this class should append
 an auxiliary drum to the end of the drum vector. If neighbour i of a drum does not exist
@@ -232,6 +250,7 @@ auxiliary drum, i.e. it will show an index `drum_vec.size()`. All couplings of t
 drum are to be kept at 0. This condition can then be applied in force calculation to avoid branching,
 if one uses the couplings of the neighbours instead of the considered drum.
 
+<a name="mec"></a>
 ### Interface template `MatrixElementCalculator` (matrix_element_calculator.hpp), calculates matrix elements
 1. Template arguments
    - `value_t`: Scalar type
@@ -264,6 +283,7 @@ the individual functions correctly to accomodate the correct neighbours.
      - `get_parameters()`
      - `get_variables()`
 
+<a name="rk4s"></a>
 ### Template Type `Rk4Stepper` (rk4_stepper.hpp), performs timesteps using rk4 scheme
 1. Template arguments
    - `value_t`: Scalar type
-- 
GitLab