Memosa-FVM  0.2
pmode.h
Go to the documentation of this file.
1 // This file os part of FVM
2 // Copyright (c) 2012 FVM Authors
3 // See LICENSE file for terms.
4 
5 #ifndef _PMODE_H_
6 #define _PMODE_H_
7 
8 #include "Vector.h"
9 #include "Field.h"
10 #include <map>
11 #include <math.h>
12 #include <string>
13 #include <vector>
14 
15 using namespace std;
16 
17 template<class T>
18 class pmode
19 {
20 
21  public:
22 
23  typedef pmode<T> Tmode;
26  typedef shared_ptr<pmode<T> > Mode_ptr;
27  typedef pair<T,int> Reflection; //<weight,kvol index>
28  typedef shared_ptr<Reflection> Reflptr;
29  typedef pair<Reflection,Reflection> Refl_pair; //two nearest vectors
30  typedef map<int,Refl_pair> Refl_Map; //list mapped to each fg.id
31 
32  pmode(Tvec vg,T omega,T tau):
33  _vg(vg),
34  _tau(tau),
35  _omega(omega),
36  _efield("edoubleprime"),
37  _eShifted("eShifted"),
38  _e0field("e0"),
39  _injected("injected"),
40  _residual("residual"),
41  _FASCorrection("FASCorrection"),
42  _reflections(),
43  _index(),
44  _Tref(299.)
45  {}
46 
47  pmode():
48  _efield("edoubleprime"),
49  _eShifted("eShifted"),
50  _e0field("e0"),
51  _injected("injected"),
52  _residual("residual"),
53  _FASCorrection("FASCorrection"),
54  _reflections(),
55  _index(),
56  _Tref(299.)
57  {};
58 
59  Tvec getv(){return _vg;}
60  T getcp() {return _cp;}
61  T gettau() {return _tau;}
62  T gettauN() {return _tauN;}
63  T getomega() {return _omega;}
64  Tvec& getVRef(){return _vg;}
65  T& getTauRef() {return _tau;}
66  T& getTauNRef() {return _tauN;}
67  T& getOmegaRef() {return _omega;}
68  T& getcpRef() {return _cp;}
69  Refl_Map& getreflmap() {return _reflections;}
70  Refl_Map getreflmapValue() {return _reflections;}
71  Refl_pair& getReflpair(int i) {return _reflections[i];}
72  void setIndex(int index) {_index=index;}
73  int getIndex() {return _index;}
74  Field& getfield() {return _efield;}
75  Field& geteShifted() {return _eShifted;}
76  Field& gete0field() {return _e0field;}
77  Field& getInjected() {return _injected;}
78  Field& getresid() {return _residual;}
79  Field& getFASfield() {return _FASCorrection;}
80  void setTref(const T Tref) {_Tref=Tref;}
81 
82  //========================//
83  // Non Constant Cp Methods //
84  //========================//
85 
86 
87 
88  T calce0(T Tl)
89  {
90  const T hbar=6.582119e-16; // (eV s)
91  const T kb=8.617343e-5; // (eV/K)
92  T e0kp;
93 
94  e0kp=hbar*_omega/(exp(hbar*_omega/kb/Tl)-1);
95  //e0kp=1./(exp(hbar*_omega/kb/Tl)-1);
96  //T eref=1./(exp(hbar*_omega/kb/300)-1);
97 
98  return e0kp;
99  }
100  T calce0tau(T Tl)
101  {
102  const T hbar=6.582119e-16; // (eV s)
103  const T kb=8.617343e-5; // (eV/K)
104  T e0kp;
105 
106  e0kp=hbar*_omega/(exp(hbar*_omega/kb/Tl)-1)/_tau;
107  //e0kp=1./(exp(hbar*_omega/kb/Tl)-1)/_tau;
108  //T eref=1./(exp(hbar*_omega/kb/300)-1)/_tau;
109 
110  return e0kp;
111  }
112  T calcde0taudT(T Tl)
113  {
114  const T hbar=6.582119e-16; // (eV s)
115  const T kb=8.617343e-5; // (eV/K)
116  T e0kp;
117 
118  e0kp=(kb/_tau)*pow((hbar*_omega/kb/Tl),2)*exp(hbar*_omega/kb/Tl)/
119  pow((exp(hbar*_omega/kb/Tl)-1),2);
120 
121  //e0kp=pow(Tl,-2)/_tau*hbar*_omega/kb*exp(hbar*_omega/kb/Tl)/
122  // pow((exp(hbar*_omega/kb/Tl)-1),2);
123 
124  return e0kp;
125  }
126  T calcde0dT(T Tl)
127  {
128  const T hbar=6.582119e-16; // (eV s)
129  const T kb=8.617343e-5; // (eV/K)
130  T e0kp;
131 
132  e0kp=kb*pow((hbar*_omega/kb/Tl),2)*exp(hbar*_omega/kb/Tl)/
133  pow((exp(hbar*_omega/kb/Tl)-1),2);
134 
135  //e0kp=pow(Tl,-2)*hbar*_omega/kb*exp(hbar*_omega/kb/Tl)/
136  // pow((exp(hbar*_omega/kb/Tl)-1),2);
137 
138  return e0kp;
139  }
140 
141 
142  //====================//
143  // Constant Cp Methods //
144  //====================//
145  /*
146  T calce0(T Tl)
147  {
148  //const T hbar=6.582119e-16; // (eV s)
149  return (Tl-_Tref)*_cp;
150  }
151  T calce0tau(T Tl)
152  {
153  //const T hbar=6.582119e-16; // (eV s)
154  return (Tl-_Tref)*_cp/_tau;
155  }
156  T calcde0taudT(T Tl)
157  {
158  //const T hbar=6.582119e-16; // (eV s)
159  return _cp/_tau;
160  }
161  T calcde0dT(T Tl)
162  {
163  //const T hbar=6.582119e-16; // (eV s)
164  return _cp;
165  }
166 
167 
168  T calcTensorPrefactor(T Tl)
169  {
170  const T hbar=6.582119e-16; // (eV s)
171  const T kb=8.617343e-5; // (eV/K)
172  T e0kp;
173 
174  e0kp=exp(hbar*_omega/kb/Tl)/pow((exp(hbar*_omega/kb/Tl)-1),2)
175  /_tauN/kb/Tl;
176 
177  return e0kp;
178  }
179 
180  T calcVectorPrefactor(T Tl, T e)
181  {
182  const T hbar=6.582119e-16; // (eV s)
183  T e0=calce0(Tl);
184  e0=(e0-e)/_tauN/hbar/_omega;
185  return e0;
186  }
187 
188  T calcShifted(T Tl, T shift)
189  {
190  const T hbar=6.582119e-16; // (eV s)
191  const T kb=8.617343e-5; // (eV/K)
192  T e0kp;
193 
194  e0kp=hbar*_omega/(exp((hbar*_omega-shift)/kb/Tl)-1);
195 
196  return e0kp;
197  }*/
198 
199  //========================//
200  // End Constant Cp Methods //
201  //=======================//
202 
204  {
205  _vg=o.getv();
206  _cp=o.getcp();
207  _tau=o.gettau();
208  _omega=o.getomega();
209  _reflections=o.getreflmap();
210 
211  return *this;
212  }
213 
214  T getTref() {return _Tref;}
215 
216  void copyPmode(Tmode& inMode)
217  {
218  Tvec newVg=inMode.getv();
219  T newCp=inMode.getcp();
220  T newTau=inMode.gettau();
221  T newOmega=inMode.getomega();
222  Refl_Map& newMap=inMode.getreflmap();
223  int newIndex=inMode.getIndex();
224  T newTref=inMode.getTref();
225 
226  _vg=newVg;
227  _cp=newCp;
228  _tau=newTau;
229  _omega=newOmega;
230  _reflections=newMap;
231  _index=newIndex;
232  _Tref=newTref;
233  }
234 
235  private:
236 
237  pmode(const pmode&);
238  //group velocities (m/s)
240 
241  //specific heat
242  T _cp;
243 
244  //relaxation rate
245  T _tau;
246 
247  //Normal process relaxation
248  T _tauN;
249 
250  //frequency (rad/s)
252 
253  //e"
255 
256  //shifted e" field
258 
259  //e0
261 
262  //injected field
264 
265  //residual
267 
268  //residual of the injected solution, minus the injected residual
270 
271  //Map for specular reflections
273 
274  //index for point matrix
275  int _index;
276 
277  T _Tref;
278 };
279 
280 #endif
281 
282 
shared_ptr< Reflection > Reflptr
Definition: pmode.h:28
T & getTauRef()
Definition: pmode.h:65
pair< Reflection, Reflection > Refl_pair
Definition: pmode.h:29
Refl_pair & getReflpair(int i)
Definition: pmode.h:71
Tvec getv()
Definition: pmode.h:59
int _index
Definition: pmode.h:275
pmode()
Definition: pmode.h:47
T calcde0taudT(T Tl)
Definition: pmode.h:112
T calce0(T Tl)
Definition: pmode.h:88
Definition: Field.h:14
Field _efield
Definition: pmode.h:254
shared_ptr< pmode< T > > Mode_ptr
Definition: pmode.h:26
NumTypeTraits< T >::T_Scalar T_Scalar
Definition: pmode.h:24
Field & gete0field()
Definition: pmode.h:76
Refl_Map & getreflmap()
Definition: pmode.h:69
T calce0tau(T Tl)
Definition: pmode.h:100
pmode(Tvec vg, T omega, T tau)
Definition: pmode.h:32
map< int, Refl_pair > Refl_Map
Definition: pmode.h:30
pmode< T > Tmode
Definition: pmode.h:23
Field _FASCorrection
Definition: pmode.h:269
void copyPmode(Tmode &inMode)
Definition: pmode.h:216
T _Tref
Definition: pmode.h:277
Tmode & operator=(Tmode &o)
Definition: pmode.h:203
Field _eShifted
Definition: pmode.h:257
Field _injected
Definition: pmode.h:263
T gettauN()
Definition: pmode.h:62
int getIndex()
Definition: pmode.h:73
void setIndex(int index)
Definition: pmode.h:72
void setTref(const T Tref)
Definition: pmode.h:80
Tvec & getVRef()
Definition: pmode.h:64
T & getcpRef()
Definition: pmode.h:68
T _tauN
Definition: pmode.h:248
Field & getfield()
Definition: pmode.h:74
T _cp
Definition: pmode.h:242
T & getOmegaRef()
Definition: pmode.h:67
Field & getFASfield()
Definition: pmode.h:79
T calcde0dT(T Tl)
Definition: pmode.h:126
Field & getInjected()
Definition: pmode.h:77
T getomega()
Definition: pmode.h:63
Refl_Map getreflmapValue()
Definition: pmode.h:70
T getTref()
Definition: pmode.h:214
Field _residual
Definition: pmode.h:266
T & getTauNRef()
Definition: pmode.h:66
Field _e0field
Definition: pmode.h:260
Vector< T_Scalar, 3 > Tvec
Definition: pmode.h:25
pair< T, int > Reflection
Definition: pmode.h:27
T _omega
Definition: pmode.h:251
Field & getresid()
Definition: pmode.h:78
T _tau
Definition: pmode.h:245
Definition: pmode.h:18
T gettau()
Definition: pmode.h:61
Field & geteShifted()
Definition: pmode.h:75
Refl_Map _reflections
Definition: pmode.h:272
T getcp()
Definition: pmode.h:60
Tvec _vg
Definition: pmode.h:239