O P A R - Open Architecture Particle in Cell Simulation - Version 3.0
Plasma simulations with dust particles
 All Classes Files Functions Variables Friends Macros Groups Pages
poisson.h
Go to the documentation of this file.
1 
5 #ifndef POISSON_H
6 #define POISSON_H
7 #include "task.h"
8 #include "density.h"
9 #include "numeric.h"
10 #include "normalization.h"
11 #include "dimensionality.h"
12 #include "wall.h"
13 #include "potential.h"
14 #include <valarray>
15 //---------------------------------------------------------------------------------------------------------------------
16 #ifndef ONE_DIMENSIONAL
17 
29 class Poisson {
30  protected:
32  double dx;
34  double dy;
35 #ifdef THREE_DIMENSIONAL
36 
37  double dz;
38 #endif
39 
40  int nu1,nu2;
42  int Rg;
44  int nd;
46  int ig;
48  double epsilon;
50  std::valarray<double> potd;
57  public:
58 
62  Poisson(Geometry *geom_);
63 
67  void solve(grid<double> &u, grid<double> &f, double potd[20]);
68  private:
69  void solver(grid<double> &u, grid<double> &f, double potd[20], int time);
70 
74  void multigrid(grid<double> &u, grid<double> &f, double potd[20], int time);
75 
79  void gauss(grid<double> &u, grid<double> &f, double potd[20], int time);
80 
85  void itersteps(grid<double> &u, grid<double> &f, int i_start, int j_start, int i_stop, int j_stop, double potd[20], int time);
86 #ifdef THREE_DIMENSIONAL
87 
92  void itersteps(grid<double> &u, grid<double> &f, int i_start, int j_start, int k_start, int i_stop, int j_stop, int k_stop, double potd[20], int time);
93 #endif
94 
99  void itersteps_fine(grid<double> &u, grid<double> &f, int i_start, int j_start, int i_stop, int j_stop, double potd[20], int time);
100 #ifdef THREE_DIMENSIONAL
101 
106  void itersteps_fine(grid<double> &u, grid<double> &f, int i_start, int j_start, int k_start, int i_stop, int j_stop, int k_stop, double potd[20], int time);
107 #endif
108 
112  void itersteps_coarse(grid<double> &u, grid<double> &f, double potd[20], int time);
113 
117  double distance(grid<double> &u, grid<double> &f);
118 
122  void boundary(grid<double> &u);
123 
127  void restriction(grid<double> &u, grid<double> &f, grid<double> &fn, int time);
128 
132  void prolongate(grid<double> &u, grid<double> &un, int t);
133 };
134 #endif
135 #endif