From f349f0942328752ee1342a30864b59be8361aed7 Mon Sep 17 00:00:00 2001
From: Pascal Engeler <engelerp@phys.ethz.ch>
Date: Mon, 20 Jan 2020 15:10:47 +0100
Subject: [PATCH] Drum readme added

---
 README.md | 49 ++++++++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 46 insertions(+), 3 deletions(-)

diff --git a/README.md b/README.md
index 13c79bc..14ed954 100644
--- a/README.md
+++ b/README.md
@@ -10,7 +10,7 @@ described in the following. Note that qualifiers, references and the like are di
 where it improves legibility. Consult the source files for more information.
 
 ### Template Type `Vec2` (`vec2.hpp`), 2-vector utility class
-1. Template parameters
+1. Template arguments
    - `value_t`: type of vector entries
 2. Members
    - Access
@@ -47,7 +47,7 @@ where it improves legibility. Consult the source files for more information.
      - `<<` with `std::ostream`
 
 ## Type `Diagonalizer` (`diagonalizer.hpp`), class to diagonalize symmetric Matrices
-1. Members
+1. Member functions
    - `std::vector<double> ev(std::vector<double> mat, size_t N)`
      - returns eigenvalues of the symmetric matrix mat of linear size N
      - throws upon diagonalization failure
@@ -57,4 +57,47 @@ 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
 
-## Type
+## Template Type `Drum` (`drum.hpp`), represents a single drum top resonator
+1. Template arguments
+   - `value_t`: Scalar type
+   - `params_t`: Drum parameters container type
+   - `vars_t`: Drum variables container type
+   - `sbuffer_t`: Stepper buffer container type
+2. Access
+   - `params_t get_parameters()`
+     - returns the parameters, const and reference versions implemented
+   - `vars_t get_variables()`
+     - returns the variables, const and reference versions implemented
+   - `sbuffer_t get_sbuffer()`
+     - returns the stepper buffer, const and reference versions implemented
+3. Modifiers
+   - `void set_coupling_0(value_t)`
+     - Sets coupling 0
+   - `void set_coupling_1(value_t)`
+     - Sets coupling 1
+   - `void set_coupling_2(value_t)`
+     - Sets coupling 2
+   - `void set_drive(value_t)`
+     - Sets central electrode coupling
+4. Description
+A drum is described by a set of (static) parameters (stiffness, mass, x-y position, etc),
+which are to be stored in a container of type `params_t`. The variables (displacement, velocity,
+electrode charges, etc.) are stored in a container of type `vars_t`. These containers may need to
+be adapted to the situation at hand. When time evolving, the stepper will use the container of
+type `sbuffer_t` to store its intermediate results. Note that the default constructor of
+this class is `delete`d. It should be constructed from an object of type `params_t`.
+
+## Template Type `Rk4Stepper` (`rk4_stepper.hpp`), performs timesteps using rk4 scheme
+1. Template arguments
+   - `value_t`: Scalar type
+   - `params_t`: Drum parameters container type
+   - `vars_t`: Drum variables container type
+   - `buffer_t`: Stepper buffer container type
+   - `force_t`: Force functional type
+2. Member functions
+   - `void step_1(force_t, std::vector<drum_t>, std::vector<std::vector<int> >, value_t dt, value_t time)`
+   - `void step_2(force_t, std::vector<drum_t>, std::vector<std::vector<int> >, value_t dt, value_t time)`
+   - `void step_3(force_t, std::vector<drum_t>, std::vector<std::vector<int> >, value_t dt, value_t time)`
+     - All of the above perform one step of a timestep, between successive steps certain
+     other updates need to be taken care of.
+     - Arguments: Force functional, Drum vector, Adjacency vector, time step, start time of current step
-- 
GitLab