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

File Contents

# Content
1 #include <iostream>
2 #include <fstream>
3 #include <string>
4
5 #include "SimSetup.hpp"
6 #include "Dump2XYZCmd.h"
7 #include "AtomVisitor.hpp"
8 #include "CompositeVisitor.hpp"
9 #include "RigidBodyVisitor.hpp"
10 #include "OtherVisitor.hpp"
11 #include "ZconsVisitor.hpp"
12
13 using namespace std;
14
15 int main(int argc, char* argv[]){
16 gengetopt_args_info args_info;
17 string dumpFileName;
18 string bassFileName;
19 char inFileName[2002];
20 string xyzFileName;
21 SimInfo* info;
22 SimSetup startMe;
23 DumpReader* dumpReader;
24 ofstream xyzStream;
25 int nframes;
26 Molecule* mol;
27 vector<StuntDouble*> integrableObjects;
28 vector<StuntDouble*>::iterator iter;
29 vector<RigidBody*> myRigidBodies;
30 vector<RigidBody*>::iterator rbIter;
31
32 CompositeVisitor* compositeVisitor;
33 SSDAtomVisitor* ssdVisitor;
34 DefaultAtomVisitor* defaultAtomVisitor;
35 LipidHeadVisitor* lipidVisitor;
36 RBCOMVisitor* rbCOMVisitor;
37 ReplicateVisitor* replicateVisitor;
38 WrappingVisitor* wrappingVisitor;
39 IgnoreVisitor* ignoreVisitor;
40 XYZVisitor* xyzVisitor;
41 ZConsVisitor* zconsVisitor;
42 PrepareVisitor* prepareVisitor;
43 WaterTypeVisitor* waterTypeVisitor;
44
45 //parse the command line option
46 if (cmdline_parser (argc, argv, &args_info) != 0)
47 exit(1) ;
48
49
50 //get the dumpfile name and bass file name
51 if (args_info.input_given){
52 dumpFileName = args_info.input_arg;
53 }
54 else{
55 cerr << "Does not have input file name" << endl;
56 exit(1);
57 }
58 bassFileName = dumpFileName;
59 bassFileName = bassFileName.substr(0, bassFileName.rfind(".")) + ".bass";
60
61 if (args_info.output_given){
62 xyzFileName = args_info.output_arg;
63 }
64 else{
65 xyzFileName = dumpFileName;
66 xyzFileName = xyzFileName.substr(0, xyzFileName.rfind(".")) + ".xyz";
67 }
68
69 //parse bass file and set up the system
70 info = new SimInfo();
71 startMe.setSimInfo(info );
72
73 strcpy(inFileName, bassFileName.c_str() );
74 startMe.parseFile( inFileName );
75
76 startMe.createSim();
77
78
79 //creat visitor list
80 compositeVisitor = new CompositeVisitor();
81
82 //creat ignore visitor
83 if(args_info.ignore_given ||args_info.water_flag){
84
85 ignoreVisitor = new IgnoreVisitor();
86
87 for(int i = 0; i < args_info.ignore_given; i++)
88 ignoreVisitor->addIgnoreType(args_info.ignore_arg[i]);
89
90 //ignore water
91 if(args_info.water_flag){
92 ignoreVisitor->addIgnoreType("SSD");
93 ignoreVisitor->addIgnoreType("SSD1");
94 ignoreVisitor->addIgnoreType("SSD_E");
95 ignoreVisitor->addIgnoreType("SSD_RF");
96 ignoreVisitor->addIgnoreType("TIP3P_RB_0");
97 ignoreVisitor->addIgnoreType("TIP4P_RB_0");
98 ignoreVisitor->addIgnoreType("TIP5P_RB_0");
99 ignoreVisitor->addIgnoreType("SPCE_RB_0");
100 ignoreVisitor->addIgnoreType("DPD_RB_0");
101 }
102
103 compositeVisitor->addVisitor(ignoreVisitor, 1000);
104 }
105
106 //creat RigidBody Visitor
107 if(args_info.rigidbody_flag){
108 rbCOMVisitor = new RBCOMVisitor(info);
109 compositeVisitor->addVisitor(rbCOMVisitor, 900);
110 }
111 //creat RigidBody Visitor
112 //lipidVisitor = new LipidHeadVisitor(info);
113
114 //adding names of lipid head group
115 //lipidVisitor->addLipidHeadName("PC_RB_0");
116 //lipidVisitor->addLipidHeadName("PE_RB_0");
117
118 //compositeVisitor->addVisitor(lipidVisitor, 900);
119
120 //creat SSD atom visitor
121 ssdVisitor = new SSDAtomVisitor(info);
122 compositeVisitor->addVisitor(ssdVisitor, 800);
123
124 //creat default atom visitor
125 defaultAtomVisitor = new DefaultAtomVisitor(info);
126 compositeVisitor->addVisitor(defaultAtomVisitor, 700);
127
128 //creat waterType visitor
129 if(args_info.watertype_flag){
130 waterTypeVisitor = new WaterTypeVisitor;
131 compositeVisitor->addVisitor(waterTypeVisitor, 600);
132 }
133
134 //create ZconsVisitor
135 if(args_info.zconstraint_flag){
136
137 zconsVisitor = new ZConsVisitor(info);
138
139 if(zconsVisitor->haveZconsMol())
140 compositeVisitor->addVisitor(zconsVisitor, 500);
141 else
142 delete zconsVisitor;
143 }
144
145 //creat wrapping visitor
146
147 if(args_info.periodicBox_flag){
148 wrappingVisitor = new WrappingVisitor(info);
149 compositeVisitor->addVisitor(wrappingVisitor, 400);
150 }
151
152 //creat replicate visitor
153 if(args_info.repeatX_given > 0 || args_info.repeatY_given > 0 ||args_info.repeatY_given > 0){
154 IntVec3 replicateOpt(args_info.repeatX_arg, args_info.repeatY_arg, args_info.repeatZ_arg);
155 replicateVisitor = new ReplicateVisitor(info, replicateOpt);
156 compositeVisitor->addVisitor(replicateVisitor, 300);
157 }
158
159 //creat xyzVisitor
160 xyzVisitor = new XYZVisitor(info);
161 compositeVisitor->addVisitor(xyzVisitor, 200);
162
163 cout << compositeVisitor->toString();
164
165 //creat prepareVisitor
166 prepareVisitor = new PrepareVisitor();
167
168 //open dump file
169 dumpReader = new DumpReader(dumpFileName.c_str());
170 nframes = dumpReader->getNframes();
171
172 xyzStream .open(xyzFileName.c_str());
173
174 for (int i = 0; i < nframes; i += args_info.frame_arg){
175 dumpReader->readFrame(info, i);
176
177 mol = info->molecules;
178
179 //update atoms of rigidbody
180 for(int j = 0; j < info->n_mol; j++){
181 myRigidBodies = mol[j].getMyRigidBodies();
182
183 for(rbIter = myRigidBodies.begin(); rbIter != myRigidBodies.end(); ++rbIter)
184 (*rbIter)->updateAtoms();
185 }
186
187
188 //prepare visit
189 for(int j = 0; j < info->n_mol; j++){
190 integrableObjects = mol[j].getIntegrableObjects();
191
192 for(iter = integrableObjects.begin(); iter != integrableObjects.end(); ++iter)
193 (*iter)->accept(prepareVisitor);
194 }
195
196 //update visitor
197 compositeVisitor->update();
198
199 //visit stuntdouble
200 for(int j = 0; j < info->n_mol; j++){
201 integrableObjects = mol[j].getIntegrableObjects();
202
203 for(iter = integrableObjects.begin(); iter != integrableObjects.end(); ++iter)
204 (*iter)->accept(compositeVisitor);
205 }
206
207 xyzVisitor->writeFrame(xyzStream);
208 xyzVisitor->clear();
209
210 }//end for (int i = 0; i < nframes; i += args_info.frame_arg)
211
212 xyzStream.close();
213
214
215 delete compositeVisitor;
216 delete info;
217
218
219 }

Properties

Name Value
svn:executable *