| 43 | 
  | 
  "      --sele1=selection script  select first stuntdouble set", | 
| 44 | 
  | 
  "      --sele2=selection script  select second stuntdouble set (if sele2 is not \n                                  set, use script from sele1)", | 
| 45 | 
  | 
  "  -n, --nbins=INT               Number of bins  (default=`100')", | 
| 46 | 
+ | 
  "  -z, --referenceZ=DOUBLE       Reference z-height of solid surface", | 
| 47 | 
+ | 
  "  -r, --dropletR=DOUBLE         Droplet radius in angstroms", | 
| 48 | 
  | 
  "\n Group: sequentialProps\n   an option of this group is required", | 
| 49 | 
< | 
  "  -d, --density                 selection correlation function", | 
| 49 | 
> | 
  "  -c, --com                     selection center of mass", | 
| 50 | 
> | 
  "      --ca1                     contact angle of selection (using center of \n                                  mass)", | 
| 51 | 
> | 
  "      --ca2                     contact angle of selection (using density \n                                  profile)", | 
| 52 | 
  | 
    0 | 
| 53 | 
  | 
}; | 
| 54 | 
  | 
 | 
| 55 | 
  | 
typedef enum {ARG_NO | 
| 56 | 
  | 
  , ARG_STRING | 
| 57 | 
  | 
  , ARG_INT | 
| 58 | 
+ | 
  , ARG_DOUBLE | 
| 59 | 
  | 
} cmdline_parser_arg_type; | 
| 60 | 
  | 
 | 
| 61 | 
  | 
static | 
| 83 | 
  | 
  args_info->sele1_given = 0 ; | 
| 84 | 
  | 
  args_info->sele2_given = 0 ; | 
| 85 | 
  | 
  args_info->nbins_given = 0 ; | 
| 86 | 
< | 
  args_info->density_given = 0 ; | 
| 86 | 
> | 
  args_info->referenceZ_given = 0 ; | 
| 87 | 
> | 
  args_info->dropletR_given = 0 ; | 
| 88 | 
> | 
  args_info->com_given = 0 ; | 
| 89 | 
> | 
  args_info->ca1_given = 0 ; | 
| 90 | 
> | 
  args_info->ca2_given = 0 ; | 
| 91 | 
  | 
  args_info->sequentialProps_group_counter = 0 ; | 
| 92 | 
  | 
} | 
| 93 | 
  | 
 | 
| 105 | 
  | 
  args_info->sele2_orig = NULL; | 
| 106 | 
  | 
  args_info->nbins_arg = 100; | 
| 107 | 
  | 
  args_info->nbins_orig = NULL; | 
| 108 | 
+ | 
  args_info->referenceZ_orig = NULL; | 
| 109 | 
+ | 
  args_info->dropletR_orig = NULL; | 
| 110 | 
  | 
   | 
| 111 | 
  | 
} | 
| 112 | 
  | 
 | 
| 122 | 
  | 
  args_info->sele1_help = gengetopt_args_info_help[4] ; | 
| 123 | 
  | 
  args_info->sele2_help = gengetopt_args_info_help[5] ; | 
| 124 | 
  | 
  args_info->nbins_help = gengetopt_args_info_help[6] ; | 
| 125 | 
< | 
  args_info->density_help = gengetopt_args_info_help[8] ; | 
| 125 | 
> | 
  args_info->referenceZ_help = gengetopt_args_info_help[7] ; | 
| 126 | 
> | 
  args_info->dropletR_help = gengetopt_args_info_help[8] ; | 
| 127 | 
> | 
  args_info->com_help = gengetopt_args_info_help[10] ; | 
| 128 | 
> | 
  args_info->ca1_help = gengetopt_args_info_help[11] ; | 
| 129 | 
> | 
  args_info->ca2_help = gengetopt_args_info_help[12] ; | 
| 130 | 
  | 
   | 
| 131 | 
  | 
} | 
| 132 | 
  | 
 | 
| 219 | 
  | 
  free_string_field (&(args_info->sele2_arg)); | 
| 220 | 
  | 
  free_string_field (&(args_info->sele2_orig)); | 
| 221 | 
  | 
  free_string_field (&(args_info->nbins_orig)); | 
| 222 | 
+ | 
  free_string_field (&(args_info->referenceZ_orig)); | 
| 223 | 
+ | 
  free_string_field (&(args_info->dropletR_orig)); | 
| 224 | 
  | 
   | 
| 225 | 
  | 
   | 
| 226 | 
  | 
  for (i = 0; i < args_info->inputs_num; ++i) | 
| 270 | 
  | 
    write_into_file(outfile, "sele2", args_info->sele2_orig, 0); | 
| 271 | 
  | 
  if (args_info->nbins_given) | 
| 272 | 
  | 
    write_into_file(outfile, "nbins", args_info->nbins_orig, 0); | 
| 273 | 
< | 
  if (args_info->density_given) | 
| 274 | 
< | 
    write_into_file(outfile, "density", 0, 0 ); | 
| 273 | 
> | 
  if (args_info->referenceZ_given) | 
| 274 | 
> | 
    write_into_file(outfile, "referenceZ", args_info->referenceZ_orig, 0); | 
| 275 | 
> | 
  if (args_info->dropletR_given) | 
| 276 | 
> | 
    write_into_file(outfile, "dropletR", args_info->dropletR_orig, 0); | 
| 277 | 
> | 
  if (args_info->com_given) | 
| 278 | 
> | 
    write_into_file(outfile, "com", 0, 0 ); | 
| 279 | 
> | 
  if (args_info->ca1_given) | 
| 280 | 
> | 
    write_into_file(outfile, "ca1", 0, 0 ); | 
| 281 | 
> | 
  if (args_info->ca2_given) | 
| 282 | 
> | 
    write_into_file(outfile, "ca2", 0, 0 ); | 
| 283 | 
  | 
   | 
| 284 | 
  | 
 | 
| 285 | 
  | 
  i = EXIT_SUCCESS; | 
| 333 | 
  | 
  if (! args_info->sequentialProps_group_counter) | 
| 334 | 
  | 
    return; | 
| 335 | 
  | 
   | 
| 336 | 
< | 
  args_info->density_given = 0 ; | 
| 336 | 
> | 
  args_info->com_given = 0 ; | 
| 337 | 
> | 
  args_info->ca1_given = 0 ; | 
| 338 | 
> | 
  args_info->ca2_given = 0 ; | 
| 339 | 
  | 
 | 
| 340 | 
  | 
  args_info->sequentialProps_group_counter = 0; | 
| 341 | 
  | 
} | 
| 496 | 
  | 
  case ARG_INT: | 
| 497 | 
  | 
    if (val) *((int *)field) = strtol (val, &stop_char, 0); | 
| 498 | 
  | 
    break; | 
| 499 | 
+ | 
  case ARG_DOUBLE: | 
| 500 | 
+ | 
    if (val) *((double *)field) = strtod (val, &stop_char); | 
| 501 | 
+ | 
    break; | 
| 502 | 
  | 
  case ARG_STRING: | 
| 503 | 
  | 
    if (val) { | 
| 504 | 
  | 
      string_field = (char **)field; | 
| 514 | 
  | 
  /* check numeric conversion */ | 
| 515 | 
  | 
  switch(arg_type) { | 
| 516 | 
  | 
  case ARG_INT: | 
| 517 | 
+ | 
  case ARG_DOUBLE: | 
| 518 | 
  | 
    if (val && !(stop_char && *stop_char == '\0')) { | 
| 519 | 
  | 
      fprintf(stderr, "%s: invalid numeric value: %s\n", package_name, val); | 
| 520 | 
  | 
      return 1; /* failure */ | 
| 588 | 
  | 
        { "sele1",      1, NULL, 0 }, | 
| 589 | 
  | 
        { "sele2",      1, NULL, 0 }, | 
| 590 | 
  | 
        { "nbins",      1, NULL, 'n' }, | 
| 591 | 
< | 
        { "density",    0, NULL, 'd' }, | 
| 591 | 
> | 
        { "referenceZ", 1, NULL, 'z' }, | 
| 592 | 
> | 
        { "dropletR",   1, NULL, 'r' }, | 
| 593 | 
> | 
        { "com",        0, NULL, 'c' }, | 
| 594 | 
> | 
        { "ca1",        0, NULL, 0 }, | 
| 595 | 
> | 
        { "ca2",        0, NULL, 0 }, | 
| 596 | 
  | 
        { 0,  0, 0, 0 } | 
| 597 | 
  | 
      }; | 
| 598 | 
  | 
 | 
| 599 | 
< | 
      c = getopt_long (argc, argv, "hVi:o:n:d", long_options, &option_index); | 
| 599 | 
> | 
      c = getopt_long (argc, argv, "hVi:o:n:z:r:c", long_options, &option_index); | 
| 600 | 
  | 
 | 
| 601 | 
  | 
      if (c == -1) break;       /* Exit from `while (1)' loop.  */ | 
| 602 | 
  | 
 | 
| 648 | 
  | 
            goto failure; | 
| 649 | 
  | 
         | 
| 650 | 
  | 
          break; | 
| 651 | 
< | 
        case 'd':       /* selection correlation function.  */ | 
| 651 | 
> | 
        case 'z':       /* Reference z-height of solid surface.  */ | 
| 652 | 
  | 
         | 
| 653 | 
+ | 
         | 
| 654 | 
+ | 
          if (update_arg( (void *)&(args_info->referenceZ_arg),  | 
| 655 | 
+ | 
               &(args_info->referenceZ_orig), &(args_info->referenceZ_given), | 
| 656 | 
+ | 
              &(local_args_info.referenceZ_given), optarg, 0, 0, ARG_DOUBLE, | 
| 657 | 
+ | 
              check_ambiguity, override, 0, 0, | 
| 658 | 
+ | 
              "referenceZ", 'z', | 
| 659 | 
+ | 
              additional_error)) | 
| 660 | 
+ | 
            goto failure; | 
| 661 | 
+ | 
         | 
| 662 | 
+ | 
          break; | 
| 663 | 
+ | 
        case 'r':       /* Droplet radius in angstroms.  */ | 
| 664 | 
+ | 
         | 
| 665 | 
+ | 
         | 
| 666 | 
+ | 
          if (update_arg( (void *)&(args_info->dropletR_arg),  | 
| 667 | 
+ | 
               &(args_info->dropletR_orig), &(args_info->dropletR_given), | 
| 668 | 
+ | 
              &(local_args_info.dropletR_given), optarg, 0, 0, ARG_DOUBLE, | 
| 669 | 
+ | 
              check_ambiguity, override, 0, 0, | 
| 670 | 
+ | 
              "dropletR", 'r', | 
| 671 | 
+ | 
              additional_error)) | 
| 672 | 
+ | 
            goto failure; | 
| 673 | 
+ | 
         | 
| 674 | 
+ | 
          break; | 
| 675 | 
+ | 
        case 'c':       /* selection center of mass.  */ | 
| 676 | 
+ | 
         | 
| 677 | 
  | 
          if (args_info->sequentialProps_group_counter && override) | 
| 678 | 
  | 
            reset_group_sequentialProps (args_info); | 
| 679 | 
  | 
          args_info->sequentialProps_group_counter += 1; | 
| 680 | 
  | 
         | 
| 681 | 
  | 
          if (update_arg( 0 ,  | 
| 682 | 
< | 
               0 , &(args_info->density_given), | 
| 683 | 
< | 
              &(local_args_info.density_given), optarg, 0, 0, ARG_NO, | 
| 682 | 
> | 
               0 , &(args_info->com_given), | 
| 683 | 
> | 
              &(local_args_info.com_given), optarg, 0, 0, ARG_NO, | 
| 684 | 
  | 
              check_ambiguity, override, 0, 0, | 
| 685 | 
< | 
              "density", 'd', | 
| 685 | 
> | 
              "com", 'c', | 
| 686 | 
  | 
              additional_error)) | 
| 687 | 
  | 
            goto failure; | 
| 688 | 
  | 
         | 
| 717 | 
  | 
              goto failure; | 
| 718 | 
  | 
           | 
| 719 | 
  | 
          } | 
| 720 | 
+ | 
          /* contact angle of selection (using center of mass).  */ | 
| 721 | 
+ | 
          else if (strcmp (long_options[option_index].name, "ca1") == 0) | 
| 722 | 
+ | 
          { | 
| 723 | 
  | 
           | 
| 724 | 
+ | 
            if (args_info->sequentialProps_group_counter && override) | 
| 725 | 
+ | 
              reset_group_sequentialProps (args_info); | 
| 726 | 
+ | 
            args_info->sequentialProps_group_counter += 1; | 
| 727 | 
+ | 
           | 
| 728 | 
+ | 
            if (update_arg( 0 ,  | 
| 729 | 
+ | 
                 0 , &(args_info->ca1_given), | 
| 730 | 
+ | 
                &(local_args_info.ca1_given), optarg, 0, 0, ARG_NO, | 
| 731 | 
+ | 
                check_ambiguity, override, 0, 0, | 
| 732 | 
+ | 
                "ca1", '-', | 
| 733 | 
+ | 
                additional_error)) | 
| 734 | 
+ | 
              goto failure; | 
| 735 | 
+ | 
           | 
| 736 | 
+ | 
          } | 
| 737 | 
+ | 
          /* contact angle of selection (using density profile).  */ | 
| 738 | 
+ | 
          else if (strcmp (long_options[option_index].name, "ca2") == 0) | 
| 739 | 
+ | 
          { | 
| 740 | 
+ | 
           | 
| 741 | 
+ | 
            if (args_info->sequentialProps_group_counter && override) | 
| 742 | 
+ | 
              reset_group_sequentialProps (args_info); | 
| 743 | 
+ | 
            args_info->sequentialProps_group_counter += 1; | 
| 744 | 
+ | 
           | 
| 745 | 
+ | 
            if (update_arg( 0 ,  | 
| 746 | 
+ | 
                 0 , &(args_info->ca2_given), | 
| 747 | 
+ | 
                &(local_args_info.ca2_given), optarg, 0, 0, ARG_NO, | 
| 748 | 
+ | 
                check_ambiguity, override, 0, 0, | 
| 749 | 
+ | 
                "ca2", '-', | 
| 750 | 
+ | 
                additional_error)) | 
| 751 | 
+ | 
              goto failure; | 
| 752 | 
+ | 
           | 
| 753 | 
+ | 
          } | 
| 754 | 
+ | 
           | 
| 755 | 
  | 
          break; | 
| 756 | 
  | 
        case '?':       /* Invalid option.  */ | 
| 757 | 
  | 
          /* `getopt_long' already printed an error message.  */ |