280  double *suborder_xyz;
 
  286  suborder_xyz = ( 
double * ) malloc ( 4 * suborder_num * 
sizeof ( 
double ) );
 
  287  suborder_w = ( 
double * ) malloc ( suborder_num * 
sizeof ( 
double ) );
 
  297  for ( s = 0; s < suborder_num; s++ )
 
  299    if ( suborder[s] == 1 )
 
  301      xyz[0+o*3] = suborder_xyz[0+s*4];
 
  302      xyz[1+o*3] = suborder_xyz[1+s*4];
 
  303      xyz[2+o*3] = suborder_xyz[2+s*4];
 
  304      w[o] = suborder_w[s];
 
  315    else if ( suborder[s] == 4 )
 
  317      xyz[0+o*3] = suborder_xyz[0+s*4];
 
  318      xyz[1+o*3] = suborder_xyz[1+s*4];
 
  319      xyz[2+o*3] = suborder_xyz[2+s*4];
 
  320      w[o] = suborder_w[s];
 
  323      xyz[0+o*3] = suborder_xyz[0+s*4];
 
  324      xyz[1+o*3] = suborder_xyz[1+s*4];
 
  325      xyz[2+o*3] = suborder_xyz[3+s*4];
 
  326      w[o] = suborder_w[s];
 
  329      xyz[0+o*3] = suborder_xyz[0+s*4];
 
  330      xyz[1+o*3] = suborder_xyz[3+s*4];
 
  331      xyz[2+o*3] = suborder_xyz[1+s*4];
 
  332      w[o] = suborder_w[s];
 
  335      xyz[0+o*3] = suborder_xyz[3+s*4];
 
  336      xyz[1+o*3] = suborder_xyz[0+s*4];
 
  337      xyz[2+o*3] = suborder_xyz[1+s*4];
 
  338      w[o] = suborder_w[s];
 
  351    else if ( suborder[s] == 6 )
 
  353      xyz[0+o*3] = suborder_xyz[0+s*4];
 
  354      xyz[1+o*3] = suborder_xyz[1+s*4];
 
  355      xyz[2+o*3] = suborder_xyz[2+s*4];
 
  356      w[o] = suborder_w[s];
 
  359      xyz[0+o*3] = suborder_xyz[0+s*4];
 
  360      xyz[1+o*3] = suborder_xyz[2+s*4];
 
  361      xyz[2+o*3] = suborder_xyz[1+s*4];
 
  362      w[o] = suborder_w[s];
 
  365      xyz[0+o*3] = suborder_xyz[0+s*4];
 
  366      xyz[1+o*3] = suborder_xyz[2+s*4];
 
  367      xyz[2+o*3] = suborder_xyz[3+s*4];
 
  368      w[o] = suborder_w[s];
 
  371      xyz[0+o*3] = suborder_xyz[2+s*4];
 
  372      xyz[1+o*3] = suborder_xyz[0+s*4];
 
  373      xyz[2+o*3] = suborder_xyz[1+s*4];
 
  374      w[o] = suborder_w[s];
 
  377      xyz[0+o*3] = suborder_xyz[2+s*4];
 
  378      xyz[1+o*3] = suborder_xyz[0+s*4];
 
  379      xyz[2+o*3] = suborder_xyz[3+s*4];
 
  380      w[o] = suborder_w[s];
 
  383      xyz[0+o*3] = suborder_xyz[2+s*4];
 
  384      xyz[1+o*3] = suborder_xyz[3+s*4];
 
  385      xyz[2+o*3] = suborder_xyz[0+s*4];
 
  386      w[o] = suborder_w[s];
 
  405    else if ( suborder[s] == 12 )
 
  407      xyz[0+o*3] = suborder_xyz[0+s*4];
 
  408      xyz[1+o*3] = suborder_xyz[1+s*4];
 
  409      xyz[2+o*3] = suborder_xyz[2+s*4];
 
  410      w[o] = suborder_w[s];
 
  413      xyz[0+o*3] = suborder_xyz[0+s*4];
 
  414      xyz[1+o*3] = suborder_xyz[1+s*4];
 
  415      xyz[2+o*3] = suborder_xyz[3+s*4];
 
  416      w[o] = suborder_w[s];
 
  419      xyz[0+o*3] = suborder_xyz[0+s*4];
 
  420      xyz[1+o*3] = suborder_xyz[2+s*4];
 
  421      xyz[2+o*3] = suborder_xyz[1+s*4];
 
  422      w[o] = suborder_w[s];
 
  425      xyz[0+o*3] = suborder_xyz[0+s*4];
 
  426      xyz[1+o*3] = suborder_xyz[2+s*4];
 
  427      xyz[2+o*3] = suborder_xyz[3+s*4];
 
  428      w[o] = suborder_w[s];
 
  431      xyz[0+o*3] = suborder_xyz[0+s*4];
 
  432      xyz[1+o*3] = suborder_xyz[3+s*4];
 
  433      xyz[2+o*3] = suborder_xyz[1+s*4];
 
  434      w[o] = suborder_w[s];
 
  437      xyz[0+o*3] = suborder_xyz[0+s*4];
 
  438      xyz[1+o*3] = suborder_xyz[3+s*4];
 
  439      xyz[2+o*3] = suborder_xyz[2+s*4];
 
  440      w[o] = suborder_w[s];
 
  443      xyz[0+o*3] = suborder_xyz[2+s*4];
 
  444      xyz[1+o*3] = suborder_xyz[0+s*4];
 
  445      xyz[2+o*3] = suborder_xyz[1+s*4];
 
  446      w[o] = suborder_w[s];
 
  449      xyz[0+o*3] = suborder_xyz[2+s*4];
 
  450      xyz[1+o*3] = suborder_xyz[0+s*4];
 
  451      xyz[2+o*3] = suborder_xyz[3+s*4];
 
  452      w[o] = suborder_w[s];
 
  455      xyz[0+o*3] = suborder_xyz[2+s*4];
 
  456      xyz[1+o*3] = suborder_xyz[3+s*4];
 
  457      xyz[2+o*3] = suborder_xyz[1+s*4];
 
  458      w[o] = suborder_w[s];
 
  461      xyz[0+o*3] = suborder_xyz[3+s*4];
 
  462      xyz[1+o*3] = suborder_xyz[0+s*4];
 
  463      xyz[2+o*3] = suborder_xyz[1+s*4];
 
  464      w[o] = suborder_w[s];
 
  467      xyz[0+o*3] = suborder_xyz[3+s*4];
 
  468      xyz[1+o*3] = suborder_xyz[0+s*4];
 
  469      xyz[2+o*3] = suborder_xyz[2+s*4];
 
  470      w[o] = suborder_w[s];
 
  473      xyz[0+o*3] = suborder_xyz[3+s*4];
 
  474      xyz[1+o*3] = suborder_xyz[2+s*4];
 
  475      xyz[2+o*3] = suborder_xyz[0+s*4];
 
  476      w[o] = suborder_w[s];
 
  507    else if ( suborder[s] == 24 )
 
  509      xyz[0+o*3] = suborder_xyz[0+s*4];
 
  510      xyz[1+o*3] = suborder_xyz[1+s*4];
 
  511      xyz[2+o*3] = suborder_xyz[2+s*4];
 
  512      w[o] = suborder_w[s];
 
  515      xyz[0+o*3] = suborder_xyz[0+s*4];
 
  516      xyz[1+o*3] = suborder_xyz[1+s*4];
 
  517      xyz[2+o*3] = suborder_xyz[3+s*4];
 
  518      w[o] = suborder_w[s];
 
  521      xyz[0+o*3] = suborder_xyz[0+s*4];
 
  522      xyz[1+o*3] = suborder_xyz[2+s*4];
 
  523      xyz[2+o*3] = suborder_xyz[1+s*4];
 
  524      w[o] = suborder_w[s];
 
  527      xyz[0+o*3] = suborder_xyz[0+s*4];
 
  528      xyz[1+o*3] = suborder_xyz[2+s*4];
 
  529      xyz[2+o*3] = suborder_xyz[3+s*4];
 
  530      w[o] = suborder_w[s];
 
  533      xyz[0+o*3] = suborder_xyz[0+s*4];
 
  534      xyz[1+o*3] = suborder_xyz[3+s*4];
 
  535      xyz[2+o*3] = suborder_xyz[1+s*4];
 
  536      w[o] = suborder_w[s];
 
  539      xyz[0+o*3] = suborder_xyz[0+s*4];
 
  540      xyz[1+o*3] = suborder_xyz[3+s*4];
 
  541      xyz[2+o*3] = suborder_xyz[2+s*4];
 
  542      w[o] = suborder_w[s];
 
  545      xyz[0+o*3] = suborder_xyz[1+s*4];
 
  546      xyz[1+o*3] = suborder_xyz[0+s*4];
 
  547      xyz[2+o*3] = suborder_xyz[3+s*4];
 
  548      w[o] = suborder_w[s];
 
  551      xyz[0+o*3] = suborder_xyz[1+s*4];
 
  552      xyz[1+o*3] = suborder_xyz[0+s*4];
 
  553      xyz[2+o*3] = suborder_xyz[4+s*4];
 
  554      w[o] = suborder_w[s];
 
  557      xyz[0+o*3] = suborder_xyz[1+s*4];
 
  558      xyz[1+o*3] = suborder_xyz[2+s*4];
 
  559      xyz[2+o*3] = suborder_xyz[0+s*4];
 
  560      w[o] = suborder_w[s];
 
  563      xyz[0+o*3] = suborder_xyz[1+s*4];
 
  564      xyz[1+o*3] = suborder_xyz[2+s*4];
 
  565      xyz[2+o*3] = suborder_xyz[3+s*4];
 
  566      w[o] = suborder_w[s];
 
  569      xyz[0+o*3] = suborder_xyz[1+s*4];
 
  570      xyz[1+o*3] = suborder_xyz[3+s*4];
 
  571      xyz[2+o*3] = suborder_xyz[0+s*4];
 
  572      w[o] = suborder_w[s];
 
  575      xyz[0+o*3] = suborder_xyz[1+s*4];
 
  576      xyz[1+o*3] = suborder_xyz[3+s*4];
 
  577      xyz[2+o*3] = suborder_xyz[2+s*4];
 
  578      w[o] = suborder_w[s];
 
  581      xyz[0+o*3] = suborder_xyz[2+s*4];
 
  582      xyz[1+o*3] = suborder_xyz[0+s*4];
 
  583      xyz[2+o*3] = suborder_xyz[1+s*4];
 
  584      w[o] = suborder_w[s];
 
  587      xyz[0+o*3] = suborder_xyz[2+s*4];
 
  588      xyz[1+o*3] = suborder_xyz[0+s*4];
 
  589      xyz[2+o*3] = suborder_xyz[3+s*4];
 
  590      w[o] = suborder_w[s];
 
  593      xyz[0+o*3] = suborder_xyz[2+s*4];
 
  594      xyz[1+o*3] = suborder_xyz[1+s*4];
 
  595      xyz[2+o*3] = suborder_xyz[0+s*4];
 
  596      w[o] = suborder_w[s];
 
  599      xyz[0+o*3] = suborder_xyz[2+s*4];
 
  600      xyz[1+o*3] = suborder_xyz[1+s*4];
 
  601      xyz[2+o*3] = suborder_xyz[3+s*4];
 
  602      w[o] = suborder_w[s];
 
  605      xyz[0+o*3] = suborder_xyz[2+s*4];
 
  606      xyz[1+o*3] = suborder_xyz[3+s*4];
 
  607      xyz[2+o*3] = suborder_xyz[0+s*4];
 
  608      w[o] = suborder_w[s];
 
  611      xyz[0+o*3] = suborder_xyz[2+s*4];
 
  612      xyz[1+o*3] = suborder_xyz[3+s*4];
 
  613      xyz[2+o*3] = suborder_xyz[1+s*4];
 
  614      w[o] = suborder_w[s];
 
  617      xyz[0+o*3] = suborder_xyz[3+s*4];
 
  618      xyz[1+o*3] = suborder_xyz[0+s*4];
 
  619      xyz[2+o*3] = suborder_xyz[1+s*4];
 
  620      w[o] = suborder_w[s];
 
  623      xyz[0+o*3] = suborder_xyz[3+s*4];
 
  624      xyz[1+o*3] = suborder_xyz[0+s*4];
 
  625      xyz[2+o*3] = suborder_xyz[2+s*4];
 
  626      w[o] = suborder_w[s];
 
  629      xyz[0+o*3] = suborder_xyz[3+s*4];
 
  630      xyz[1+o*3] = suborder_xyz[1+s*4];
 
  631      xyz[2+o*3] = suborder_xyz[0+s*4];
 
  632      w[o] = suborder_w[s];
 
  635      xyz[0+o*3] = suborder_xyz[3+s*4];
 
  636      xyz[1+o*3] = suborder_xyz[1+s*4];
 
  637      xyz[2+o*3] = suborder_xyz[2+s*4];
 
  638      w[o] = suborder_w[s];
 
  641      xyz[0+o*3] = suborder_xyz[3+s*4];
 
  642      xyz[1+o*3] = suborder_xyz[2+s*4];
 
  643      xyz[2+o*3] = suborder_xyz[0+s*4];
 
  644      w[o] = suborder_w[s];
 
  647      xyz[0+o*3] = suborder_xyz[3+s*4];
 
  648      xyz[1+o*3] = suborder_xyz[2+s*4];
 
  649      xyz[2+o*3] = suborder_xyz[1+s*4];
 
  650      w[o] = suborder_w[s];
 
  655      fprintf ( stderr, 
"\n" );
 
  656      fprintf ( stderr, 
"TETRAHEDRON_NCO_RULE - Fatal error!\n" );
 
  657      fprintf ( stderr, 
"  Illegal SUBORDER(%d) = %d\n", s, suborder[s] );
 
  663  free ( suborder_xyz );
 
 
  890  double suborder_xyz[], 
double suborder_w[] )
 
  936  suborder_xyz_n = ( 
int * ) malloc ( 4 * suborder_num * 
sizeof ( 
int ) );
 
  937  suborder_w_n = ( 
int * ) malloc ( suborder_num * 
sizeof ( 
int ) );
 
  942    suborder_w_n, &suborder_w_d );
 
  944  else if ( rule == 2 )
 
  947    suborder_w_n, &suborder_w_d );
 
  949  else if ( rule == 3 )
 
  952    suborder_w_n, &suborder_w_d );
 
  954  else if ( rule == 4 )
 
  957    suborder_w_n, &suborder_w_d );
 
  959  else if ( rule == 5 )
 
  962    suborder_w_n, &suborder_w_d );
 
  964  else if ( rule == 6 )
 
  967    suborder_w_n, &suborder_w_d );
 
  969  else if ( rule == 7 )
 
  972    suborder_w_n, &suborder_w_d );
 
  976    fprintf ( stderr, 
"\n" );
 
  977    fprintf ( stderr, 
"TETRAHEDRON_NCO_SUBRULE - Fatal error!\n" );
 
  978    fprintf ( stderr, 
"  Illegal RULE = %d\n", rule );
 
  982  for ( s = 0; s < suborder_num; s++ )
 
  984    for ( 
i = 0; 
i < 4; 
i++ )
 
  986      suborder_xyz[
i+s*4] =
 
  987          ( 
double ) ( 1 + suborder_xyz_n[
i+s*4] )
 
  988        / ( 
double ) ( 4 + suborder_xyz_d );
 
  991  for ( s = 0; s < suborder_num; s++ )
 
  993    suborder_w[s] = ( 
double ) suborder_w_n[s] / ( 
double ) suborder_w_d;
 
  996  free ( suborder_w_n );
 
  997  free ( suborder_xyz_n );