ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/trunk/src/applications/staticProps/StaticPropsCmd.cpp
Revision: 1999
Committed: Sat May 31 21:00:46 2014 UTC (10 years, 11 months ago) by gezelter
File size: 67238 byte(s)
Log Message:
Updating MultipoleSum to scan the cutoff radii

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

Properties

Name Value
svn:keywords Author Id Revision Date