autocomm.h
上传用户:chinafayin
上传日期:2022-04-05
资源大小:153k
文件大小:7k
源码类别:

并行计算

开发平台:

Visual C++

  1. /*
  2.  $Id: autocomm.h,v 1.19 2009/05/08 23:02:10 rhuey Exp $
  3.  AutoDock  
  4. Copyright (C) 2009 The Scripps Research Institute. All rights reserved.
  5.  AutoDock is a Trade Mark of The Scripps Research Institute.
  6.  This program is free software; you can redistribute it and/or
  7.  modify it under the terms of the GNU General Public License
  8.  as published by the Free Software Foundation; either version 2
  9.  of the License, or (at your option) any later version.
  10.  This program is distributed in the hope that it will be useful,
  11.  but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13.  GNU General Public License for more details.
  14.  You should have received a copy of the GNU General Public License
  15.  along with this program; if not, write to the Free Software
  16.  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  17.  */
  18. /* autocomm.h */
  19. #ifndef _AUTOCOMM
  20. #define _AUTOCOMM
  21. #include <sys/types.h>
  22. #include <time.h>
  23. /* include stdio to pick up definition of FILENAME_MAX and possibly PATH_MAX */
  24. #include <stdio.h>
  25. /*******************************************************************************
  26. **      Name: autocomm.h                                                      **
  27. **  Function: Defines Constants, common to both AUTOGRID & AUTODOCK...        **
  28. **Copyright (C) 2009 The Scripps Research Institute. All rights reserved.
  29. **----------------------------------------------------------------------------**
  30. **    Author: Garrett Matthew Morris, The Scripps Research Institute          **
  31. **      Date: 02/28/1995                                                      **
  32. **----------------------------------------------------------------------------**
  33. **    Inputs: none                                                            **
  34. **   Returns: nothing                                                         **
  35. **   Globals: all defines                                                     **
  36. **----------------------------------------------------------------------------**
  37. ** Modification Record                                                        **
  38. ** Date     Inits   Comments                                                  **
  39. ** 02/28/95 GMM     This header was added.                                    **
  40. *******************************************************************************/
  41. #ifndef COMMON_STUFF
  42. #define COMMON_STUFF
  43. /*
  44. ** Constants,
  45. */
  46. #define FALSE        0      /* Logical constant                               */
  47. #define TRUE         1      /* Logical constant                               */
  48. #define PI          3.14159265358979323846   /* Mathematical constant, pi */
  49. #define TWOPI      6.28318530717958647692
  50. #define HALF_PI      1.57079632679489661923
  51. #define X            0      /* x-coordinate                                   */
  52. #define Y            1      /* y-coordinate                                   */
  53. #define Z            2      /* z-coordinate                                   */
  54. #define XYZ          3      /* Dimensions of Cartesian Space                  */
  55. #define SPACE        3      /* Dimensions of Cartesian Space                  */
  56. #define APPROX_ZERO  1.0E-6 /* To avoid division-by-zero errors...            */
  57. #define BIG          1.0E12 /* Very large constant                            */
  58. #define MAX_CHARS    128    /* Number of characters in atom data & filenames  */
  59. #define MAX_LINES    256    /* Number of lines in parameter file              */
  60. #ifndef PATH_MAX
  61. #define PATH_MAX     FILENAME_MAX
  62. #endif
  63. #ifdef USE_XCODE
  64. #define LINE_LEN     140    /* Line length in characters                      */
  65. #else
  66. #define LINE_LEN     256    /* Line length in characters                      */
  67. #endif
  68. #if defined( USE_XCODE )
  69. /* The stacksize limit within Xcode forces us to use smaller grids */
  70. #define MAX_GRID_PTS 61      /* Maximum number of grid points in 1 dimension */
  71. #elif defined( __CYGWIN__ ) 
  72. #define MAX_GRID_PTS 64 /* Maximum number of grid points in 1 dimension */
  73. #else
  74. #define MAX_GRID_PTS 1024   /* Maximum number of grid points in 1 dimension */
  75. /* MAX_GRID_PTS 128 causes a SIGSEGV on Cygwin */
  76. #endif
  77. #define EINTCLAMP    100000. /* Clamp pairwise internal energies (kcal/mol )  */
  78. #define MAX_MAPS_PAD 0       // Use this to pad MAX_MAPS to a power of 2, for presumably-faster memory access
  79. #define NUM_NON_VDW_MAPS 2   // Number of electrostatic and desolvation maps
  80. #define MAX_ATOM_TYPES (16 - NUM_NON_VDW_MAPS)    /* Maximum number of atom types set to keep MAX_MAPS a power of 2 */
  81. #define MAX_MAPS (MAX_ATOM_TYPES + NUM_NON_VDW_MAPS + MAX_MAPS_PAD) /* Maximum number of energy maps        */
  82.                             /* 0,1,2,... are for atomic interactions          */
  83.                             /* last two are for electrostatics and desolvation */
  84. #define VECLENMAX    16     /* For AVS fld files...                           */
  85. // Legacy definitions:
  86. #define COVALENTTYPE 'Z'
  87. #define COVALENTTYPE2 'Y'
  88. #define CARBON 0
  89. #define NITROGEN 1
  90. #define OXYGEN 2
  91. #define SULPHUR 3
  92. #define HYDROGEN 4
  93. #define UNKNOWN 5
  94. #define METAL 6
  95. #define COVALENT 7
  96. #define COVALENT2 8
  97. // end Legacy definitions
  98. #define UnderLine "________________________________________________________________________________nn"
  99. /*
  100. ** Common Macros...
  101. */
  102. #define pr              (void) fprintf
  103. #define pr_2x           print_2x
  104. #define prStr           (void) sprintf
  105. #define flushLog        (void) fflush(logFile)
  106. #define dist(x1,y1,z1,x2,y2,z2,r) _dx=((x2)-(x1)),_dy=((y2)-(y1)),_dz=((z2)-(z1)),r=sqrt(_dx*_dx + _dy*_dy + _dz*_dz)
  107. /*
  108. ** New types...
  109. */
  110. #include "typedefs.h"
  111. typedef char Boole;
  112. typedef struct AtomDesc {
  113. Real crd[XYZ];
  114. Real q;
  115. int   type;
  116. } AtomDesc;
  117. /*
  118. ** Note the following differing definitions of "times" and "time":-
  119. **
  120. ** Arch. times() time()
  121. ** ----- ---------------------------------- --------------------------
  122. ** Sun  clock_t times(struct tms *buffer); time_t time(time_t *tloc);
  123. ** SGI  clock_t times(struct tms *buffer); time_t time(time_t *tloc);
  124. ** HP  clock_t times(struct tms *buffer); time_t time(time_t *tloc);
  125. ** Alpha time_t  times(struct tms *buffer); time_t time(time_t *tloc);
  126. ** ----- ---------------------------------- --------------------------
  127. **  Clock time_t
  128. **
  129. ** Arch  srand48() localtime()
  130. ** ----- ------------------------------- -----------------------------------------------
  131. ** Sun  void srand48(long seedval); struct tm *localtime(const time_t *clock);
  132. ** SGI  void srand48 (long seedval); struct tm *localtime(const time_t *clock);
  133. ** HP  void srand48(long int seedval); struct tm *localtime(const time_t *timer);
  134. ** Alpha void srand48 (long seed_val); struct tm *localtime(const time_t *timer );
  135. **
  136. ** timesys and timesyshms used to use Clock, should use time_t
  137. **
  138. */
  139. #ifdef __alpha
  140. #define Clock time_t
  141. #else
  142. #define Clock clock_t
  143. #endif /* #ifdef __alpha */
  144. #endif
  145. /*
  146.  * assert that quaternions are OK
  147.  */
  148. #include <assert.h> // for assert in assertQuatOK
  149. #include <math.h> // for sqrt in assertQuatOK
  150. #define ONE_MINUS_EPSILON 0.999
  151. #define ONE_PLUS_EPSILON 1.001
  152. /*
  153.  * void assertQuatOK( const Quat q )
  154.  * {
  155.  *     register double mag4 = hypotenuse4( q.x, q.y, q.z, q.w );
  156.  *     assert((mag4 > ONE_MINUS_EPSILON) && (mag4 < ONE_PLUS_EPSILON));
  157.  * }
  158.  */
  159. #define assertQuatOK( q ) {fflush(logFile);register double aQOK_mag4 = hypotenuse4( (q).x, (q).y, (q).z, (q).w ); assert((aQOK_mag4 > ONE_MINUS_EPSILON) && (aQOK_mag4 < ONE_PLUS_EPSILON)); }
  160. #endif /*_AUTOCOMM*/
  161. /*
  162. ** EOF
  163. */