ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/trunk/src/applications/staticProps/StaticPropsCmd.cpp
Revision: 2049
Committed: Tue Jan 6 21:44:10 2015 UTC (10 years, 3 months ago) by gezelter
File size: 73483 byte(s)
Log Message:
Added Geometric HBond StaticProps module.

File Contents

# User Rev Content
1 tim 310 /*
2 gezelter 1629 File autogenerated by gengetopt version 2.22.4
3 tim 310 generated with the following command:
4 gezelter 2049 gengetopt --file-name=StaticPropsCmd --unamed-opts
5 tim 310
6     The developers of gengetopt consider the fixed text that goes in all
7     gengetopt output files to be in the public domain:
8     we make no copyright claims on it.
9     */
10    
11 gezelter 929 /* If we use autoconf. */
12     #ifdef HAVE_CONFIG_H
13     #include "config.h"
14     #endif
15 tim 310
16     #include <stdio.h>
17     #include <stdlib.h>
18     #include <string.h>
19    
20 gezelter 1629 #ifndef FIX_UNUSED
21     #define FIX_UNUSED(X) (void) (X) /* avoid warnings for unused params */
22     #endif
23 tim 310
24 gezelter 2049 #ifdef WIN32
25     #include "utils/wingetopt.h"
26     #else
27 gezelter 1629 #include <getopt.h>
28 gezelter 2049 #endif
29 gezelter 1629
30 tim 311 #include "StaticPropsCmd.h"
31 tim 310
32 chuckv 1128 const char *gengetopt_args_info_purpose = "";
33    
34 gezelter 2049 const char *gengetopt_args_info_usage = "Usage: StaticProps [OPTIONS]... [FILES]...";
35 chuckv 1128
36     const char *gengetopt_args_info_description = "";
37    
38     const char *gengetopt_args_info_help[] = {
39     " -h, --help Print help and exit",
40     " -V, --version Print version and exit",
41     " -i, --input=filename input dump file",
42     " -o, --output=filename output file name",
43     " -n, --step=INT process every n frame (default=`1')",
44     " -b, --nbins=INT number of bins (general purpose) \n (default=`100')",
45     " -x, --nbins_x=INT number of bins in x axis (default=`100')",
46     " -y, --nbins_y=INT number of bins in y axis (default=`100')",
47 gezelter 1440 " --nbins_z=INT number of bins in z axis (default=`100')",
48 chuckv 1128 " -a, --nanglebins=INT number of bins for cos(angle) (default=`50')",
49 chuckv 1445 " -c, --rcut=DOUBLE cutoff radius (rcut)",
50 gezelter 2049 " --thetacut=DOUBLE cutoff angle (thetacut)",
51 gezelter 1454 " --dz=DOUBLE slab width (dz)",
52 chuckv 1128 " --length=DOUBLE maximum length (Defaults to 1/2 smallest length \n of first frame)",
53 chuckv 1445 " --zlength=DOUBLE maximum length (Defaults to 1/2 smallest length \n of first frame)",
54 chuckv 1128 " -z, --zoffset=DOUBLE Where to set the zero for the slab_density \n calculation (default=`0')",
55     " --sele1=selection script select the first stuntdouble set",
56     " --sele2=selection script select the second stuntdouble set",
57     " --sele3=selection script select the third stuntdouble set",
58     " --refsele=selection script\n select reference (use and only use with --gxyz)",
59 gezelter 1390 " --comsele=selection script\n select stunt doubles for center-of-mass \n reference point",
60 gezelter 1819 " --seleoffset=INT global index offset for a second object (used \n to define a vector between sites in molecule)",
61 gezelter 1991 " --seleoffset2=INT global index offset for a third object (used to \n define a vector between sites in molecule)",
62 chuckv 1128 " --molname=STRING molecule name",
63     " --begin=INT begin internal index",
64     " --end=INT end internal index",
65     " --radius=DOUBLE nanoparticle radius",
66 gezelter 2015 " -v, --voxelSize=DOUBLE voxel size (angstroms)",
67     " --gaussWidth=DOUBLE Gaussian width (angstroms)",
68 chuckv 1128 "\n Group: staticProps\n an option of this group is required",
69     " --bo bond order parameter (--rcut must be specified)",
70 gezelter 1992 " --ior icosahedral bond order parameter as a function \n of radius (--rcut must be specified)",
71     " --for FCC bond order parameter as a function of \n radius (--rcut must be specified)",
72 chuckv 1180 " --bad N(theta) bond angle density within (--rcut must \n be specified)",
73 gezelter 1629 " --count count of molecules matching selection criteria \n (and associated statistics)",
74 chuckv 1128 " -g, --gofr g(r)",
75 xsun 1213 " --gofz g(z)",
76 chuckv 1128 " --r_theta g(r, cos(theta))",
77     " --r_omega g(r, cos(omega))",
78 gezelter 1440 " --r_z g(r, z)",
79 chuckv 1128 " --theta_omega g(cos(theta), cos(omega))",
80     " --gxyz g(x, y, z)",
81 gezelter 1454 " --twodgofr 2D g(r) (Slab width --dz must be specified)",
82 gezelter 1629 " -p, --p2 p2 order parameter (--sele1 must be specified, \n --sele2 is optional)",
83 chuckv 1128 " --rp2 rp2 order parameter (--sele1 and --sele2 must \n be specified)",
84     " -s, --scd scd order parameter (either --sele1, --sele2, \n --sele3 are specified or --molname, --begin, \n --end are specified)",
85     " -d, --density density plot",
86     " --slab_density slab density",
87 gezelter 1979 " --p_angle p(cos(theta)) (--sele1 must be specified, \n --sele2 is optional)",
88 chuckv 1128 " --hxy hxy",
89     " --rho_r rho of R",
90 gezelter 1629 " --angle_r angle of R",
91 chuckv 1180 " --hullvol hull volume of nanoparticle",
92 gezelter 1629 " --rodlength length of nanorod",
93 gezelter 1843 " -Q, --tet_param tetrahedrality order parameter (Qk)",
94     " --tet_param_z spatially-resolved tetrahedrality order \n parameter Qk(z)",
95 gezelter 2015 " --tet_param_xyz volume-resolved tetrahedrality order parameter \n Qk(x,y,z). (voxelSize, rcut, and gaussWidth \n must be specified)",
96 gezelter 1879 " --rnemdz slab-resolved RNEMD statistics (temperature, \n density, velocity)",
97     " --rnemdr shell-resolved RNEMD statistics (temperature, \n density, angular velocity)",
98 gezelter 1953 " --rnemdrt shell and angle-resolved RNEMD statistics \n (temperature, density, angular velocity)",
99 gezelter 1994 " --nitrile electrostatic potential to frequency map based \n on the Cho nitrile fits",
100 gezelter 1999 " -m, --multipole average multipole moments contained within \n cutoff spheres as a function of radius",
101 jmichalk 2031 " --surfDiffusion X, Y, and R (surface diffusion if Z exposed and \n bulk immobile) diffusion",
102 gezelter 2049 " --hbond Hydrogen Bonding statistics using geometric \n criteria (rcut and thetacut must be \n specified)",
103 chuckv 1128 0
104     };
105    
106 gezelter 1390 typedef enum {ARG_NO
107     , ARG_STRING
108     , ARG_INT
109     , ARG_DOUBLE
110     } cmdline_parser_arg_type;
111    
112 gezelter 929 static
113     void clear_given (struct gengetopt_args_info *args_info);
114     static
115     void clear_args (struct gengetopt_args_info *args_info);
116    
117     static int
118 gezelter 1629 cmdline_parser_internal (int argc, char **argv, struct gengetopt_args_info *args_info,
119 gezelter 1390 struct cmdline_parser_params *params, const char *additional_error);
120 gezelter 929
121     static int
122     cmdline_parser_required2 (struct gengetopt_args_info *args_info, const char *prog_name, const char *additional_error);
123    
124     static char *
125     gengetopt_strdup (const char *s);
126    
127     static
128     void clear_given (struct gengetopt_args_info *args_info)
129     {
130     args_info->help_given = 0 ;
131     args_info->version_given = 0 ;
132     args_info->input_given = 0 ;
133     args_info->output_given = 0 ;
134     args_info->step_given = 0 ;
135 gezelter 1041 args_info->nbins_given = 0 ;
136 xsun 955 args_info->nbins_x_given = 0 ;
137     args_info->nbins_y_given = 0 ;
138 gezelter 1440 args_info->nbins_z_given = 0 ;
139 gezelter 929 args_info->nanglebins_given = 0 ;
140 chuckv 1445 args_info->rcut_given = 0 ;
141 gezelter 2049 args_info->thetacut_given = 0 ;
142 gezelter 1454 args_info->dz_given = 0 ;
143 gezelter 929 args_info->length_given = 0 ;
144 chuckv 1445 args_info->zlength_given = 0 ;
145 gezelter 929 args_info->zoffset_given = 0 ;
146     args_info->sele1_given = 0 ;
147     args_info->sele2_given = 0 ;
148     args_info->sele3_given = 0 ;
149     args_info->refsele_given = 0 ;
150 gezelter 1390 args_info->comsele_given = 0 ;
151 gezelter 1819 args_info->seleoffset_given = 0 ;
152 gezelter 1991 args_info->seleoffset2_given = 0 ;
153 gezelter 929 args_info->molname_given = 0 ;
154     args_info->begin_given = 0 ;
155     args_info->end_given = 0 ;
156 chuckv 1091 args_info->radius_given = 0 ;
157 gezelter 2015 args_info->voxelSize_given = 0 ;
158     args_info->gaussWidth_given = 0 ;
159 gezelter 1039 args_info->bo_given = 0 ;
160 gezelter 1992 args_info->ior_given = 0 ;
161     args_info->for_given = 0 ;
162 chuckv 1180 args_info->bad_given = 0 ;
163 gezelter 1629 args_info->count_given = 0 ;
164 gezelter 929 args_info->gofr_given = 0 ;
165 xsun 1213 args_info->gofz_given = 0 ;
166 gezelter 929 args_info->r_theta_given = 0 ;
167     args_info->r_omega_given = 0 ;
168 gezelter 1440 args_info->r_z_given = 0 ;
169 gezelter 929 args_info->theta_omega_given = 0 ;
170     args_info->gxyz_given = 0 ;
171 gezelter 1454 args_info->twodgofr_given = 0 ;
172 gezelter 929 args_info->p2_given = 0 ;
173 xsun 980 args_info->rp2_given = 0 ;
174 gezelter 929 args_info->scd_given = 0 ;
175     args_info->density_given = 0 ;
176     args_info->slab_density_given = 0 ;
177 gezelter 1413 args_info->p_angle_given = 0 ;
178 xsun 955 args_info->hxy_given = 0 ;
179 chuckv 1091 args_info->rho_r_given = 0 ;
180 gezelter 1629 args_info->angle_r_given = 0 ;
181 chuckv 1180 args_info->hullvol_given = 0 ;
182 gezelter 1629 args_info->rodlength_given = 0 ;
183     args_info->tet_param_given = 0 ;
184 plouden 1762 args_info->tet_param_z_given = 0 ;
185 gezelter 2015 args_info->tet_param_xyz_given = 0 ;
186 gezelter 1879 args_info->rnemdz_given = 0 ;
187     args_info->rnemdr_given = 0 ;
188 gezelter 1953 args_info->rnemdrt_given = 0 ;
189 gezelter 1994 args_info->nitrile_given = 0 ;
190 gezelter 1998 args_info->multipole_given = 0 ;
191 jmichalk 2031 args_info->surfDiffusion_given = 0 ;
192 gezelter 2049 args_info->hbond_given = 0 ;
193 gezelter 929 args_info->staticProps_group_counter = 0 ;
194     }
195    
196     static
197     void clear_args (struct gengetopt_args_info *args_info)
198     {
199 gezelter 1629 FIX_UNUSED (args_info);
200 gezelter 929 args_info->input_arg = NULL;
201     args_info->input_orig = NULL;
202     args_info->output_arg = NULL;
203     args_info->output_orig = NULL;
204     args_info->step_arg = 1;
205     args_info->step_orig = NULL;
206 gezelter 1041 args_info->nbins_arg = 100;
207     args_info->nbins_orig = NULL;
208 xsun 955 args_info->nbins_x_arg = 100;
209     args_info->nbins_x_orig = NULL;
210     args_info->nbins_y_arg = 100;
211     args_info->nbins_y_orig = NULL;
212 gezelter 1440 args_info->nbins_z_arg = 100;
213     args_info->nbins_z_orig = NULL;
214 gezelter 929 args_info->nanglebins_arg = 50;
215     args_info->nanglebins_orig = NULL;
216 chuckv 1445 args_info->rcut_orig = NULL;
217 gezelter 2049 args_info->thetacut_orig = NULL;
218 gezelter 1454 args_info->dz_orig = NULL;
219 gezelter 929 args_info->length_orig = NULL;
220 chuckv 1445 args_info->zlength_orig = NULL;
221 gezelter 929 args_info->zoffset_arg = 0;
222     args_info->zoffset_orig = NULL;
223     args_info->sele1_arg = NULL;
224     args_info->sele1_orig = NULL;
225     args_info->sele2_arg = NULL;
226     args_info->sele2_orig = NULL;
227     args_info->sele3_arg = NULL;
228     args_info->sele3_orig = NULL;
229     args_info->refsele_arg = NULL;
230     args_info->refsele_orig = NULL;
231 gezelter 1390 args_info->comsele_arg = NULL;
232     args_info->comsele_orig = NULL;
233 gezelter 1819 args_info->seleoffset_orig = NULL;
234 gezelter 1991 args_info->seleoffset2_orig = NULL;
235 gezelter 929 args_info->molname_arg = NULL;
236     args_info->molname_orig = NULL;
237     args_info->begin_orig = NULL;
238     args_info->end_orig = NULL;
239 chuckv 1091 args_info->radius_orig = NULL;
240 gezelter 2015 args_info->voxelSize_orig = NULL;
241     args_info->gaussWidth_orig = NULL;
242 gezelter 929
243     }
244    
245 chuckv 1128 static
246     void init_args_info(struct gengetopt_args_info *args_info)
247     {
248 gezelter 1390
249    
250 chuckv 1128 args_info->help_help = gengetopt_args_info_help[0] ;
251     args_info->version_help = gengetopt_args_info_help[1] ;
252     args_info->input_help = gengetopt_args_info_help[2] ;
253     args_info->output_help = gengetopt_args_info_help[3] ;
254     args_info->step_help = gengetopt_args_info_help[4] ;
255     args_info->nbins_help = gengetopt_args_info_help[5] ;
256     args_info->nbins_x_help = gengetopt_args_info_help[6] ;
257     args_info->nbins_y_help = gengetopt_args_info_help[7] ;
258 gezelter 1440 args_info->nbins_z_help = gengetopt_args_info_help[8] ;
259     args_info->nanglebins_help = gengetopt_args_info_help[9] ;
260 chuckv 1445 args_info->rcut_help = gengetopt_args_info_help[10] ;
261 gezelter 2049 args_info->thetacut_help = gengetopt_args_info_help[11] ;
262     args_info->dz_help = gengetopt_args_info_help[12] ;
263     args_info->length_help = gengetopt_args_info_help[13] ;
264     args_info->zlength_help = gengetopt_args_info_help[14] ;
265     args_info->zoffset_help = gengetopt_args_info_help[15] ;
266     args_info->sele1_help = gengetopt_args_info_help[16] ;
267     args_info->sele2_help = gengetopt_args_info_help[17] ;
268     args_info->sele3_help = gengetopt_args_info_help[18] ;
269     args_info->refsele_help = gengetopt_args_info_help[19] ;
270     args_info->comsele_help = gengetopt_args_info_help[20] ;
271     args_info->seleoffset_help = gengetopt_args_info_help[21] ;
272     args_info->seleoffset2_help = gengetopt_args_info_help[22] ;
273     args_info->molname_help = gengetopt_args_info_help[23] ;
274     args_info->begin_help = gengetopt_args_info_help[24] ;
275     args_info->end_help = gengetopt_args_info_help[25] ;
276     args_info->radius_help = gengetopt_args_info_help[26] ;
277     args_info->voxelSize_help = gengetopt_args_info_help[27] ;
278     args_info->gaussWidth_help = gengetopt_args_info_help[28] ;
279     args_info->bo_help = gengetopt_args_info_help[30] ;
280     args_info->ior_help = gengetopt_args_info_help[31] ;
281     args_info->for_help = gengetopt_args_info_help[32] ;
282     args_info->bad_help = gengetopt_args_info_help[33] ;
283     args_info->count_help = gengetopt_args_info_help[34] ;
284     args_info->gofr_help = gengetopt_args_info_help[35] ;
285     args_info->gofz_help = gengetopt_args_info_help[36] ;
286     args_info->r_theta_help = gengetopt_args_info_help[37] ;
287     args_info->r_omega_help = gengetopt_args_info_help[38] ;
288     args_info->r_z_help = gengetopt_args_info_help[39] ;
289     args_info->theta_omega_help = gengetopt_args_info_help[40] ;
290     args_info->gxyz_help = gengetopt_args_info_help[41] ;
291     args_info->twodgofr_help = gengetopt_args_info_help[42] ;
292     args_info->p2_help = gengetopt_args_info_help[43] ;
293     args_info->rp2_help = gengetopt_args_info_help[44] ;
294     args_info->scd_help = gengetopt_args_info_help[45] ;
295     args_info->density_help = gengetopt_args_info_help[46] ;
296     args_info->slab_density_help = gengetopt_args_info_help[47] ;
297     args_info->p_angle_help = gengetopt_args_info_help[48] ;
298     args_info->hxy_help = gengetopt_args_info_help[49] ;
299     args_info->rho_r_help = gengetopt_args_info_help[50] ;
300     args_info->angle_r_help = gengetopt_args_info_help[51] ;
301     args_info->hullvol_help = gengetopt_args_info_help[52] ;
302     args_info->rodlength_help = gengetopt_args_info_help[53] ;
303     args_info->tet_param_help = gengetopt_args_info_help[54] ;
304     args_info->tet_param_z_help = gengetopt_args_info_help[55] ;
305     args_info->tet_param_xyz_help = gengetopt_args_info_help[56] ;
306     args_info->rnemdz_help = gengetopt_args_info_help[57] ;
307     args_info->rnemdr_help = gengetopt_args_info_help[58] ;
308     args_info->rnemdrt_help = gengetopt_args_info_help[59] ;
309     args_info->nitrile_help = gengetopt_args_info_help[60] ;
310     args_info->multipole_help = gengetopt_args_info_help[61] ;
311     args_info->surfDiffusion_help = gengetopt_args_info_help[62] ;
312     args_info->hbond_help = gengetopt_args_info_help[63] ;
313 chuckv 1128
314     }
315    
316 tim 310 void
317     cmdline_parser_print_version (void)
318     {
319 gezelter 1629 printf ("%s %s\n",
320     (strlen(CMDLINE_PARSER_PACKAGE_NAME) ? CMDLINE_PARSER_PACKAGE_NAME : CMDLINE_PARSER_PACKAGE),
321     CMDLINE_PARSER_VERSION);
322 tim 310 }
323    
324 gezelter 1390 static void print_help_common(void) {
325 tim 310 cmdline_parser_print_version ();
326 chuckv 1128
327     if (strlen(gengetopt_args_info_purpose) > 0)
328     printf("\n%s\n", gengetopt_args_info_purpose);
329    
330 gezelter 1390 if (strlen(gengetopt_args_info_usage) > 0)
331     printf("\n%s\n", gengetopt_args_info_usage);
332 chuckv 1128
333 gezelter 1390 printf("\n");
334    
335 chuckv 1128 if (strlen(gengetopt_args_info_description) > 0)
336 gezelter 1629 printf("%s\n\n", gengetopt_args_info_description);
337 gezelter 1390 }
338 chuckv 1128
339 gezelter 1390 void
340     cmdline_parser_print_help (void)
341     {
342     int i = 0;
343     print_help_common();
344 chuckv 1128 while (gengetopt_args_info_help[i])
345     printf("%s\n", gengetopt_args_info_help[i++]);
346 tim 310 }
347    
348 gezelter 929 void
349     cmdline_parser_init (struct gengetopt_args_info *args_info)
350     {
351     clear_given (args_info);
352     clear_args (args_info);
353 chuckv 1128 init_args_info (args_info);
354 gezelter 2049
355     args_info->inputs = 0;
356     args_info->inputs_num = 0;
357 gezelter 1390 }
358 chuckv 1128
359 gezelter 1390 void
360     cmdline_parser_params_init(struct cmdline_parser_params *params)
361     {
362     if (params)
363     {
364     params->override = 0;
365     params->initialize = 1;
366     params->check_required = 1;
367     params->check_ambiguity = 0;
368     params->print_errors = 1;
369     }
370 gezelter 929 }
371 tim 310
372 gezelter 1390 struct cmdline_parser_params *
373     cmdline_parser_params_create(void)
374     {
375     struct cmdline_parser_params *params =
376     (struct cmdline_parser_params *)malloc(sizeof(struct cmdline_parser_params));
377     cmdline_parser_params_init(params);
378     return params;
379     }
380    
381 gezelter 929 static void
382 gezelter 1390 free_string_field (char **s)
383 gezelter 929 {
384 gezelter 1390 if (*s)
385 gezelter 929 {
386 gezelter 1390 free (*s);
387     *s = 0;
388 gezelter 929 }
389 gezelter 1390 }
390    
391    
392     static void
393     cmdline_parser_release (struct gengetopt_args_info *args_info)
394     {
395 gezelter 2049 unsigned int i;
396 gezelter 1390 free_string_field (&(args_info->input_arg));
397     free_string_field (&(args_info->input_orig));
398     free_string_field (&(args_info->output_arg));
399     free_string_field (&(args_info->output_orig));
400     free_string_field (&(args_info->step_orig));
401     free_string_field (&(args_info->nbins_orig));
402     free_string_field (&(args_info->nbins_x_orig));
403     free_string_field (&(args_info->nbins_y_orig));
404 gezelter 1440 free_string_field (&(args_info->nbins_z_orig));
405 gezelter 1390 free_string_field (&(args_info->nanglebins_orig));
406 chuckv 1445 free_string_field (&(args_info->rcut_orig));
407 gezelter 2049 free_string_field (&(args_info->thetacut_orig));
408 gezelter 1454 free_string_field (&(args_info->dz_orig));
409 gezelter 1390 free_string_field (&(args_info->length_orig));
410 chuckv 1445 free_string_field (&(args_info->zlength_orig));
411 gezelter 1390 free_string_field (&(args_info->zoffset_orig));
412     free_string_field (&(args_info->sele1_arg));
413     free_string_field (&(args_info->sele1_orig));
414     free_string_field (&(args_info->sele2_arg));
415     free_string_field (&(args_info->sele2_orig));
416     free_string_field (&(args_info->sele3_arg));
417     free_string_field (&(args_info->sele3_orig));
418     free_string_field (&(args_info->refsele_arg));
419     free_string_field (&(args_info->refsele_orig));
420     free_string_field (&(args_info->comsele_arg));
421     free_string_field (&(args_info->comsele_orig));
422 gezelter 1819 free_string_field (&(args_info->seleoffset_orig));
423 gezelter 1991 free_string_field (&(args_info->seleoffset2_orig));
424 gezelter 1390 free_string_field (&(args_info->molname_arg));
425     free_string_field (&(args_info->molname_orig));
426     free_string_field (&(args_info->begin_orig));
427     free_string_field (&(args_info->end_orig));
428     free_string_field (&(args_info->radius_orig));
429 gezelter 2015 free_string_field (&(args_info->voxelSize_orig));
430     free_string_field (&(args_info->gaussWidth_orig));
431 gezelter 929
432 chuckv 1128
433 gezelter 2049 for (i = 0; i < args_info->inputs_num; ++i)
434     free (args_info->inputs [i]);
435 gezelter 1390
436 gezelter 2049 if (args_info->inputs_num)
437     free (args_info->inputs);
438    
439 gezelter 929 clear_given (args_info);
440     }
441 tim 310
442 gezelter 1390
443     static void
444 gezelter 1629 write_into_file(FILE *outfile, const char *opt, const char *arg, const char *values[])
445 gezelter 1390 {
446 gezelter 1629 FIX_UNUSED (values);
447 gezelter 1390 if (arg) {
448     fprintf(outfile, "%s=\"%s\"\n", opt, arg);
449     } else {
450     fprintf(outfile, "%s\n", opt);
451     }
452     }
453    
454    
455 gezelter 929 int
456 gezelter 1390 cmdline_parser_dump(FILE *outfile, struct gengetopt_args_info *args_info)
457     {
458     int i = 0;
459    
460     if (!outfile)
461     {
462     fprintf (stderr, "%s: cannot dump options to stream\n", CMDLINE_PARSER_PACKAGE);
463     return EXIT_FAILURE;
464     }
465    
466     if (args_info->help_given)
467     write_into_file(outfile, "help", 0, 0 );
468     if (args_info->version_given)
469     write_into_file(outfile, "version", 0, 0 );
470     if (args_info->input_given)
471     write_into_file(outfile, "input", args_info->input_orig, 0);
472     if (args_info->output_given)
473     write_into_file(outfile, "output", args_info->output_orig, 0);
474     if (args_info->step_given)
475     write_into_file(outfile, "step", args_info->step_orig, 0);
476     if (args_info->nbins_given)
477     write_into_file(outfile, "nbins", args_info->nbins_orig, 0);
478     if (args_info->nbins_x_given)
479     write_into_file(outfile, "nbins_x", args_info->nbins_x_orig, 0);
480     if (args_info->nbins_y_given)
481     write_into_file(outfile, "nbins_y", args_info->nbins_y_orig, 0);
482 gezelter 1440 if (args_info->nbins_z_given)
483     write_into_file(outfile, "nbins_z", args_info->nbins_z_orig, 0);
484 gezelter 1390 if (args_info->nanglebins_given)
485     write_into_file(outfile, "nanglebins", args_info->nanglebins_orig, 0);
486 chuckv 1445 if (args_info->rcut_given)
487     write_into_file(outfile, "rcut", args_info->rcut_orig, 0);
488 gezelter 2049 if (args_info->thetacut_given)
489     write_into_file(outfile, "thetacut", args_info->thetacut_orig, 0);
490 gezelter 1454 if (args_info->dz_given)
491     write_into_file(outfile, "dz", args_info->dz_orig, 0);
492 gezelter 1390 if (args_info->length_given)
493     write_into_file(outfile, "length", args_info->length_orig, 0);
494 chuckv 1445 if (args_info->zlength_given)
495     write_into_file(outfile, "zlength", args_info->zlength_orig, 0);
496 gezelter 1390 if (args_info->zoffset_given)
497     write_into_file(outfile, "zoffset", args_info->zoffset_orig, 0);
498     if (args_info->sele1_given)
499     write_into_file(outfile, "sele1", args_info->sele1_orig, 0);
500     if (args_info->sele2_given)
501     write_into_file(outfile, "sele2", args_info->sele2_orig, 0);
502     if (args_info->sele3_given)
503     write_into_file(outfile, "sele3", args_info->sele3_orig, 0);
504     if (args_info->refsele_given)
505     write_into_file(outfile, "refsele", args_info->refsele_orig, 0);
506     if (args_info->comsele_given)
507     write_into_file(outfile, "comsele", args_info->comsele_orig, 0);
508 gezelter 1819 if (args_info->seleoffset_given)
509     write_into_file(outfile, "seleoffset", args_info->seleoffset_orig, 0);
510 gezelter 1991 if (args_info->seleoffset2_given)
511     write_into_file(outfile, "seleoffset2", args_info->seleoffset2_orig, 0);
512 gezelter 1390 if (args_info->molname_given)
513     write_into_file(outfile, "molname", args_info->molname_orig, 0);
514     if (args_info->begin_given)
515     write_into_file(outfile, "begin", args_info->begin_orig, 0);
516     if (args_info->end_given)
517     write_into_file(outfile, "end", args_info->end_orig, 0);
518     if (args_info->radius_given)
519     write_into_file(outfile, "radius", args_info->radius_orig, 0);
520 gezelter 2015 if (args_info->voxelSize_given)
521     write_into_file(outfile, "voxelSize", args_info->voxelSize_orig, 0);
522     if (args_info->gaussWidth_given)
523     write_into_file(outfile, "gaussWidth", args_info->gaussWidth_orig, 0);
524 gezelter 1390 if (args_info->bo_given)
525     write_into_file(outfile, "bo", 0, 0 );
526 gezelter 1992 if (args_info->ior_given)
527     write_into_file(outfile, "ior", 0, 0 );
528     if (args_info->for_given)
529     write_into_file(outfile, "for", 0, 0 );
530 gezelter 1390 if (args_info->bad_given)
531     write_into_file(outfile, "bad", 0, 0 );
532 gezelter 1629 if (args_info->count_given)
533     write_into_file(outfile, "count", 0, 0 );
534 gezelter 1390 if (args_info->gofr_given)
535     write_into_file(outfile, "gofr", 0, 0 );
536     if (args_info->gofz_given)
537     write_into_file(outfile, "gofz", 0, 0 );
538     if (args_info->r_theta_given)
539     write_into_file(outfile, "r_theta", 0, 0 );
540     if (args_info->r_omega_given)
541     write_into_file(outfile, "r_omega", 0, 0 );
542 gezelter 1440 if (args_info->r_z_given)
543     write_into_file(outfile, "r_z", 0, 0 );
544 gezelter 1390 if (args_info->theta_omega_given)
545     write_into_file(outfile, "theta_omega", 0, 0 );
546     if (args_info->gxyz_given)
547     write_into_file(outfile, "gxyz", 0, 0 );
548 gezelter 1454 if (args_info->twodgofr_given)
549     write_into_file(outfile, "twodgofr", 0, 0 );
550 gezelter 1390 if (args_info->p2_given)
551     write_into_file(outfile, "p2", 0, 0 );
552     if (args_info->rp2_given)
553     write_into_file(outfile, "rp2", 0, 0 );
554     if (args_info->scd_given)
555     write_into_file(outfile, "scd", 0, 0 );
556     if (args_info->density_given)
557     write_into_file(outfile, "density", 0, 0 );
558     if (args_info->slab_density_given)
559     write_into_file(outfile, "slab_density", 0, 0 );
560 gezelter 1413 if (args_info->p_angle_given)
561     write_into_file(outfile, "p_angle", 0, 0 );
562 gezelter 1390 if (args_info->hxy_given)
563     write_into_file(outfile, "hxy", 0, 0 );
564     if (args_info->rho_r_given)
565     write_into_file(outfile, "rho_r", 0, 0 );
566 gezelter 1629 if (args_info->angle_r_given)
567     write_into_file(outfile, "angle_r", 0, 0 );
568 gezelter 1390 if (args_info->hullvol_given)
569     write_into_file(outfile, "hullvol", 0, 0 );
570 gezelter 1629 if (args_info->rodlength_given)
571     write_into_file(outfile, "rodlength", 0, 0 );
572     if (args_info->tet_param_given)
573     write_into_file(outfile, "tet_param", 0, 0 );
574 plouden 1762 if (args_info->tet_param_z_given)
575     write_into_file(outfile, "tet_param_z", 0, 0 );
576 gezelter 2015 if (args_info->tet_param_xyz_given)
577     write_into_file(outfile, "tet_param_xyz", 0, 0 );
578 gezelter 1879 if (args_info->rnemdz_given)
579     write_into_file(outfile, "rnemdz", 0, 0 );
580     if (args_info->rnemdr_given)
581     write_into_file(outfile, "rnemdr", 0, 0 );
582 gezelter 1953 if (args_info->rnemdrt_given)
583     write_into_file(outfile, "rnemdrt", 0, 0 );
584 gezelter 1994 if (args_info->nitrile_given)
585     write_into_file(outfile, "nitrile", 0, 0 );
586 gezelter 1998 if (args_info->multipole_given)
587     write_into_file(outfile, "multipole", 0, 0 );
588 jmichalk 2031 if (args_info->surfDiffusion_given)
589     write_into_file(outfile, "surfDiffusion", 0, 0 );
590 gezelter 2049 if (args_info->hbond_given)
591     write_into_file(outfile, "hbond", 0, 0 );
592 gezelter 1390
593    
594     i = EXIT_SUCCESS;
595     return i;
596     }
597    
598     int
599 gezelter 929 cmdline_parser_file_save(const char *filename, struct gengetopt_args_info *args_info)
600     {
601     FILE *outfile;
602     int i = 0;
603    
604     outfile = fopen(filename, "w");
605    
606     if (!outfile)
607     {
608     fprintf (stderr, "%s: cannot open file for writing: %s\n", CMDLINE_PARSER_PACKAGE, filename);
609     return EXIT_FAILURE;
610     }
611    
612 gezelter 1390 i = cmdline_parser_dump(outfile, args_info);
613 gezelter 929 fclose (outfile);
614    
615     return i;
616     }
617    
618     void
619     cmdline_parser_free (struct gengetopt_args_info *args_info)
620     {
621     cmdline_parser_release (args_info);
622     }
623    
624 gezelter 1390 /** @brief replacement of strdup, which is not standard */
625 tim 310 char *
626     gengetopt_strdup (const char *s)
627     {
628 gezelter 1629 char *result = 0;
629 gezelter 929 if (!s)
630     return result;
631    
632     result = (char*)malloc(strlen(s) + 1);
633 tim 310 if (result == (char*)0)
634     return (char*)0;
635     strcpy(result, s);
636     return result;
637     }
638    
639 gezelter 929 static void
640     reset_group_staticProps(struct gengetopt_args_info *args_info)
641 tim 310 {
642 gezelter 929 if (! args_info->staticProps_group_counter)
643     return;
644 tim 310
645 gezelter 1039 args_info->bo_given = 0 ;
646 gezelter 1992 args_info->ior_given = 0 ;
647     args_info->for_given = 0 ;
648 chuckv 1180 args_info->bad_given = 0 ;
649 gezelter 1629 args_info->count_given = 0 ;
650 tim 310 args_info->gofr_given = 0 ;
651 xsun 1213 args_info->gofz_given = 0 ;
652 tim 310 args_info->r_theta_given = 0 ;
653     args_info->r_omega_given = 0 ;
654 gezelter 1440 args_info->r_z_given = 0 ;
655 tim 310 args_info->theta_omega_given = 0 ;
656 tim 369 args_info->gxyz_given = 0 ;
657 gezelter 1454 args_info->twodgofr_given = 0 ;
658 tim 543 args_info->p2_given = 0 ;
659 xsun 980 args_info->rp2_given = 0 ;
660 tim 544 args_info->scd_given = 0 ;
661 tim 545 args_info->density_given = 0 ;
662 tim 840 args_info->slab_density_given = 0 ;
663 gezelter 1413 args_info->p_angle_given = 0 ;
664 xsun 967 args_info->hxy_given = 0 ;
665 chuckv 1091 args_info->rho_r_given = 0 ;
666 gezelter 1629 args_info->angle_r_given = 0 ;
667 chuckv 1180 args_info->hullvol_given = 0 ;
668 gezelter 1629 args_info->rodlength_given = 0 ;
669     args_info->tet_param_given = 0 ;
670 plouden 1762 args_info->tet_param_z_given = 0 ;
671 gezelter 2015 args_info->tet_param_xyz_given = 0 ;
672 gezelter 1879 args_info->rnemdz_given = 0 ;
673     args_info->rnemdr_given = 0 ;
674 gezelter 1953 args_info->rnemdrt_given = 0 ;
675 gezelter 1994 args_info->nitrile_given = 0 ;
676 gezelter 1998 args_info->multipole_given = 0 ;
677 jmichalk 2031 args_info->surfDiffusion_given = 0 ;
678 gezelter 2049 args_info->hbond_given = 0 ;
679 gezelter 929
680     args_info->staticProps_group_counter = 0;
681 tim 543 }
682 tim 310
683 gezelter 929 int
684 gezelter 1629 cmdline_parser (int argc, char **argv, struct gengetopt_args_info *args_info)
685 gezelter 929 {
686     return cmdline_parser2 (argc, argv, args_info, 0, 1, 1);
687     }
688 tim 310
689 gezelter 929 int
690 gezelter 1629 cmdline_parser_ext (int argc, char **argv, struct gengetopt_args_info *args_info,
691 gezelter 1390 struct cmdline_parser_params *params)
692     {
693     int result;
694 gezelter 1629 result = cmdline_parser_internal (argc, argv, args_info, params, 0);
695 gezelter 1390
696     if (result == EXIT_FAILURE)
697     {
698     cmdline_parser_free (args_info);
699     exit (EXIT_FAILURE);
700     }
701    
702     return result;
703     }
704    
705     int
706 gezelter 1629 cmdline_parser2 (int argc, char **argv, struct gengetopt_args_info *args_info, int override, int initialize, int check_required)
707 gezelter 929 {
708     int result;
709 gezelter 1390 struct cmdline_parser_params params;
710    
711     params.override = override;
712     params.initialize = initialize;
713     params.check_required = check_required;
714     params.check_ambiguity = 0;
715     params.print_errors = 1;
716 gezelter 929
717 gezelter 1629 result = cmdline_parser_internal (argc, argv, args_info, &params, 0);
718 gezelter 929
719     if (result == EXIT_FAILURE)
720     {
721     cmdline_parser_free (args_info);
722     exit (EXIT_FAILURE);
723     }
724    
725     return result;
726     }
727    
728     int
729     cmdline_parser_required (struct gengetopt_args_info *args_info, const char *prog_name)
730     {
731     int result = EXIT_SUCCESS;
732    
733 gezelter 1629 if (cmdline_parser_required2(args_info, prog_name, 0) > 0)
734 gezelter 929 result = EXIT_FAILURE;
735    
736     if (result == EXIT_FAILURE)
737     {
738     cmdline_parser_free (args_info);
739     exit (EXIT_FAILURE);
740     }
741    
742     return result;
743     }
744    
745     int
746     cmdline_parser_required2 (struct gengetopt_args_info *args_info, const char *prog_name, const char *additional_error)
747     {
748     int error = 0;
749 gezelter 1629 FIX_UNUSED (additional_error);
750 gezelter 929
751 chuckv 1128 /* checks for required options */
752 gezelter 929 if (! args_info->input_given)
753     {
754     fprintf (stderr, "%s: '--input' ('-i') option required%s\n", prog_name, (additional_error ? additional_error : ""));
755     error = 1;
756     }
757 chuckv 1128
758 gezelter 929 if (args_info->staticProps_group_counter == 0)
759     {
760 gezelter 1629 fprintf (stderr, "%s: %d options of group staticProps were given. One is required%s.\n", prog_name, args_info->staticProps_group_counter, (additional_error ? additional_error : ""));
761 gezelter 929 error = 1;
762     }
763    
764    
765 chuckv 1128 /* checks for dependences among options */
766    
767 gezelter 929 return error;
768     }
769    
770 gezelter 1390
771     static char *package_name = 0;
772    
773     /**
774     * @brief updates an option
775     * @param field the generic pointer to the field to update
776     * @param orig_field the pointer to the orig field
777     * @param field_given the pointer to the number of occurrence of this option
778     * @param prev_given the pointer to the number of occurrence already seen
779     * @param value the argument for this option (if null no arg was specified)
780     * @param possible_values the possible values for this option (if specified)
781     * @param default_value the default value (in case the option only accepts fixed values)
782     * @param arg_type the type of this option
783     * @param check_ambiguity @see cmdline_parser_params.check_ambiguity
784     * @param override @see cmdline_parser_params.override
785     * @param no_free whether to free a possible previous value
786     * @param multiple_option whether this is a multiple option
787     * @param long_opt the corresponding long option
788     * @param short_opt the corresponding short option (or '-' if none)
789     * @param additional_error possible further error specification
790     */
791     static
792     int update_arg(void *field, char **orig_field,
793     unsigned int *field_given, unsigned int *prev_given,
794 gezelter 1629 char *value, const char *possible_values[],
795     const char *default_value,
796 gezelter 1390 cmdline_parser_arg_type arg_type,
797     int check_ambiguity, int override,
798     int no_free, int multiple_option,
799     const char *long_opt, char short_opt,
800     const char *additional_error)
801     {
802     char *stop_char = 0;
803     const char *val = value;
804     int found;
805     char **string_field;
806 gezelter 1629 FIX_UNUSED (field);
807 gezelter 1390
808     stop_char = 0;
809     found = 0;
810    
811     if (!multiple_option && prev_given && (*prev_given || (check_ambiguity && *field_given)))
812     {
813     if (short_opt != '-')
814     fprintf (stderr, "%s: `--%s' (`-%c') option given more than once%s\n",
815     package_name, long_opt, short_opt,
816     (additional_error ? additional_error : ""));
817     else
818     fprintf (stderr, "%s: `--%s' option given more than once%s\n",
819     package_name, long_opt,
820     (additional_error ? additional_error : ""));
821     return 1; /* failure */
822     }
823    
824 gezelter 1629 FIX_UNUSED (default_value);
825 gezelter 1390
826     if (field_given && *field_given && ! override)
827     return 0;
828     if (prev_given)
829     (*prev_given)++;
830     if (field_given)
831     (*field_given)++;
832     if (possible_values)
833     val = possible_values[found];
834    
835     switch(arg_type) {
836     case ARG_INT:
837     if (val) *((int *)field) = strtol (val, &stop_char, 0);
838     break;
839     case ARG_DOUBLE:
840     if (val) *((double *)field) = strtod (val, &stop_char);
841     break;
842     case ARG_STRING:
843     if (val) {
844     string_field = (char **)field;
845     if (!no_free && *string_field)
846     free (*string_field); /* free previous string */
847     *string_field = gengetopt_strdup (val);
848     }
849     break;
850     default:
851     break;
852     };
853    
854     /* check numeric conversion */
855     switch(arg_type) {
856     case ARG_INT:
857     case ARG_DOUBLE:
858     if (val && !(stop_char && *stop_char == '\0')) {
859     fprintf(stderr, "%s: invalid numeric value: %s\n", package_name, val);
860     return 1; /* failure */
861     }
862     break;
863     default:
864     ;
865     };
866    
867     /* store the original value */
868     switch(arg_type) {
869     case ARG_NO:
870     break;
871     default:
872     if (value && orig_field) {
873     if (no_free) {
874     *orig_field = value;
875     } else {
876     if (*orig_field)
877     free (*orig_field); /* free previous string */
878     *orig_field = gengetopt_strdup (value);
879     }
880     }
881     };
882    
883     return 0; /* OK */
884     }
885    
886    
887 gezelter 929 int
888 gezelter 1629 cmdline_parser_internal (
889     int argc, char **argv, struct gengetopt_args_info *args_info,
890 gezelter 1390 struct cmdline_parser_params *params, const char *additional_error)
891 gezelter 929 {
892     int c; /* Character of the parsed option. */
893    
894     int error = 0;
895     struct gengetopt_args_info local_args_info;
896 gezelter 1390
897     int override;
898     int initialize;
899     int check_required;
900     int check_ambiguity;
901    
902     package_name = argv[0];
903    
904     override = params->override;
905     initialize = params->initialize;
906     check_required = params->check_required;
907     check_ambiguity = params->check_ambiguity;
908 gezelter 929
909     if (initialize)
910     cmdline_parser_init (args_info);
911    
912     cmdline_parser_init (&local_args_info);
913    
914 tim 310 optarg = 0;
915 chuckv 1128 optind = 0;
916 gezelter 1390 opterr = params->print_errors;
917 tim 310 optopt = '?';
918    
919     while (1)
920     {
921     int option_index = 0;
922    
923     static struct option long_options[] = {
924     { "help", 0, NULL, 'h' },
925     { "version", 0, NULL, 'V' },
926     { "input", 1, NULL, 'i' },
927     { "output", 1, NULL, 'o' },
928 tim 311 { "step", 1, NULL, 'n' },
929 gezelter 1041 { "nbins", 1, NULL, 'b' },
930 xsun 967 { "nbins_x", 1, NULL, 'x' },
931     { "nbins_y", 1, NULL, 'y' },
932 gezelter 1440 { "nbins_z", 1, NULL, 0 },
933 tim 310 { "nanglebins", 1, NULL, 'a' },
934 chuckv 1445 { "rcut", 1, NULL, 'c' },
935 gezelter 2049 { "thetacut", 1, NULL, 0 },
936 gezelter 1454 { "dz", 1, NULL, 0 },
937 gezelter 1039 { "length", 1, NULL, 0 },
938 chuckv 1445 { "zlength", 1, NULL, 0 },
939 gezelter 929 { "zoffset", 1, NULL, 'z' },
940 tim 310 { "sele1", 1, NULL, 0 },
941     { "sele2", 1, NULL, 0 },
942 tim 544 { "sele3", 1, NULL, 0 },
943 tim 369 { "refsele", 1, NULL, 0 },
944 gezelter 1390 { "comsele", 1, NULL, 0 },
945 gezelter 1819 { "seleoffset", 1, NULL, 0 },
946 gezelter 1991 { "seleoffset2", 1, NULL, 0 },
947 tim 544 { "molname", 1, NULL, 0 },
948     { "begin", 1, NULL, 0 },
949     { "end", 1, NULL, 0 },
950 chuckv 1091 { "radius", 1, NULL, 0 },
951 gezelter 2015 { "voxelSize", 1, NULL, 'v' },
952     { "gaussWidth", 1, NULL, 0 },
953 gezelter 1041 { "bo", 0, NULL, 0 },
954 gezelter 1992 { "ior", 0, NULL, 0 },
955     { "for", 0, NULL, 0 },
956 chuckv 1180 { "bad", 0, NULL, 0 },
957 gezelter 1629 { "count", 0, NULL, 0 },
958 gezelter 1039 { "gofr", 0, NULL, 'g' },
959 xsun 1213 { "gofz", 0, NULL, 0 },
960 tim 310 { "r_theta", 0, NULL, 0 },
961     { "r_omega", 0, NULL, 0 },
962 gezelter 1440 { "r_z", 0, NULL, 0 },
963 tim 310 { "theta_omega", 0, NULL, 0 },
964 tim 369 { "gxyz", 0, NULL, 0 },
965 gezelter 1454 { "twodgofr", 0, NULL, 0 },
966 gezelter 1039 { "p2", 0, NULL, 'p' },
967 xsun 980 { "rp2", 0, NULL, 0 },
968 gezelter 1039 { "scd", 0, NULL, 's' },
969     { "density", 0, NULL, 'd' },
970 tim 840 { "slab_density", 0, NULL, 0 },
971 gezelter 1413 { "p_angle", 0, NULL, 0 },
972 xsun 955 { "hxy", 0, NULL, 0 },
973 chuckv 1091 { "rho_r", 0, NULL, 0 },
974 gezelter 1629 { "angle_r", 0, NULL, 0 },
975 chuckv 1180 { "hullvol", 0, NULL, 0 },
976 gezelter 1629 { "rodlength", 0, NULL, 0 },
977     { "tet_param", 0, NULL, 'Q' },
978 plouden 1762 { "tet_param_z", 0, NULL, 0 },
979 gezelter 2015 { "tet_param_xyz", 0, NULL, 0 },
980 gezelter 1879 { "rnemdz", 0, NULL, 0 },
981     { "rnemdr", 0, NULL, 0 },
982 gezelter 1953 { "rnemdrt", 0, NULL, 0 },
983 gezelter 1994 { "nitrile", 0, NULL, 0 },
984 gezelter 1998 { "multipole", 0, NULL, 'm' },
985 jmichalk 2031 { "surfDiffusion", 0, NULL, 0 },
986 gezelter 2049 { "hbond", 0, NULL, 0 },
987 gezelter 1629 { 0, 0, 0, 0 }
988 tim 310 };
989    
990 gezelter 2015 c = getopt_long (argc, argv, "hVi:o:n:b:x:y:a:c:z:v:gpsdQm", long_options, &option_index);
991 tim 310
992     if (c == -1) break; /* Exit from `while (1)' loop. */
993    
994     switch (c)
995     {
996     case 'h': /* Print help and exit. */
997     cmdline_parser_print_help ();
998 gezelter 929 cmdline_parser_free (&local_args_info);
999 tim 310 exit (EXIT_SUCCESS);
1000    
1001     case 'V': /* Print version and exit. */
1002     cmdline_parser_print_version ();
1003 gezelter 929 cmdline_parser_free (&local_args_info);
1004 tim 310 exit (EXIT_SUCCESS);
1005    
1006     case 'i': /* input dump file. */
1007 gezelter 1390
1008    
1009     if (update_arg( (void *)&(args_info->input_arg),
1010     &(args_info->input_orig), &(args_info->input_given),
1011     &(local_args_info.input_given), optarg, 0, 0, ARG_STRING,
1012     check_ambiguity, override, 0, 0,
1013     "input", 'i',
1014     additional_error))
1015     goto failure;
1016    
1017 tim 310 break;
1018     case 'o': /* output file name. */
1019 gezelter 1390
1020    
1021     if (update_arg( (void *)&(args_info->output_arg),
1022     &(args_info->output_orig), &(args_info->output_given),
1023     &(local_args_info.output_given), optarg, 0, 0, ARG_STRING,
1024     check_ambiguity, override, 0, 0,
1025     "output", 'o',
1026     additional_error))
1027     goto failure;
1028    
1029 tim 310 break;
1030 tim 311 case 'n': /* process every n frame. */
1031 gezelter 1390
1032    
1033     if (update_arg( (void *)&(args_info->step_arg),
1034     &(args_info->step_orig), &(args_info->step_given),
1035     &(local_args_info.step_given), optarg, 0, "1", ARG_INT,
1036     check_ambiguity, override, 0, 0,
1037     "step", 'n',
1038     additional_error))
1039 gezelter 929 goto failure;
1040 gezelter 1390
1041 tim 310 break;
1042 gezelter 1041 case 'b': /* number of bins (general purpose). */
1043 gezelter 1390
1044    
1045     if (update_arg( (void *)&(args_info->nbins_arg),
1046     &(args_info->nbins_orig), &(args_info->nbins_given),
1047     &(local_args_info.nbins_given), optarg, 0, "100", ARG_INT,
1048     check_ambiguity, override, 0, 0,
1049     "nbins", 'b',
1050     additional_error))
1051 gezelter 929 goto failure;
1052 gezelter 1390
1053 tim 310 break;
1054 xsun 955 case 'x': /* number of bins in x axis. */
1055 gezelter 1390
1056    
1057     if (update_arg( (void *)&(args_info->nbins_x_arg),
1058     &(args_info->nbins_x_orig), &(args_info->nbins_x_given),
1059     &(local_args_info.nbins_x_given), optarg, 0, "100", ARG_INT,
1060     check_ambiguity, override, 0, 0,
1061     "nbins_x", 'x',
1062     additional_error))
1063 xsun 955 goto failure;
1064 gezelter 1390
1065 xsun 955 break;
1066     case 'y': /* number of bins in y axis. */
1067 gezelter 1390
1068    
1069     if (update_arg( (void *)&(args_info->nbins_y_arg),
1070     &(args_info->nbins_y_orig), &(args_info->nbins_y_given),
1071     &(local_args_info.nbins_y_given), optarg, 0, "100", ARG_INT,
1072     check_ambiguity, override, 0, 0,
1073     "nbins_y", 'y',
1074     additional_error))
1075 xsun 955 goto failure;
1076 gezelter 1390
1077 xsun 955 break;
1078 tim 310 case 'a': /* number of bins for cos(angle). */
1079 gezelter 1390
1080    
1081     if (update_arg( (void *)&(args_info->nanglebins_arg),
1082     &(args_info->nanglebins_orig), &(args_info->nanglebins_given),
1083     &(local_args_info.nanglebins_given), optarg, 0, "50", ARG_INT,
1084     check_ambiguity, override, 0, 0,
1085     "nanglebins", 'a',
1086     additional_error))
1087 gezelter 929 goto failure;
1088 gezelter 1390
1089 tim 310 break;
1090 gezelter 1039 case 'c': /* cutoff radius (rcut). */
1091 gezelter 1390
1092    
1093     if (update_arg( (void *)&(args_info->rcut_arg),
1094     &(args_info->rcut_orig), &(args_info->rcut_given),
1095     &(local_args_info.rcut_given), optarg, 0, 0, ARG_DOUBLE,
1096     check_ambiguity, override, 0, 0,
1097     "rcut", 'c',
1098     additional_error))
1099 gezelter 1039 goto failure;
1100 gezelter 1390
1101 gezelter 1039 break;
1102 gezelter 929 case 'z': /* Where to set the zero for the slab_density calculation. */
1103 gezelter 1390
1104    
1105     if (update_arg( (void *)&(args_info->zoffset_arg),
1106     &(args_info->zoffset_orig), &(args_info->zoffset_given),
1107     &(local_args_info.zoffset_given), optarg, 0, "0", ARG_DOUBLE,
1108     check_ambiguity, override, 0, 0,
1109     "zoffset", 'z',
1110     additional_error))
1111 gezelter 929 goto failure;
1112 gezelter 1390
1113 gezelter 929 break;
1114 gezelter 2015 case 'v': /* voxel size (angstroms). */
1115    
1116    
1117     if (update_arg( (void *)&(args_info->voxelSize_arg),
1118     &(args_info->voxelSize_orig), &(args_info->voxelSize_given),
1119     &(local_args_info.voxelSize_given), optarg, 0, 0, ARG_DOUBLE,
1120     check_ambiguity, override, 0, 0,
1121     "voxelSize", 'v',
1122     additional_error))
1123     goto failure;
1124    
1125     break;
1126 gezelter 1039 case 'g': /* g(r). */
1127 gezelter 1390
1128 gezelter 1039 if (args_info->staticProps_group_counter && override)
1129     reset_group_staticProps (args_info);
1130     args_info->staticProps_group_counter += 1;
1131 gezelter 1390
1132     if (update_arg( 0 ,
1133     0 , &(args_info->gofr_given),
1134     &(local_args_info.gofr_given), optarg, 0, 0, ARG_NO,
1135     check_ambiguity, override, 0, 0,
1136     "gofr", 'g',
1137     additional_error))
1138     goto failure;
1139    
1140 gezelter 1039 break;
1141 gezelter 1629 case 'p': /* p2 order parameter (--sele1 must be specified, --sele2 is optional). */
1142 gezelter 1390
1143 gezelter 1039 if (args_info->staticProps_group_counter && override)
1144     reset_group_staticProps (args_info);
1145     args_info->staticProps_group_counter += 1;
1146 gezelter 1390
1147     if (update_arg( 0 ,
1148     0 , &(args_info->p2_given),
1149     &(local_args_info.p2_given), optarg, 0, 0, ARG_NO,
1150     check_ambiguity, override, 0, 0,
1151     "p2", 'p',
1152     additional_error))
1153     goto failure;
1154    
1155 gezelter 1039 break;
1156     case 's': /* scd order parameter (either --sele1, --sele2, --sele3 are specified or --molname, --begin, --end are specified). */
1157 gezelter 1390
1158 gezelter 1039 if (args_info->staticProps_group_counter && override)
1159     reset_group_staticProps (args_info);
1160     args_info->staticProps_group_counter += 1;
1161 gezelter 1390
1162     if (update_arg( 0 ,
1163     0 , &(args_info->scd_given),
1164     &(local_args_info.scd_given), optarg, 0, 0, ARG_NO,
1165     check_ambiguity, override, 0, 0,
1166     "scd", 's',
1167     additional_error))
1168     goto failure;
1169    
1170 gezelter 1039 break;
1171     case 'd': /* density plot. */
1172 gezelter 1390
1173 gezelter 1039 if (args_info->staticProps_group_counter && override)
1174     reset_group_staticProps (args_info);
1175     args_info->staticProps_group_counter += 1;
1176 gezelter 1390
1177     if (update_arg( 0 ,
1178     0 , &(args_info->density_given),
1179     &(local_args_info.density_given), optarg, 0, 0, ARG_NO,
1180     check_ambiguity, override, 0, 0,
1181     "density", 'd',
1182     additional_error))
1183     goto failure;
1184    
1185 gezelter 1039 break;
1186 gezelter 1843 case 'Q': /* tetrahedrality order parameter (Qk). */
1187 gezelter 1629
1188     if (args_info->staticProps_group_counter && override)
1189     reset_group_staticProps (args_info);
1190     args_info->staticProps_group_counter += 1;
1191    
1192     if (update_arg( 0 ,
1193     0 , &(args_info->tet_param_given),
1194     &(local_args_info.tet_param_given), optarg, 0, 0, ARG_NO,
1195     check_ambiguity, override, 0, 0,
1196     "tet_param", 'Q',
1197     additional_error))
1198     goto failure;
1199    
1200     break;
1201 gezelter 1999 case 'm': /* average multipole moments contained within cutoff spheres as a function of radius. */
1202 gezelter 1998
1203     if (args_info->staticProps_group_counter && override)
1204     reset_group_staticProps (args_info);
1205     args_info->staticProps_group_counter += 1;
1206    
1207     if (update_arg( 0 ,
1208     0 , &(args_info->multipole_given),
1209     &(local_args_info.multipole_given), optarg, 0, 0, ARG_NO,
1210     check_ambiguity, override, 0, 0,
1211     "multipole", 'm',
1212     additional_error))
1213     goto failure;
1214    
1215     break;
1216 gezelter 1039
1217 tim 310 case 0: /* Long option with no short option */
1218 gezelter 1440 /* number of bins in z axis. */
1219     if (strcmp (long_options[option_index].name, "nbins_z") == 0)
1220     {
1221    
1222    
1223     if (update_arg( (void *)&(args_info->nbins_z_arg),
1224     &(args_info->nbins_z_orig), &(args_info->nbins_z_given),
1225     &(local_args_info.nbins_z_given), optarg, 0, "100", ARG_INT,
1226     check_ambiguity, override, 0, 0,
1227     "nbins_z", '-',
1228     additional_error))
1229     goto failure;
1230    
1231     }
1232 gezelter 2049 /* cutoff angle (thetacut). */
1233     else if (strcmp (long_options[option_index].name, "thetacut") == 0)
1234     {
1235    
1236    
1237     if (update_arg( (void *)&(args_info->thetacut_arg),
1238     &(args_info->thetacut_orig), &(args_info->thetacut_given),
1239     &(local_args_info.thetacut_given), optarg, 0, 0, ARG_DOUBLE,
1240     check_ambiguity, override, 0, 0,
1241     "thetacut", '-',
1242     additional_error))
1243     goto failure;
1244    
1245     }
1246 gezelter 1454 /* slab width (dz). */
1247     else if (strcmp (long_options[option_index].name, "dz") == 0)
1248     {
1249    
1250    
1251     if (update_arg( (void *)&(args_info->dz_arg),
1252     &(args_info->dz_orig), &(args_info->dz_given),
1253     &(local_args_info.dz_given), optarg, 0, 0, ARG_DOUBLE,
1254     check_ambiguity, override, 0, 0,
1255     "dz", '-',
1256     additional_error))
1257     goto failure;
1258    
1259     }
1260 gezelter 1039 /* maximum length (Defaults to 1/2 smallest length of first frame). */
1261 gezelter 1440 else if (strcmp (long_options[option_index].name, "length") == 0)
1262 gezelter 1039 {
1263 gezelter 1390
1264    
1265     if (update_arg( (void *)&(args_info->length_arg),
1266     &(args_info->length_orig), &(args_info->length_given),
1267     &(local_args_info.length_given), optarg, 0, 0, ARG_DOUBLE,
1268     check_ambiguity, override, 0, 0,
1269     "length", '-',
1270     additional_error))
1271 gezelter 1039 goto failure;
1272 gezelter 1390
1273 gezelter 1039 }
1274 chuckv 1445 /* maximum length (Defaults to 1/2 smallest length of first frame). */
1275     else if (strcmp (long_options[option_index].name, "zlength") == 0)
1276     {
1277    
1278    
1279     if (update_arg( (void *)&(args_info->zlength_arg),
1280     &(args_info->zlength_orig), &(args_info->zlength_given),
1281     &(local_args_info.zlength_given), optarg, 0, 0, ARG_DOUBLE,
1282     check_ambiguity, override, 0, 0,
1283     "zlength", '-',
1284     additional_error))
1285     goto failure;
1286    
1287     }
1288 tim 544 /* select the first stuntdouble set. */
1289 gezelter 1039 else if (strcmp (long_options[option_index].name, "sele1") == 0)
1290 tim 543 {
1291 gezelter 1390
1292    
1293     if (update_arg( (void *)&(args_info->sele1_arg),
1294     &(args_info->sele1_orig), &(args_info->sele1_given),
1295     &(local_args_info.sele1_given), optarg, 0, 0, ARG_STRING,
1296     check_ambiguity, override, 0, 0,
1297     "sele1", '-',
1298     additional_error))
1299     goto failure;
1300    
1301 tim 543 }
1302 tim 544 /* select the second stuntdouble set. */
1303 tim 310 else if (strcmp (long_options[option_index].name, "sele2") == 0)
1304 tim 543 {
1305 gezelter 1390
1306    
1307     if (update_arg( (void *)&(args_info->sele2_arg),
1308     &(args_info->sele2_orig), &(args_info->sele2_given),
1309     &(local_args_info.sele2_given), optarg, 0, 0, ARG_STRING,
1310     check_ambiguity, override, 0, 0,
1311     "sele2", '-',
1312     additional_error))
1313     goto failure;
1314    
1315 tim 543 }
1316 tim 544 /* select the third stuntdouble set. */
1317     else if (strcmp (long_options[option_index].name, "sele3") == 0)
1318     {
1319 gezelter 1390
1320    
1321     if (update_arg( (void *)&(args_info->sele3_arg),
1322     &(args_info->sele3_orig), &(args_info->sele3_given),
1323     &(local_args_info.sele3_given), optarg, 0, 0, ARG_STRING,
1324     check_ambiguity, override, 0, 0,
1325     "sele3", '-',
1326     additional_error))
1327     goto failure;
1328    
1329 tim 544 }
1330 tim 369 /* select reference (use and only use with --gxyz). */
1331     else if (strcmp (long_options[option_index].name, "refsele") == 0)
1332 tim 543 {
1333 gezelter 1390
1334    
1335     if (update_arg( (void *)&(args_info->refsele_arg),
1336     &(args_info->refsele_orig), &(args_info->refsele_given),
1337     &(local_args_info.refsele_given), optarg, 0, 0, ARG_STRING,
1338     check_ambiguity, override, 0, 0,
1339     "refsele", '-',
1340     additional_error))
1341     goto failure;
1342    
1343 tim 543 }
1344 gezelter 1390 /* select stunt doubles for center-of-mass reference point. */
1345     else if (strcmp (long_options[option_index].name, "comsele") == 0)
1346     {
1347    
1348    
1349     if (update_arg( (void *)&(args_info->comsele_arg),
1350     &(args_info->comsele_orig), &(args_info->comsele_given),
1351     &(local_args_info.comsele_given), optarg, 0, 0, ARG_STRING,
1352     check_ambiguity, override, 0, 0,
1353     "comsele", '-',
1354     additional_error))
1355     goto failure;
1356    
1357     }
1358 gezelter 1819 /* global index offset for a second object (used to define a vector between sites in molecule). */
1359     else if (strcmp (long_options[option_index].name, "seleoffset") == 0)
1360     {
1361    
1362    
1363     if (update_arg( (void *)&(args_info->seleoffset_arg),
1364     &(args_info->seleoffset_orig), &(args_info->seleoffset_given),
1365     &(local_args_info.seleoffset_given), optarg, 0, 0, ARG_INT,
1366     check_ambiguity, override, 0, 0,
1367     "seleoffset", '-',
1368     additional_error))
1369     goto failure;
1370    
1371     }
1372 gezelter 1991 /* global index offset for a third object (used to define a vector between sites in molecule). */
1373     else if (strcmp (long_options[option_index].name, "seleoffset2") == 0)
1374     {
1375    
1376    
1377     if (update_arg( (void *)&(args_info->seleoffset2_arg),
1378     &(args_info->seleoffset2_orig), &(args_info->seleoffset2_given),
1379     &(local_args_info.seleoffset2_given), optarg, 0, 0, ARG_INT,
1380     check_ambiguity, override, 0, 0,
1381     "seleoffset2", '-',
1382     additional_error))
1383     goto failure;
1384    
1385     }
1386 tim 544 /* molecule name. */
1387     else if (strcmp (long_options[option_index].name, "molname") == 0)
1388     {
1389 gezelter 1390
1390    
1391     if (update_arg( (void *)&(args_info->molname_arg),
1392     &(args_info->molname_orig), &(args_info->molname_given),
1393     &(local_args_info.molname_given), optarg, 0, 0, ARG_STRING,
1394     check_ambiguity, override, 0, 0,
1395     "molname", '-',
1396     additional_error))
1397     goto failure;
1398    
1399 tim 544 }
1400 gezelter 1039 /* begin internal index. */
1401 tim 544 else if (strcmp (long_options[option_index].name, "begin") == 0)
1402     {
1403 gezelter 1390
1404    
1405     if (update_arg( (void *)&(args_info->begin_arg),
1406     &(args_info->begin_orig), &(args_info->begin_given),
1407     &(local_args_info.begin_given), optarg, 0, 0, ARG_INT,
1408     check_ambiguity, override, 0, 0,
1409     "begin", '-',
1410     additional_error))
1411 gezelter 929 goto failure;
1412 gezelter 1390
1413 tim 544 }
1414     /* end internal index. */
1415     else if (strcmp (long_options[option_index].name, "end") == 0)
1416     {
1417 gezelter 1390
1418    
1419     if (update_arg( (void *)&(args_info->end_arg),
1420     &(args_info->end_orig), &(args_info->end_given),
1421     &(local_args_info.end_given), optarg, 0, 0, ARG_INT,
1422     check_ambiguity, override, 0, 0,
1423     "end", '-',
1424     additional_error))
1425 gezelter 929 goto failure;
1426 gezelter 1390
1427 tim 544 }
1428 chuckv 1091 /* nanoparticle radius. */
1429     else if (strcmp (long_options[option_index].name, "radius") == 0)
1430     {
1431 gezelter 1390
1432    
1433     if (update_arg( (void *)&(args_info->radius_arg),
1434     &(args_info->radius_orig), &(args_info->radius_given),
1435     &(local_args_info.radius_given), optarg, 0, 0, ARG_DOUBLE,
1436     check_ambiguity, override, 0, 0,
1437     "radius", '-',
1438     additional_error))
1439 chuckv 1091 goto failure;
1440 gezelter 1390
1441 chuckv 1091 }
1442 gezelter 2015 /* Gaussian width (angstroms). */
1443     else if (strcmp (long_options[option_index].name, "gaussWidth") == 0)
1444     {
1445    
1446    
1447     if (update_arg( (void *)&(args_info->gaussWidth_arg),
1448     &(args_info->gaussWidth_orig), &(args_info->gaussWidth_given),
1449     &(local_args_info.gaussWidth_given), optarg, 0, 0, ARG_DOUBLE,
1450     check_ambiguity, override, 0, 0,
1451     "gaussWidth", '-',
1452     additional_error))
1453     goto failure;
1454    
1455     }
1456 chuckv 1128 /* bond order parameter (--rcut must be specified). */
1457 gezelter 1041 else if (strcmp (long_options[option_index].name, "bo") == 0)
1458     {
1459 gezelter 1390
1460 gezelter 1041 if (args_info->staticProps_group_counter && override)
1461     reset_group_staticProps (args_info);
1462     args_info->staticProps_group_counter += 1;
1463 gezelter 1390
1464     if (update_arg( 0 ,
1465     0 , &(args_info->bo_given),
1466     &(local_args_info.bo_given), optarg, 0, 0, ARG_NO,
1467     check_ambiguity, override, 0, 0,
1468     "bo", '-',
1469     additional_error))
1470     goto failure;
1471    
1472 gezelter 1041 }
1473 gezelter 1992 /* icosahedral bond order parameter as a function of radius (--rcut must be specified). */
1474     else if (strcmp (long_options[option_index].name, "ior") == 0)
1475 chuckv 1128 {
1476 gezelter 1390
1477 chuckv 1128 if (args_info->staticProps_group_counter && override)
1478     reset_group_staticProps (args_info);
1479     args_info->staticProps_group_counter += 1;
1480 gezelter 1390
1481     if (update_arg( 0 ,
1482 gezelter 1992 0 , &(args_info->ior_given),
1483     &(local_args_info.ior_given), optarg, 0, 0, ARG_NO,
1484 gezelter 1390 check_ambiguity, override, 0, 0,
1485 gezelter 1992 "ior", '-',
1486 gezelter 1390 additional_error))
1487     goto failure;
1488    
1489 chuckv 1128 }
1490 gezelter 1992 /* FCC bond order parameter as a function of radius (--rcut must be specified). */
1491     else if (strcmp (long_options[option_index].name, "for") == 0)
1492     {
1493    
1494     if (args_info->staticProps_group_counter && override)
1495     reset_group_staticProps (args_info);
1496     args_info->staticProps_group_counter += 1;
1497    
1498     if (update_arg( 0 ,
1499     0 , &(args_info->for_given),
1500     &(local_args_info.for_given), optarg, 0, 0, ARG_NO,
1501     check_ambiguity, override, 0, 0,
1502     "for", '-',
1503     additional_error))
1504     goto failure;
1505    
1506     }
1507 chuckv 1180 /* N(theta) bond angle density within (--rcut must be specified). */
1508     else if (strcmp (long_options[option_index].name, "bad") == 0)
1509     {
1510 gezelter 1390
1511 chuckv 1180 if (args_info->staticProps_group_counter && override)
1512     reset_group_staticProps (args_info);
1513     args_info->staticProps_group_counter += 1;
1514 gezelter 1390
1515     if (update_arg( 0 ,
1516     0 , &(args_info->bad_given),
1517     &(local_args_info.bad_given), optarg, 0, 0, ARG_NO,
1518     check_ambiguity, override, 0, 0,
1519     "bad", '-',
1520     additional_error))
1521     goto failure;
1522    
1523 chuckv 1180 }
1524 gezelter 1629 /* count of molecules matching selection criteria (and associated statistics). */
1525     else if (strcmp (long_options[option_index].name, "count") == 0)
1526     {
1527    
1528     if (args_info->staticProps_group_counter && override)
1529     reset_group_staticProps (args_info);
1530     args_info->staticProps_group_counter += 1;
1531    
1532     if (update_arg( 0 ,
1533     0 , &(args_info->count_given),
1534     &(local_args_info.count_given), optarg, 0, 0, ARG_NO,
1535     check_ambiguity, override, 0, 0,
1536     "count", '-',
1537     additional_error))
1538     goto failure;
1539    
1540     }
1541 xsun 1213 /* g(z). */
1542     else if (strcmp (long_options[option_index].name, "gofz") == 0)
1543     {
1544 gezelter 1390
1545 xsun 1213 if (args_info->staticProps_group_counter && override)
1546     reset_group_staticProps (args_info);
1547     args_info->staticProps_group_counter += 1;
1548 gezelter 1390
1549     if (update_arg( 0 ,
1550     0 , &(args_info->gofz_given),
1551     &(local_args_info.gofz_given), optarg, 0, 0, ARG_NO,
1552     check_ambiguity, override, 0, 0,
1553     "gofz", '-',
1554     additional_error))
1555     goto failure;
1556    
1557 xsun 1213 }
1558 tim 310 /* g(r, cos(theta)). */
1559     else if (strcmp (long_options[option_index].name, "r_theta") == 0)
1560 tim 543 {
1561 gezelter 1390
1562 gezelter 929 if (args_info->staticProps_group_counter && override)
1563     reset_group_staticProps (args_info);
1564     args_info->staticProps_group_counter += 1;
1565 gezelter 1390
1566     if (update_arg( 0 ,
1567     0 , &(args_info->r_theta_given),
1568     &(local_args_info.r_theta_given), optarg, 0, 0, ARG_NO,
1569     check_ambiguity, override, 0, 0,
1570     "r_theta", '-',
1571     additional_error))
1572     goto failure;
1573    
1574 tim 543 }
1575 tim 310 /* g(r, cos(omega)). */
1576     else if (strcmp (long_options[option_index].name, "r_omega") == 0)
1577 tim 543 {
1578 gezelter 1390
1579 gezelter 929 if (args_info->staticProps_group_counter && override)
1580     reset_group_staticProps (args_info);
1581     args_info->staticProps_group_counter += 1;
1582 gezelter 1390
1583     if (update_arg( 0 ,
1584     0 , &(args_info->r_omega_given),
1585     &(local_args_info.r_omega_given), optarg, 0, 0, ARG_NO,
1586     check_ambiguity, override, 0, 0,
1587     "r_omega", '-',
1588     additional_error))
1589     goto failure;
1590    
1591 tim 543 }
1592 gezelter 1440 /* g(r, z). */
1593     else if (strcmp (long_options[option_index].name, "r_z") == 0)
1594     {
1595    
1596     if (args_info->staticProps_group_counter && override)
1597     reset_group_staticProps (args_info);
1598     args_info->staticProps_group_counter += 1;
1599    
1600     if (update_arg( 0 ,
1601     0 , &(args_info->r_z_given),
1602     &(local_args_info.r_z_given), optarg, 0, 0, ARG_NO,
1603     check_ambiguity, override, 0, 0,
1604     "r_z", '-',
1605     additional_error))
1606     goto failure;
1607    
1608     }
1609 tim 310 /* g(cos(theta), cos(omega)). */
1610     else if (strcmp (long_options[option_index].name, "theta_omega") == 0)
1611 tim 543 {
1612 gezelter 1390
1613 gezelter 929 if (args_info->staticProps_group_counter && override)
1614     reset_group_staticProps (args_info);
1615     args_info->staticProps_group_counter += 1;
1616 gezelter 1390
1617     if (update_arg( 0 ,
1618     0 , &(args_info->theta_omega_given),
1619     &(local_args_info.theta_omega_given), optarg, 0, 0, ARG_NO,
1620     check_ambiguity, override, 0, 0,
1621     "theta_omega", '-',
1622     additional_error))
1623     goto failure;
1624    
1625 tim 543 }
1626 tim 310 /* g(x, y, z). */
1627 tim 369 else if (strcmp (long_options[option_index].name, "gxyz") == 0)
1628 tim 543 {
1629 gezelter 1390
1630 gezelter 929 if (args_info->staticProps_group_counter && override)
1631     reset_group_staticProps (args_info);
1632     args_info->staticProps_group_counter += 1;
1633 gezelter 1390
1634     if (update_arg( 0 ,
1635     0 , &(args_info->gxyz_given),
1636     &(local_args_info.gxyz_given), optarg, 0, 0, ARG_NO,
1637     check_ambiguity, override, 0, 0,
1638     "gxyz", '-',
1639     additional_error))
1640     goto failure;
1641    
1642 tim 543 }
1643 gezelter 1454 /* 2D g(r) (Slab width --dz must be specified). */
1644     else if (strcmp (long_options[option_index].name, "twodgofr") == 0)
1645     {
1646    
1647     if (args_info->staticProps_group_counter && override)
1648     reset_group_staticProps (args_info);
1649     args_info->staticProps_group_counter += 1;
1650    
1651     if (update_arg( 0 ,
1652     0 , &(args_info->twodgofr_given),
1653     &(local_args_info.twodgofr_given), optarg, 0, 0, ARG_NO,
1654     check_ambiguity, override, 0, 0,
1655     "twodgofr", '-',
1656     additional_error))
1657     goto failure;
1658    
1659     }
1660 xsun 980 /* rp2 order parameter (--sele1 and --sele2 must be specified). */
1661     else if (strcmp (long_options[option_index].name, "rp2") == 0)
1662     {
1663 gezelter 1390
1664 xsun 980 if (args_info->staticProps_group_counter && override)
1665     reset_group_staticProps (args_info);
1666     args_info->staticProps_group_counter += 1;
1667 gezelter 1390
1668     if (update_arg( 0 ,
1669     0 , &(args_info->rp2_given),
1670     &(local_args_info.rp2_given), optarg, 0, 0, ARG_NO,
1671     check_ambiguity, override, 0, 0,
1672     "rp2", '-',
1673     additional_error))
1674     goto failure;
1675    
1676 xsun 980 }
1677 gezelter 1039 /* slab density. */
1678 tim 840 else if (strcmp (long_options[option_index].name, "slab_density") == 0)
1679     {
1680 gezelter 1390
1681 gezelter 929 if (args_info->staticProps_group_counter && override)
1682     reset_group_staticProps (args_info);
1683     args_info->staticProps_group_counter += 1;
1684 gezelter 1390
1685     if (update_arg( 0 ,
1686     0 , &(args_info->slab_density_given),
1687     &(local_args_info.slab_density_given), optarg, 0, 0, ARG_NO,
1688     check_ambiguity, override, 0, 0,
1689     "slab_density", '-',
1690     additional_error))
1691     goto failure;
1692    
1693 tim 840 }
1694 gezelter 1979 /* p(cos(theta)) (--sele1 must be specified, --sele2 is optional). */
1695 gezelter 1413 else if (strcmp (long_options[option_index].name, "p_angle") == 0)
1696     {
1697    
1698     if (args_info->staticProps_group_counter && override)
1699     reset_group_staticProps (args_info);
1700     args_info->staticProps_group_counter += 1;
1701    
1702     if (update_arg( 0 ,
1703     0 , &(args_info->p_angle_given),
1704     &(local_args_info.p_angle_given), optarg, 0, 0, ARG_NO,
1705     check_ambiguity, override, 0, 0,
1706     "p_angle", '-',
1707     additional_error))
1708     goto failure;
1709    
1710     }
1711 gezelter 1039 /* hxy. */
1712 xsun 955 else if (strcmp (long_options[option_index].name, "hxy") == 0)
1713     {
1714 gezelter 1390
1715 xsun 955 if (args_info->staticProps_group_counter && override)
1716     reset_group_staticProps (args_info);
1717     args_info->staticProps_group_counter += 1;
1718 gezelter 1390
1719     if (update_arg( 0 ,
1720     0 , &(args_info->hxy_given),
1721     &(local_args_info.hxy_given), optarg, 0, 0, ARG_NO,
1722     check_ambiguity, override, 0, 0,
1723     "hxy", '-',
1724     additional_error))
1725     goto failure;
1726    
1727 xsun 955 }
1728 chuckv 1091 /* rho of R. */
1729     else if (strcmp (long_options[option_index].name, "rho_r") == 0)
1730     {
1731 gezelter 1390
1732 chuckv 1091 if (args_info->staticProps_group_counter && override)
1733     reset_group_staticProps (args_info);
1734     args_info->staticProps_group_counter += 1;
1735 gezelter 1390
1736     if (update_arg( 0 ,
1737     0 , &(args_info->rho_r_given),
1738     &(local_args_info.rho_r_given), optarg, 0, 0, ARG_NO,
1739     check_ambiguity, override, 0, 0,
1740     "rho_r", '-',
1741     additional_error))
1742     goto failure;
1743    
1744 chuckv 1091 }
1745 gezelter 1629 /* angle of R. */
1746     else if (strcmp (long_options[option_index].name, "angle_r") == 0)
1747     {
1748    
1749     if (args_info->staticProps_group_counter && override)
1750     reset_group_staticProps (args_info);
1751     args_info->staticProps_group_counter += 1;
1752    
1753     if (update_arg( 0 ,
1754     0 , &(args_info->angle_r_given),
1755     &(local_args_info.angle_r_given), optarg, 0, 0, ARG_NO,
1756     check_ambiguity, override, 0, 0,
1757     "angle_r", '-',
1758     additional_error))
1759     goto failure;
1760    
1761     }
1762 chuckv 1180 /* hull volume of nanoparticle. */
1763     else if (strcmp (long_options[option_index].name, "hullvol") == 0)
1764     {
1765 gezelter 1390
1766 chuckv 1180 if (args_info->staticProps_group_counter && override)
1767     reset_group_staticProps (args_info);
1768     args_info->staticProps_group_counter += 1;
1769 gezelter 1390
1770     if (update_arg( 0 ,
1771     0 , &(args_info->hullvol_given),
1772     &(local_args_info.hullvol_given), optarg, 0, 0, ARG_NO,
1773     check_ambiguity, override, 0, 0,
1774     "hullvol", '-',
1775     additional_error))
1776     goto failure;
1777    
1778 chuckv 1180 }
1779 gezelter 1629 /* length of nanorod. */
1780     else if (strcmp (long_options[option_index].name, "rodlength") == 0)
1781     {
1782 tim 840
1783 gezelter 1629 if (args_info->staticProps_group_counter && override)
1784     reset_group_staticProps (args_info);
1785     args_info->staticProps_group_counter += 1;
1786    
1787     if (update_arg( 0 ,
1788     0 , &(args_info->rodlength_given),
1789     &(local_args_info.rodlength_given), optarg, 0, 0, ARG_NO,
1790     check_ambiguity, override, 0, 0,
1791     "rodlength", '-',
1792     additional_error))
1793     goto failure;
1794    
1795     }
1796 gezelter 1843 /* spatially-resolved tetrahedrality order parameter Qk(z). */
1797 plouden 1762 else if (strcmp (long_options[option_index].name, "tet_param_z") == 0)
1798     {
1799 gezelter 1629
1800 plouden 1762 if (args_info->staticProps_group_counter && override)
1801     reset_group_staticProps (args_info);
1802     args_info->staticProps_group_counter += 1;
1803    
1804     if (update_arg( 0 ,
1805     0 , &(args_info->tet_param_z_given),
1806     &(local_args_info.tet_param_z_given), optarg, 0, 0, ARG_NO,
1807     check_ambiguity, override, 0, 0,
1808     "tet_param_z", '-',
1809     additional_error))
1810     goto failure;
1811    
1812     }
1813 gezelter 2015 /* volume-resolved tetrahedrality order parameter Qk(x,y,z). (voxelSize, rcut, and gaussWidth must be specified). */
1814     else if (strcmp (long_options[option_index].name, "tet_param_xyz") == 0)
1815     {
1816    
1817     if (args_info->staticProps_group_counter && override)
1818     reset_group_staticProps (args_info);
1819     args_info->staticProps_group_counter += 1;
1820    
1821     if (update_arg( 0 ,
1822     0 , &(args_info->tet_param_xyz_given),
1823     &(local_args_info.tet_param_xyz_given), optarg, 0, 0, ARG_NO,
1824     check_ambiguity, override, 0, 0,
1825     "tet_param_xyz", '-',
1826     additional_error))
1827     goto failure;
1828    
1829     }
1830 gezelter 1879 /* slab-resolved RNEMD statistics (temperature, density, velocity). */
1831     else if (strcmp (long_options[option_index].name, "rnemdz") == 0)
1832     {
1833 plouden 1762
1834 gezelter 1879 if (args_info->staticProps_group_counter && override)
1835     reset_group_staticProps (args_info);
1836     args_info->staticProps_group_counter += 1;
1837    
1838     if (update_arg( 0 ,
1839     0 , &(args_info->rnemdz_given),
1840     &(local_args_info.rnemdz_given), optarg, 0, 0, ARG_NO,
1841     check_ambiguity, override, 0, 0,
1842     "rnemdz", '-',
1843     additional_error))
1844     goto failure;
1845    
1846     }
1847     /* shell-resolved RNEMD statistics (temperature, density, angular velocity). */
1848     else if (strcmp (long_options[option_index].name, "rnemdr") == 0)
1849     {
1850    
1851     if (args_info->staticProps_group_counter && override)
1852     reset_group_staticProps (args_info);
1853     args_info->staticProps_group_counter += 1;
1854    
1855     if (update_arg( 0 ,
1856     0 , &(args_info->rnemdr_given),
1857     &(local_args_info.rnemdr_given), optarg, 0, 0, ARG_NO,
1858     check_ambiguity, override, 0, 0,
1859     "rnemdr", '-',
1860     additional_error))
1861     goto failure;
1862    
1863     }
1864 gezelter 1953 /* shell and angle-resolved RNEMD statistics (temperature, density, angular velocity). */
1865     else if (strcmp (long_options[option_index].name, "rnemdrt") == 0)
1866     {
1867 gezelter 1879
1868 gezelter 1953 if (args_info->staticProps_group_counter && override)
1869     reset_group_staticProps (args_info);
1870     args_info->staticProps_group_counter += 1;
1871    
1872     if (update_arg( 0 ,
1873     0 , &(args_info->rnemdrt_given),
1874     &(local_args_info.rnemdrt_given), optarg, 0, 0, ARG_NO,
1875     check_ambiguity, override, 0, 0,
1876     "rnemdrt", '-',
1877     additional_error))
1878     goto failure;
1879    
1880     }
1881 gezelter 1993 /* electrostatic potential to frequency map based on the Cho nitrile fits. */
1882 gezelter 1994 else if (strcmp (long_options[option_index].name, "nitrile") == 0)
1883 gezelter 1993 {
1884 gezelter 1953
1885 gezelter 1993 if (args_info->staticProps_group_counter && override)
1886     reset_group_staticProps (args_info);
1887     args_info->staticProps_group_counter += 1;
1888    
1889     if (update_arg( 0 ,
1890 gezelter 1994 0 , &(args_info->nitrile_given),
1891     &(local_args_info.nitrile_given), optarg, 0, 0, ARG_NO,
1892 gezelter 1993 check_ambiguity, override, 0, 0,
1893 gezelter 1994 "nitrile", '-',
1894 gezelter 1993 additional_error))
1895     goto failure;
1896    
1897     }
1898 jmichalk 2031 /* X, Y, and R (surface diffusion if Z exposed and bulk immobile) diffusion. */
1899     else if (strcmp (long_options[option_index].name, "surfDiffusion") == 0)
1900     {
1901 gezelter 1993
1902 jmichalk 2031 if (args_info->staticProps_group_counter && override)
1903     reset_group_staticProps (args_info);
1904     args_info->staticProps_group_counter += 1;
1905    
1906     if (update_arg( 0 ,
1907     0 , &(args_info->surfDiffusion_given),
1908     &(local_args_info.surfDiffusion_given), optarg, 0, 0, ARG_NO,
1909     check_ambiguity, override, 0, 0,
1910     "surfDiffusion", '-',
1911     additional_error))
1912     goto failure;
1913    
1914     }
1915 gezelter 2049 /* Hydrogen Bonding statistics using geometric criteria (rcut and thetacut must be specified). */
1916     else if (strcmp (long_options[option_index].name, "hbond") == 0)
1917     {
1918 jmichalk 2031
1919 gezelter 2049 if (args_info->staticProps_group_counter && override)
1920     reset_group_staticProps (args_info);
1921     args_info->staticProps_group_counter += 1;
1922    
1923     if (update_arg( 0 ,
1924     0 , &(args_info->hbond_given),
1925     &(local_args_info.hbond_given), optarg, 0, 0, ARG_NO,
1926     check_ambiguity, override, 0, 0,
1927     "hbond", '-',
1928     additional_error))
1929     goto failure;
1930    
1931     }
1932    
1933 gezelter 929 break;
1934 tim 310 case '?': /* Invalid option. */
1935     /* `getopt_long' already printed an error message. */
1936 gezelter 929 goto failure;
1937 tim 310
1938     default: /* bug: option not considered. */
1939 gezelter 929 fprintf (stderr, "%s: option unknown: %c%s\n", CMDLINE_PARSER_PACKAGE, c, (additional_error ? additional_error : ""));
1940 tim 310 abort ();
1941     } /* switch */
1942     } /* while */
1943    
1944 gezelter 929 if (args_info->staticProps_group_counter > 1)
1945 tim 310 {
1946 gezelter 1629 fprintf (stderr, "%s: %d options of group staticProps were given. One is required%s.\n", argv[0], args_info->staticProps_group_counter, (additional_error ? additional_error : ""));
1947 gezelter 929 error = 1;
1948 tim 310 }
1949    
1950    
1951 gezelter 929
1952     if (check_required)
1953 tim 310 {
1954 gezelter 929 error += cmdline_parser_required2 (args_info, argv[0], additional_error);
1955 tim 310 }
1956    
1957 gezelter 929 cmdline_parser_release (&local_args_info);
1958    
1959     if ( error )
1960     return (EXIT_FAILURE);
1961    
1962 gezelter 2049 if (optind < argc)
1963     {
1964     int i = 0 ;
1965     int found_prog_name = 0;
1966     /* whether program name, i.e., argv[0], is in the remaining args
1967     (this may happen with some implementations of getopt,
1968     but surely not with the one included by gengetopt) */
1969    
1970     i = optind;
1971     while (i < argc)
1972     if (argv[i++] == argv[0]) {
1973     found_prog_name = 1;
1974     break;
1975     }
1976     i = 0;
1977    
1978     args_info->inputs_num = argc - optind - found_prog_name;
1979     args_info->inputs =
1980     (char **)(malloc ((args_info->inputs_num)*sizeof(char *))) ;
1981     while (optind < argc)
1982     if (argv[optind++] != argv[0])
1983     args_info->inputs[ i++ ] = gengetopt_strdup (argv[optind-1]) ;
1984     }
1985    
1986 tim 310 return 0;
1987 gezelter 929
1988     failure:
1989    
1990     cmdline_parser_release (&local_args_info);
1991     return (EXIT_FAILURE);
1992 tim 310 }

Properties

Name Value
svn:keywords Author Id Revision Date