| 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 | < | CubicLattice::CubicLattice(){ | 
| 48 | < | latticeParam = 1.0; | 
| 49 | < |  | 
| 51 | < | cellLen[0] = latticeParam; | 
| 52 | < | cellLen[1] = latticeParam; | 
| 53 | < | cellLen[2] = latticeParam; | 
| 54 | < |  | 
| 55 | < | } | 
| 47 | > | latticePos.resize(nCellSites); | 
| 48 | > |  | 
| 49 | > | for( int i=0;i < nCellSites;i++){ | 
| 50 |  |  | 
| 51 | < | std::vector<double> CubicLattice::getLatticeConstant(){ | 
| 52 | < | std::vector<double> lc; | 
| 53 | < |  | 
| 60 | < | lc.push_back(cellLen.x()); | 
| 61 | < | return lc; | 
| 62 | < | } | 
| 63 | < |  | 
| 64 | < | void CubicLattice::setLatticeConstant(const  std::vector<double>& lc){ | 
| 65 | < |  | 
| 66 | < | if(lc.size() < 1){ | 
| 67 | < | std::cerr << "CubicLattice::setLatticeConstant Error: the size of lattice constant vector  is 0" << std::endl; | 
| 68 | < | 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 |  | } | 
| 70 | – | else if (lc.size() > 1){ | 
| 71 | – | std::cerr << "CubicLattice::setLatticeConstant Warning: the size of lattice constant vector  is " << lc.size() << std::endl; | 
| 72 | – | } | 
| 73 | – |  | 
| 74 | – | latticeParam = lc[0]; | 
| 75 | – |  | 
| 76 | – | cellLen[0] = latticeParam; | 
| 77 | – | cellLen[1] = latticeParam; | 
| 78 | – | cellLen[2] = latticeParam; | 
| 79 | – |  | 
| 80 | – | update(); | 
| 81 | – | } | 
| 55 |  |  | 
| 83 | – | FCCLattice::FCCLattice() : CubicLattice(){ | 
| 84 | – | nCellSites = 4; | 
| 85 | – | cellSitesPos.resize(nCellSites); | 
| 86 | – | cellSitesOrt.resize(nCellSites); | 
| 87 | – | update(); | 
| 88 | – |  | 
| 56 |  | } | 
| 57 |  |  | 
| 91 | – | void FCCLattice::update(){ | 
| 92 | – |  | 
| 93 | – | double cellLenOver2; | 
| 94 | – | double oneOverRoot3; | 
| 95 | – |  | 
| 96 | – | cellLenOver2  = 0.5 * latticeParam; | 
| 97 | – | oneOverRoot3 = 1.0 / sqrt(3.0); | 
| 98 | – |  | 
| 99 | – | // Molecule 1 | 
| 100 | – | cellSitesPos[0][0] = 0.0; | 
| 101 | – | cellSitesPos[0][1] = 0.0; | 
| 102 | – | cellSitesPos[0][2] = 0.0; | 
| 103 | – |  | 
| 104 | – | cellSitesOrt[0][0] = oneOverRoot3; | 
| 105 | – | cellSitesOrt[0][1] = oneOverRoot3; | 
| 106 | – | cellSitesOrt[0][2] = oneOverRoot3; | 
| 107 | – |  | 
| 108 | – | // Molecule 2 | 
| 109 | – | cellSitesPos[1][0]   = 0.0; | 
| 110 | – | cellSitesPos[1][1]   = cellLenOver2; | 
| 111 | – | cellSitesPos[1][2]   = cellLenOver2; | 
| 112 | – |  | 
| 113 | – | cellSitesOrt[1][0] = -oneOverRoot3; | 
| 114 | – | cellSitesOrt[1][1] = oneOverRoot3; | 
| 115 | – | cellSitesOrt[1][2] = -oneOverRoot3; | 
| 116 | – |  | 
| 117 | – | // Molecule 3 | 
| 118 | – | cellSitesPos[2][0]   = cellLenOver2; | 
| 119 | – | cellSitesPos[2][1]   = cellLenOver2; | 
| 120 | – | cellSitesPos[2][2]   = 0.0; | 
| 121 | – |  | 
| 122 | – | cellSitesOrt[2][0] = oneOverRoot3; | 
| 123 | – | cellSitesOrt[2][1] = -oneOverRoot3; | 
| 124 | – | cellSitesOrt[2][2] = -oneOverRoot3; | 
| 125 | – |  | 
| 126 | – | // Molecule 4 | 
| 127 | – |  | 
| 128 | – | cellSitesPos[3][0]   = cellLenOver2; | 
| 129 | – | cellSitesPos[3][1]   = 0.0; | 
| 130 | – | cellSitesPos[3][2]   = cellLenOver2; | 
| 131 | – |  | 
| 132 | – | cellSitesOrt[3][0] = -oneOverRoot3; | 
| 133 | – | cellSitesOrt[3][1] = oneOverRoot3; | 
| 134 | – | cellSitesOrt[3][2] = oneOverRoot3; | 
| 58 |  | } | 
| 136 | – |  | 
| 137 | – | } |