![Sad :(](./images/smilies/icon_sad.gif)
Starting out the program is given min and max position and momentum of anything that will be in the simulation (electrons, ions, etc). It generates an initial mesh by permutation of the min/max coordinates creating a 6-D box in phase space, which is subdivided into simplices (6-D version of triangles/tetrahedrons etc), creating a binary partition tree. The target number of divisions can be reached by subdividing the simplices in such a way that the vertices all line up, and any two bordering simplices can be up to 2x (or 1/2) the size. So areas of interest in the mesh can be refined much more then others.
Each vertex represents a point in phase space, and the densities of the various populations are attached. The gradient of the densities can then be used in the vlasov equation to find the rate of change of the density in phase space of each population. Several samples are taken and the runge kutta method is used to integrate total changes in densities at all the vertices over time.
Then the densities can be integrated over momentum space to find the spatial density distribution. At that point you can use the information to calculate new e-fields and b-fields to continue to (hopefully) find a steady state solution.
Right now the collisional terms are not included. I still haven't learned what they mean exactly so I can't implement them yet, lol.