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
normalization.h
Go to the documentation of this file.
1 
5 #ifndef NORMALIZATION_H
6 #define NORMALIZATION_H
7 #include "task.h"
8 #define EL 1.6022e-19
9 #define ELMASS 9.1094E-31
10 #define EPS0 8.8542e-12
11 #define CLIGHT 3.0e+8
12 #define PI 3.1415926535897932384626
13 #define hwq 6.6261e-34
14 //---------------------------------------------------------------------------------------------------------------------
15 class Species;
16 
22 class Normalization : public Task {
23  public:
25  virtual void SetSpecies(Species*) {}
26 
28  virtual void length(double &) = 0;
29  virtual void time(double &) = 0;
30  virtual void frequency(double &) = 0;
31  virtual void mass(double &) = 0;
32  virtual void charge(double &) = 0;
33  virtual void potential(double &) = 0;
34  virtual void density(double &) = 0;
35  virtual void temperature(double &) = 0;
36  virtual double GetTe() const = 0;
37  virtual double GetTi() const = 0;
38  virtual double Getdebye() const = 0;
39  virtual double Getdebye_i() const = 0;
40  virtual double Getdebye_d() const = 0;
41  virtual double GetLaRadius() const = 0;
42  virtual double GetBfield() const = 0;
43 
47 
49  virtual std::string GetClassName () const { return "Normalization"; }
50 };
51 
79 class ElStaticNorm : public Normalization {
80  protected:
82  double debye;
84  double debye_i;
86  double debye_d;
88  double n;
90  double Te;
92  double Ti;
94  double omega;
96  double Bz;
98  double omega_l;
100  double rg;
101  public:
105  virtual ~ElStaticNorm () {}
106 
108  virtual void length(double &);
109  virtual void time(double &);
110  virtual void frequency(double &);
111  virtual void mass(double &);
112  virtual void charge(double &);
113  virtual void potential(double &);
114  virtual void density(double &);
115  virtual void temperature(double &);
116  virtual double GetTe() const;
117  virtual double GetTi() const;
118  virtual double Getdebye() const;
119  virtual double Getdebye_i() const;
120  virtual double Getdebye_d() const;
121  virtual double GetLaRadius() const;
122  virtual double GetBfield() const;
123  // Unnormalize the argument according to the electrostatic normalizations
125 
126  virtual void Init ();
127  // Doesn't do anything
128  virtual bool Execute () {return true;}
129  protected:
130  virtual PARAMETERMAP* MakeParamMap (PARAMETERMAP* pm = NULL);
131 };
132 
145 class ElDynamicNorm : public Normalization {
146  protected:
148  double debye;
149  double debye_i;
150  double debye_d;
154  double n;
156  double qoverm;
158  double massfactor;
160  double Mass;
162  double Te;
163  double Ti;
164  double Bz;
165  double omega_l;
166  double rg;
167  public:
169  ElDynamicNorm () {}
170  // Destructor
171  virtual ~ElDynamicNorm () {}
172 
173  // \f$q/m\f$, \f_m\f$ and Mass depend on the Species
174  virtual void SetSpecies(Species*);
175 
177  virtual void length(double &);
178  virtual void time(double &);
179  virtual void frequency(double &);
180  virtual void mass(double &);
181  virtual void charge(double &);
182  virtual void potential(double &);
183  virtual void density(double &);
184  virtual void temperature(double &);
185  virtual double GetTe() const;
186  virtual double GetTi() const;
187  virtual double Getdebye() const;
188  virtual double Getdebye_i() const;
189  virtual double Getdebye_d() const;
190  virtual double GetLaRadius() const;
191  virtual double GetBfield() const;
192 
194 
195 
196  virtual void Init ();
197  // Doesn't do anything
198  virtual bool Execute () {return true;}
199 protected:
200  virtual PARAMETERMAP* MakeParamMap (PARAMETERMAP* pm = NULL);
201 };
202 #endif