Coding day 2015 electrostatic interactions

=Design= The electrostatic, magnetostatic and hydrodynamic interactions should be handled by the same actor (see src/core/python/espressomd/actors.pyx). As an example implementation the P3M method is used.

Instructions
1. Chose a nonbonded interaction to work on. 2. Find the relevant data structs used by this method and import them.
 * Expose this structs to Cython in src/python/espressomd/electrostatics.pxd

cdef extern from "p3m-common.hpp": ctypedef struct p3m_parameter_struct: double alpha_L double r_cut_iL int   mesh[3] ... 3. Find the c-function in the Espresso core which activates the interaction.
 * Most interactions have individual .cpp-files in src/core (p3m.cpp, p3m_gpu.cpp ...).
 * They typically contain a function such as

p3m_set_params 4. Expose this function to Cython in src/python/espressomd/electrostatics.pxd
 * Example:

cdef extern from "p3m.hpp": int p3m_set_params(double r_cut, int *mesh, int cao, double alpha, double accuracy) 5. In src/python/espressomd/electrostatics.pyx, implement a class derived from ElectrostaticInteraction.
 * Use the P3M class as example (main work).

6. Add a test case in testsuite/python/ElectrostaticInteractions.py.
 * These Tests only test the interface, i.e., whether parameters set equal parameters queried from Espresso

=Tasks=

Stage 1

 * electrokinetics (Georg)
 * MMM1D on GPU (Tobias Ri)


 * P3M on GPU (Tobias Ri) DONE
 * Ewald on GPU (Tobi Ri) DONE
 * ELC (Konrad) DONE
 * Redesign LB (Cast into actor scheme) (dominic, georg) DONE
 * LB on GPU (dominic, georg) DONE
 * Dipolar interaction (Rudolf) DONE
 * Dipolar P3M (Rudolf) DONE
 * DLC (Rudolf) DONE
 * DAWAANR (Rudolf) DONE
 * MDDS (Rudolf) DONE
 * icc (Konrad) DONE

Stage 2

 * MMM1D
 * MMM2D
 * MEMD

=Constraints=

Stage 1
(Flo)
 * pore
 * sphere
 * wall
 * cylinder
 * magnetic field (Rudolf)