ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/branches/new_design/OOPSE-2.0/src/visitors/RigidBodyVisitor.cpp
Revision: 1825
Committed: Thu Dec 2 04:55:10 2004 UTC (19 years, 8 months ago) by tim
File size: 3461 byte(s)
Log Message:
replace string by std::string

File Contents

# User Rev Content
1 tim 1825 #include "visitors/RigidBodyVisitor.hpp"
2    
3     #include "primitives/RigidBody.hpp"
4    
5     #include "math/MatVec3.h"
6    
7    
8    
9     namespace oopse {
10    
11    
12    
13     void LipidHeadVisitor::visit(RigidBody* rb){
14    
15     Vector3d pos;
16    
17     Vector3d u(0, 0, 1);
18    
19     Vector3d newVec;
20    
21     GenericData* data;
22    
23     AtomData* atomData;
24    
25     AtomInfo* atomInfo;
26    
27     bool haveAtomData;
28    
29     RotMat3x3d rotMatrix;
30    
31    
32    
33     if(!canVisit(rb->getType()))
34    
35     return;
36    
37    
38    
39     pos = rb->getPos();
40    
41     rotMatrix = rb->getA();
42    
43     //matVecMul3(rotMatrix, u, newVec);
44    
45     newVec = rotMatrix * u;
46    
47    
48    
49     data = rb->getPropertyByName("ATOMDATA");
50    
51     if(data != NULL){
52    
53    
54    
55     atomData = dynamic_cast<AtomData*>(data);
56    
57     if(atomData == NULL){
58    
59     cerr << "can not get Atom Data from " << rb->getType() << endl;
60    
61     atomData = new AtomData;
62    
63     haveAtomData = false;
64    
65     }
66    
67     else
68    
69     haveAtomData = true;
70    
71     }
72    
73     else{
74    
75     atomData = new AtomData;
76    
77     haveAtomData = false;
78    
79     }
80    
81    
82    
83     atomInfo = new AtomInfo;
84    
85     atomInfo->AtomType = "X";
86    
87     atomInfo->pos[0] = pos[0];
88    
89     atomInfo->pos[1] = pos[1];
90    
91     atomInfo->pos[2] = pos[2];
92    
93     atomInfo->dipole[0] = newVec[0];
94    
95     atomInfo->dipole[1] = newVec[1];
96    
97     atomInfo->dipole[2] = newVec[2];
98    
99    
100    
101     atomData->addAtomInfo(atomInfo);
102    
103    
104    
105     if(!haveAtomData){
106    
107     atomData->setID("ATOMDATA");
108    
109     rb->addProperty(atomData);
110    
111     }
112    
113    
114    
115     }
116    
117    
118    
119     void LipidHeadVisitor::addLipidHeadName(const string& name){
120    
121     lipidHeadName.insert(name);
122    
123    
124    
125     }
126    
127    
128    
129     bool LipidHeadVisitor::canVisit(const string& name){
130    
131     return lipidHeadName.find(name) != lipidHeadName.end() ? true : false;
132    
133    
134    
135     }
136    
137    
138    
139     const std::stringLipidHeadVisitor::toString(){
140    
141     char buffer[65535];
142    
143     std::stringresult;
144    
145     set<string>::iterator i;
146    
147    
148    
149     sprintf(buffer ,"------------------------------------------------------------------\n");
150    
151     result += buffer;
152    
153    
154    
155     sprintf(buffer ,"Visitor name: %s\n", visitorName.c_str());
156    
157     result += buffer;
158    
159    
160    
161     //print the ignore type list
162    
163     sprintf(buffer , "lipidHeadName list contains below types:\n");
164    
165     result += buffer;
166    
167    
168    
169     for(i = lipidHeadName.begin(); i != lipidHeadName.end(); ++i){
170    
171     sprintf(buffer ,"%s\t", i->c_str());
172    
173     result += buffer;
174    
175     }
176    
177    
178    
179     sprintf(buffer ,"\n");
180    
181     result += buffer;
182    
183    
184    
185     sprintf(buffer ,"------------------------------------------------------------------\n");
186    
187     result += buffer;
188    
189    
190    
191     return result;
192    
193    
194    
195     }
196    
197    
198    
199     void RBCOMVisitor::visit(RigidBody* rb){
200    
201     AtomData* atomData;
202    
203     AtomInfo* atomInfo;
204    
205     Vector3d pos;
206    
207    
208    
209     pos = rb->getPos();
210    
211     atomInfo = new AtomInfo;
212    
213     atomInfo->AtomType = "X";
214    
215     atomInfo->pos[0] = pos[0];
216    
217     atomInfo->pos[1] = pos[1];
218    
219     atomInfo->pos[2] = pos[2];
220    
221     atomInfo->dipole[0] = 0;
222    
223     atomInfo->dipole[1] = 0;
224    
225     atomInfo->dipole[2] = 0;
226    
227    
228    
229     atomData = new AtomData;
230    
231     atomData->setID("ATOMDATA");
232    
233     atomData->addAtomInfo(atomInfo);
234    
235    
236    
237     rb->addProperty(atomData);
238    
239     }
240    
241    
242    
243     const std::stringRBCOMVisitor::toString(){
244    
245     char buffer[65535];
246    
247     std::stringresult;
248    
249    
250    
251     sprintf(buffer ,"------------------------------------------------------------------\n");
252    
253     result += buffer;
254    
255    
256    
257     sprintf(buffer ,"Visitor name: %s\n", visitorName.c_str());
258    
259     result += buffer;
260    
261    
262    
263     //print the ignore type list
264    
265     sprintf(buffer , "Visitor Description: add a pseudo atom at the center of the mass of the rigidbody\n");
266    
267     result += buffer;
268    
269    
270    
271     sprintf(buffer ,"------------------------------------------------------------------\n");
272    
273     result += buffer;
274    
275    
276    
277     return result;
278    
279    
280    
281     }
282    
283    
284    
285    
286    
287     }//namespace oopse
288    

Properties

Name Value
svn:executable *