274{
  275  int o;
  276  int s;
  277  int *suborder;
  278  int suborder_num;
  279  double *suborder_w;
  280  double *suborder_xyz;
  281
  282
  283
  285 
  286  suborder_xyz = ( double * ) malloc ( 4 * suborder_num * sizeof ( double ) );
  287  suborder_w = ( double * ) malloc ( suborder_num * sizeof ( double ) );
  288 
  290 
  292
  293
  294
  295  o = 0;
  296 
  297  for ( s = 0; s < suborder_num; s++ )
  298  {
  299    if ( suborder[s] == 1 )
  300    {
  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];
 
  305      o = o + 1;
  306    }
  307
  308
  309 
  310
  311
  312
  313
  314
  315    else if ( suborder[s] == 4 )
  316    {
  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];
 
  321      o = o + 1;
  322 
  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];
 
  327      o = o + 1;
  328 
  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];
 
  333      o = o + 1;
  334 
  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];
 
  339      o = o + 1;
  340    }
  341
  342
  343 
  344
  345
  346
  347
  348
  349
  350
  351    else if ( suborder[s] == 6 )
  352    {
  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];
 
  357      o = o + 1;
  358 
  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];
 
  363      o = o + 1;
  364 
  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];
 
  369      o = o + 1;
  370 
  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];
 
  375      o = o + 1;
  376 
  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];
 
  381      o = o + 1;
  382 
  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];
 
  387      o = o + 1;
  388    }
  389
  390
  391 
  392
  393
  394
  395
  396
  397
  398
  399
  400
  401
  402
  403
  404
  405    else if ( suborder[s] == 12 )
  406    {
  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];
 
  411      o = o + 1;
  412 
  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];
 
  417      o = o + 1;
  418 
  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];
 
  423      o = o + 1;
  424 
  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];
 
  429      o = o + 1;
  430 
  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];
 
  435      o = o + 1;
  436 
  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];
 
  441      o = o + 1;
  442 
  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];
 
  447      o = o + 1;
  448 
  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];
 
  453      o = o + 1;
  454 
  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];
 
  459      o = o + 1;
  460 
  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];
 
  465      o = o + 1;
  466 
  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];
 
  471      o = o + 1;
  472 
  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];
 
  477      o = o + 1;
  478    }
  479
  480
  481 
  482
  483
  484
  485
  486
  487
  488
  489
  490
  491
  492
  493
  494
  495
  496
  497
  498
  499
  500
  501
  502
  503
  504
  505
  506
  507    else if ( suborder[s] == 24 )
  508    {
  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];
 
  513      o = o + 1;
  514 
  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];
 
  519      o = o + 1;
  520 
  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];
 
  525      o = o + 1;
  526 
  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];
 
  531      o = o + 1;
  532 
  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];
 
  537      o = o + 1;
  538 
  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];
 
  543      o = o + 1;
  544 
  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];
 
  549      o = o + 1;
  550 
  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];
 
  555      o = o + 1;
  556 
  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];
 
  561      o = o + 1;
  562 
  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];
 
  567      o = o + 1;
  568 
  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];
 
  573      o = o + 1;
  574 
  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];
 
  579      o = o + 1;
  580 
  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];
 
  585      o = o + 1;
  586 
  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];
 
  591      o = o + 1;
  592 
  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];
 
  597      o = o + 1;
  598 
  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];
 
  603      o = o + 1;
  604 
  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];
 
  609      o = o + 1;
  610 
  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];
 
  615      o = o + 1;
  616 
  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];
 
  621      o = o + 1;
  622 
  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];
 
  627      o = o + 1;
  628 
  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];
 
  633      o = o + 1;
  634 
  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];
 
  639      o = o + 1;
  640 
  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];
 
  645      o = o + 1;
  646 
  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];
 
  651      o = o + 1;
  652    }
  653    else
  654    {
  655      fprintf ( stderr, "\n" );
  656      fprintf ( stderr, "TETRAHEDRON_NCO_RULE - Fatal error!\n" );
  657      fprintf ( stderr, "  Illegal SUBORDER(%d) = %d\n", s, suborder[s] );
  658      exit ( 1 );
  659    }
  660  }
  661 
  662  free ( suborder );
  663  free ( suborder_xyz );
  664  free ( suborder_w );
  665 
  666  return;
  667}
void tetrahedron_nco_subrule(int rule, int suborder_num, double suborder_xyz[], double suborder_w[])