Coding day 2016

= Before you begin = This makes a copy of the official Espresso repository (espressomd/espresso) into your account (yourUserName/espresso) git clone git://github.com/espressomd/espresso This will create a directory called "espresso" which contains the code to try it: cd espresso git log cd espresso git remote add my_github ssh://git@github.com/YourUserName/espresso
 * Create a github account at http://www.github.com/join
 * After logging into github, fork the Espressomd repository at http://www.github.com/espressomd/espresso (Press fork button or http://github.com/espressomd/espresso/fork)
 * to be able to push code to your github account, Generate an ssh key and add it to your account (http://help.github.com/articles/generating-ssh-keys)
 * On your local machine, configure your name and email address
 * configure your email and name in git:
 * git config --global user.email "email@example.com"
 * git config --global user.name "Your Name"
 * Clone the espressomd/espresso repository from github
 * Add a "remote" (kind of a bookmark in git) to your own fork of Espresso
 * Always work on feature branches (see below) that are branched of from the master. Don't modify your master.

= Git Workflow =
 * Chose a task.
 * Check out the master
 * Create a new branch for every new feature, e.g. one per short range interaction and give it a meaningful name, e.g. "LennardJonesIA".
 * Add implementation
 * Add documentation, do documentation and implementation in separate commits, not branches though.
 * Push it to github  and make a pull request (http://github.com/yourUserName/espresso/branches, and then next to the branch).
 * Look at the results of Travis (shown in the pull request on github, may take some time). If there are errors, correct them and modify your pull request. The testsuite is currently broken in tavis, please run that your self.
 * Repeat.
 * Happy hacking.

= Tasks =

When you start a task, write your name in the wiki so that other people can see what you are working on.

Suggestions for specifi people

 * Konrad
 * Fix thermostat #586
 * Py implementaiton, py and tcl docs for external potential #470
 * py: Make p3m tuning publicly accesible
 * Georg
 * Python lb and ek interfaces (probably as subclass of Actor)
 * convert lb and ek tutorials to python and check that everything works
 * Flo
 * 492
 * 479
 * 478
 * 363
 * Tobias Rau
 * Autogeneration of key_dict for pickling of ParticleList #682
 * Cython erste Hilfe
 * Robin
 * All things Cmake
 * Rudolf
 * Python intro documentation
 * Observables/Corrleator (Depends on ScriptInterface)
 * py+refactor collision handling (depends on ScriptInterface)
 * Jonas
 * Cmake build documentation (Remains from prev. coding day) #559, #529
 * Rng checkpointing
 * Tilak
 * Continuous integration
 * 511

Other people
Please choose from the list below.


 * Document everything under ParticleHandle which does not start with an underscore
 * Document BondedInteractions and NonBondedInteractions and derived classes
 * Document Actor and derived classes (electrostatics,...)
 * Implement equivalents for various tcl commands: coding day 2015 misc commands
 * Convert Lennard Jones tutorail to py and make everything work
 * Convert charged systems tutorial to py and make everything work
 * Convert visualization tutorial

=Implementation status= See Espresso coding day 2015 testcases and docs See Coding day 2015 electrostatic interactions See coding day 2015 misc commands See Coding day 2015 analysis See Coding day 2015 non-bonded interactions See Coding day 2015 bonded interactions See coding day 2015 particle properties (DONE)
 * Testcases and docs
 * Electrostatic, Magnetostatic, Hydrodynamic methods (advanced, half a day per method)
 * Various other tcl commands
 * Analysis routines (Intermediate, varies widely)
 * Non-bonded interactions (Basic, 10-20 min per interaction)
 * Bonded interactions (Basic, 10-20 min per interaction)
 * Check, which particle properties are missing and implement remaining ones (1-2 hrs, basic) (DONE)

Unclear state

 * Test cases based on stored data
 * Slicing improvements (Tobias Rau)
 * Slicing methods
 * Travis / Testing (FWeik)
 * LB fluid does not work in python (Georg)
 * Replace globals by dict/object... (Kai)
 * Extend unit test class with feature checking (Kai)
 * |Energy analysis gives contribution of dipoles in system without dipoles
 * Electrostatic methods fail when more than one node (Konrad)