# | Line 21 | Line 21 | |
---|---|---|
21 | #define FIX_UNUSED(X) (void) (X) /* avoid warnings for unused params */ | |
22 | #endif | |
23 | ||
24 | + | #ifdef WIN32 |
25 | + | #include "utils/wingetopt.h" |
26 | + | #else |
27 | #include <getopt.h> | |
28 | + | #endif |
29 | ||
30 | #include "StaticPropsCmd.h" | |
31 | ||
# | Line 53 | Line 57 | const char *gengetopt_args_info_help[] = { | |
57 | " --refsele=selection script\n select reference (use and only use with --gxyz)", | |
58 | " --comsele=selection script\n select stunt doubles for center-of-mass \n reference point", | |
59 | " --seleoffset=INT global index offset for a second object (used \n to define a vector between sites in molecule)", | |
60 | + | " --seleoffset2=INT global index offset for a third object (used to \n define a vector between sites in molecule)", |
61 | " --molname=STRING molecule name", | |
62 | " --begin=INT begin internal index", | |
63 | " --end=INT end internal index", | |
64 | " --radius=DOUBLE nanoparticle radius", | |
65 | "\n Group: staticProps\n an option of this group is required", | |
66 | " --bo bond order parameter (--rcut must be specified)", | |
67 | < | " --bor bond order parameter as a function of radius \n (--rcut must be specified)", |
67 | > | " --ior icosahedral bond order parameter as a function \n of radius (--rcut must be specified)", |
68 | > | " --for FCC bond order parameter as a function of \n radius (--rcut must be specified)", |
69 | " --bad N(theta) bond angle density within (--rcut must \n be specified)", | |
70 | " --count count of molecules matching selection criteria \n (and associated statistics)", | |
71 | " -g, --gofr g(r)", | |
# | Line 75 | Line 81 | const char *gengetopt_args_info_help[] = { | |
81 | " -s, --scd scd order parameter (either --sele1, --sele2, \n --sele3 are specified or --molname, --begin, \n --end are specified)", | |
82 | " -d, --density density plot", | |
83 | " --slab_density slab density", | |
84 | < | " --p_angle p(cos(theta))", |
84 | > | " --p_angle p(cos(theta)) (--sele1 must be specified, \n --sele2 is optional)", |
85 | " --hxy hxy", | |
86 | " --rho_r rho of R", | |
87 | " --angle_r angle of R", | |
# | Line 83 | Line 89 | const char *gengetopt_args_info_help[] = { | |
89 | " --rodlength length of nanorod", | |
90 | " -Q, --tet_param tetrahedrality order parameter (Qk)", | |
91 | " --tet_param_z spatially-resolved tetrahedrality order \n parameter Qk(z)", | |
92 | + | " --rnemdz slab-resolved RNEMD statistics (temperature, \n density, velocity)", |
93 | + | " --rnemdr shell-resolved RNEMD statistics (temperature, \n density, angular velocity)", |
94 | + | " --rnemdrt shell and angle-resolved RNEMD statistics \n (temperature, density, angular velocity)", |
95 | + | " --uFreqMap electrostatic potential to frequency map based \n on the Cho nitrile fits", |
96 | 0 | |
97 | }; | |
98 | ||
# | Line 131 | Line 141 | void clear_given (struct gengetopt_args_info *args_inf | |
141 | args_info->refsele_given = 0 ; | |
142 | args_info->comsele_given = 0 ; | |
143 | args_info->seleoffset_given = 0 ; | |
144 | + | args_info->seleoffset2_given = 0 ; |
145 | args_info->molname_given = 0 ; | |
146 | args_info->begin_given = 0 ; | |
147 | args_info->end_given = 0 ; | |
148 | args_info->radius_given = 0 ; | |
149 | args_info->bo_given = 0 ; | |
150 | < | args_info->bor_given = 0 ; |
150 | > | args_info->ior_given = 0 ; |
151 | > | args_info->for_given = 0 ; |
152 | args_info->bad_given = 0 ; | |
153 | args_info->count_given = 0 ; | |
154 | args_info->gofr_given = 0 ; | |
# | Line 160 | Line 172 | void clear_given (struct gengetopt_args_info *args_inf | |
172 | args_info->rodlength_given = 0 ; | |
173 | args_info->tet_param_given = 0 ; | |
174 | args_info->tet_param_z_given = 0 ; | |
175 | + | args_info->rnemdz_given = 0 ; |
176 | + | args_info->rnemdr_given = 0 ; |
177 | + | args_info->rnemdrt_given = 0 ; |
178 | + | args_info->uFreqMap_given = 0 ; |
179 | args_info->staticProps_group_counter = 0 ; | |
180 | } | |
181 | ||
# | Line 200 | Line 216 | void clear_args (struct gengetopt_args_info *args_info | |
216 | args_info->comsele_arg = NULL; | |
217 | args_info->comsele_orig = NULL; | |
218 | args_info->seleoffset_orig = NULL; | |
219 | + | args_info->seleoffset2_orig = NULL; |
220 | args_info->molname_arg = NULL; | |
221 | args_info->molname_orig = NULL; | |
222 | args_info->begin_orig = NULL; | |
# | Line 234 | Line 251 | void init_args_info(struct gengetopt_args_info *args_i | |
251 | args_info->refsele_help = gengetopt_args_info_help[18] ; | |
252 | args_info->comsele_help = gengetopt_args_info_help[19] ; | |
253 | args_info->seleoffset_help = gengetopt_args_info_help[20] ; | |
254 | < | args_info->molname_help = gengetopt_args_info_help[21] ; |
255 | < | args_info->begin_help = gengetopt_args_info_help[22] ; |
256 | < | args_info->end_help = gengetopt_args_info_help[23] ; |
257 | < | args_info->radius_help = gengetopt_args_info_help[24] ; |
258 | < | args_info->bo_help = gengetopt_args_info_help[26] ; |
259 | < | args_info->bor_help = gengetopt_args_info_help[27] ; |
260 | < | args_info->bad_help = gengetopt_args_info_help[28] ; |
261 | < | args_info->count_help = gengetopt_args_info_help[29] ; |
262 | < | args_info->gofr_help = gengetopt_args_info_help[30] ; |
263 | < | args_info->gofz_help = gengetopt_args_info_help[31] ; |
264 | < | args_info->r_theta_help = gengetopt_args_info_help[32] ; |
265 | < | args_info->r_omega_help = gengetopt_args_info_help[33] ; |
266 | < | args_info->r_z_help = gengetopt_args_info_help[34] ; |
267 | < | args_info->theta_omega_help = gengetopt_args_info_help[35] ; |
268 | < | args_info->gxyz_help = gengetopt_args_info_help[36] ; |
269 | < | args_info->twodgofr_help = gengetopt_args_info_help[37] ; |
270 | < | args_info->p2_help = gengetopt_args_info_help[38] ; |
271 | < | args_info->rp2_help = gengetopt_args_info_help[39] ; |
272 | < | args_info->scd_help = gengetopt_args_info_help[40] ; |
273 | < | args_info->density_help = gengetopt_args_info_help[41] ; |
274 | < | args_info->slab_density_help = gengetopt_args_info_help[42] ; |
275 | < | args_info->p_angle_help = gengetopt_args_info_help[43] ; |
276 | < | args_info->hxy_help = gengetopt_args_info_help[44] ; |
277 | < | args_info->rho_r_help = gengetopt_args_info_help[45] ; |
278 | < | args_info->angle_r_help = gengetopt_args_info_help[46] ; |
279 | < | args_info->hullvol_help = gengetopt_args_info_help[47] ; |
280 | < | args_info->rodlength_help = gengetopt_args_info_help[48] ; |
281 | < | args_info->tet_param_help = gengetopt_args_info_help[49] ; |
282 | < | args_info->tet_param_z_help = gengetopt_args_info_help[50] ; |
254 | > | args_info->seleoffset2_help = gengetopt_args_info_help[21] ; |
255 | > | args_info->molname_help = gengetopt_args_info_help[22] ; |
256 | > | args_info->begin_help = gengetopt_args_info_help[23] ; |
257 | > | args_info->end_help = gengetopt_args_info_help[24] ; |
258 | > | args_info->radius_help = gengetopt_args_info_help[25] ; |
259 | > | args_info->bo_help = gengetopt_args_info_help[27] ; |
260 | > | args_info->ior_help = gengetopt_args_info_help[28] ; |
261 | > | args_info->for_help = gengetopt_args_info_help[29] ; |
262 | > | args_info->bad_help = gengetopt_args_info_help[30] ; |
263 | > | args_info->count_help = gengetopt_args_info_help[31] ; |
264 | > | args_info->gofr_help = gengetopt_args_info_help[32] ; |
265 | > | args_info->gofz_help = gengetopt_args_info_help[33] ; |
266 | > | args_info->r_theta_help = gengetopt_args_info_help[34] ; |
267 | > | args_info->r_omega_help = gengetopt_args_info_help[35] ; |
268 | > | args_info->r_z_help = gengetopt_args_info_help[36] ; |
269 | > | args_info->theta_omega_help = gengetopt_args_info_help[37] ; |
270 | > | args_info->gxyz_help = gengetopt_args_info_help[38] ; |
271 | > | args_info->twodgofr_help = gengetopt_args_info_help[39] ; |
272 | > | args_info->p2_help = gengetopt_args_info_help[40] ; |
273 | > | args_info->rp2_help = gengetopt_args_info_help[41] ; |
274 | > | args_info->scd_help = gengetopt_args_info_help[42] ; |
275 | > | args_info->density_help = gengetopt_args_info_help[43] ; |
276 | > | args_info->slab_density_help = gengetopt_args_info_help[44] ; |
277 | > | args_info->p_angle_help = gengetopt_args_info_help[45] ; |
278 | > | args_info->hxy_help = gengetopt_args_info_help[46] ; |
279 | > | args_info->rho_r_help = gengetopt_args_info_help[47] ; |
280 | > | args_info->angle_r_help = gengetopt_args_info_help[48] ; |
281 | > | args_info->hullvol_help = gengetopt_args_info_help[49] ; |
282 | > | args_info->rodlength_help = gengetopt_args_info_help[50] ; |
283 | > | args_info->tet_param_help = gengetopt_args_info_help[51] ; |
284 | > | args_info->tet_param_z_help = gengetopt_args_info_help[52] ; |
285 | > | args_info->rnemdz_help = gengetopt_args_info_help[53] ; |
286 | > | args_info->rnemdr_help = gengetopt_args_info_help[54] ; |
287 | > | args_info->rnemdrt_help = gengetopt_args_info_help[55] ; |
288 | > | args_info->uFreqMap_help = gengetopt_args_info_help[56] ; |
289 | ||
290 | } | |
291 | ||
# | Line 372 | Line 395 | cmdline_parser_release (struct gengetopt_args_info *ar | |
395 | free_string_field (&(args_info->comsele_arg)); | |
396 | free_string_field (&(args_info->comsele_orig)); | |
397 | free_string_field (&(args_info->seleoffset_orig)); | |
398 | + | free_string_field (&(args_info->seleoffset2_orig)); |
399 | free_string_field (&(args_info->molname_arg)); | |
400 | free_string_field (&(args_info->molname_orig)); | |
401 | free_string_field (&(args_info->begin_orig)); | |
# | Line 454 | Line 478 | cmdline_parser_dump(FILE *outfile, struct gengetopt_ar | |
478 | write_into_file(outfile, "comsele", args_info->comsele_orig, 0); | |
479 | if (args_info->seleoffset_given) | |
480 | write_into_file(outfile, "seleoffset", args_info->seleoffset_orig, 0); | |
481 | + | if (args_info->seleoffset2_given) |
482 | + | write_into_file(outfile, "seleoffset2", args_info->seleoffset2_orig, 0); |
483 | if (args_info->molname_given) | |
484 | write_into_file(outfile, "molname", args_info->molname_orig, 0); | |
485 | if (args_info->begin_given) | |
# | Line 464 | Line 490 | cmdline_parser_dump(FILE *outfile, struct gengetopt_ar | |
490 | write_into_file(outfile, "radius", args_info->radius_orig, 0); | |
491 | if (args_info->bo_given) | |
492 | write_into_file(outfile, "bo", 0, 0 ); | |
493 | < | if (args_info->bor_given) |
494 | < | write_into_file(outfile, "bor", 0, 0 ); |
493 | > | if (args_info->ior_given) |
494 | > | write_into_file(outfile, "ior", 0, 0 ); |
495 | > | if (args_info->for_given) |
496 | > | write_into_file(outfile, "for", 0, 0 ); |
497 | if (args_info->bad_given) | |
498 | write_into_file(outfile, "bad", 0, 0 ); | |
499 | if (args_info->count_given) | |
# | Line 512 | Line 540 | cmdline_parser_dump(FILE *outfile, struct gengetopt_ar | |
540 | write_into_file(outfile, "tet_param", 0, 0 ); | |
541 | if (args_info->tet_param_z_given) | |
542 | write_into_file(outfile, "tet_param_z", 0, 0 ); | |
543 | + | if (args_info->rnemdz_given) |
544 | + | write_into_file(outfile, "rnemdz", 0, 0 ); |
545 | + | if (args_info->rnemdr_given) |
546 | + | write_into_file(outfile, "rnemdr", 0, 0 ); |
547 | + | if (args_info->rnemdrt_given) |
548 | + | write_into_file(outfile, "rnemdrt", 0, 0 ); |
549 | + | if (args_info->uFreqMap_given) |
550 | + | write_into_file(outfile, "uFreqMap", 0, 0 ); |
551 | ||
552 | ||
553 | i = EXIT_SUCCESS; | |
# | Line 566 | Line 602 | reset_group_staticProps(struct gengetopt_args_info *ar | |
602 | return; | |
603 | ||
604 | args_info->bo_given = 0 ; | |
605 | < | args_info->bor_given = 0 ; |
605 | > | args_info->ior_given = 0 ; |
606 | > | args_info->for_given = 0 ; |
607 | args_info->bad_given = 0 ; | |
608 | args_info->count_given = 0 ; | |
609 | args_info->gofr_given = 0 ; | |
# | Line 590 | Line 627 | reset_group_staticProps(struct gengetopt_args_info *ar | |
627 | args_info->rodlength_given = 0 ; | |
628 | args_info->tet_param_given = 0 ; | |
629 | args_info->tet_param_z_given = 0 ; | |
630 | + | args_info->rnemdz_given = 0 ; |
631 | + | args_info->rnemdr_given = 0 ; |
632 | + | args_info->rnemdrt_given = 0 ; |
633 | + | args_info->uFreqMap_given = 0 ; |
634 | ||
635 | args_info->staticProps_group_counter = 0; | |
636 | } | |
# | Line 856 | Line 897 | cmdline_parser_internal ( | |
897 | { "refsele", 1, NULL, 0 }, | |
898 | { "comsele", 1, NULL, 0 }, | |
899 | { "seleoffset", 1, NULL, 0 }, | |
900 | + | { "seleoffset2", 1, NULL, 0 }, |
901 | { "molname", 1, NULL, 0 }, | |
902 | { "begin", 1, NULL, 0 }, | |
903 | { "end", 1, NULL, 0 }, | |
904 | { "radius", 1, NULL, 0 }, | |
905 | { "bo", 0, NULL, 0 }, | |
906 | < | { "bor", 0, NULL, 0 }, |
906 | > | { "ior", 0, NULL, 0 }, |
907 | > | { "for", 0, NULL, 0 }, |
908 | { "bad", 0, NULL, 0 }, | |
909 | { "count", 0, NULL, 0 }, | |
910 | { "gofr", 0, NULL, 'g' }, | |
# | Line 885 | Line 928 | cmdline_parser_internal ( | |
928 | { "rodlength", 0, NULL, 0 }, | |
929 | { "tet_param", 0, NULL, 'Q' }, | |
930 | { "tet_param_z", 0, NULL, 0 }, | |
931 | + | { "rnemdz", 0, NULL, 0 }, |
932 | + | { "rnemdr", 0, NULL, 0 }, |
933 | + | { "rnemdrt", 0, NULL, 0 }, |
934 | + | { "uFreqMap", 0, NULL, 0 }, |
935 | { 0, 0, 0, 0 } | |
936 | }; | |
937 | ||
# | Line 1225 | Line 1272 | cmdline_parser_internal ( | |
1272 | &(local_args_info.seleoffset_given), optarg, 0, 0, ARG_INT, | |
1273 | check_ambiguity, override, 0, 0, | |
1274 | "seleoffset", '-', | |
1275 | + | additional_error)) |
1276 | + | goto failure; |
1277 | + | |
1278 | + | } |
1279 | + | /* global index offset for a third object (used to define a vector between sites in molecule). */ |
1280 | + | else if (strcmp (long_options[option_index].name, "seleoffset2") == 0) |
1281 | + | { |
1282 | + | |
1283 | + | |
1284 | + | if (update_arg( (void *)&(args_info->seleoffset2_arg), |
1285 | + | &(args_info->seleoffset2_orig), &(args_info->seleoffset2_given), |
1286 | + | &(local_args_info.seleoffset2_given), optarg, 0, 0, ARG_INT, |
1287 | + | check_ambiguity, override, 0, 0, |
1288 | + | "seleoffset2", '-', |
1289 | additional_error)) | |
1290 | goto failure; | |
1291 | ||
# | Line 1302 | Line 1363 | cmdline_parser_internal ( | |
1363 | goto failure; | |
1364 | ||
1365 | } | |
1366 | < | /* bond order parameter as a function of radius (--rcut must be specified). */ |
1367 | < | else if (strcmp (long_options[option_index].name, "bor") == 0) |
1366 | > | /* icosahedral bond order parameter as a function of radius (--rcut must be specified). */ |
1367 | > | else if (strcmp (long_options[option_index].name, "ior") == 0) |
1368 | { | |
1369 | ||
1370 | if (args_info->staticProps_group_counter && override) | |
# | Line 1311 | Line 1372 | cmdline_parser_internal ( | |
1372 | args_info->staticProps_group_counter += 1; | |
1373 | ||
1374 | if (update_arg( 0 , | |
1375 | < | 0 , &(args_info->bor_given), |
1376 | < | &(local_args_info.bor_given), optarg, 0, 0, ARG_NO, |
1375 | > | 0 , &(args_info->ior_given), |
1376 | > | &(local_args_info.ior_given), optarg, 0, 0, ARG_NO, |
1377 | check_ambiguity, override, 0, 0, | |
1378 | < | "bor", '-', |
1378 | > | "ior", '-', |
1379 | > | additional_error)) |
1380 | > | goto failure; |
1381 | > | |
1382 | > | } |
1383 | > | /* FCC bond order parameter as a function of radius (--rcut must be specified). */ |
1384 | > | else if (strcmp (long_options[option_index].name, "for") == 0) |
1385 | > | { |
1386 | > | |
1387 | > | if (args_info->staticProps_group_counter && override) |
1388 | > | reset_group_staticProps (args_info); |
1389 | > | args_info->staticProps_group_counter += 1; |
1390 | > | |
1391 | > | if (update_arg( 0 , |
1392 | > | 0 , &(args_info->for_given), |
1393 | > | &(local_args_info.for_given), optarg, 0, 0, ARG_NO, |
1394 | > | check_ambiguity, override, 0, 0, |
1395 | > | "for", '-', |
1396 | additional_error)) | |
1397 | goto failure; | |
1398 | ||
# | Line 1506 | Line 1584 | cmdline_parser_internal ( | |
1584 | goto failure; | |
1585 | ||
1586 | } | |
1587 | < | /* p(cos(theta)). */ |
1587 | > | /* p(cos(theta)) (--sele1 must be specified, --sele2 is optional). */ |
1588 | else if (strcmp (long_options[option_index].name, "p_angle") == 0) | |
1589 | { | |
1590 | ||
# | Line 1625 | Line 1703 | cmdline_parser_internal ( | |
1703 | goto failure; | |
1704 | ||
1705 | } | |
1706 | + | /* slab-resolved RNEMD statistics (temperature, density, velocity). */ |
1707 | + | else if (strcmp (long_options[option_index].name, "rnemdz") == 0) |
1708 | + | { |
1709 | ||
1710 | + | if (args_info->staticProps_group_counter && override) |
1711 | + | reset_group_staticProps (args_info); |
1712 | + | args_info->staticProps_group_counter += 1; |
1713 | + | |
1714 | + | if (update_arg( 0 , |
1715 | + | 0 , &(args_info->rnemdz_given), |
1716 | + | &(local_args_info.rnemdz_given), optarg, 0, 0, ARG_NO, |
1717 | + | check_ambiguity, override, 0, 0, |
1718 | + | "rnemdz", '-', |
1719 | + | additional_error)) |
1720 | + | goto failure; |
1721 | + | |
1722 | + | } |
1723 | + | /* shell-resolved RNEMD statistics (temperature, density, angular velocity). */ |
1724 | + | else if (strcmp (long_options[option_index].name, "rnemdr") == 0) |
1725 | + | { |
1726 | + | |
1727 | + | if (args_info->staticProps_group_counter && override) |
1728 | + | reset_group_staticProps (args_info); |
1729 | + | args_info->staticProps_group_counter += 1; |
1730 | + | |
1731 | + | if (update_arg( 0 , |
1732 | + | 0 , &(args_info->rnemdr_given), |
1733 | + | &(local_args_info.rnemdr_given), optarg, 0, 0, ARG_NO, |
1734 | + | check_ambiguity, override, 0, 0, |
1735 | + | "rnemdr", '-', |
1736 | + | additional_error)) |
1737 | + | goto failure; |
1738 | + | |
1739 | + | } |
1740 | + | /* shell and angle-resolved RNEMD statistics (temperature, density, angular velocity). */ |
1741 | + | else if (strcmp (long_options[option_index].name, "rnemdrt") == 0) |
1742 | + | { |
1743 | + | |
1744 | + | if (args_info->staticProps_group_counter && override) |
1745 | + | reset_group_staticProps (args_info); |
1746 | + | args_info->staticProps_group_counter += 1; |
1747 | + | |
1748 | + | if (update_arg( 0 , |
1749 | + | 0 , &(args_info->rnemdrt_given), |
1750 | + | &(local_args_info.rnemdrt_given), optarg, 0, 0, ARG_NO, |
1751 | + | check_ambiguity, override, 0, 0, |
1752 | + | "rnemdrt", '-', |
1753 | + | additional_error)) |
1754 | + | goto failure; |
1755 | + | |
1756 | + | } |
1757 | + | /* electrostatic potential to frequency map based on the Cho nitrile fits. */ |
1758 | + | else if (strcmp (long_options[option_index].name, "uFreqMap") == 0) |
1759 | + | { |
1760 | + | |
1761 | + | if (args_info->staticProps_group_counter && override) |
1762 | + | reset_group_staticProps (args_info); |
1763 | + | args_info->staticProps_group_counter += 1; |
1764 | + | |
1765 | + | if (update_arg( 0 , |
1766 | + | 0 , &(args_info->uFreqMap_given), |
1767 | + | &(local_args_info.uFreqMap_given), optarg, 0, 0, ARG_NO, |
1768 | + | check_ambiguity, override, 0, 0, |
1769 | + | "uFreqMap", '-', |
1770 | + | additional_error)) |
1771 | + | goto failure; |
1772 | + | |
1773 | + | } |
1774 | + | |
1775 | break; | |
1776 | case '?': /* Invalid option. */ | |
1777 | /* `getopt_long' already printed an error message. */ |
– | Removed lines |
+ | Added lines |
< | Changed lines |
> | Changed lines |