54#include "applications/staticProps/BOPofR.hpp"
55#include "applications/staticProps/BondAngleDistribution.hpp"
56#include "applications/staticProps/BondOrderParameter.hpp"
57#include "applications/staticProps/DensityPlot.hpp"
58#include "applications/staticProps/GofAngle2.hpp"
59#include "applications/staticProps/GofR.hpp"
60#include "applications/staticProps/GofRAngle.hpp"
61#include "applications/staticProps/GofRAngle2.hpp"
62#include "applications/staticProps/GofRZ.hpp"
63#include "applications/staticProps/GofXyz.hpp"
64#include "applications/staticProps/GofZ.hpp"
65#include "applications/staticProps/KirkwoodBuff.hpp"
66#include "applications/staticProps/NanoLength.hpp"
67#include "applications/staticProps/NanoVolume.hpp"
68#include "applications/staticProps/ObjectCount.hpp"
69#include "applications/staticProps/P2OrderParameter.hpp"
70#include "applications/staticProps/P2R.hpp"
71#include "applications/staticProps/PipeDensity.hpp"
72#include "applications/staticProps/RhoZ.hpp"
73#include "applications/staticProps/RippleOP.hpp"
74#include "applications/staticProps/SCDOrderParameter.hpp"
75#include "applications/staticProps/SFGTimeAvg.hpp"
76#include "applications/staticProps/StaticAnalyser.hpp"
77#include "applications/staticProps/TwoDGofR.hpp"
78#include "applications/staticProps/pAngle.hpp"
82#include "utils/simError.h"
83#if defined(HAVE_FFTW_H) || defined(HAVE_DFFTW_H) || defined(HAVE_FFTW3_H)
84#include "applications/staticProps/Hxy.hpp"
86#include "applications/staticProps/AngleR.hpp"
87#include "applications/staticProps/ChargeDensityZ.hpp"
88#include "applications/staticProps/ChargeHistogram.hpp"
89#include "applications/staticProps/ChargeR.hpp"
90#include "applications/staticProps/ChargeZ.hpp"
91#include "applications/staticProps/CoordinationNumber.hpp"
92#include "applications/staticProps/CurrentDensity.hpp"
93#include "applications/staticProps/DensityHistogram.hpp"
94#include "applications/staticProps/DipoleOrientation.hpp"
95#include "applications/staticProps/Field.hpp"
96#include "applications/staticProps/HBondGeometric.hpp"
97#include "applications/staticProps/HBondR.hpp"
98#include "applications/staticProps/HBondRvol.hpp"
99#include "applications/staticProps/HBondZ.hpp"
100#include "applications/staticProps/HBondZvol.hpp"
101#include "applications/staticProps/Kirkwood.hpp"
102#include "applications/staticProps/MassDensityR.hpp"
103#include "applications/staticProps/MassDensityZ.hpp"
104#include "applications/staticProps/MomentumHistogram.hpp"
105#include "applications/staticProps/MultipoleSum.hpp"
106#include "applications/staticProps/NitrileFrequencyMap.hpp"
107#include "applications/staticProps/NumberR.hpp"
108#include "applications/staticProps/NumberZ.hpp"
109#include "applications/staticProps/OHFrequencyMap.hpp"
110#include "applications/staticProps/OrderParameterProbZ.hpp"
111#include "applications/staticProps/PositionZ.hpp"
113#include "applications/staticProps/RNEMDStats.hpp"
114#include "applications/staticProps/RhoR.hpp"
115#include "applications/staticProps/SurfaceDiffusion.hpp"
116#include "applications/staticProps/TetrahedralityHBMatrix.hpp"
117#include "applications/staticProps/TetrahedralityParam.hpp"
118#include "applications/staticProps/TetrahedralityParamDens.hpp"
119#include "applications/staticProps/TetrahedralityParamR.hpp"
120#include "applications/staticProps/TetrahedralityParamRAngle.hpp"
121#include "applications/staticProps/TetrahedralityParamXYZ.hpp"
122#include "applications/staticProps/TetrahedralityParamZ.hpp"
123#include "applications/staticProps/TranslationalOrderParamZ.hpp"
124#include "applications/staticProps/VelocityZ.hpp"
128int main(
int argc,
char* argv[]) {
132 if (cmdline_parser(argc, argv, &args_info) != 0) { exit(1); }
135 std::string dumpFileName = args_info.
input_arg;
147 char* sele1Env = getenv(
"SELECTION1");
151 sele1 =
"select all";
161 char* sele2Env = getenv(
"SELECTION2");
181 bool batchMode(
false);
190 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
191 "below conditions are not satisfied:\n"
192 "0 <= begin && 0<= end && begin <= end-2\n");
193 painCave.severity = OPENMD_ERROR;
194 painCave.isFatal = 1;
199 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
200 "either --sele1, --sele2, --sele3 are specified,"
201 " or --molname, --begin, --end are specified\n");
202 painCave.severity = OPENMD_ERROR;
203 painCave.isFatal = 1;
219 case privilegedAxis_arg_x:
222 case privilegedAxis_arg_y:
225 case privilegedAxis_arg_z:
233 case privilegedAxis2_arg_x:
236 case privilegedAxis2_arg_y:
239 case privilegedAxis2_arg_z:
246 RealType zmaxLen(0.0);
254 maxLen = std::min(std::min(hmat(0, 0), hmat(1, 1)), hmat(2, 2)) / 2.0;
256 zmaxLen = hmat(privilegedAxis, privilegedAxis);
259 int nanglebins, nrbins;
296 case component_arg_x:
299 case component_arg_y:
302 case component_arg_z:
308 std::unique_ptr<StaticAnalyser> analyser {
nullptr};
311 analyser = std::make_unique<GofR>(info, dumpFileName, sele1, sele2, maxLen,
315 std::make_unique<GofZ>(info, dumpFileName, sele1, sele2, maxLen,
316 zmaxLen, args_info.
nbins_arg, privilegedAxis);
318 analyser = std::make_unique<GofRZ>(info, dumpFileName, sele1, sele2, maxLen,
323 analyser = std::make_unique<GofRTheta>(info, dumpFileName, sele1, sele2,
324 sele3, maxLen, nrbins, nanglebins);
326 analyser = std::make_unique<GofRTheta>(info, dumpFileName, sele1, sele2,
327 maxLen, nrbins, nanglebins);
330 analyser = std::make_unique<GofROmega>(info, dumpFileName, sele1, sele2,
331 sele3, maxLen, nrbins, nanglebins);
333 analyser = std::make_unique<GofROmega>(info, dumpFileName, sele1, sele2,
334 maxLen, nrbins, nanglebins);
337 analyser = std::make_unique<GofAngle2>(info, dumpFileName, sele1, sele2,
340 analyser = std::make_unique<GofAngle2>(info, dumpFileName, sele1, sele2,
344 analyser = std::make_unique<GofRAngle2>(
345 info, dumpFileName, sele1, sele2, sele3, maxLen, nrbins, nanglebins);
347 analyser = std::make_unique<GofRAngle2>(info, dumpFileName, sele1, sele2,
348 maxLen, nrbins, nanglebins);
351 analyser = std::make_unique<GofXyz>(info, dumpFileName, sele1, sele2,
355 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
356 "--refsele must set when --gxyz is used");
357 painCave.severity = OPENMD_ERROR;
358 painCave.isFatal = 1;
363 analyser = std::make_unique<TwoDGofR>(info, dumpFileName, sele1, sele2,
364 maxLen, args_info.
dz_arg, nrbins);
366 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
367 "A slab width (dz) must be specified when calculating TwoDGofR");
368 painCave.severity = OPENMD_ERROR;
369 painCave.isFatal = 1;
374 analyser = std::make_unique<KirkwoodBuff>(info, dumpFileName, sele1,
375 sele2, maxLen, nrbins);
378 painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
379 "Two selection scripts (--sele1 and --sele2) must be specified when "
380 "calculating Kirkwood Buff integrals");
381 painCave.severity = OPENMD_ERROR;
382 painCave.isFatal = 1;
388 analyser = std::make_unique<P2OrderParameter>(info, dumpFileName, sele1,
391 analyser = std::make_unique<P2OrderParameter>(info, dumpFileName, sele1,
395 std::make_unique<P2OrderParameter>(info, dumpFileName, sele1);
398 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
399 "At least one selection script (--sele1) must be specified when "
400 "calculating P2 order parameters");
401 painCave.severity = OPENMD_ERROR;
402 painCave.isFatal = 1;
406 analyser = std::make_unique<RippleOP>(info, dumpFileName, sele1, sele2);
409 analyser = std::make_unique<BondOrderParameter>(
412 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
413 "A cutoff radius (rcut) must be specified when calculating Bond "
416 painCave.severity = OPENMD_ERROR;
417 painCave.isFatal = 1;
421 analyser = std::make_unique<MultipoleSum>(info, dumpFileName, sele1, maxLen,
426 analyser = std::make_unique<TetrahedralityParam>(
429 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
430 "A cutoff radius (rcut) must be specified when calculating "
433 painCave.severity = OPENMD_ERROR;
434 painCave.isFatal = 1;
439 analyser = std::make_unique<TetrahedralityParamZ>(
440 info, dumpFileName, sele1, sele2, args_info.
rcut_arg,
443 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
444 "A cutoff radius (rcut) must be specified when calculating "
447 painCave.severity = OPENMD_ERROR;
448 painCave.isFatal = 1;
454 analyser = std::make_unique<TetrahedralityParamR>(
455 info, dumpFileName, sele1, sele2, sele3, args_info.
rcut_arg, maxLen,
458 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
459 "Selection3 (--sele3) must be given when calculating "
460 "Tetrahedrality Parameter Qk(r)");
461 painCave.severity = OPENMD_ERROR;
462 painCave.isFatal = 1;
470 analyser = std::make_unique<TetrahedralityParamRAngle>(
471 info, dumpFileName, sele1, sele2, sele3,
475 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
476 "Selection3 offset (--seleoffset3) must be given when "
477 "calculating Tetrahedrality Parameter Qk(r, cos(theta))");
478 painCave.severity = OPENMD_ERROR;
479 painCave.isFatal = 1;
483 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
484 "Selection3 (--sele3) must be given when calculating "
485 "Tetrahedrality Parameter Qk(r, cos(theta))");
486 painCave.severity = OPENMD_ERROR;
487 painCave.isFatal = 1;
491 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
492 "A cutoff radius (rcut) must be specified when calculating "
495 painCave.severity = OPENMD_ERROR;
496 painCave.isFatal = 1;
501 analyser = std::make_unique<TetrahedralityParamDens>(
502 info, dumpFileName, sele1, sele2, args_info.
rcut_arg,
505 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
506 "A cutoff radius (rcut) must be specified when calculating "
509 painCave.severity = OPENMD_ERROR;
510 painCave.isFatal = 1;
515 analyser = std::make_unique<TetrahedralityHBMatrix>(
519 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
520 "A cutoff radius (rcut) must be specified when calculating "
521 " Tetrahedrality Hydrogen Bonding Matrix");
522 painCave.severity = OPENMD_ERROR;
523 painCave.isFatal = 1;
528 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
529 "A cutoff radius (rcut) must be specified when calculating"
530 " Tetrahedrality Parameters");
531 painCave.severity = OPENMD_ERROR;
532 painCave.isFatal = 1;
536 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
537 "A voxel size must be specified when calculating"
538 " volume-resolved Tetrahedrality Parameters");
539 painCave.severity = OPENMD_ERROR;
540 painCave.isFatal = 1;
544 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
545 "A gaussian width must be specified when calculating"
546 " volume-resolved Tetrahedrality Parameters");
547 painCave.severity = OPENMD_ERROR;
548 painCave.isFatal = 1;
551 analyser = std::make_unique<TetrahedralityParamXYZ>(
552 info, dumpFileName, sele1, sele2, args_info.
rcut_arg,
556 analyser = std::make_unique<IcosahedralOfR>(
557 info, dumpFileName, sele1, args_info.
rcut_arg, nrbins, maxLen);
559 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
560 "A cutoff radius (rcut) must be specified when calculating Bond "
563 painCave.severity = OPENMD_ERROR;
564 painCave.isFatal = 1;
569 analyser = std::make_unique<FCCOfR>(info, dumpFileName, sele1,
570 args_info.
rcut_arg, nrbins, maxLen);
572 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
573 "A cutoff radius (rcut) must be specified when calculating Bond "
576 painCave.severity = OPENMD_ERROR;
577 painCave.isFatal = 1;
582 analyser = std::make_unique<BondAngleDistribution>(
585 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
586 "A cutoff radius (rcut) must be specified when calculating Bond "
589 painCave.severity = OPENMD_ERROR;
590 painCave.isFatal = 1;
595 analyser = std::make_unique<SCDOrderParameter>(
599 analyser = std::make_unique<SCDOrderParameter>(info, dumpFileName, sele1,
603 analyser = std::make_unique<DensityPlot>(info, dumpFileName, sele1, sele2,
606 analyser = std::make_unique<ObjectCount>(info, dumpFileName, sele1);
608 analyser = std::make_unique<MoleculeCount>(info, dumpFileName, sele1);
610 analyser = std::make_unique<RhoZ>(info, dumpFileName, sele1,
613 analyser = std::make_unique<DensityHistogram>(info, dumpFileName, sele1,
616 analyser = std::make_unique<MomentumHistogram>(
617 info, dumpFileName, sele1, args_info.
nbins_arg, momentum_type,
620 analyser = std::make_unique<ChargeHistogram>(info, dumpFileName, sele1,
623 analyser = std::make_unique<CurrentDensity>(
624 info, dumpFileName, sele1, args_info.
nbins_arg, privilegedAxis);
626 analyser = std::make_unique<ChargeZ>(info, dumpFileName, sele1,
629 analyser = std::make_unique<ChargeR>(info, dumpFileName, sele1, maxLen,
632 analyser = std::make_unique<NumberZ>(info, dumpFileName, sele1,
635 analyser = std::make_unique<NumberR>(info, dumpFileName, sele1, maxLen,
638 analyser = std::make_unique<MassDensityZ>(
639 info, dumpFileName, sele1, args_info.
nbins_arg, privilegedAxis);
641 analyser = std::make_unique<MassDensityR>(info, dumpFileName, sele1, maxLen,
644 analyser = std::make_unique<ChargeDensityZ>(
645 info, dumpFileName, sele1, args_info.
nbins_arg, vRadius,
648 analyser = std::make_unique<PositionZ>(info, dumpFileName, sele1,
651 switch (privilegedAxis) {
653 analyser = std::make_unique<PipeDensity>(
658 analyser = std::make_unique<PipeDensity>(
664 analyser = std::make_unique<PipeDensity>(
670 analyser = std::make_unique<RNEMDZ>(info, dumpFileName, sele1,
673 analyser = std::make_unique<RNEMDR>(info, dumpFileName, sele1, comsele,
676 analyser = std::make_unique<RNEMDRTheta>(info, dumpFileName, sele1, comsele,
677 nrbins, binWidth, nanglebins);
679 analyser = std::make_unique<NitrileFrequencyMap>(info, dumpFileName, sele1,
682 analyser = std::make_unique<OHFrequencyMap>(info, dumpFileName, sele1,
685 analyser = std::make_unique<SFGTimeAvg>(info, dumpFileName, sele1,
695 analyser = std::make_unique<pAngle>(info, dumpFileName, sele1, sele2,
699 analyser = std::make_unique<pAngle>(
703 analyser = std::make_unique<pAngle>(info, dumpFileName, sele1,
708 analyser = std::make_unique<pAngle>(info, dumpFileName, sele1,
711 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
712 "At least one selection script (--sele1) must be specified when "
713 "calculating P(angle) distributions");
714 painCave.severity = OPENMD_ERROR;
715 painCave.isFatal = 1;
718#if defined(HAVE_FFTW_H) || defined(HAVE_DFFTW_H) || defined(HAVE_FFTW3_H)
720 analyser = std::make_unique<Hxy>(
727 analyser = std::make_unique<CoordinationNumber>(
728 info, dumpFileName, sele1, sele2, args_info.
rcut_arg,
732 std::make_unique<SCN>(info, dumpFileName, sele1, sele2,
736 std::make_unique<GCN>(info, dumpFileName, sele1, sele2,
740 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
741 "A cutoff radius (rcut) must be specified when calculating\n"
742 "\t Coordination Numbers");
743 painCave.severity = OPENMD_ERROR;
744 painCave.isFatal = 1;
749 std::make_unique<SurfaceDiffusion>(info, dumpFileName, sele1, maxLen);
752 analyser = std::make_unique<RhoR>(info, dumpFileName, sele1, maxLen,
755 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
756 "A particle radius (radius) must be specified when calculating "
758 painCave.severity = OPENMD_ERROR;
759 painCave.isFatal = 1;
763 analyser = std::make_unique<NanoVolume>(info, dumpFileName, sele1);
765 analyser = std::make_unique<NanoLength>(info, dumpFileName, sele1);
769 analyser = std::make_unique<AngleR>(info, dumpFileName, sele1, sele2,
773 analyser = std::make_unique<AngleR>(
777 analyser = std::make_unique<AngleR>(info, dumpFileName, sele1,
783 std::make_unique<AngleR>(info, dumpFileName, sele1, maxLen, nrbins);
785 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
786 "At least one selection script (--sele1) must be specified when "
787 "calculating Angle(r) values");
788 painCave.severity = OPENMD_ERROR;
789 painCave.isFatal = 1;
795 analyser = std::make_unique<P2R>(info, dumpFileName, sele1, sele2,
799 analyser = std::make_unique<P2R>(
803 analyser = std::make_unique<P2R>(info, dumpFileName, sele1,
808 analyser = std::make_unique<P2R>(info, dumpFileName, sele1,
811 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
812 "At least one selection script (--sele1) must be specified when "
813 "calculating P2R values");
814 painCave.severity = OPENMD_ERROR;
815 painCave.isFatal = 1;
821 analyser = std::make_unique<P2Z>(info, dumpFileName, sele1, sele2,
825 analyser = std::make_unique<P2Z>(
829 analyser = std::make_unique<P2Z>(info, dumpFileName, sele1,
834 analyser = std::make_unique<P2Z>(info, dumpFileName, sele1,
837 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
838 "At least one selection script (--sele1) must be specified when "
839 "calculating P2Z values");
840 painCave.severity = OPENMD_ERROR;
841 painCave.isFatal = 1;
847 analyser = std::make_unique<HBondGeometric>(
848 info, dumpFileName, sele1, sele2, args_info.
rcut_arg,
851 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
852 "A cutoff angle (thetacut) must be specified when calculating "
854 "Bonding Statistics");
855 painCave.severity = OPENMD_ERROR;
856 painCave.isFatal = 1;
861 painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
862 "A cutoff radius (rcut) must be specified when calculating Hydrogen "
863 "Bonding Statistics");
864 painCave.severity = OPENMD_ERROR;
865 painCave.isFatal = 1;
872 analyser = std::make_unique<HBondZ>(
873 info, dumpFileName, sele1, sele2, args_info.
rcut_arg,
876 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
877 "A cutoff angle (thetacut) must be specified when calculating "
879 "Bonding Statistics");
880 painCave.severity = OPENMD_ERROR;
881 painCave.isFatal = 1;
886 painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
887 "A cutoff radius (rcut) must be specified when calculating Hydrogen "
888 "Bonding Statistics");
889 painCave.severity = OPENMD_ERROR;
890 painCave.isFatal = 1;
896 analyser = std::make_unique<HBondZvol>(
897 info, dumpFileName, sele1, sele2, args_info.
rcut_arg,
900 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
901 "A cutoff angle (thetacut) must be specified when calculating "
903 "Bonding Statistics");
904 painCave.severity = OPENMD_ERROR;
905 painCave.isFatal = 1;
910 painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
911 "A cutoff radius (rcut) must be specified when calculating Hydrogen "
912 "Bonding Statistics");
913 painCave.severity = OPENMD_ERROR;
914 painCave.isFatal = 1;
920 analyser = std::make_unique<HBondR>(
921 info, dumpFileName, sele1, sele2, sele3, args_info.
rcut_arg, maxLen,
924 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
925 "A cutoff angle (thetacut) must be specified when calculating "
927 "Bonding Statistics");
928 painCave.severity = OPENMD_ERROR;
929 painCave.isFatal = 1;
934 painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
935 "A cutoff radius (rcut) must be specified when calculating Hydrogen "
936 "Bonding Statistics");
937 painCave.severity = OPENMD_ERROR;
938 painCave.isFatal = 1;
944 analyser = std::make_unique<HBondRvol>(
945 info, dumpFileName, sele1, sele2, sele3, args_info.
rcut_arg, maxLen,
948 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
949 "A cutoff angle (thetacut) must be specified when calculating "
951 "Bonding Statistics");
952 painCave.severity = OPENMD_ERROR;
953 painCave.isFatal = 1;
958 painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
959 "A cutoff radius (rcut) must be specified when calculating Hydrogen "
960 "Bonding Statistics");
961 painCave.severity = OPENMD_ERROR;
962 painCave.isFatal = 1;
966 analyser = std::make_unique<PotDiff>(info, dumpFileName, sele1);
968 analyser = std::make_unique<Kirkwood>(info, dumpFileName, sele1, sele2,
971 analyser = std::make_unique<KirkwoodQuadrupoles>(info, dumpFileName, sele1,
972 sele2, maxLen, nrbins);
974 analyser = std::make_unique<DensityField>(info, dumpFileName, sele1,
977 analyser = std::make_unique<SDVelocityField>(info, dumpFileName, sele1,
980 switch (privilegedAxis) {
982 if (privilegedAxis2 == 1) {
983 analyser = std::make_unique<VelocityZ>(
985 args_info.
nbins_y_arg, privilegedAxis, privilegedAxis2);
986 }
else if (privilegedAxis2 == 2) {
987 analyser = std::make_unique<VelocityZ>(
989 args_info.
nbins_z_arg, privilegedAxis, privilegedAxis2);
993 if (privilegedAxis2 == 0) {
994 analyser = std::make_unique<VelocityZ>(
996 args_info.
nbins_x_arg, privilegedAxis, privilegedAxis2);
997 }
else if (privilegedAxis2 == 2) {
998 analyser = std::make_unique<VelocityZ>(
1000 args_info.
nbins_z_arg, privilegedAxis, privilegedAxis2);
1005 if (privilegedAxis2 == 0) {
1006 analyser = std::make_unique<VelocityZ>(
1008 args_info.
nbins_x_arg, privilegedAxis, privilegedAxis2);
1009 }
else if (privilegedAxis2 == 1) {
1010 analyser = std::make_unique<VelocityZ>(
1012 args_info.
nbins_y_arg, privilegedAxis, privilegedAxis2);
1019 analyser = std::make_unique<DipoleOrientation>(
1024 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
1025 "Dipole components must be provided.");
1026 painCave.severity = OPENMD_ERROR;
1027 painCave.isFatal = 1;
1034 analyser = std::make_unique<OrderParameterProbZ>(
1039 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
1040 "Dipole components must be provided.");
1041 painCave.severity = OPENMD_ERROR;
1042 painCave.isFatal = 1;
1047 analyser = std::make_unique<TranslationalOrderParamZ>(
1048 info, dumpFileName, sele1, sele2, args_info.
rcut_arg,
1052 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
1053 "A cutoff radius (rcut) must be specified when calculating "
1054 "Translational Order "
1056 painCave.severity = OPENMD_ERROR;
1057 painCave.isFatal = 1;
1062 if (analyser != NULL) {
1064 analyser->setOutputName(args_info.
output_arg);
1068 analyser->process();
1070 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
1071 "StaticProps: No Analyser was created, nothing to do!");
1072 painCave.severity = OPENMD_ERROR;
1073 painCave.isFatal = 1;
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...
SnapshotManager * getSnapshotManager()
Returns the snapshot manager.
Mat3x3d getHmat()
Returns the H-Matrix.
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 for coarse graining (Angstroms) (default='3.0').
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.
char * sfgPolarization_arg
SFG polarization combination: ssp, ppp, sps (default='ssp').
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_rangle_given
Whether tet_param_rangle 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.
double fermiCoupling_arg
Fermi coupling [cm-1] for stretch-bend coupling in SFG spectra (default='25').
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.
double lorentzianWidth_arg
Lorentzian half-width [cm-1] applied to eigenstates in SFG spectra (default='5').
unsigned int seleoffset3_given
Whether seleoffset3 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').
int seleoffset3_arg
global index offset for a fourth object (used to define a vector between sites in molecule).
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 sfg_given
Whether sfg 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 for coarse graining (Angstroms) (default='2.0').
unsigned int OHfreqmap_given
Whether OHfreqmap was given.
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').