OpenMD 3.1
Molecular Dynamics in the Open
Loading...
Searching...
No Matches
StaticProps.cpp
1/*
2 * Copyright (c) 2004-present, The University of Notre Dame. All rights
3 * reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 *
8 * 1. Redistributions of source code must retain the above copyright notice,
9 * this list of conditions and the following disclaimer.
10 *
11 * 2. Redistributions in binary form must reproduce the above copyright notice,
12 * this list of conditions and the following disclaimer in the documentation
13 * and/or other materials provided with the distribution.
14 *
15 * 3. Neither the name of the copyright holder nor the names of its
16 * contributors may be used to endorse or promote products derived from
17 * this software without specific prior written permission.
18 *
19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
23 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29 * POSSIBILITY OF SUCH DAMAGE.
30 *
31 * SUPPORT OPEN SCIENCE! If you use OpenMD or its source code in your
32 * research, please cite the appropriate papers when you publish your
33 * work. Good starting points are:
34 *
35 * [1] Meineke, et al., J. Comp. Chem. 26, 252-271 (2005).
36 * [2] Fennell & Gezelter, J. Chem. Phys. 124, 234104 (2006).
37 * [3] Sun, Lin & Gezelter, J. Chem. Phys. 128, 234107 (2008).
38 * [4] Vardeman, Stocker & Gezelter, J. Chem. Theory Comput. 7, 834 (2011).
39 * [5] Kuang & Gezelter, Mol. Phys., 110, 691-701 (2012).
40 * [6] Lamichhane, Gezelter & Newman, J. Chem. Phys. 141, 134109 (2014).
41 * [7] Lamichhane, Newman & Gezelter, J. Chem. Phys. 141, 134110 (2014).
42 * [8] Bhattarai, Newman & Gezelter, Phys. Rev. B 99, 094106 (2019).
43 */
44
45#include <fstream>
46#include <iostream>
47#include <memory>
48#include <string>
49
50#include "StaticPropsCmd.hpp"
51#include "applications/staticProps/BOPofR.hpp"
52#include "applications/staticProps/BondAngleDistribution.hpp"
53#include "applications/staticProps/BondOrderParameter.hpp"
54#include "applications/staticProps/DensityPlot.hpp"
55#include "applications/staticProps/GofAngle2.hpp"
56#include "applications/staticProps/GofR.hpp"
57#include "applications/staticProps/GofRAngle.hpp"
58#include "applications/staticProps/GofRAngle2.hpp"
59#include "applications/staticProps/GofRZ.hpp"
60#include "applications/staticProps/GofXyz.hpp"
61#include "applications/staticProps/GofZ.hpp"
62#include "applications/staticProps/KirkwoodBuff.hpp"
63#include "applications/staticProps/NanoLength.hpp"
64#include "applications/staticProps/NanoVolume.hpp"
65#include "applications/staticProps/ObjectCount.hpp"
66#include "applications/staticProps/P2OrderParameter.hpp"
67#include "applications/staticProps/P2R.hpp"
68#include "applications/staticProps/PipeDensity.hpp"
69#include "applications/staticProps/RhoZ.hpp"
70#include "applications/staticProps/RippleOP.hpp"
71#include "applications/staticProps/SCDOrderParameter.hpp"
72#include "applications/staticProps/StaticAnalyser.hpp"
73#include "applications/staticProps/TwoDGofR.hpp"
74#include "applications/staticProps/pAngle.hpp"
75#include "brains/SimCreator.hpp"
76#include "brains/SimInfo.hpp"
77#include "io/DumpReader.hpp"
78#include "utils/simError.h"
79#if defined(HAVE_FFTW_H) || defined(HAVE_DFFTW_H) || defined(HAVE_FFTW3_H)
80#include "applications/staticProps/Hxy.hpp"
81#endif
82#include "applications/staticProps/AngleR.hpp"
83#include "applications/staticProps/ChargeDensityZ.hpp"
84#include "applications/staticProps/ChargeHistogram.hpp"
85#include "applications/staticProps/ChargeR.hpp"
86#include "applications/staticProps/ChargeZ.hpp"
87#include "applications/staticProps/CoordinationNumber.hpp"
88#include "applications/staticProps/CurrentDensity.hpp"
89#include "applications/staticProps/DensityHistogram.hpp"
90#include "applications/staticProps/DipoleOrientation.hpp"
91#include "applications/staticProps/Field.hpp"
92#include "applications/staticProps/HBondGeometric.hpp"
93#include "applications/staticProps/HBondR.hpp"
94#include "applications/staticProps/HBondRvol.hpp"
95#include "applications/staticProps/HBondZ.hpp"
96#include "applications/staticProps/HBondZvol.hpp"
97#include "applications/staticProps/Kirkwood.hpp"
98#include "applications/staticProps/MassDensityR.hpp"
99#include "applications/staticProps/MassDensityZ.hpp"
100#include "applications/staticProps/MomentumHistogram.hpp"
101#include "applications/staticProps/MultipoleSum.hpp"
102#include "applications/staticProps/NitrileFrequencyMap.hpp"
103#include "applications/staticProps/NumberR.hpp"
104#include "applications/staticProps/NumberZ.hpp"
105#include "applications/staticProps/OrderParameterProbZ.hpp"
106#include "applications/staticProps/PositionZ.hpp"
108#include "applications/staticProps/RNEMDStats.hpp"
109#include "applications/staticProps/RhoR.hpp"
110#include "applications/staticProps/SurfaceDiffusion.hpp"
111#include "applications/staticProps/TetrahedralityHBMatrix.hpp"
112#include "applications/staticProps/TetrahedralityParam.hpp"
113#include "applications/staticProps/TetrahedralityParamDens.hpp"
114#include "applications/staticProps/TetrahedralityParamR.hpp"
115#include "applications/staticProps/TetrahedralityParamXYZ.hpp"
116#include "applications/staticProps/TetrahedralityParamZ.hpp"
117#include "applications/staticProps/TranslationalOrderParamZ.hpp"
118#include "applications/staticProps/VelocityZ.hpp"
119
120using namespace OpenMD;
121
122int main(int argc, char* argv[]) {
123 gengetopt_args_info args_info;
124
125 // parse the command line option
126 if (cmdline_parser(argc, argv, &args_info) != 0) { exit(1); }
127
128 // get the dumpfile name
129 std::string dumpFileName = args_info.input_arg;
130 std::string sele1;
131 std::string sele2;
132 std::string sele3;
133 std::string comsele;
134
135 // check the first selection argument, or set it to the environment
136 // variable, or failing that, set it to "select all"
137
138 if (args_info.sele1_given) {
139 sele1 = args_info.sele1_arg;
140 } else {
141 char* sele1Env = getenv("SELECTION1");
142 if (sele1Env) {
143 sele1 = sele1Env;
144 } else {
145 sele1 = "select all";
146 }
147 }
148
149 // check the second selection argument, or set it to the environment
150 // variable, or failing that, set it to the first selection
151
152 if (args_info.sele2_given) {
153 sele2 = args_info.sele2_arg;
154 } else {
155 char* sele2Env = getenv("SELECTION2");
156 if (sele2Env) {
157 sele2 = sele2Env;
158 } else {
159 // If sele2 is not specified, then the default behavior
160 // should be what is already intended for sele1
161 sele2 = sele1;
162 }
163 }
164
165 // check the third selection argument, which is only set if
166 // requested by the user
167
168 if (args_info.sele3_given) sele3 = args_info.sele3_arg;
169
170 // check the comsele selection argument, which is only set if
171 // requested by the user
172
173 if (args_info.comsele_given) comsele = args_info.comsele_arg;
174
175 bool batchMode(false);
176 if (args_info.scd_given) {
177 if (args_info.sele1_given && args_info.sele2_given &&
178 args_info.sele3_given) {
179 batchMode = false;
180 } else if (args_info.molname_given && args_info.begin_given &&
181 args_info.end_given) {
182 if (args_info.begin_arg < 0 || args_info.end_arg < 0 ||
183 args_info.begin_arg > args_info.end_arg - 2) {
184 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
185 "below conditions are not satisfied:\n"
186 "0 <= begin && 0<= end && begin <= end-2\n");
187 painCave.severity = OPENMD_ERROR;
188 painCave.isFatal = 1;
189 simError();
190 }
191 batchMode = true;
192 } else {
193 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
194 "either --sele1, --sele2, --sele3 are specified,"
195 " or --molname, --begin, --end are specified\n");
196 painCave.severity = OPENMD_ERROR;
197 painCave.isFatal = 1;
198 simError();
199 }
200 }
201
202 // parse md file and set up the system
203 SimCreator creator;
204 SimInfo* info = creator.createSim(dumpFileName);
205
206 // important step until we move this into SimCreator:
207 info->update();
208
209 // convert privilegedAxis to corresponding integer
210 // x axis -> 0
211 // y axis -> 1
212 // z axis -> 2 (default)
213
214 int privilegedAxis;
215 switch (args_info.privilegedAxis_arg) {
216 case privilegedAxis_arg_x:
217 privilegedAxis = 0;
218 break;
219 case privilegedAxis_arg_y:
220 privilegedAxis = 1;
221 break;
222 case privilegedAxis_arg_z:
223 default:
224 privilegedAxis = 2;
225 break;
226 }
227
228 int privilegedAxis2;
229 switch (args_info.privilegedAxis2_arg) {
230 case privilegedAxis2_arg_x:
231 privilegedAxis2 = 0;
232 break;
233 case privilegedAxis2_arg_y:
234 privilegedAxis2 = 1;
235 break;
236 case privilegedAxis2_arg_z:
237 default:
238 privilegedAxis2 = 2;
239 break;
240 }
241
242 RealType maxLen;
243 RealType zmaxLen(0.0);
244 if (args_info.length_given) {
245 maxLen = args_info.length_arg;
246 if (args_info.zlength_given) { zmaxLen = args_info.zlength_arg; }
247 } else {
249 // The maximum length for radial distribution functions is actually half
250 // the smallest box length
251 maxLen = std::min(std::min(hmat(0, 0), hmat(1, 1)), hmat(2, 2)) / 2.0;
252 // This should be the extent of the privileged axis:
253 zmaxLen = hmat(privilegedAxis, privilegedAxis);
254 }
255
256 int nanglebins, nrbins;
257 // in case we override nbins with nrbins:
258 if (args_info.nrbins_given) {
259 nrbins = args_info.nrbins_arg;
260 } else {
261 nrbins = args_info.nbins_arg;
262 }
263 // in case we override nbins with nanglebins:
264 if (args_info.nanglebins_given) {
265 nanglebins = args_info.nanglebins_arg;
266 } else {
267 nanglebins = args_info.nbins_arg;
268 }
269
270 RealType binWidth = args_info.binWidth_arg;
271
272 // override default vander waals radius for fictious atoms in a model
273 RealType vRadius;
274 if (args_info.v_radius_given) {
275 vRadius = args_info.v_radius_arg;
276 } else {
277 vRadius = 1.52;
278 }
279
280 int momentum_type;
281 switch (args_info.momentum_arg) {
282 case momentum_arg_P:
283 momentum_type = 0;
284 break;
285 case momentum_arg_J:
286 default:
287 momentum_type = 1;
288 break;
289 }
290
291 int momentum_comp;
292 switch (args_info.component_arg) {
293 case component_arg_x:
294 momentum_comp = 0;
295 break;
296 case component_arg_y:
297 momentum_comp = 1;
298 break;
299 case component_arg_z:
300 default:
301 momentum_comp = 2;
302 break;
303 }
304
305 std::unique_ptr<StaticAnalyser> analyser {nullptr};
306
307 if (args_info.gofr_given) {
308 analyser = std::make_unique<GofR>(info, dumpFileName, sele1, sele2, maxLen,
309 nrbins);
310 } else if (args_info.gofz_given) {
311 analyser =
312 std::make_unique<GofZ>(info, dumpFileName, sele1, sele2, maxLen,
313 zmaxLen, args_info.nbins_arg, privilegedAxis);
314 } else if (args_info.r_z_given) {
315 analyser = std::make_unique<GofRZ>(info, dumpFileName, sele1, sele2, maxLen,
316 zmaxLen, nrbins, args_info.nbins_z_arg,
317 privilegedAxis);
318 } else if (args_info.r_theta_given) {
319 if (args_info.sele3_given)
320 analyser = std::make_unique<GofRTheta>(info, dumpFileName, sele1, sele2,
321 sele3, maxLen, nrbins, nanglebins);
322 else
323 analyser = std::make_unique<GofRTheta>(info, dumpFileName, sele1, sele2,
324 maxLen, nrbins, nanglebins);
325 } else if (args_info.r_omega_given) {
326 if (args_info.sele3_given)
327 analyser = std::make_unique<GofROmega>(info, dumpFileName, sele1, sele2,
328 sele3, maxLen, nrbins, nanglebins);
329 else
330 analyser = std::make_unique<GofROmega>(info, dumpFileName, sele1, sele2,
331 maxLen, nrbins, nanglebins);
332 } else if (args_info.theta_omega_given) {
333 if (args_info.sele3_given)
334 analyser = std::make_unique<GofAngle2>(info, dumpFileName, sele1, sele2,
335 sele3, nanglebins);
336 else
337 analyser = std::make_unique<GofAngle2>(info, dumpFileName, sele1, sele2,
338 nanglebins);
339 } else if (args_info.r_theta_omega_given) {
340 if (args_info.sele3_given)
341 analyser = std::make_unique<GofRAngle2>(
342 info, dumpFileName, sele1, sele2, sele3, maxLen, nrbins, nanglebins);
343 else
344 analyser = std::make_unique<GofRAngle2>(info, dumpFileName, sele1, sele2,
345 maxLen, nrbins, nanglebins);
346 } else if (args_info.gxyz_given) {
347 if (args_info.refsele_given) {
348 analyser = std::make_unique<GofXyz>(info, dumpFileName, sele1, sele2,
349 args_info.refsele_arg, maxLen,
350 args_info.nbins_arg);
351 } else {
352 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
353 "--refsele must set when --gxyz is used");
354 painCave.severity = OPENMD_ERROR;
355 painCave.isFatal = 1;
356 simError();
357 }
358 } else if (args_info.twodgofr_given) {
359 if (args_info.dz_given) {
360 analyser = std::make_unique<TwoDGofR>(info, dumpFileName, sele1, sele2,
361 maxLen, args_info.dz_arg, nrbins);
362 } else {
363 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
364 "A slab width (dz) must be specified when calculating TwoDGofR");
365 painCave.severity = OPENMD_ERROR;
366 painCave.isFatal = 1;
367 simError();
368 }
369 } else if (args_info.kirkwood_buff_given) {
370 if (args_info.sele1_given && args_info.sele2_given) {
371 analyser = std::make_unique<KirkwoodBuff>(info, dumpFileName, sele1,
372 sele2, maxLen, nrbins);
373 } else {
374 snprintf(
375 painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
376 "Two selection scripts (--sele1 and --sele2) must be specified when "
377 "calculating Kirkwood Buff integrals");
378 painCave.severity = OPENMD_ERROR;
379 painCave.isFatal = 1;
380 simError();
381 }
382 } else if (args_info.p2_given) {
383 if (args_info.sele1_given) {
384 if (args_info.sele2_given) {
385 analyser = std::make_unique<P2OrderParameter>(info, dumpFileName, sele1,
386 sele2);
387 } else if (args_info.seleoffset_given) {
388 analyser = std::make_unique<P2OrderParameter>(info, dumpFileName, sele1,
389 args_info.seleoffset_arg);
390 } else {
391 analyser =
392 std::make_unique<P2OrderParameter>(info, dumpFileName, sele1);
393 }
394 } else {
395 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
396 "At least one selection script (--sele1) must be specified when "
397 "calculating P2 order parameters");
398 painCave.severity = OPENMD_ERROR;
399 painCave.isFatal = 1;
400 simError();
401 }
402 } else if (args_info.rp2_given) {
403 analyser = std::make_unique<RippleOP>(info, dumpFileName, sele1, sele2);
404 } else if (args_info.bo_given) {
405 if (args_info.rcut_given) {
406 analyser = std::make_unique<BondOrderParameter>(
407 info, dumpFileName, sele1, args_info.rcut_arg, args_info.nbins_arg);
408 } else {
409 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
410 "A cutoff radius (rcut) must be specified when calculating Bond "
411 "Order "
412 "Parameters");
413 painCave.severity = OPENMD_ERROR;
414 painCave.isFatal = 1;
415 simError();
416 }
417 } else if (args_info.multipole_given) {
418 analyser = std::make_unique<MultipoleSum>(info, dumpFileName, sele1, maxLen,
419 args_info.nbins_arg);
420
421 } else if (args_info.tet_param_given) {
422 if (args_info.rcut_given) {
423 analyser = std::make_unique<TetrahedralityParam>(
424 info, dumpFileName, sele1, args_info.rcut_arg, args_info.nbins_arg);
425 } else {
426 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
427 "A cutoff radius (rcut) must be specified when calculating "
428 "Tetrahedrality "
429 "Parameters");
430 painCave.severity = OPENMD_ERROR;
431 painCave.isFatal = 1;
432 simError();
433 }
434 } else if (args_info.tet_param_z_given) {
435 if (args_info.rcut_given) {
436 analyser = std::make_unique<TetrahedralityParamZ>(
437 info, dumpFileName, sele1, sele2, args_info.rcut_arg,
438 args_info.nbins_arg, privilegedAxis);
439 } else {
440 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
441 "A cutoff radius (rcut) must be specified when calculating "
442 "Tetrahedrality "
443 "Parameters");
444 painCave.severity = OPENMD_ERROR;
445 painCave.isFatal = 1;
446 simError();
447 }
448 } else if (args_info.tet_param_r_given) {
449 if (args_info.rcut_given) {
450 if (args_info.sele3_given) {
451 analyser = std::make_unique<TetrahedralityParamR>(
452 info, dumpFileName, sele1, sele2, sele3, args_info.rcut_arg, maxLen,
453 nrbins);
454 } else {
455 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
456 "Selection3 (--sele3) must be given when calculating "
457 "Tetrahedrality Parameter Qk(r)");
458 painCave.severity = OPENMD_ERROR;
459 painCave.isFatal = 1;
460 simError();
461 }
462 } else {
463 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
464 "A cutoff radius (rcut) must be specified when calculating "
465 "Tetrahedrality "
466 "Parameters");
467 painCave.severity = OPENMD_ERROR;
468 painCave.isFatal = 1;
469 simError();
470 }
471 } else if (args_info.tet_param_dens_given) {
472 if (args_info.rcut_given) {
473 analyser = std::make_unique<TetrahedralityParamDens>(
474 info, dumpFileName, sele1, sele2, args_info.rcut_arg,
475 args_info.nbins_arg);
476 } else {
477 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
478 "A cutoff radius (rcut) must be specified when calculating "
479 "Tetrahedrality "
480 "Parameters");
481 painCave.severity = OPENMD_ERROR;
482 painCave.isFatal = 1;
483 simError();
484 }
485 } else if (args_info.tet_hb_given) {
486 if (args_info.rcut_given) {
487 analyser = std::make_unique<TetrahedralityHBMatrix>(
488 info, dumpFileName, sele1, args_info.rcut_arg, args_info.OOcut_arg,
489 args_info.thetacut_arg, args_info.OHcut_arg, args_info.nbins_arg);
490 } else {
491 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
492 "A cutoff radius (rcut) must be specified when calculating "
493 " Tetrahedrality Hydrogen Bonding Matrix");
494 painCave.severity = OPENMD_ERROR;
495 painCave.isFatal = 1;
496 simError();
497 }
498 } else if (args_info.tet_param_xyz_given) {
499 if (!args_info.rcut_given) {
500 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
501 "A cutoff radius (rcut) must be specified when calculating"
502 " Tetrahedrality Parameters");
503 painCave.severity = OPENMD_ERROR;
504 painCave.isFatal = 1;
505 simError();
506 }
507 if (!args_info.voxelSize_given) {
508 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
509 "A voxel size must be specified when calculating"
510 " volume-resolved Tetrahedrality Parameters");
511 painCave.severity = OPENMD_ERROR;
512 painCave.isFatal = 1;
513 simError();
514 }
515 if (!args_info.gaussWidth_given) {
516 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
517 "A gaussian width must be specified when calculating"
518 " volume-resolved Tetrahedrality Parameters");
519 painCave.severity = OPENMD_ERROR;
520 painCave.isFatal = 1;
521 simError();
522 }
523 analyser = std::make_unique<TetrahedralityParamXYZ>(
524 info, dumpFileName, sele1, sele2, args_info.rcut_arg,
525 args_info.voxelSize_arg, args_info.gaussWidth_arg);
526 } else if (args_info.ior_given) {
527 if (args_info.rcut_given) {
528 analyser = std::make_unique<IcosahedralOfR>(
529 info, dumpFileName, sele1, args_info.rcut_arg, nrbins, maxLen);
530 } else {
531 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
532 "A cutoff radius (rcut) must be specified when calculating Bond "
533 "Order "
534 "Parameters");
535 painCave.severity = OPENMD_ERROR;
536 painCave.isFatal = 1;
537 simError();
538 }
539 } else if (args_info.for_given) {
540 if (args_info.rcut_given) {
541 analyser = std::make_unique<FCCOfR>(info, dumpFileName, sele1,
542 args_info.rcut_arg, nrbins, maxLen);
543 } else {
544 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
545 "A cutoff radius (rcut) must be specified when calculating Bond "
546 "Order "
547 "Parameters");
548 painCave.severity = OPENMD_ERROR;
549 painCave.isFatal = 1;
550 simError();
551 }
552 } else if (args_info.bad_given) {
553 if (args_info.rcut_given) {
554 analyser = std::make_unique<BondAngleDistribution>(
555 info, dumpFileName, sele1, args_info.rcut_arg, args_info.nbins_arg);
556 } else {
557 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
558 "A cutoff radius (rcut) must be specified when calculating Bond "
559 "Angle "
560 "Distributions");
561 painCave.severity = OPENMD_ERROR;
562 painCave.isFatal = 1;
563 simError();
564 }
565 } else if (args_info.scd_given) {
566 if (batchMode) {
567 analyser = std::make_unique<SCDOrderParameter>(
568 info, dumpFileName, args_info.molname_arg, args_info.begin_arg,
569 args_info.end_arg);
570 } else {
571 analyser = std::make_unique<SCDOrderParameter>(info, dumpFileName, sele1,
572 sele2, sele3);
573 }
574 } else if (args_info.density_given) {
575 analyser = std::make_unique<DensityPlot>(info, dumpFileName, sele1, sele2,
576 maxLen, args_info.nbins_arg);
577 } else if (args_info.count_given) {
578 analyser = std::make_unique<ObjectCount>(info, dumpFileName, sele1);
579 } else if (args_info.mcount_given) {
580 analyser = std::make_unique<MoleculeCount>(info, dumpFileName, sele1);
581 } else if (args_info.slab_density_given) {
582 analyser = std::make_unique<RhoZ>(info, dumpFileName, sele1,
583 args_info.nbins_arg, privilegedAxis);
584 } else if (args_info.eam_density_given) {
585 analyser = std::make_unique<DensityHistogram>(info, dumpFileName, sele1,
586 args_info.nbins_arg);
587 } else if (args_info.momentum_distribution_given) {
588 analyser = std::make_unique<MomentumHistogram>(
589 info, dumpFileName, sele1, args_info.nbins_arg, momentum_type,
590 momentum_comp);
591 } else if (args_info.net_charge_given) {
592 analyser = std::make_unique<ChargeHistogram>(info, dumpFileName, sele1,
593 args_info.nbins_arg);
594 } else if (args_info.current_density_given) {
595 analyser = std::make_unique<CurrentDensity>(
596 info, dumpFileName, sele1, args_info.nbins_arg, privilegedAxis);
597 } else if (args_info.chargez_given) {
598 analyser = std::make_unique<ChargeZ>(info, dumpFileName, sele1,
599 args_info.nbins_arg, privilegedAxis);
600 } else if (args_info.charger_given) {
601 analyser = std::make_unique<ChargeR>(info, dumpFileName, sele1, maxLen,
602 args_info.nbins_arg);
603 } else if (args_info.numberz_given) {
604 analyser = std::make_unique<NumberZ>(info, dumpFileName, sele1,
605 args_info.nbins_arg, privilegedAxis);
606 } else if (args_info.numberr_given) {
607 analyser = std::make_unique<NumberR>(info, dumpFileName, sele1, maxLen,
608 args_info.nbins_arg);
609 } else if (args_info.massdensityz_given) {
610 analyser = std::make_unique<MassDensityZ>(
611 info, dumpFileName, sele1, args_info.nbins_arg, privilegedAxis);
612 } else if (args_info.massdensityr_given) {
613 analyser = std::make_unique<MassDensityR>(info, dumpFileName, sele1, maxLen,
614 args_info.nbins_arg);
615 } else if (args_info.charge_density_z_given) {
616 analyser = std::make_unique<ChargeDensityZ>(
617 info, dumpFileName, sele1, args_info.nbins_arg, vRadius,
618 args_info.atom_name_arg, args_info.gen_xyz_flag, privilegedAxis);
619 } else if (args_info.countz_given) {
620 analyser = std::make_unique<PositionZ>(info, dumpFileName, sele1,
621 args_info.nbins_arg, privilegedAxis);
622 } else if (args_info.pipe_density_given) {
623 switch (privilegedAxis) {
624 case 0:
625 analyser = std::make_unique<PipeDensity>(
626 info, dumpFileName, sele1, args_info.nbins_y_arg,
627 args_info.nbins_z_arg, privilegedAxis);
628 break;
629 case 1:
630 analyser = std::make_unique<PipeDensity>(
631 info, dumpFileName, sele1, args_info.nbins_z_arg,
632 args_info.nbins_x_arg, privilegedAxis);
633 break;
634 case 2:
635 default:
636 analyser = std::make_unique<PipeDensity>(
637 info, dumpFileName, sele1, args_info.nbins_x_arg,
638 args_info.nbins_y_arg, privilegedAxis);
639 break;
640 }
641 } else if (args_info.rnemdz_given) {
642 analyser = std::make_unique<RNEMDZ>(info, dumpFileName, sele1,
643 args_info.nbins_arg, privilegedAxis);
644 } else if (args_info.rnemdr_given) {
645 analyser = std::make_unique<RNEMDR>(info, dumpFileName, sele1, comsele,
646 nrbins, binWidth);
647 } else if (args_info.rnemdrt_given) {
648 analyser = std::make_unique<RNEMDRTheta>(info, dumpFileName, sele1, comsele,
649 nrbins, binWidth, nanglebins);
650 } else if (args_info.nitrile_given) {
651 analyser = std::make_unique<NitrileFrequencyMap>(info, dumpFileName, sele1,
652 args_info.nbins_arg);
653 } else if (args_info.p_angle_given) {
654 if (args_info.sele1_given) {
655 if (args_info.sele2_given)
656 analyser = std::make_unique<pAngle>(info, dumpFileName, sele1, sele2,
657 args_info.nbins_arg);
658 else if (args_info.seleoffset_given) {
659 if (args_info.seleoffset2_given) {
660 analyser = std::make_unique<pAngle>(
661 info, dumpFileName, sele1, args_info.seleoffset_arg,
662 args_info.seleoffset2_arg, args_info.nbins_arg);
663 } else {
664 analyser = std::make_unique<pAngle>(info, dumpFileName, sele1,
665 args_info.seleoffset_arg,
666 args_info.nbins_arg);
667 }
668 } else
669 analyser = std::make_unique<pAngle>(info, dumpFileName, sele1,
670 args_info.nbins_arg);
671 } else {
672 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
673 "At least one selection script (--sele1) must be specified when "
674 "calculating P(angle) distributions");
675 painCave.severity = OPENMD_ERROR;
676 painCave.isFatal = 1;
677 simError();
678 }
679#if defined(HAVE_FFTW_H) || defined(HAVE_DFFTW_H) || defined(HAVE_FFTW3_H)
680 } else if (args_info.hxy_given) {
681 analyser = std::make_unique<Hxy>(
682 info, dumpFileName, sele1, args_info.nbins_x_arg, args_info.nbins_y_arg,
683 args_info.nbins_z_arg, args_info.nbins_arg);
684#endif
685 } else if (args_info.cn_given || args_info.scn_given || args_info.gcn_given) {
686 if (args_info.rcut_given) {
687 if (args_info.cn_given) {
688 analyser = std::make_unique<CoordinationNumber>(
689 info, dumpFileName, sele1, sele2, args_info.rcut_arg,
690 args_info.nbins_arg);
691 } else if (args_info.scn_given) {
692 analyser =
693 std::make_unique<SCN>(info, dumpFileName, sele1, sele2,
694 args_info.rcut_arg, args_info.nbins_arg);
695 } else if (args_info.gcn_given) {
696 analyser =
697 std::make_unique<GCN>(info, dumpFileName, sele1, sele2,
698 args_info.rcut_arg, args_info.nbins_arg);
699 }
700 } else {
701 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
702 "A cutoff radius (rcut) must be specified when calculating\n"
703 "\t Coordination Numbers");
704 painCave.severity = OPENMD_ERROR;
705 painCave.isFatal = 1;
706 simError();
707 }
708 } else if (args_info.surfDiffusion_given) {
709 analyser =
710 std::make_unique<SurfaceDiffusion>(info, dumpFileName, sele1, maxLen);
711 } else if (args_info.rho_r_given) {
712 if (args_info.radius_given) {
713 analyser = std::make_unique<RhoR>(info, dumpFileName, sele1, maxLen,
714 nrbins, args_info.radius_arg);
715 } else {
716 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
717 "A particle radius (radius) must be specified when calculating "
718 "Rho(r)");
719 painCave.severity = OPENMD_ERROR;
720 painCave.isFatal = 1;
721 simError();
722 }
723 } else if (args_info.hullvol_given) {
724 analyser = std::make_unique<NanoVolume>(info, dumpFileName, sele1);
725 } else if (args_info.rodlength_given) {
726 analyser = std::make_unique<NanoLength>(info, dumpFileName, sele1);
727 } else if (args_info.angle_r_given) {
728 if (args_info.sele1_given) {
729 if (args_info.sele2_given)
730 analyser = std::make_unique<AngleR>(info, dumpFileName, sele1, sele2,
731 maxLen, nrbins);
732 else if (args_info.seleoffset_given) {
733 if (args_info.seleoffset2_given) {
734 analyser = std::make_unique<AngleR>(
735 info, dumpFileName, sele1, args_info.seleoffset_arg,
736 args_info.seleoffset2_arg, maxLen, nrbins);
737 } else {
738 analyser = std::make_unique<AngleR>(info, dumpFileName, sele1,
739 args_info.seleoffset_arg, maxLen,
740 nrbins);
741 }
742 } else
743 analyser =
744 std::make_unique<AngleR>(info, dumpFileName, sele1, maxLen, nrbins);
745 } else {
746 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
747 "At least one selection script (--sele1) must be specified when "
748 "calculating Angle(r) values");
749 painCave.severity = OPENMD_ERROR;
750 painCave.isFatal = 1;
751 simError();
752 }
753 } else if (args_info.p2r_given) {
754 if (args_info.sele1_given) {
755 if (args_info.sele2_given)
756 analyser = std::make_unique<P2R>(info, dumpFileName, sele1, sele2,
757 args_info.nbins_arg);
758 else if (args_info.seleoffset_given) {
759 if (args_info.seleoffset2_given) {
760 analyser = std::make_unique<P2R>(
761 info, dumpFileName, sele1, args_info.seleoffset_arg,
762 args_info.seleoffset2_arg, args_info.nbins_arg);
763 } else {
764 analyser = std::make_unique<P2R>(info, dumpFileName, sele1,
765 args_info.seleoffset_arg,
766 args_info.nbins_arg);
767 }
768 } else
769 analyser = std::make_unique<P2R>(info, dumpFileName, sele1,
770 args_info.nbins_arg);
771 } else {
772 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
773 "At least one selection script (--sele1) must be specified when "
774 "calculating P2R values");
775 painCave.severity = OPENMD_ERROR;
776 painCave.isFatal = 1;
777 simError();
778 }
779 } else if (args_info.p2z_given) {
780 if (args_info.sele1_given) {
781 if (args_info.sele2_given)
782 analyser = std::make_unique<P2Z>(info, dumpFileName, sele1, sele2,
783 args_info.nbins_arg, privilegedAxis);
784 else if (args_info.seleoffset_given) {
785 if (args_info.seleoffset2_given) {
786 analyser = std::make_unique<P2Z>(
787 info, dumpFileName, sele1, args_info.seleoffset_arg,
788 args_info.seleoffset2_arg, args_info.nbins_arg, privilegedAxis);
789 } else {
790 analyser = std::make_unique<P2Z>(info, dumpFileName, sele1,
791 args_info.seleoffset_arg,
792 args_info.nbins_arg, privilegedAxis);
793 }
794 } else
795 analyser = std::make_unique<P2Z>(info, dumpFileName, sele1,
796 args_info.nbins_arg, privilegedAxis);
797 } else {
798 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
799 "At least one selection script (--sele1) must be specified when "
800 "calculating P2Z values");
801 painCave.severity = OPENMD_ERROR;
802 painCave.isFatal = 1;
803 simError();
804 }
805 } else if (args_info.hbond_given) {
806 if (args_info.rcut_given) {
807 if (args_info.thetacut_given) {
808 analyser = std::make_unique<HBondGeometric>(
809 info, dumpFileName, sele1, sele2, args_info.rcut_arg,
810 args_info.thetacut_arg, args_info.nbins_arg);
811 } else {
812 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
813 "A cutoff angle (thetacut) must be specified when calculating "
814 "Hydrogen "
815 "Bonding Statistics");
816 painCave.severity = OPENMD_ERROR;
817 painCave.isFatal = 1;
818 simError();
819 }
820 } else {
821 snprintf(
822 painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
823 "A cutoff radius (rcut) must be specified when calculating Hydrogen "
824 "Bonding Statistics");
825 painCave.severity = OPENMD_ERROR;
826 painCave.isFatal = 1;
827 simError();
828 }
829
830 } else if (args_info.hbondz_given) {
831 if (args_info.rcut_given) {
832 if (args_info.thetacut_given) {
833 analyser = std::make_unique<HBondZ>(
834 info, dumpFileName, sele1, sele2, args_info.rcut_arg,
835 args_info.thetacut_arg, args_info.nbins_arg);
836 } else {
837 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
838 "A cutoff angle (thetacut) must be specified when calculating "
839 "Hydrogen "
840 "Bonding Statistics");
841 painCave.severity = OPENMD_ERROR;
842 painCave.isFatal = 1;
843 simError();
844 }
845 } else {
846 snprintf(
847 painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
848 "A cutoff radius (rcut) must be specified when calculating Hydrogen "
849 "Bonding Statistics");
850 painCave.severity = OPENMD_ERROR;
851 painCave.isFatal = 1;
852 simError();
853 }
854 } else if (args_info.hbondzvol_given) {
855 if (args_info.rcut_given) {
856 if (args_info.thetacut_given) {
857 analyser = std::make_unique<HBondZvol>(
858 info, dumpFileName, sele1, sele2, args_info.rcut_arg,
859 args_info.thetacut_arg, args_info.nbins_arg);
860 } else {
861 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
862 "A cutoff angle (thetacut) must be specified when calculating "
863 "Hydrogen "
864 "Bonding Statistics");
865 painCave.severity = OPENMD_ERROR;
866 painCave.isFatal = 1;
867 simError();
868 }
869 } else {
870 snprintf(
871 painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
872 "A cutoff radius (rcut) must be specified when calculating Hydrogen "
873 "Bonding Statistics");
874 painCave.severity = OPENMD_ERROR;
875 painCave.isFatal = 1;
876 simError();
877 }
878 } else if (args_info.hbondr_given) {
879 if (args_info.rcut_given) {
880 if (args_info.thetacut_given) {
881 analyser = std::make_unique<HBondR>(
882 info, dumpFileName, sele1, sele2, sele3, args_info.rcut_arg, maxLen,
883 args_info.thetacut_arg, args_info.nrbins_arg);
884 } else {
885 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
886 "A cutoff angle (thetacut) must be specified when calculating "
887 "Hydrogen "
888 "Bonding Statistics");
889 painCave.severity = OPENMD_ERROR;
890 painCave.isFatal = 1;
891 simError();
892 }
893 } else {
894 snprintf(
895 painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
896 "A cutoff radius (rcut) must be specified when calculating Hydrogen "
897 "Bonding Statistics");
898 painCave.severity = OPENMD_ERROR;
899 painCave.isFatal = 1;
900 simError();
901 }
902 } else if (args_info.hbondrvol_given) {
903 if (args_info.rcut_given) {
904 if (args_info.thetacut_given) {
905 analyser = std::make_unique<HBondRvol>(
906 info, dumpFileName, sele1, sele2, sele3, args_info.rcut_arg, maxLen,
907 args_info.thetacut_arg, args_info.nrbins_arg);
908 } else {
909 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
910 "A cutoff angle (thetacut) must be specified when calculating "
911 "Hydrogen "
912 "Bonding Statistics");
913 painCave.severity = OPENMD_ERROR;
914 painCave.isFatal = 1;
915 simError();
916 }
917 } else {
918 snprintf(
919 painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
920 "A cutoff radius (rcut) must be specified when calculating Hydrogen "
921 "Bonding Statistics");
922 painCave.severity = OPENMD_ERROR;
923 painCave.isFatal = 1;
924 simError();
925 }
926 } else if (args_info.potDiff_given) {
927 analyser = std::make_unique<PotDiff>(info, dumpFileName, sele1);
928 } else if (args_info.kirkwood_given) {
929 analyser = std::make_unique<Kirkwood>(info, dumpFileName, sele1, sele2,
930 maxLen, nrbins);
931 } else if (args_info.kirkwoodQ_given) {
932 analyser = std::make_unique<KirkwoodQuadrupoles>(info, dumpFileName, sele1,
933 sele2, maxLen, nrbins);
934 } else if (args_info.densityfield_given) {
935 analyser = std::make_unique<DensityField>(info, dumpFileName, sele1,
936 args_info.voxelSize_arg);
937 } else if (args_info.velocityfield_given) {
938 analyser = std::make_unique<VelocityField>(info, dumpFileName, sele1,
939 args_info.voxelSize_arg);
940 } else if (args_info.velocityZ_given) {
941 switch (privilegedAxis) {
942 case 0:
943 if (privilegedAxis2 == 1) {
944 analyser = std::make_unique<VelocityZ>(
945 info, dumpFileName, sele1, args_info.nbins_x_arg,
946 args_info.nbins_y_arg, privilegedAxis, privilegedAxis2);
947 } else if (privilegedAxis2 == 2) {
948 analyser = std::make_unique<VelocityZ>(
949 info, dumpFileName, sele1, args_info.nbins_x_arg,
950 args_info.nbins_z_arg, privilegedAxis, privilegedAxis2);
951 }
952 break;
953 case 1:
954 if (privilegedAxis2 == 0) {
955 analyser = std::make_unique<VelocityZ>(
956 info, dumpFileName, sele1, args_info.nbins_y_arg,
957 args_info.nbins_x_arg, privilegedAxis, privilegedAxis2);
958 } else if (privilegedAxis2 == 2) {
959 analyser = std::make_unique<VelocityZ>(
960 info, dumpFileName, sele1, args_info.nbins_y_arg,
961 args_info.nbins_z_arg, privilegedAxis, privilegedAxis2);
962 }
963 break;
964 case 2:
965 default:
966 if (privilegedAxis2 == 0) {
967 analyser = std::make_unique<VelocityZ>(
968 info, dumpFileName, sele1, args_info.nbins_z_arg,
969 args_info.nbins_x_arg, privilegedAxis, privilegedAxis2);
970 } else if (privilegedAxis2 == 1) {
971 analyser = std::make_unique<VelocityZ>(
972 info, dumpFileName, sele1, args_info.nbins_z_arg,
973 args_info.nbins_y_arg, privilegedAxis, privilegedAxis2);
974 }
975 break;
976 }
977 } else if (args_info.dipole_orientation_given) {
978 if (args_info.dipoleX_given && args_info.dipoleY_given &&
979 args_info.dipoleZ_given)
980 analyser = std::make_unique<DipoleOrientation>(
981 info, dumpFileName, sele1, args_info.dipoleX_arg,
982 args_info.dipoleY_arg, args_info.dipoleZ_arg, args_info.nbins_arg,
983 privilegedAxis);
984 else {
985 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
986 "Dipole components must be provided.");
987 painCave.severity = OPENMD_ERROR;
988 painCave.isFatal = 1;
989 simError();
990 }
991
992 } else if (args_info.order_prob_given) {
993 if (args_info.dipoleX_given && args_info.dipoleY_given &&
994 args_info.dipoleZ_given)
995 analyser = std::make_unique<OrderParameterProbZ>(
996 info, dumpFileName, sele1, args_info.dipoleX_arg,
997 args_info.dipoleY_arg, args_info.dipoleZ_arg, args_info.nbins_arg,
998 privilegedAxis);
999 else {
1000 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
1001 "Dipole components must be provided.");
1002 painCave.severity = OPENMD_ERROR;
1003 painCave.isFatal = 1;
1004 simError();
1005 }
1006 } else if (args_info.trans_param_z_given) {
1007 if (args_info.rcut_given) {
1008 analyser = std::make_unique<TranslationalOrderParamZ>(
1009 info, dumpFileName, sele1, sele2, args_info.rcut_arg,
1010 args_info.nbins_arg, args_info.nbins_z_arg, maxLen, zmaxLen,
1011 privilegedAxis);
1012 } else {
1013 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
1014 "A cutoff radius (rcut) must be specified when calculating "
1015 "Translational Order "
1016 "Parameters");
1017 painCave.severity = OPENMD_ERROR;
1018 painCave.isFatal = 1;
1019 simError();
1020 }
1021 }
1022
1023 if (analyser != NULL) {
1024 if (args_info.output_given) {
1025 analyser->setOutputName(args_info.output_arg);
1026 }
1027 if (args_info.step_given) { analyser->setStep(args_info.step_arg); }
1028
1029 analyser->process();
1030 } else {
1031 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
1032 "StaticProps: No Analyser was created, nothing to do!");
1033 painCave.severity = OPENMD_ERROR;
1034 painCave.isFatal = 1;
1035 simError();
1036 }
1037
1038 delete info;
1039
1040 return 0;
1041}
StaticAnalyser for Potential Energy changes with charges turned off.
The header file for the command line option parser generated by GNU Gengetopt version 2....
The only responsibility of SimCreator is to parse the meta-data file and create a SimInfo instance ba...
SimInfo * createSim(const std::string &mdFileName, bool loadInitCoords=true)
Setup Simulation.
One of the heavy-weight classes of OpenMD, SimInfo maintains objects and variables relating to the cu...
Definition SimInfo.hpp:93
void update()
update
Definition SimInfo.cpp:697
SnapshotManager * getSnapshotManager()
Returns the snapshot manager.
Definition SimInfo.hpp:248
Mat3x3d getHmat()
Returns the H-Matrix.
Definition Snapshot.cpp:214
Snapshot * getCurrentSnapshot()
Returns the pointer of current snapshot.
This basic Periodic Table class was originally taken from the data.cpp file in OpenBabel.
Where the command line options are stored.
unsigned int nanglebins_given
Whether nanglebins was given.
unsigned int seleoffset2_given
Whether seleoffset2 was given.
char * sele2_arg
select second stuntdouble set (if sele2 is not set, use script from sele1).
unsigned int pipe_density_given
Whether pipe_density was given.
unsigned int surfDiffusion_given
Whether surfDiffusion was given.
unsigned int tet_param_r_given
Whether tet_param_r was given.
unsigned int output_given
Whether output was given.
double gaussWidth_arg
Gaussian width (angstroms).
unsigned int multipole_given
Whether multipole was given.
int nanglebins_arg
number of bins for cos(angle) (default='50').
unsigned int density_given
Whether density was given.
unsigned int comsele_given
Whether comsele was given.
unsigned int for_given
Whether for was given.
unsigned int thetacut_given
Whether thetacut was given.
char * atom_name_arg
name of atom for with average charge to be generated.
unsigned int scd_given
Whether scd was given.
unsigned int step_given
Whether step was given.
unsigned int rho_r_given
Whether rho_r was given.
unsigned int hullvol_given
Whether hullvol was given.
unsigned int net_charge_given
Whether net_charge was given.
unsigned int end_given
Whether end was given.
unsigned int ior_given
Whether ior was given.
unsigned int sele3_given
Whether sele3 was given.
double dipoleZ_arg
Z-component of the dipole with respect to body frame (default='-1.0').
double binWidth_arg
width of radial bins in angstroms (default='1.0').
unsigned int tet_hb_given
Whether tet_hb was given.
unsigned int chargez_given
Whether chargez was given.
unsigned int velocityZ_given
Whether velocityZ was given.
char * molname_arg
molecule name.
char * comsele_arg
select stunt doubles for center-of-mass reference point.
unsigned int voxelSize_given
Whether voxelSize was given.
unsigned int kirkwood_given
Whether kirkwood was given.
unsigned int gofr_given
Whether gofr was given.
unsigned int r_theta_omega_given
Whether r_theta_omega was given.
unsigned int potDiff_given
Whether potDiff was given.
unsigned int massdensityz_given
Whether massdensityz was given.
unsigned int molname_given
Whether molname was given.
int nbins_x_arg
number of bins in x axis (default='100').
unsigned int tet_param_z_given
Whether tet_param_z was given.
unsigned int gxyz_given
Whether gxyz was given.
unsigned int bo_given
Whether bo was given.
unsigned int kirkwoodQ_given
Whether kirkwoodQ was given.
unsigned int begin_given
Whether begin was given.
unsigned int p2z_given
Whether p2z was given.
double dipoleY_arg
Y-component of the dipole with respect to body frame (default='0.0').
int begin_arg
begin internal index.
unsigned int charge_density_z_given
Whether charge_density_z was given.
unsigned int cn_given
Whether cn was given.
unsigned int tet_param_given
Whether tet_param was given.
unsigned int dipole_orientation_given
Whether dipole_orientation was given.
unsigned int hbond_given
Whether hbond was given.
int nbins_y_arg
number of bins in y axis (default='100').
unsigned int hbondr_given
Whether hbondr was given.
unsigned int refsele_given
Whether refsele was given.
unsigned int bad_given
Whether bad was given.
unsigned int hbondrvol_given
Whether hbondrvol was given.
unsigned int charger_given
Whether charger was given.
unsigned int p2_given
Whether p2 was given.
unsigned int gaussWidth_given
Whether gaussWidth was given.
double length_arg
maximum length (default='100').
unsigned int rnemdr_given
Whether rnemdr was given.
char * sele3_arg
select third stuntdouble set.
unsigned int dipoleX_given
Whether dipoleX was given.
char * output_arg
output file name.
unsigned int eam_density_given
Whether eam_density was given.
unsigned int velocityfield_given
Whether velocityfield was given.
unsigned int tet_param_dens_given
Whether tet_param_dens was given.
unsigned int r_z_given
Whether r_z was given.
unsigned int v_radius_given
Whether v_radius was given.
char * input_arg
input dump file.
unsigned int hbondz_given
Whether hbondz was given.
int nbins_z_arg
number of bins in z axis (default='100').
double thetacut_arg
HOO cutoff angle (degrees) (default='30').
unsigned int dipoleZ_given
Whether dipoleZ was given.
unsigned int sele1_given
Whether sele1 was given.
unsigned int gcn_given
Whether gcn was given.
unsigned int length_given
Whether length was given.
int seleoffset_arg
global index offset for a second object (used to define a vector between sites in molecule).
unsigned int countz_given
Whether countz was given.
unsigned int rnemdrt_given
Whether rnemdrt was given.
unsigned int current_density_given
Whether current_density was given.
double rcut_arg
cutoff radius (angstroms).
unsigned int slab_density_given
Whether slab_density was given.
int gen_xyz_flag
generates xyz file (default=off).
unsigned int kirkwood_buff_given
Whether kirkwood_buff was given.
unsigned int p_angle_given
Whether p_angle was given.
unsigned int trans_param_z_given
Whether trans_param_z was given.
unsigned int densityfield_given
Whether densityfield was given.
enum enum_momentum momentum_arg
Type of momentum whose distribtution is required (default = Liner Momentum) (default='P').
char * refsele_arg
select reference.
double dz_arg
slab width (dz).
unsigned int twodgofr_given
Whether twodgofr was given.
enum enum_component component_arg
component of momentum for the momemtum distribution (default = z axis) (default='z').
double OHcut_arg
Oxygen-Hydrogen cutoff radius (angstroms) (default='2.45').
double voxelSize_arg
voxel size (angstroms).
char * sele1_arg
select first stuntdouble set.
double radius_arg
Nanoparticle radius in Angstroms.
unsigned int dipoleY_given
Whether dipoleY was given.
unsigned int order_prob_given
Whether order_prob was given.
double dipoleX_arg
X-component of the dipole with respect to body frame (default='0.0').
unsigned int rcut_given
Whether rcut was given.
unsigned int r_theta_given
Whether r_theta was given.
unsigned int nitrile_given
Whether nitrile was given.
unsigned int gofz_given
Whether gofz was given.
unsigned int rodlength_given
Whether rodlength was given.
unsigned int numberz_given
Whether numberz was given.
unsigned int radius_given
Whether radius was given.
unsigned int scn_given
Whether scn was given.
int nbins_arg
Number of bins (default='100').
unsigned int rp2_given
Whether rp2 was given.
unsigned int nrbins_given
Whether nrbins was given.
unsigned int p2r_given
Whether p2r was given.
enum enum_privilegedAxis privilegedAxis_arg
which axis is special for spatial analysis (default = z axis) (default='z').
unsigned int numberr_given
Whether numberr was given.
unsigned int hbondzvol_given
Whether hbondzvol was given.
unsigned int sele2_given
Whether sele2 was given.
double end_arg
ending affine scale (default='1.2').
unsigned int hxy_given
Whether hxy was given.
enum enum_privilegedAxis2 privilegedAxis2_arg
which axis is special for spatial analysis (default = x axis) (default='x').
unsigned int zlength_given
Whether zlength was given.
int seleoffset2_arg
global index offset for a third object (used to define a vector between sites in molecule).
double zlength_arg
maximum length (Defaults to 1/2 smallest length of first frame).
unsigned int r_omega_given
Whether r_omega was given.
unsigned int count_given
Whether count was given.
unsigned int momentum_distribution_given
Whether momentum_distribution was given.
unsigned int angle_r_given
Whether angle_r was given.
unsigned int tet_param_xyz_given
Whether tet_param_xyz was given.
double OOcut_arg
Oxygen-Oxygen cutoff radius (angstroms) (default='3.5').
int nrbins_arg
number of radial bins (usually duplicates functionality of nbins) (default='100').
unsigned int theta_omega_given
Whether theta_omega was given.
unsigned int seleoffset_given
Whether seleoffset was given.
unsigned int rnemdz_given
Whether rnemdz was given.
unsigned int massdensityr_given
Whether massdensityr was given.
double v_radius_arg
VanderWaals radiius for fictious atoms used in model eg.
unsigned int dz_given
Whether dz was given.
unsigned int mcount_given
Whether mcount was given.
int step_arg
process every n frame (default='1').