ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/branches/new_design/OOPSE-3.0/src/applications/simpleBuilder/Lattice.cpp
Revision: 1891
Committed: Wed Dec 15 22:34:41 2004 UTC (19 years, 7 months ago) by tim
File size: 2298 byte(s)
Log Message:
fix a bug in basic_ifstrstream

File Contents

# Content
1 #include "applications/simpleBuilder/Lattice.hpp"
2 #include "applications/simpleBuilder/LatticeFactory.hpp"
3 #include "applications/simpleBuilder/LatticeCreator.hpp"
4
5 namespace oopse {
6
7 static LatticeCreator<FCCLattice> *FCCLatticeCreator = new LatticeCreator<FCCLattice>(FCCLatticeType);
8
9 CubicLattice::CubicLattice(){
10 latticeParam = 1.0;
11
12 cellLen.x = latticeParam;
13 cellLen.y = latticeParam;
14 cellLen.z = latticeParam;
15
16 }
17
18 std::vector<double> CubicLattice::getLatticeConstant(){
19 std::vector<double> lc;
20
21 lc.push_back(cellLen.x);
22 return lc;
23 }
24
25 void CubicLattice::setLatticeConstant(const std::vector<double>& lc){
26
27 if(lc.size() < 1){
28 std::cerr << "CubicLattice::setLatticeConstant Error: the size of lattice constant vector is 0" << std::endl;
29 exit(1);
30 }
31 else if (lc.size() > 1){
32 std::cerr << "CubicLattice::setLatticeConstant Warning: the size of lattice constant vector is " << lc.size() << std::endl;
33 }
34
35 latticeParam = lc[0];
36
37 cellLen.x = latticeParam;
38 cellLen.y = latticeParam;
39 cellLen.z = latticeParam;
40
41 update();
42 }
43
44 FCCLattice::FCCLattice() : CubicLattice(){
45 nCellSites = 4;
46 cellSitesPos.resize(nCellSites);
47 cellSitesOrt.resize(nCellSites);
48 update();
49
50 }
51
52 void FCCLattice::update(){
53
54 double cellLenOver2;
55 double oneOverRoot3;
56
57 cellLenOver2 = 0.5 * latticeParam;
58 oneOverRoot3 = 1.0 / sqrt(3.0);
59
60 // Molecule 1
61 cellSitesPos[0].x = 0.0;
62 cellSitesPos[0].y = 0.0;
63 cellSitesPos[0].z = 0.0;
64
65 cellSitesOrt[0].x = oneOverRoot3;
66 cellSitesOrt[0].y = oneOverRoot3;
67 cellSitesOrt[0].z = oneOverRoot3;
68
69 // Molecule 2
70 cellSitesPos[1].x = 0.0;
71 cellSitesPos[1].y = cellLenOver2;
72 cellSitesPos[1].z = cellLenOver2;
73
74 cellSitesOrt[1].x = -oneOverRoot3;
75 cellSitesOrt[1].y = oneOverRoot3;
76 cellSitesOrt[1].z = -oneOverRoot3;
77
78 // Molecule 3
79 cellSitesPos[2].x = cellLenOver2;
80 cellSitesPos[2].y = cellLenOver2;
81 cellSitesPos[2].z = 0.0;
82
83 cellSitesOrt[2].x = oneOverRoot3;
84 cellSitesOrt[2].y = -oneOverRoot3;
85 cellSitesOrt[2].z = -oneOverRoot3;
86
87 // Molecule 4
88
89 cellSitesPos[3].x = cellLenOver2;
90 cellSitesPos[3].y = 0.0;
91 cellSitesPos[3].z = cellLenOver2;
92
93 cellSitesOrt[3].x = -oneOverRoot3;
94 cellSitesOrt[3].y = oneOverRoot3;
95 cellSitesOrt[3].z = oneOverRoot3;
96 }
97
98 }