Memosa-FVM  0.2
kvol.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 _KVOL_H_
6 #define _KVOL_H_
7 
8 #include <vector>
9 #include "Vector.h"
10 #include "Field.h"
11 #include "pmode.h"
12 
13 template<class T>
14 class kvol
15 {
16 
17  public:
18 
19  typedef kvol<T> Tkvol;
22  typedef pmode<T> Tmode;
23  typedef shared_ptr<Tmode> Tmodeptr;
24  typedef vector<Tmodeptr> Modes;
25 
26  kvol(Tmodeptr mode,T dk3): //used in gray approx.
27  _dk3(dk3),
28  _modenum(1),
29  _modes(1,mode)
30  {}
31 
32  kvol()
33  {}
34 
35  kvol(const int modes):
36  _modenum(modes)
37  {}
38 
39  Tvec getkvec() {return _Kvector;}
40  void setkvec(Tvec K) {_Kvector=K;}
41  void setdk3(T dk3) {_dk3=dk3;}
42  T getdk3() {return _dk3;}
43  int getmodenum() {return _modenum;}
44  Tmode& getmode(int n) const {return *_modes[n];}
45  Modes& getModes() {return _modes;}
47  {
48  const int m=o.getmodenum();
49  _modes.clear();
50  _modes.resize(m);
51  for(int i=0;i<m;i++)
52  {
53  Tmodeptr newPmode=Tmodeptr(new Tmode());
54  _modes[i]=newPmode;
55  (*(_modes[i]))=o.getmode(i);
56  }
57  return *this;
58  }
59  void copyKvol(Tkvol& inKvol)
60  {
61  const int m=inKvol.getmodenum();
62  _modenum=m;
63  _dk3=inKvol.getdk3();
64  _modes.clear();
65  for(int i=0;i<m;i++)
66  {
67  Tmodeptr newPmode=Tmodeptr(new Tmode());
68  newPmode->copyPmode(inKvol.getmode(i));
69  _modes.push_back(newPmode);
70  }
71  }
72 
73  private:
74 
75  kvol(const kvol&);
76 
77  //weight factor (1/m3)
78  T _dk3;
79 
80  //K vector
82 
83  //number of modes
84  int _modenum;
85 
86  //phonon modes
88 
89 };
90 
91 #endif
pmode< T > Tmode
Definition: kvol.h:22
Vector< T_Scalar, 3 > Tvec
Definition: kvol.h:21
NumTypeTraits< T >::T_Scalar T_Scalar
Definition: kvol.h:20
Tmode & getmode(int n) const
Definition: kvol.h:44
T _dk3
Definition: kvol.h:78
int getmodenum()
Definition: kvol.h:43
kvol(const int modes)
Definition: kvol.h:35
shared_ptr< Tmode > Tmodeptr
Definition: kvol.h:23
vector< Tmodeptr > Modes
Definition: kvol.h:24
kvol()
Definition: kvol.h:32
Modes & getModes()
Definition: kvol.h:45
kvol(Tmodeptr mode, T dk3)
Definition: kvol.h:26
void setkvec(Tvec K)
Definition: kvol.h:40
Tvec _Kvector
Definition: kvol.h:81
Tkvol & operator=(Tkvol &o)
Definition: kvol.h:46
kvol< T > Tkvol
Definition: kvol.h:19
Tvec getkvec()
Definition: kvol.h:39
Definition: pmode.h:18
Modes _modes
Definition: kvol.h:87
Definition: kvol.h:14
int _modenum
Definition: kvol.h:84
void setdk3(T dk3)
Definition: kvol.h:41
void copyKvol(Tkvol &inKvol)
Definition: kvol.h:59
T getdk3()
Definition: kvol.h:42