⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 particle.h

📁 一个很好的分子动力学程序
💻 H
字号:
#ifndef __PARTICLE_H#define __PARTICLE_H/*	 8 Oct 91 : added member to particle structure "rmin" for use by					bond.c  (bond.c calculates number of atoms with bond					between rmin and cutoff).*//************************************************************************Defines************************************************************************/#define TRUE 1#define FALSE 0#define X 0#define Y 1#define Z 2#define NDIR 3#define WORD	 unsigned int#define BYTE	 unsigned char#define USHORT  unsigned short int#define BOOLEAN int#define COORD	 double (*)[NDIR]/*  Voight constants  */#define XX 0#define YY 1#define ZZ 2#define YZ 3#define ZX 4#define XY 5#define ZY 3#define XZ 4#define YX 5#define NVOIGHT 6/*  LENGTH OF TITLE STRING  */#define NTITLESTR 81/*  Different type of dynamic volume conditions */#define BMG_ISOTROPIC	0#define BMG_ORTHONORMAL 1#define BMG_MONOCLINIC	2/*  Constant pressure algorithms  */#define BMA_NONE			0#define BMA_ANDERSEN 	1#define BMA_MODIFIED 	2/*  Repeating boundary geometries */#define BD_ORTHONORMAL	1		/*  Standard box boundary			 */#define BD_MONOCLINIC	2		/*  Parallel-piped boundary		 */#define BC_ARC 			3		/*  Curved "race track" boundary  *//*  Define number of derivatives in Gear algorithm  */#define NDERIV 6/*  Maximum number of type names  */#define MAX_TYPE_NAMES 32/*  Constants for using Selection bit fields  *//*  Number of reserved Selection bit fields  */#define NUM_RESERVED_SELECTION_FIELDS 3/*  Number of available set bit fields  */#define MAX_SET     13/*  Selection Bit Masks  */#define MASK_SELECT 0x8000  #define MASK_FIXED  0x4000 #define MASK_CLAMP  0x2000/*************************************************************************Macros*************************************************************************/#define IS_SELECT(INDEX)     (a->Selection[INDEX] &   MASK_SELECT)#define REMOVE_SELECT(INDEX) {a->Selection[INDEX] &= ~MASK_SELECT;}#define APPLY_SELECT(INDEX)  {a->Selection[INDEX] |=  MASK_SELECT;}#define IS_FIXED(INDEX)     (a->Selection[INDEX] &   MASK_FIXED)#define REMOVE_FIXED(INDEX) {a->Selection[INDEX] &= ~MASK_FIXED;}#define APPLY_FIXED(INDEX)  {a->Selection[INDEX] |=  MASK_FIXED;}#define IS_CLAMP(INDEX)     (a->Selection[INDEX] &   MASK_CLAMP)#define REMOVE_CLAMP(INDEX) {a->Selection[INDEX] &= ~MASK_CLAMP;}#define APPLY_CLAMP(INDEX)  {a->Selection[INDEX] |=  MASK_CLAMP;}#define IS_SET(INDEX,SET)     (a->Selection[INDEX] &   (1 << (SET-1)))#define REMOVE_SET(INDEX,SET) {a->Selection[INDEX] &= ~(1 << (SET-1));}#define APPLY_SET(INDEX,SET)  {a->Selection[INDEX] |=  (1 << (SET-1));}/*************************************************************************Type Definitions*************************************************************************//*  Particle constaint	*/typedef struct	{	double xd,yd,zd, xp,yp,zp;  /*  POINT AND DIRECTION					*/	int	 type;					 /*  TYPE OF CONSTRAIN 0-line 1-Plane	*/	}	Constraint_t;/*External vector and coordinate origin storageUsed for both external force and spring*/typedef struct	{	double Origin[NDIR];	double Vector[NDIR];	}	ExternalVector_t;/*  Particle Information  */typedef struct	{	/*  Particle Coordinate arrays  */	double  *cur, *ref, *ngh;				/*  current, origin, neighbor 		*/	double  *v, *f;							/*  velocity, force						*/	double  *c2,*c3,*c4,*c5;				/*  gear integration values			*/	double  *disp; 							/*  Particle displacements 			*/	/*  Particle Misc Info	*/	double  *mass; 							/*  mass/atom								*/	double  *eatom;							/*  energy/atom							*/	BYTE	  *type, *rtype;					/*  type 									*/	/*  Constraints  */	Constraint_t **cons; 					/*  constraint 							*/	double  CavityCenter[NDIR];	double  CavityAxis  [NDIR];	double  CavitySpring;	BOOLEAN UseCavity;	/*  Particle Status Arrays  */	BYTE	  *tag;/*	BYTE	  *sel, *tag, *set, *fix;*/	USHORT  *Selection;	/*  Type Names (such as "Fe", "Na", etc)  */	char	  *TypeNames[MAX_TYPE_NAMES];	double  bcur [NDIR];	double  bref [NDIR];	double  trans[NDIR];	/*  Array storing poiners to external force and spring info */	ExternalVector_t **SpringPtrList;	ExternalVector_t **ForcePtrList;	/*  Array storing damping coefficient   */	BOOLEAN UseDamp;	double *Damp;	/*  Array for storing neighbor list  */	int	  *NeighborListIndex;	int	  *NeighborListLength;	USHORT  *NeighborList;	int     TotalNumNeighbors;	/*  Flags */	BOOLEAN	boxflag, coordflag, selkeep;	/*  Neighbor List Flag	*/	BOOLEAN InvalidNeighborList;	/*  Neighbor Type Flag  */	BOOLEAN CalcUniqueNeighbors;	/*  Surface Flag	*/	int	  surf[3];	/*  Lattice Energies  */	double  ebath, etot, temp, epot, ekin;	/*  Average potential energy (used by cdmc.c)  */	double  epavg;	long	  navg;	/*  Internal Stresses  */	double Stress[NVOIGHT];	/*  Variables needed for changing volume	*/	int	 BoxMotionGeometry;	  /*	Either isotropic, othrnormal or monoclinic  */	int	 BoxMotionAlgorithm;   /*	Either NONE, ANDERSEN, MODIFIED				  */	double Pressure;	double EkinBox  [NDIR];	double EpotBox;	double BoxMotion[NDIR][NDERIV];	double BoxForce [NDIR];	double BoxMass  [NDIR];	/*  Repeating Boundary Geometry	*/	int	 BoundaryType;	/*  If using monoclinic boundary type, then need metric	*/	double BoundaryMetric	[NDIR][NDIR];	double BoundaryInvMetric[NDIR][NDIR];	/*  Number of particles  */	int	  np;	/*  Number of neighbors  */	int	  ng;	/*  Number of selected particles  */	int	  nsel;	/*  Number of fixed particles   */	int	  nfix;	int	  nbin;	char	  title[8][NTITLESTR];	long	  run, step;	int	  ndim;	double  time, tempc, dtime, size, cutoff, rmin, vibp;	double  rdftable[100];	/*  Arrays for xmdview  */	WORD *DepthIndex;	}	Particle_t;#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -