/*============================================================================*/
/* FILENAME: READ_MM2.C (READ_MM2.O)
/* PURPOSE: TO READ IN AN MM2 INPUT FILE.
/* WRITTEN: M.V.GRIESHABER
/* LAST MODIFICATION: 13 JULY 1993 MVG (ADDED ATOM TYPES 61-110).
/*============================================================================*/
#include "utility.h"
#include "newgeo.h"
#define MAX_MM2_ATOM_TYPES 110
#define max(a,b) (a=MAX_BONDS_PER_ATOM || intco[second_atom].bond_cnt>=MAX_BONDS_PER_ATOM)
return(errmsg("Too many bonds to a single atom",FALSE));
intco[first_atom].bonds[intco[first_atom].bond_cnt++] = second_atom;
intco[second_atom].bonds[intco[second_atom].bond_cnt++] = first_atom;
}
return(TRUE);
}
int process_attached_atom_list(line)
/*============================================================================*/
/* PURPOSE: PROCESS AN MM2 ATTACHED ATOM LIST INTO THE INDIVIDUAL BONDS.
*/
char line[]; /* RAW ATTACHED ATOM LIST FROM MM2 INPUT FILE. */
{
int i;
char atom_string[6]; /* STRING VERSION OF ATOM NUMBER. */
int first_atom; /* FIRST ATOM OF VALID PAIR. */
int second_atom; /* SECOND ATOM OF VALID PAIR. */
/* TAKE APART AN ATTACHED ATOM LIST AN ATOM PAIR AT A TIME. */
i=0;
while (i<15 && atoi(&line[i*5])!=0)
{
/* GET THE VALID ATOM PAIR. */
strncpy(atom_string,&line[i*5],5);
atom_string[5]=0;
first_atom=atoi(atom_string)-1; /* MM2 COUNTS FROM 1. */
strncpy(atom_string,&line[(i+1)*5],5);
atom_string[5]=0;
second_atom=atoi(atom_string)-1; /* MM2 COUNTS FROM 1. */
i+=2; /* FINISHED THIS PAIR, SKIP AHEAD TO NEXT. */
/* ADD THE BONDS TO EACH ATOM'S RESPECTIVE BOND LIST. */
if (intco[first_atom].bond_cnt>=MAX_BONDS_PER_ATOM || intco[second_atom].bond_cnt>=MAX_BONDS_PER_ATOM)
return(errmsg("Too many bonds to a single atom",FALSE));
intco[first_atom].bonds[intco[first_atom].bond_cnt++] = second_atom;
intco[second_atom].bonds[intco[second_atom].bond_cnt++] = first_atom;
}
return(TRUE);
}
|