CCL Home Page
Up Directory CCL craig.h
/**************************************************************************/
/******************  Craig solid angle calculations  **********************/
/**************************************************************************/

#ifndef VIS_BIT
#define  VIS_BIT  1   /* bit to indicate visability of calculation detail */
#endif

#define  FIRST    1   /* first atom is entire double overlap region       */
#define  SECOND   2   /* second atom is entire double overlap region      */
#define  BOTH     3   /* both atoms involved in double overlap            */
#define  S_NORMAL 0   /* normal overlap combo., I's from different atoms  */
#define  S_GCENT  1   /* special, several regions, I's from same atoms    */
#define  S_NEGS   2   /* ellipse on other side of G                       */
#define  S_PERC   40  /* percentage gap between A and G (rel to SVangle)  */

struct ellipsestruct
{
  double a,b,c;                  /* ellipse parameters                    */
  double delta;                  /* atom angle from G                     */
  Atms *A;                       /* pointer to atom                       */
  Vector I[2];                   /* vectors to overlap intersepts         */
  double phi[2];                 /* angles of intersepts from -A(x,y)     */
  char mode;                     /* mode (normal or multi_atom)           */
};
typedef struct ellipsestruct Elps;

struct overlapstruct
{
  Elps El[MAX_OVER];             /* ellipses encompassing overlap         */
  Vector G;                      /* vector to center of overlap           */
  int order;                     /* overlap order (eg. 3=triple overlap   */
  int nell;                      /* number of ellipses bounding overlap   */
  double solid;                  /* solid angle calculated                */
  struct overlapstruct *prev;    /* pointer to previous overlap structure */
  struct overlapstruct *next;    /* pointer to next overlap structure     */
};
typedef struct overlapstruct Over;

Over *New_Over(Over *old);
Over *Close_Over(Over *current);
void Initialize_Over(Over *over, Atms *A[MAX_OVER], int order);
void Find_2atom_Intersepts(double alpha, double beta
                          ,Vector V[2], Vector I[2]);
void Setup_Two_Ellipses(Over *over, Atms *A[MAX_OVER], char mode);
double Double_Overlap_Solid(Over *over, double eps, unsigned mode);
double New_Craig_Counting(Mol *M, double eps, unsigned mode);

/**************************************************************************/
/******************  The End ...  *****************************************/
/**************************************************************************/
Modified: Fri Dec 8 17:00:00 1995 GMT
Page accessed 4701 times since Sat Apr 17 21:59:43 1999 GMT