ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/branches/new_design/OOPSE-2.0/src/UseTheForce/ForceFields.hpp
Revision: 1628
Committed: Thu Oct 21 20:15:31 2004 UTC (19 years, 8 months ago) by gezelter
Original Path: trunk/OOPSE-2.0/src/UseTheForce/ForceFields.hpp
File size: 5101 byte(s)
Log Message:
Breaky Breaky.   Fixey Fixey.

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 <stdio.h>
9 #include <stdlib.h>
10 #include <math.h>
11
12 #include "primitives/Atom.hpp"
13 #include "brains/SimInfo.hpp"
14 #include "primitives/StuntDouble.hpp"
15
16 #ifdef IS_MPI
17 #include "UseTheForce/mpiForceField.h"
18 #endif
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; has_variant=0;}
59 ForceFields(char * theVariant ){ frcFile = NULL; entry_plug = NULL; has_variant=1; strcpy(variant, theVariant); }
60 virtual ~ForceFields(){}
61
62 void setSimInfo( SimInfo* the_entry_plug ) { entry_plug = the_entry_plug; }
63
64 virtual void readParams( void ) = 0;
65
66 virtual void cleanMe( void ) = 0;
67
68
69 virtual void initializeAtoms( int nAtoms, Atom** atomArray ) = 0;
70 virtual void initializeBonds( int nBonds, Bond** bondArray,
71 bond_pair* the_bonds ) = 0;
72 virtual void initializeBends( int nBends, Bend** bendArray,
73 bend_set* the_bends ) = 0;
74 virtual void initializeTorsions( int nTorsions, Torsion** torsionArray,
75 torsion_set* the_torsions ) = 0;
76 virtual void initForceField() = 0;
77 virtual void initRestraints();
78 virtual void dumpzAngle();
79
80 virtual void calcRcut( void );
81 virtual void setRcut( double LJrcut );
82 virtual void doForces( int calcPot, int calcStress );
83
84 virtual double getAtomTypeMass(char* atomType) = 0;
85
86
87 protected:
88
89 void initFortran( int useReactionField );
90
91
92 FILE *frcFile;
93 SimInfo* entry_plug;
94
95 int lineNum;
96 char readLine[500];
97 char* eof_test;
98 char variant[100];
99 short int has_variant;
100 double bigSigma;
101
102 };
103
104
105 class DUFF : public ForceFields{
106
107 public:
108 DUFF();
109 virtual ~DUFF();
110
111 void readParams();
112 void cleanMe( void );
113
114 void initializeAtoms( int nAtoms, Atom** atomArray );
115 void initializeBonds( int nBonds, Bond** bondArray,
116 bond_pair* the_bonds );
117 void initializeBends( int nBends, Bend** bendArray,
118 bend_set* the_bends );
119 void initializeTorsions( int nTorsions, Torsion** torsionArray,
120 torsion_set* the_torsions );
121
122 void initForceField();
123 double getAtomTypeMass(char* atomType);
124
125 private:
126
127 void fastForward( char* stopText, char* searchOwner );
128 };
129
130 class LJFF : public ForceFields{
131
132 public:
133 LJFF();
134 virtual ~LJFF();
135
136
137 void readParams();
138 void cleanMe( void );
139
140 void initializeAtoms( int nAtoms, Atom** atomArray );
141 void initializeBonds( int nBonds, Bond** bondArray,
142 bond_pair* the_bonds );
143 void initializeBends( int nBends, Bend** bendArray,
144 bend_set* the_bends );
145 void initializeTorsions( int nTorsions, Torsion** torsionArray,
146 torsion_set* the_torsions );
147
148 void initForceField( );
149 double getAtomTypeMass(char* atomType);
150
151 private:
152
153 void fastForward( char* stopText, char* searchOwner );
154
155 };
156
157 class EAM_FF : public ForceFields{
158
159 public:
160 EAM_FF();
161 EAM_FF(char* the_variant);
162 virtual ~EAM_FF();
163
164
165 void readParams();
166 void cleanMe( void );
167
168 void initializeAtoms( int nAtoms, Atom** atomArray );
169 void initializeBonds( int nBonds, Bond** bondArray,
170 bond_pair* the_bonds );
171 void initializeBends( int nBends, Bend** bendArray,
172 bend_set* the_bends );
173 void initializeTorsions( int nTorsions, Torsion** torsionArray,
174 torsion_set* the_torsions );
175
176 void initForceField();
177
178 void calcRcut( void );
179 double getAtomTypeMass(char* atomType);
180 private:
181
182 void fastForward( char* stopText, char* searchOwner );
183
184 double eamRcut;
185 };
186
187 class WATER : public ForceFields{
188
189 public:
190 WATER();
191 virtual ~WATER();
192
193 void readParams();
194 void cleanMe( void );
195 void initializeAtoms( int nAtoms, Atom** atomArray );
196 void initializeBonds( int nBonds, Bond** bondArray,
197 bond_pair* the_bonds );
198 void initializeBends( int nBends, Bend** bendArray,
199 bend_set* the_bends );
200 void initializeTorsions( int nTorsions, Torsion** torsionArray,
201 torsion_set* the_torsions );
202 void initForceField();
203 double getAtomTypeMass(char* atomType);
204
205 private:
206
207 void fastForward( char* stopText, char* searchOwner );
208 void sectionSearch( char* secHead, char* stopText, char* searchOwner );
209
210 };
211
212 class Shapes_FF : public ForceFields{
213
214 public:
215 Shapes_FF();
216 Shapes_FF(char* the_variant);
217 virtual ~Shapes_FF();
218
219
220 void readParams();
221 void cleanMe( void );
222
223 void initializeAtoms( int nAtoms, Atom** atomArray );
224 void initializeBonds( int nBonds, Bond** bondArray,
225 bond_pair* the_bonds );
226 void initializeBends( int nBends, Bend** bendArray,
227 bend_set* the_bends );
228 void initializeTorsions( int nTorsions, Torsion** torsionArray,
229 torsion_set* the_torsions );
230
231 void initForceField();
232
233 void calcRcut( void );
234 double getAtomTypeMass(char* atomType);
235 private:
236
237 void fastForward( char* stopText, char* searchOwner );
238
239 double shapesRcut;
240 };
241
242
243 #endif
244