ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-1.0/libmdtools/OtherVisitor.hpp
Revision: 1334
Committed: Fri Jul 16 18:58:03 2004 UTC (19 years, 11 months ago) by gezelter
File size: 3231 byte(s)
Log Message:
Initial import of OOPSE-1.0 source tree

File Contents

# Content
1 #ifndef _OTHERVISITOR_H_
2 #define _OTHERVISITOR_H_
3 #include <set>
4 #include <string>
5 #include <vector>
6
7 #include "BaseVisitor.hpp"
8 #include "StuntDouble.hpp"
9 using namespace std;
10
11 //IgnoreVisitor will turn on the ignoring flag of the stuntdouble
12 class IgnoreVisitor : public BaseVisitor{
13 public:
14 IgnoreVisitor() : BaseVisitor() {visitorName = "IgnoreVisitor";}
15
16 virtual void visit(Atom* atom);
17 virtual void visit(DirectionalAtom* datom);
18 virtual void visit(RigidBody* rb);
19
20 virtual const string toString();
21
22 void addIgnoreType(const string& type) {itList.insert(type);}
23
24 protected:
25 bool isIgnoreType(const string& name);
26 void internalVisit(StuntDouble* sd);
27 set<string> itList; //ignore type list;
28 };
29
30
31 class WrappingVisitor : public BaseVisitor{
32 public:
33 WrappingVisitor(SimInfo* info) : BaseVisitor() {
34 this->info = info;
35 visitorName = "WrappingVisitor";
36 }
37 virtual void visit(Atom* atom);
38 virtual void visit(DirectionalAtom* datom);
39 virtual void visit(RigidBody* rb);
40
41 virtual const string toString();
42
43 protected:
44 void internalVisit(StuntDouble* sd);
45 SimInfo* info;
46 };
47
48
49 class IntVec3 {
50 public:
51 IntVec3(){}
52 IntVec3(int i, int j, int k){
53 vec[0] = i;
54 vec[1] = j;
55 vec[2] = k;
56 }
57
58 int vec[3];
59 int& operator[](int index) {return vec[index];}
60 };
61
62 class ReplicateVisitor : public BaseVisitor{
63 public:
64 ReplicateVisitor(SimInfo* info, IntVec3 opt);
65 virtual void visit(Atom* atom);
66 virtual void visit(DirectionalAtom* datom);
67 virtual void visit(RigidBody* rb);
68
69 virtual const string toString();
70 protected:
71 void internalVisit(StuntDouble* sd);
72 void replicate(vector<AtomInfo*>& infoList, AtomData* data, double boxM[3][3]);
73
74 private:
75 vector<IntVec3> dir;
76 SimInfo* info;
77 IntVec3 replicateOpt;
78 };
79
80 class XYZVisitor : public BaseVisitor{
81 public:
82 XYZVisitor(SimInfo* info, bool printDipole = true);
83
84 virtual void visit(Atom* atom);
85 virtual void visit(DirectionalAtom* datom);
86 virtual void visit(RigidBody* rb);
87
88 virtual const string toString();
89
90 void writeFrame(ostream& outStream);
91 void clear() {frame.clear();}
92
93 protected:
94 void internalVisit(StuntDouble* sd);
95 bool isIgnore(StuntDouble* sd);
96
97 private:
98 SimInfo* info;
99 vector<string> frame;
100 bool printDipole;
101 };
102
103
104 class PrepareVisitor : public BaseVisitor{
105 public:
106 PrepareVisitor() : BaseVisitor() {visitorName = "prepareVisitor";}
107
108 virtual void visit(Atom* atom) {internalVisit(atom);}
109 virtual void visit(DirectionalAtom* datom) {internalVisit((Atom*)datom);}
110 virtual void visit(RigidBody* rb) {internalVisit(rb);}
111
112 virtual const string toString();
113
114 protected:
115 void internalVisit(Atom* atom);
116 void internalVisit(RigidBody* rb);
117 };
118
119 class WaterTypeVisitor : public BaseVisitor{
120 public:
121 WaterTypeVisitor() ;
122 virtual void visit(Atom* atom) {}
123 virtual void visit(DirectionalAtom* datom) {}
124 virtual void visit(RigidBody* rb);
125
126 virtual const string toString();
127
128 private:
129 void replaceType(string& atomType);
130
131 set<string> waterTypeList;
132 };
133 #endif //_OTHERVISITOR_H_

Properties

Name Value
svn:executable *