ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/branches/new_design/OOPSE-3.0/src/visitors/RigidBodyVisitor.cpp
(Generate patch)

Comparing:
trunk/OOPSE-3.0/src/visitors/RigidBodyVisitor.cpp (file contents), Revision 1625 by tim, Thu Oct 21 16:22:01 2004 UTC vs.
branches/new_design/OOPSE-3.0/src/visitors/RigidBodyVisitor.cpp (file contents), Revision 1701 by tim, Wed Nov 3 16:08:43 2004 UTC

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

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines