ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/utils/Dump2XYZ.cpp
Revision: 1119
Committed: Mon Apr 19 17:44:48 2004 UTC (20 years, 5 months ago) by tim
File size: 5473 byte(s)
Log Message:
Dump2XYZ is almost working except atoms in rigidbody are double counted

File Contents

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

Properties

Name Value
svn:executable *