279  double *suborder_xyz;
 
  285  suborder_xyz = ( 
double * ) malloc ( 4 * suborder_num * 
sizeof ( 
double ) );
 
  286  suborder_w = ( 
double * ) malloc ( suborder_num * 
sizeof ( 
double ) );
 
  296  for ( s = 0; s < suborder_num; s++ )
 
  298    if ( suborder[s] == 1 )
 
  300      xyz[0+o*3] = suborder_xyz[0+s*4];
 
  301      xyz[1+o*3] = suborder_xyz[1+s*4];
 
  302      xyz[2+o*3] = suborder_xyz[2+s*4];
 
  303      w[o] = suborder_w[s];
 
  314    else if ( suborder[s] == 4 )
 
  316      xyz[0+o*3] = suborder_xyz[0+s*4];
 
  317      xyz[1+o*3] = suborder_xyz[1+s*4];
 
  318      xyz[2+o*3] = suborder_xyz[2+s*4];
 
  319      w[o] = suborder_w[s];
 
  322      xyz[0+o*3] = suborder_xyz[0+s*4];
 
  323      xyz[1+o*3] = suborder_xyz[1+s*4];
 
  324      xyz[2+o*3] = suborder_xyz[3+s*4];
 
  325      w[o] = suborder_w[s];
 
  328      xyz[0+o*3] = suborder_xyz[0+s*4];
 
  329      xyz[1+o*3] = suborder_xyz[3+s*4];
 
  330      xyz[2+o*3] = suborder_xyz[1+s*4];
 
  331      w[o] = suborder_w[s];
 
  334      xyz[0+o*3] = suborder_xyz[3+s*4];
 
  335      xyz[1+o*3] = suborder_xyz[0+s*4];
 
  336      xyz[2+o*3] = suborder_xyz[1+s*4];
 
  337      w[o] = suborder_w[s];
 
  350    else if ( suborder[s] == 6 )
 
  352      xyz[0+o*3] = suborder_xyz[0+s*4];
 
  353      xyz[1+o*3] = suborder_xyz[1+s*4];
 
  354      xyz[2+o*3] = suborder_xyz[2+s*4];
 
  355      w[o] = suborder_w[s];
 
  358      xyz[0+o*3] = suborder_xyz[0+s*4];
 
  359      xyz[1+o*3] = suborder_xyz[2+s*4];
 
  360      xyz[2+o*3] = suborder_xyz[1+s*4];
 
  361      w[o] = suborder_w[s];
 
  364      xyz[0+o*3] = suborder_xyz[0+s*4];
 
  365      xyz[1+o*3] = suborder_xyz[2+s*4];
 
  366      xyz[2+o*3] = suborder_xyz[3+s*4];
 
  367      w[o] = suborder_w[s];
 
  370      xyz[0+o*3] = suborder_xyz[2+s*4];
 
  371      xyz[1+o*3] = suborder_xyz[0+s*4];
 
  372      xyz[2+o*3] = suborder_xyz[1+s*4];
 
  373      w[o] = suborder_w[s];
 
  376      xyz[0+o*3] = suborder_xyz[2+s*4];
 
  377      xyz[1+o*3] = suborder_xyz[0+s*4];
 
  378      xyz[2+o*3] = suborder_xyz[3+s*4];
 
  379      w[o] = suborder_w[s];
 
  382      xyz[0+o*3] = suborder_xyz[2+s*4];
 
  383      xyz[1+o*3] = suborder_xyz[3+s*4];
 
  384      xyz[2+o*3] = suborder_xyz[0+s*4];
 
  385      w[o] = suborder_w[s];
 
  404    else if ( suborder[s] == 12 )
 
  406      xyz[0+o*3] = suborder_xyz[0+s*4];
 
  407      xyz[1+o*3] = suborder_xyz[1+s*4];
 
  408      xyz[2+o*3] = suborder_xyz[2+s*4];
 
  409      w[o] = suborder_w[s];
 
  412      xyz[0+o*3] = suborder_xyz[0+s*4];
 
  413      xyz[1+o*3] = suborder_xyz[1+s*4];
 
  414      xyz[2+o*3] = suborder_xyz[3+s*4];
 
  415      w[o] = suborder_w[s];
 
  418      xyz[0+o*3] = suborder_xyz[0+s*4];
 
  419      xyz[1+o*3] = suborder_xyz[2+s*4];
 
  420      xyz[2+o*3] = suborder_xyz[1+s*4];
 
  421      w[o] = suborder_w[s];
 
  424      xyz[0+o*3] = suborder_xyz[0+s*4];
 
  425      xyz[1+o*3] = suborder_xyz[2+s*4];
 
  426      xyz[2+o*3] = suborder_xyz[3+s*4];
 
  427      w[o] = suborder_w[s];
 
  430      xyz[0+o*3] = suborder_xyz[0+s*4];
 
  431      xyz[1+o*3] = suborder_xyz[3+s*4];
 
  432      xyz[2+o*3] = suborder_xyz[1+s*4];
 
  433      w[o] = suborder_w[s];
 
  436      xyz[0+o*3] = suborder_xyz[0+s*4];
 
  437      xyz[1+o*3] = suborder_xyz[3+s*4];
 
  438      xyz[2+o*3] = suborder_xyz[2+s*4];
 
  439      w[o] = suborder_w[s];
 
  442      xyz[0+o*3] = suborder_xyz[2+s*4];
 
  443      xyz[1+o*3] = suborder_xyz[0+s*4];
 
  444      xyz[2+o*3] = suborder_xyz[1+s*4];
 
  445      w[o] = suborder_w[s];
 
  448      xyz[0+o*3] = suborder_xyz[2+s*4];
 
  449      xyz[1+o*3] = suborder_xyz[0+s*4];
 
  450      xyz[2+o*3] = suborder_xyz[3+s*4];
 
  451      w[o] = suborder_w[s];
 
  454      xyz[0+o*3] = suborder_xyz[2+s*4];
 
  455      xyz[1+o*3] = suborder_xyz[3+s*4];
 
  456      xyz[2+o*3] = suborder_xyz[1+s*4];
 
  457      w[o] = suborder_w[s];
 
  460      xyz[0+o*3] = suborder_xyz[3+s*4];
 
  461      xyz[1+o*3] = suborder_xyz[0+s*4];
 
  462      xyz[2+o*3] = suborder_xyz[1+s*4];
 
  463      w[o] = suborder_w[s];
 
  466      xyz[0+o*3] = suborder_xyz[3+s*4];
 
  467      xyz[1+o*3] = suborder_xyz[0+s*4];
 
  468      xyz[2+o*3] = suborder_xyz[2+s*4];
 
  469      w[o] = suborder_w[s];
 
  472      xyz[0+o*3] = suborder_xyz[3+s*4];
 
  473      xyz[1+o*3] = suborder_xyz[2+s*4];
 
  474      xyz[2+o*3] = suborder_xyz[0+s*4];
 
  475      w[o] = suborder_w[s];
 
  506    else if ( suborder[s] == 24 )
 
  508      xyz[0+o*3] = suborder_xyz[0+s*4];
 
  509      xyz[1+o*3] = suborder_xyz[1+s*4];
 
  510      xyz[2+o*3] = suborder_xyz[2+s*4];
 
  511      w[o] = suborder_w[s];
 
  514      xyz[0+o*3] = suborder_xyz[0+s*4];
 
  515      xyz[1+o*3] = suborder_xyz[1+s*4];
 
  516      xyz[2+o*3] = suborder_xyz[3+s*4];
 
  517      w[o] = suborder_w[s];
 
  520      xyz[0+o*3] = suborder_xyz[0+s*4];
 
  521      xyz[1+o*3] = suborder_xyz[2+s*4];
 
  522      xyz[2+o*3] = suborder_xyz[1+s*4];
 
  523      w[o] = suborder_w[s];
 
  526      xyz[0+o*3] = suborder_xyz[0+s*4];
 
  527      xyz[1+o*3] = suborder_xyz[2+s*4];
 
  528      xyz[2+o*3] = suborder_xyz[3+s*4];
 
  529      w[o] = suborder_w[s];
 
  532      xyz[0+o*3] = suborder_xyz[0+s*4];
 
  533      xyz[1+o*3] = suborder_xyz[3+s*4];
 
  534      xyz[2+o*3] = suborder_xyz[1+s*4];
 
  535      w[o] = suborder_w[s];
 
  538      xyz[0+o*3] = suborder_xyz[0+s*4];
 
  539      xyz[1+o*3] = suborder_xyz[3+s*4];
 
  540      xyz[2+o*3] = suborder_xyz[2+s*4];
 
  541      w[o] = suborder_w[s];
 
  544      xyz[0+o*3] = suborder_xyz[1+s*4];
 
  545      xyz[1+o*3] = suborder_xyz[0+s*4];
 
  546      xyz[2+o*3] = suborder_xyz[3+s*4];
 
  547      w[o] = suborder_w[s];
 
  550      xyz[0+o*3] = suborder_xyz[1+s*4];
 
  551      xyz[1+o*3] = suborder_xyz[0+s*4];
 
  552      xyz[2+o*3] = suborder_xyz[4+s*4];
 
  553      w[o] = suborder_w[s];
 
  556      xyz[0+o*3] = suborder_xyz[1+s*4];
 
  557      xyz[1+o*3] = suborder_xyz[2+s*4];
 
  558      xyz[2+o*3] = suborder_xyz[0+s*4];
 
  559      w[o] = suborder_w[s];
 
  562      xyz[0+o*3] = suborder_xyz[1+s*4];
 
  563      xyz[1+o*3] = suborder_xyz[2+s*4];
 
  564      xyz[2+o*3] = suborder_xyz[3+s*4];
 
  565      w[o] = suborder_w[s];
 
  568      xyz[0+o*3] = suborder_xyz[1+s*4];
 
  569      xyz[1+o*3] = suborder_xyz[3+s*4];
 
  570      xyz[2+o*3] = suborder_xyz[0+s*4];
 
  571      w[o] = suborder_w[s];
 
  574      xyz[0+o*3] = suborder_xyz[1+s*4];
 
  575      xyz[1+o*3] = suborder_xyz[3+s*4];
 
  576      xyz[2+o*3] = suborder_xyz[2+s*4];
 
  577      w[o] = suborder_w[s];
 
  580      xyz[0+o*3] = suborder_xyz[2+s*4];
 
  581      xyz[1+o*3] = suborder_xyz[0+s*4];
 
  582      xyz[2+o*3] = suborder_xyz[1+s*4];
 
  583      w[o] = suborder_w[s];
 
  586      xyz[0+o*3] = suborder_xyz[2+s*4];
 
  587      xyz[1+o*3] = suborder_xyz[0+s*4];
 
  588      xyz[2+o*3] = suborder_xyz[3+s*4];
 
  589      w[o] = suborder_w[s];
 
  592      xyz[0+o*3] = suborder_xyz[2+s*4];
 
  593      xyz[1+o*3] = suborder_xyz[1+s*4];
 
  594      xyz[2+o*3] = suborder_xyz[0+s*4];
 
  595      w[o] = suborder_w[s];
 
  598      xyz[0+o*3] = suborder_xyz[2+s*4];
 
  599      xyz[1+o*3] = suborder_xyz[1+s*4];
 
  600      xyz[2+o*3] = suborder_xyz[3+s*4];
 
  601      w[o] = suborder_w[s];
 
  604      xyz[0+o*3] = suborder_xyz[2+s*4];
 
  605      xyz[1+o*3] = suborder_xyz[3+s*4];
 
  606      xyz[2+o*3] = suborder_xyz[0+s*4];
 
  607      w[o] = suborder_w[s];
 
  610      xyz[0+o*3] = suborder_xyz[2+s*4];
 
  611      xyz[1+o*3] = suborder_xyz[3+s*4];
 
  612      xyz[2+o*3] = suborder_xyz[1+s*4];
 
  613      w[o] = suborder_w[s];
 
  616      xyz[0+o*3] = suborder_xyz[3+s*4];
 
  617      xyz[1+o*3] = suborder_xyz[0+s*4];
 
  618      xyz[2+o*3] = suborder_xyz[1+s*4];
 
  619      w[o] = suborder_w[s];
 
  622      xyz[0+o*3] = suborder_xyz[3+s*4];
 
  623      xyz[1+o*3] = suborder_xyz[0+s*4];
 
  624      xyz[2+o*3] = suborder_xyz[2+s*4];
 
  625      w[o] = suborder_w[s];
 
  628      xyz[0+o*3] = suborder_xyz[3+s*4];
 
  629      xyz[1+o*3] = suborder_xyz[1+s*4];
 
  630      xyz[2+o*3] = suborder_xyz[0+s*4];
 
  631      w[o] = suborder_w[s];
 
  634      xyz[0+o*3] = suborder_xyz[3+s*4];
 
  635      xyz[1+o*3] = suborder_xyz[1+s*4];
 
  636      xyz[2+o*3] = suborder_xyz[2+s*4];
 
  637      w[o] = suborder_w[s];
 
  640      xyz[0+o*3] = suborder_xyz[3+s*4];
 
  641      xyz[1+o*3] = suborder_xyz[2+s*4];
 
  642      xyz[2+o*3] = suborder_xyz[0+s*4];
 
  643      w[o] = suborder_w[s];
 
  646      xyz[0+o*3] = suborder_xyz[3+s*4];
 
  647      xyz[1+o*3] = suborder_xyz[2+s*4];
 
  648      xyz[2+o*3] = suborder_xyz[1+s*4];
 
  649      w[o] = suborder_w[s];
 
  654      fprintf ( stderr, 
"\n" );
 
  655      fprintf ( stderr, 
"TETRAHEDRON_NCC_RULE - Fatal error!\n" );
 
  656      fprintf ( stderr, 
"  Illegal SUBORDER(%d) = %d\n", s, suborder[s] );
 
  662  free ( suborder_xyz );
 
 
  889  double suborder_xyz[], 
double suborder_w[] )
 
  935  suborder_xyz_n = ( 
int * ) malloc ( 4 * suborder_num * 
sizeof ( 
int ) );
 
  936  suborder_w_n = ( 
int * ) malloc ( suborder_num * 
sizeof ( 
int ) );
 
  941    suborder_w_n, &suborder_w_d );
 
  943  else if ( rule == 2 )
 
  946    suborder_w_n, &suborder_w_d );
 
  948  else if ( rule == 3 )
 
  951    suborder_w_n, &suborder_w_d );
 
  953  else if ( rule == 4 )
 
  956    suborder_w_n, &suborder_w_d );
 
  958  else if ( rule == 5 )
 
  961    suborder_w_n, &suborder_w_d );
 
  963  else if ( rule == 6 )
 
  966    suborder_w_n, &suborder_w_d );
 
  968  else if ( rule == 7 )
 
  971    suborder_w_n, &suborder_w_d );
 
  975    fprintf ( stderr, 
"\n" );
 
  976    fprintf ( stderr, 
"TETRAHEDRON_NCC_SUBRULE - Fatal error!\n" );
 
  977    fprintf ( stderr, 
"  Illegal RULE = %d\n", rule );
 
  981  for ( s = 0; s < suborder_num; s++ )
 
  983    for ( 
i = 0; 
i < 4; 
i++ )
 
  985      suborder_xyz[
i+s*4] =
 
  986          ( 
double ) ( suborder_xyz_n[
i+s*4] )
 
  987        / ( 
double ) ( suborder_xyz_d );
 
  990  for ( s = 0; s < suborder_num; s++ )
 
  992    suborder_w[s] = ( 
double ) suborder_w_n[s] / ( 
double ) suborder_w_d;
 
  995  free ( suborder_w_n );
 
  996  free ( suborder_xyz_n );