ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE_old/src/mdtools/libmdCode/ForceFields.hpp
Revision: 321
Committed: Wed Mar 12 15:12:24 2003 UTC (21 years, 4 months ago) by mmeineke
File size: 3471 byte(s)
Log Message:
added the force parameter files into the distribution

File Contents

# Content
1 #ifndef __FORCEFIELDS_H__
2 #define __FORCEFIELDS_H__
3
4 #define MK_STR(s) # s
5 #define STR_DEFINE(t, s) t = MK_STR(s)
6
7
8 #include <cstdio>
9 #include <cstdlib>
10
11 #include "Atom.hpp"
12 #include "SimInfo.hpp"
13
14 #ifdef IS_MPI
15 #include "mpiForceField.h"
16 #endif
17
18 #include <fortranWrapDefines.hpp>
19
20 class bond_pair{
21 public:
22 bond_pair(){}
23 ~bond_pair(){}
24
25 int a;
26 int b;
27 };
28
29 class bend_set{
30 public:
31 bend_set(){ isGhost = 0; }
32 ~bend_set(){}
33
34 int ghost;
35 int isGhost;
36
37 int a;
38 int b;
39 int c;
40 };
41
42 class torsion_set{
43 public:
44 torsion_set(){}
45 ~torsion_set(){}
46
47 int a;
48 int b;
49 int c;
50 int d;
51 };
52
53
54
55 class ForceFields{
56
57 public:
58 ForceFields(){ frcFile = NULL; entry_plug = NULL; }
59 virtual ~ForceFields(){}
60
61 void setSimInfo( SimInfo* the_entry_plug ) { entry_plug = the_entry_plug; }
62 virtual void initializeAtoms( void ) = 0;
63 virtual void initializeBonds( bond_pair* the_bonds ) = 0;
64 virtual void initializeBends( bend_set* the_bends ) = 0;
65 virtual void initializeTorsions( torsion_set* the_torsions ) = 0;
66 virtual void doForces( int calcPot );
67
68 void setFortranForceLoop( void (*fsub) doForceLoopList ){
69 fortranForceLoop = fsub;
70 }
71
72 protected:
73
74 void initFortran( void );
75 void (*fortranForceLoop) doForceLoopList;
76
77 FILE *frcFile;
78 SimInfo* entry_plug;
79
80 int lineNum;
81 char readLine[500];
82 char* eof_test;
83
84 };
85
86 class TraPPEFF : public ForceFields{
87
88 public:
89 TraPPEFF();
90 virtual ~TraPPEFF();
91
92 void initializeAtoms( void );
93 void initializeBonds( bond_pair* the_bonds );
94 void initializeBends( bend_set* the_bends );
95 void initializeTorsions( torsion_set* the_torsions );
96 };
97
98
99 class DipoleTestFF : public ForceFields{
100
101 public:
102 DipoleTestFF();
103 virtual ~DipoleTestFF();
104
105 void initializeAtoms( void );
106 void initializeBonds( bond_pair* the_bonds );
107 void initializeBends( bend_set* the_bends );
108 void initializeTorsions( torsion_set* the_torsions );
109 };
110
111 class TraPPE_ExFF : public ForceFields{
112
113 public:
114 TraPPE_ExFF();
115 virtual ~TraPPE_ExFF();
116
117 void initializeAtoms( void );
118 void initializeBonds( bond_pair* the_bonds );
119 void initializeBends( bend_set* the_bends );
120 void initializeTorsions( torsion_set* the_torsions );
121
122 private:
123
124 void fastForward( char* stopText, char* searchOwner );
125 };
126
127 class LJ_FF : public ForceFields{
128
129 public:
130 LJ_FF();
131 virtual ~LJ_FF();
132
133 void initializeAtoms( void );
134 void initializeBonds( bond_pair* the_bonds );
135 void initializeBends( bend_set* the_bends );
136 void initializeTorsions( torsion_set* the_torsions );
137
138 private:
139
140 void fastForward( char* stopText, char* searchOwner );
141 };
142
143 // class SSD_FF : public ForceFields{
144
145 // public:
146 // SSD_FF();
147 // virtual ~SSD_FF();
148
149 // void initializeAtoms( void );
150 // void initializeBonds( bond_pair* the_bonds );
151 // void initializeBends( bend_set* the_bends );
152 // void initializeTorsions( torsion_set* the_torsions );
153 // void setSSDfortran( void (*fortranSub)( double* positionArray,
154 // double* forceArray,
155 // double* potentialEnergy,
156 // short int* doPotentialCalc ) ){
157 // doSSDfortran = fortranSub;
158 // }
159 // void doForces( int );
160
161 // private:
162
163 // void fastForward( char* stopText, char* searchOwner );
164
165 // // set our sister fortran module's function to be our own.
166 // void wrapMe( void );
167 // void (*doSSDfortran)( double* positionArray,
168 // double* forceArray,
169 // double* potentialEnergy,
170 // short int* doPotentialCalc );
171 // void initFortran( void );
172 // };
173
174 #endif