# | Line 40 | Line 40 | |
---|---|---|
40 | */ | |
41 | ||
42 | #include "lattice/Lattice.hpp" | |
43 | – | #include "lattice/LatticeFactory.hpp" |
44 | – | #include "lattice/LatticeCreator.hpp" |
43 | ||
44 | < | namespace oopse { |
44 | > | namespace oopse{ |
45 | > | void Lattice::getLatticePointsPos(std::vector<Vector3d>& latticePos, int nx, int ny, int nz){ |
46 | ||
47 | < | static LatticeCreator<FCCLattice> *FCCLatticeCreator = new LatticeCreator<FCCLattice>(FCCLatticeType); |
47 | > | latticePos.resize(nCellSites); |
48 | > | |
49 | > | for( int i=0;i < nCellSites;i++){ |
50 | ||
51 | < | CubicLattice::CubicLattice(){ |
52 | < | latticeParam = 1.0; |
53 | < | |
53 | < | cellLen[0] = latticeParam; |
54 | < | cellLen[1] = latticeParam; |
55 | < | cellLen[2] = latticeParam; |
56 | < | |
57 | < | } |
58 | < | |
59 | < | std::vector<double> CubicLattice::getLatticeConstant(){ |
60 | < | std::vector<double> lc; |
61 | < | |
62 | < | lc.push_back(cellLen.x()); |
63 | < | return lc; |
64 | < | } |
65 | < | |
66 | < | void CubicLattice::setLatticeConstant(const std::vector<double>& lc){ |
67 | < | |
68 | < | if(lc.size() < 1){ |
69 | < | std::cerr << "CubicLattice::setLatticeConstant Error: the size of lattice constant vector is 0" << std::endl; |
70 | < | exit(1); |
51 | > | latticePos[i][0] = origin[0] + cellSitesPos[i][0] + cellLen[0] * (double(nx) - 0.5); |
52 | > | latticePos[i][1] = origin[1] + cellSitesPos[i][1] + cellLen[1] * (double(ny) - 0.5); |
53 | > | latticePos[i][2] = origin[2] + cellSitesPos[i][2] + cellLen[2] * (double(nz) - 0.5); |
54 | } | |
72 | – | else if (lc.size() > 1){ |
73 | – | std::cerr << "CubicLattice::setLatticeConstant Warning: the size of lattice constant vector is " << lc.size() << std::endl; |
74 | – | } |
75 | – | |
76 | – | latticeParam = lc[0]; |
77 | – | |
78 | – | cellLen[0] = latticeParam; |
79 | – | cellLen[1] = latticeParam; |
80 | – | cellLen[2] = latticeParam; |
81 | – | |
82 | – | update(); |
83 | – | } |
55 | ||
85 | – | FCCLattice::FCCLattice() : CubicLattice(){ |
86 | – | nCellSites = 4; |
87 | – | cellSitesPos.resize(nCellSites); |
88 | – | cellSitesOrt.resize(nCellSites); |
89 | – | update(); |
90 | – | |
56 | } | |
57 | ||
93 | – | void FCCLattice::update(){ |
94 | – | |
95 | – | double cellLenOver2; |
96 | – | double oneOverRoot3; |
97 | – | |
98 | – | cellLenOver2 = 0.5 * latticeParam; |
99 | – | oneOverRoot3 = 1.0 / sqrt(3.0); |
100 | – | |
101 | – | // Molecule 1 |
102 | – | cellSitesPos[0][0] = 0.0; |
103 | – | cellSitesPos[0][1] = 0.0; |
104 | – | cellSitesPos[0][2] = 0.0; |
105 | – | |
106 | – | cellSitesOrt[0][0] = oneOverRoot3; |
107 | – | cellSitesOrt[0][1] = oneOverRoot3; |
108 | – | cellSitesOrt[0][2] = oneOverRoot3; |
109 | – | |
110 | – | // Molecule 2 |
111 | – | cellSitesPos[1][0] = 0.0; |
112 | – | cellSitesPos[1][1] = cellLenOver2; |
113 | – | cellSitesPos[1][2] = cellLenOver2; |
114 | – | |
115 | – | cellSitesOrt[1][0] = -oneOverRoot3; |
116 | – | cellSitesOrt[1][1] = oneOverRoot3; |
117 | – | cellSitesOrt[1][2] = -oneOverRoot3; |
118 | – | |
119 | – | // Molecule 3 |
120 | – | cellSitesPos[2][0] = cellLenOver2; |
121 | – | cellSitesPos[2][1] = cellLenOver2; |
122 | – | cellSitesPos[2][2] = 0.0; |
123 | – | |
124 | – | cellSitesOrt[2][0] = oneOverRoot3; |
125 | – | cellSitesOrt[2][1] = -oneOverRoot3; |
126 | – | cellSitesOrt[2][2] = -oneOverRoot3; |
127 | – | |
128 | – | // Molecule 4 |
129 | – | |
130 | – | cellSitesPos[3][0] = cellLenOver2; |
131 | – | cellSitesPos[3][1] = 0.0; |
132 | – | cellSitesPos[3][2] = cellLenOver2; |
133 | – | |
134 | – | cellSitesOrt[3][0] = -oneOverRoot3; |
135 | – | cellSitesOrt[3][1] = oneOverRoot3; |
136 | – | cellSitesOrt[3][2] = oneOverRoot3; |
58 | } | |
138 | – | |
139 | – | } |
– | Removed lines |
+ | Added lines |
< | Changed lines |
> | Changed lines |