ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-4/src/applications/staticProps/StaticProps.cpp
(Generate patch)

Comparing trunk/OOPSE-4/src/applications/staticProps/StaticProps.cpp (file contents):
Revision 2240 by tim, Thu May 26 22:45:00 2005 UTC vs.
Revision 3076 by chuckv, Fri Nov 10 18:45:29 2006 UTC

# Line 56 | Line 56
56   #include "applications/staticProps/GofAngle2.hpp"
57   #include "applications/staticProps/GofXyz.hpp"
58   #include "applications/staticProps/P2OrderParameter.hpp"
59 + #include "applications/staticProps/BondOrderParameter.hpp"
60 + #include "applications/staticProps/RippleOP.hpp"
61 + #include "applications/staticProps/SCDOrderParameter.hpp"
62 + #include "applications/staticProps/DensityPlot.hpp"
63 + #include "applications/staticProps/RhoZ.hpp"
64 + #if defined(HAVE_FFTW_H) || defined(HAVE_DFFTW_H) || defined(HAVE_FFTW3_H)
65 + #include "applications/staticProps/Hxy.hpp"
66 + #endif
67 + #include "applications/staticProps/RhoR.hpp"
68  
60
69   using namespace oopse;
70  
71   int main(int argc, char* argv[]){
# Line 72 | Line 80 | int main(int argc, char* argv[]){
80      exit(1) ;
81    }
82  
83 <
76 <  //get the dumpfile name and meta-data file name
83 >  //get the dumpfile name
84    std::string dumpFileName = args_info.input_arg;
78
79  std::string mdFileName = dumpFileName.substr(0, dumpFileName.rfind(".")) + ".md";
80
81    
85    std::string sele1;
86    std::string sele2;
87 +  bool userSpecifiedSelect1;
88 +  bool userSpecifiedSelect2;
89  
90 +  // check the first selection argument, or set it to the environment
91 +  // variable, or failing that, set it to "select all"
92 +
93    if (args_info.sele1_given) {
94      sele1 = args_info.sele1_arg;
95 <  }else {
95 >  } else {
96      char*  sele1Env= getenv("OOPSE_SELE1");
97      if (sele1Env) {
98        sele1 = sele1Env;
99 <    }else {
100 <      sprintf( painCave.errMsg,
93 <               "neither --sele1 option nor $OOPSE_SELE1 is set");
94 <      painCave.severity = OOPSE_ERROR;
95 <      painCave.isFatal = 1;
96 <      simError();
99 >    } else {
100 >      sele1 = "select all";
101      }
102    }
103 <    
103 >
104 >  // check the second selection argument, or set it to the environment
105 >  // variable, or failing that, set it to "select all"
106 >  
107    if (args_info.sele2_given) {
108      sele2 = args_info.sele2_arg;
109 <  }else {
109 >  } else {
110      char* sele2Env = getenv("OOPSE_SELE2");
111      if (sele2Env) {
112        sele2 = sele2Env;            
113 <    } else {
113 >    } else {
114 >      sele2 = "select all";
115 >    }
116 >  }
117 >
118 >
119 >  // Problems if sele1 wasn't specified, but
120 > // if (!args_info.scd_given) {
121 > //       sprintf( painCave.errMsg,
122 > //                "neither --sele1 option nor $OOPSE_SELE1 is set");
123 > //       painCave.severity = OOPSE_ERROR;
124 > //       painCave.isFatal = 1;
125 > //       simError();
126 > //     }
127 > //   }
128 >
129 >  // Problems if sele1 wasn't specified
130 >
131 > //     if(!args_info.scd_given && !args_info.density_given && !args_info.slab_density_given)  {
132 > //       sprintf( painCave.errMsg,
133 > //                "neither --sele2 option nor $OOPSE_SELE2 is set");
134 > //       painCave.severity = OOPSE_ERROR;
135 > //       painCave.isFatal = 1;
136 > //       simError();        
137 > //     }
138 > //   }
139 >
140 >  bool batchMode;
141 >  if (args_info.scd_given){
142 >    if (args_info.sele1_given && args_info.sele2_given && args_info.sele3_given) {
143 >      batchMode = false;
144 >    } else if (args_info.molname_given && args_info.begin_given && args_info.end_given) {
145 >      if (args_info.begin_arg < 0 || args_info.end_arg < 0 || args_info.begin_arg > args_info.end_arg-2) {
146 >        sprintf( painCave.errMsg,
147 >                 "below conditions are not satisfied:\n"
148 >                 "0 <= begin && 0<= end && begin <= end-2\n");
149 >        painCave.severity = OOPSE_ERROR;
150 >        painCave.isFatal = 1;
151 >        simError();                    
152 >      }
153 >      batchMode = true;        
154 >    } else{
155        sprintf( painCave.errMsg,
156 <               "neither --sele2 option nor $OOPSE_SELE2 is set");
156 >               "either --sele1, --sele2, --sele3 are specified,"
157 >               " or --molname, --begin, --end are specified\n");
158        painCave.severity = OOPSE_ERROR;
159        painCave.isFatal = 1;
160        simError();        
161 +    
162      }
163    }
164  
165    //parse md file and set up the system
166    SimCreator creator;
167 <  SimInfo* info = creator.createSim(mdFileName);
167 >  std::cout << "dumpFile = " << dumpFileName << "\n";
168 >  SimInfo* info = creator.createSim(dumpFileName);
169  
170 <  double maxLen;
170 >  RealType maxLen;
171    if (args_info.length_given) {
172      maxLen = args_info.length_arg;
173    } else {
# Line 126 | Line 177 | int main(int argc, char* argv[]){
177  
178    StaticAnalyser* analyser;
179    if (args_info.gofr_given){
180 <    analyser= new GofR(info, dumpFileName, sele1, sele2, maxLen, args_info.nrbins_arg);        
180 >    analyser= new GofR(info, dumpFileName, sele1, sele2, maxLen,
181 >                       args_info.nbins_arg);        
182    } else if (args_info.r_theta_given) {
183 <    analyser  = new GofRTheta(info, dumpFileName, sele1, sele2, maxLen, args_info.nrbins_arg, args_info.nanglebins_arg);
183 >    analyser  = new GofRTheta(info, dumpFileName, sele1, sele2, maxLen,
184 >                              args_info.nbins_arg, args_info.nanglebins_arg);
185    } else if (args_info.r_omega_given) {
186 <    analyser  = new GofROmega(info, dumpFileName, sele1, sele2, maxLen, args_info.nrbins_arg, args_info.nanglebins_arg);
186 >    analyser  = new GofROmega(info, dumpFileName, sele1, sele2, maxLen,
187 >                              args_info.nbins_arg, args_info.nanglebins_arg);
188    } else if (args_info.theta_omega_given) {
189 <    analyser  = new GofAngle2(info, dumpFileName, sele1, sele2, args_info.nanglebins_arg);
189 >    analyser  = new GofAngle2(info, dumpFileName, sele1, sele2,
190 >                              args_info.nanglebins_arg);
191    } else if (args_info.gxyz_given) {
192      if (args_info.refsele_given) {
193 <      analyser= new GofXyz(info, dumpFileName, sele1, sele2,args_info.refsele_arg, maxLen, args_info.nrbins_arg);        
193 >      analyser= new GofXyz(info, dumpFileName, sele1, sele2,args_info.refsele_arg,
194 >                           maxLen, args_info.nbins_arg);        
195      } else {
196        sprintf( painCave.errMsg,
197                 "--refsele must set when --gxyz is used");
# Line 144 | Line 200 | int main(int argc, char* argv[]){
200        simError();  
201      }
202    } else if (args_info.p2_given) {
203 <      analyser  = new P2OrderParameter(info, dumpFileName, sele1, sele2);
203 >    analyser  = new P2OrderParameter(info, dumpFileName, sele1, sele2);
204 >  } else if (args_info.rp2_given){
205 >    analyser = new RippleOP(info, dumpFileName, sele1, sele2);
206 >  } else if (args_info.bo_given){
207 >    if (args_info.rcut_given) {
208 >      analyser = new BondOrderParameter(info, dumpFileName, sele1,
209 >                                        args_info.rcut_arg,
210 >                                        args_info.nbins_arg);
211 >    } else {
212 >      sprintf( painCave.errMsg,
213 >               "A cutoff radius (rcut) must be specified when calculating Bond Order Parameters");
214 >      painCave.severity = OOPSE_ERROR;
215 >      painCave.isFatal = 1;
216 >      simError();
217 >    }
218 >  } else if (args_info.scd_given) {
219 >    if (batchMode) {
220 >      analyser  = new SCDOrderParameter(info, dumpFileName, args_info.molname_arg,
221 >                                        args_info.begin_arg, args_info.end_arg);
222 >    } else{
223 >      std::string sele3 = args_info.sele3_arg;
224 >      analyser  = new SCDOrderParameter(info, dumpFileName, sele1, sele2, sele3);
225 >    }
226 >  }else if (args_info.density_given) {
227 >    analyser= new DensityPlot(info, dumpFileName, sele1, sele2, maxLen,
228 >                              args_info.nbins_arg);  
229 >  } else if (args_info.slab_density_given) {
230 >    Mat3x3d hmat = info->getSnapshotManager()->getCurrentSnapshot()->getHmat();
231 >    analyser = new RhoZ(info, dumpFileName, sele1, hmat(2, 2), args_info.nbins_arg);
232 > #if defined(HAVE_FFTW_H) || defined(HAVE_DFFTW_H) || defined(HAVE_FFTW3_H)
233 >  }else if (args_info.hxy_given) {
234 >    analyser = new Hxy(info, dumpFileName, sele1, args_info.nbins_x_arg,
235 >                       args_info.nbins_y_arg, args_info.nbins_arg);
236 > #endif
237 >  }else if (args_info.rho_r_given) {
238 >    if (args_info.radius_given){
239 >      analyser = new RhoR(info, dumpFileName, sele1, maxLen,args_info.nbins_arg,args_info.radius_arg);
240 >    }else{
241 >      sprintf( painCave.errMsg,
242 >               "A particle radius (radius) must be specified when calculating Rho(r)");
243 >      painCave.severity = OOPSE_ERROR;
244 >      painCave.isFatal = 1;
245 >      simError();
246 >    }
247    }
248 <    
248 >  
249    if (args_info.output_given) {
250      analyser->setOutputName(args_info.output_arg);
251    }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines