ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libmdtools/RigidBodyVisitor.cpp
Revision: 1126
Committed: Tue Apr 20 05:39:38 2004 UTC (20 years, 2 months ago) by tim
File size: 3197 byte(s)
Log Message:
DUMP2XYZ 0.99 version

File Contents

# User Rev Content
1 tim 1118 #include "RigidBodyVisitor.hpp"
2     #include "RigidBody.hpp"
3     #include "MatVec3.h"
4    
5     void LipidHeadVisitor::visit(RigidBody* rb){
6     double pos[3];
7     double u[3] = {0, 0, 1};
8     double newVec[3];
9     GenericData* data;
10     AtomData* atomData;
11     AtomInfo* atomInfo;
12     bool haveAtomData;
13     double rotMatrix[3][3];
14    
15     if(!canVisit(rb->getType()))
16     return;
17    
18     rb->getPos(pos);
19     rb->getA(rotMatrix);
20     matVecMul3(rotMatrix, u, newVec);
21    
22     data = rb->getProperty("ATOMDATA");
23     if(data != NULL){
24    
25     atomData = dynamic_cast<AtomData*>(data);
26     if(atomData == NULL){
27     cerr << "can not get Atom Data from " << rb->getType() << endl;
28     atomData = new AtomData;
29     haveAtomData = false;
30     }
31     else
32     haveAtomData = true;
33     }
34     else{
35     atomData = new AtomData;
36     haveAtomData = false;
37     }
38    
39     atomInfo = new AtomInfo;
40     atomInfo->AtomType = "X";
41     atomInfo->pos[0] = pos[0];
42     atomInfo->pos[1] = pos[1];
43     atomInfo->pos[2] = pos[2];
44     atomInfo->dipole[0] = newVec[0];
45     atomInfo->dipole[1] = newVec[1];
46     atomInfo->dipole[2] = newVec[2];
47    
48     atomData->addAtomInfo(atomInfo);
49    
50     if(!haveAtomData){
51     atomData->setID("ATOMDATA");
52     rb->addProperty(atomData);
53     }
54    
55     }
56    
57     void LipidHeadVisitor::addLipidHeadName(const string& name){
58     lipidHeadName.insert(name);
59    
60     }
61    
62     bool LipidHeadVisitor::canVisit(const string& name){
63     return lipidHeadName.find(name) != lipidHeadName.end() ? true : false;
64    
65     }
66    
67     const string LipidHeadVisitor::toString(){
68     char buffer[65535];
69 tim 1119 string result;
70 tim 1118 set<string>::iterator i;
71    
72 tim 1119 sprintf(buffer ,"------------------------------------------------------------------\n");
73     result += buffer;
74    
75     sprintf(buffer ,"Visitor name: %s\n", visitorName.c_str());
76     result += buffer;
77 tim 1118
78     //print the ignore type list
79 tim 1119 sprintf(buffer , "lipidHeadName list contains below types:\n");
80     result += buffer;
81 tim 1118
82 tim 1119 for(i = lipidHeadName.begin(); i != lipidHeadName.end(); ++i){
83     sprintf(buffer ,"%s\t", i->c_str());
84     result += buffer;
85     }
86 tim 1118
87 tim 1119 sprintf(buffer ,"\n");
88     result += buffer;
89 tim 1118
90 tim 1119 sprintf(buffer ,"------------------------------------------------------------------\n");
91     result += buffer;
92    
93     return result;
94    
95     }
96 tim 1126
97     void RBCOMVisitor::visit(RigidBody* rb){
98     AtomData* atomData;
99     AtomInfo* atomInfo;
100     double pos[3];
101    
102     rb->getPos(pos);
103     atomInfo = new AtomInfo;
104     atomInfo->AtomType = "X";
105     atomInfo->pos[0] = pos[0];
106     atomInfo->pos[1] = pos[1];
107     atomInfo->pos[2] = pos[2];
108     atomInfo->dipole[0] = 0;
109     atomInfo->dipole[1] = 0;
110     atomInfo->dipole[2] = 0;
111    
112     atomData = new AtomData;
113     atomData->setID("ATOMDATA");
114     atomData->addAtomInfo(atomInfo);
115    
116     rb->addProperty(atomData);
117     }
118    
119     const string RBCOMVisitor::toString(){
120     char buffer[65535];
121     string result;
122    
123     sprintf(buffer ,"------------------------------------------------------------------\n");
124     result += buffer;
125    
126     sprintf(buffer ,"Visitor name: %s\n", visitorName.c_str());
127     result += buffer;
128    
129     //print the ignore type list
130     sprintf(buffer , "Visitor Description: add a pseudo atom at the center of the mass of the rigidbody\n");
131     result += buffer;
132    
133     sprintf(buffer ,"------------------------------------------------------------------\n");
134     result += buffer;
135    
136     return result;
137    
138     }
139    

Properties

Name Value
svn:executable *