CCL Home Page
Up Directory CCL intgen
#include "utility.h"
#include "newgeo.h"

int intgen()
/*============================================================================*/
/* PURPOSE: GENERATE THE INTERNAL COORDINATES FOR THE CURRENT GEOMETRY.
*/
   {
   if (!continuously_bonded()) return(FALSE);
   else if (!generate_reference_atoms()) return(FALSE);
   else if (!generate_internal_coords()) return(FALSE);
   else return(TRUE);
   }

int continuously_bonded()
/*============================================================================*/
/*  PURPOSE: VERIFY THAT ALL ATOMS ARE CONTINUOUSLY BONDED.  THIS IS NECESSARY
/*	ONLY BECAUSE THE INTERNAL COORDINATE GENERATION ROUTINE FROM JEFF GAW
/*	WILL FATALLY FAIL ON NON CONNECTED MOLECULES.
*/
   {
   int atom_reachable[MAX_ATOMS];	/* T/F: ATOM REACHABLE FROM ROOT. */
   int natom;				/* WHICH ATOM. */

   void mark_connected_atoms();		/* MARK ALL CONNECTED ATOMS. */

   for (natom=0; natom max_con)
         {
         j = i;
         max_con = intco[i].bond_cnt;
         }
      }
   new_order[0] = j;

   assigned = 1;
   look_at = 0;
   while (look_at < atom_cnt)
      {
      while((j=next_bonded(new_order[look_at],new_order,assigned)) >= 0)
         {
         new_order[assigned++] = j;
         }
      look_at++;
      }

   /* TELL USER THE NEW ORDER OF THINGS SO THAT THEY CAN RE-ARRANGE THE WORLD TO CORRESPOND. */
   strcpy(reorder_file_name,input_file_name);
   new_extension(reorder_file_name,".reorder");
   reorder_file = fopen(reorder_file_name,"w");
   for (i=0; i max_con)
	    {
	    max_con = k;
	    j = intco[from].bonds[i];
	    }
	}

    return(j);
    }

int generate_internal_coords()
/*============================================================================*/
   {
   int i;
   int parent;
   int gparent;
   int ggparent;
   double bond1[3];
   double bond2[3];
   double bond3[3];
   double bond4[3];
   double cross1[3];
   double cross2[3];
   double cross3[3];
   double length1;
   double length2;

   /* CALCULATE ALL THE BOND LENGTHS (WHICH START AT ATOM ONE). */
   for (i=1; i
  
Modified: Fri Feb 11 17:00:00 1994 GMT
Page accessed 6006 times since Sat Apr 17 21:58:48 1999 GMT