ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libmdtools/ForceFields.hpp
Revision: 1187
Committed: Sat May 22 18:16:18 2004 UTC (20 years, 1 month ago) by chrisfen
File size: 4221 byte(s)
Log Message:
Fixed Thermodynamic integration code.

File Contents

# User Rev Content
1 mmeineke 377 #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 gezelter 829 #include <stdio.h>
9     #include <stdlib.h>
10 chrisfen 1180 #include <math.h>
11 mmeineke 377
12     #include "Atom.hpp"
13     #include "SimInfo.hpp"
14 chrisfen 1180 #include "StuntDouble.hpp"
15 mmeineke 377
16     #ifdef IS_MPI
17     #include "mpiForceField.h"
18     #endif
19    
20     #include "fForceField.h"
21     #include "fortranWrapDefines.hpp"
22    
23     class bond_pair{
24     public:
25     bond_pair(){}
26     ~bond_pair(){}
27    
28     int a;
29     int b;
30     };
31    
32     class bend_set{
33     public:
34     bend_set(){ isGhost = 0; }
35     ~bend_set(){}
36    
37     int ghost;
38     int isGhost;
39    
40     int a;
41     int b;
42     int c;
43     };
44    
45     class torsion_set{
46     public:
47     torsion_set(){}
48     ~torsion_set(){}
49    
50     int a;
51     int b;
52     int c;
53     int d;
54     };
55    
56    
57    
58     class ForceFields{
59    
60     public:
61     ForceFields(){ frcFile = NULL; entry_plug = NULL; }
62     virtual ~ForceFields(){}
63    
64     void setSimInfo( SimInfo* the_entry_plug ) { entry_plug = the_entry_plug; }
65 mmeineke 420
66     virtual void readParams( void ) = 0;
67     virtual void cleanMe( void ) = 0;
68    
69    
70     virtual void initializeAtoms( int nAtoms, Atom** atomArray ) = 0;
71     virtual void initializeBonds( int nBonds, Bond** bondArray,
72     bond_pair* the_bonds ) = 0;
73     virtual void initializeBends( int nBends, Bend** bendArray,
74     bend_set* the_bends ) = 0;
75     virtual void initializeTorsions( int nTorsions, Torsion** torsionArray,
76     torsion_set* the_torsions ) = 0;
77 mmeineke 377 virtual void initForceField( int ljMixRule ) = 0;
78 chrisfen 1180 virtual void initRestraints();
79     virtual void dumpzAngle();
80 mmeineke 420
81     virtual void calcRcut( void );
82 gezelter 1097 virtual void setRcut( double LJrcut );
83 mmeineke 377 virtual void doForces( int calcPot, int calcStress );
84    
85 mmeineke 836 void setFortranForceLoop( doForceLoop_TD fsub ){
86 mmeineke 377 fortranForceLoop = fsub;
87     }
88    
89     protected:
90    
91     void initFortran( int ljMixPolicy, int useReactionField );
92 mmeineke 836 doForceLoop_TD fortranForceLoop;
93 mmeineke 377
94     FILE *frcFile;
95     SimInfo* entry_plug;
96    
97     int lineNum;
98     char readLine[500];
99     char* eof_test;
100 mmeineke 420 double bigSigma;
101 mmeineke 377
102     };
103    
104    
105 mmeineke 559 class DUFF : public ForceFields{
106 mmeineke 377
107     public:
108 mmeineke 559 DUFF();
109     virtual ~DUFF();
110 mmeineke 377
111 mmeineke 420 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 mmeineke 424 void initForceField( int ljMixRule );
123    
124 mmeineke 377 private:
125    
126     void fastForward( char* stopText, char* searchOwner );
127     };
128    
129 mmeineke 559 class LJFF : public ForceFields{
130 mmeineke 377
131     public:
132 mmeineke 559 LJFF();
133     virtual ~LJFF();
134 mmeineke 377
135    
136 mmeineke 420 void readParams();
137     void cleanMe( void );
138    
139     void initializeAtoms( int nAtoms, Atom** atomArray );
140     void initializeBonds( int nBonds, Bond** bondArray,
141     bond_pair* the_bonds );
142     void initializeBends( int nBends, Bend** bendArray,
143     bend_set* the_bends );
144     void initializeTorsions( int nTorsions, Torsion** torsionArray,
145     torsion_set* the_torsions );
146 mmeineke 424
147     void initForceField( int ljMixRule );
148    
149 mmeineke 377 private:
150    
151     void fastForward( char* stopText, char* searchOwner );
152 mmeineke 420
153 mmeineke 377 };
154 mmeineke 559
155 chuckv 500 class EAM_FF : public ForceFields{
156 mmeineke 377
157 chuckv 500 public:
158     EAM_FF();
159     virtual ~EAM_FF();
160    
161    
162     void readParams();
163     void cleanMe( void );
164    
165     void initializeAtoms( int nAtoms, Atom** atomArray );
166     void initializeBonds( int nBonds, Bond** bondArray,
167     bond_pair* the_bonds );
168     void initializeBends( int nBends, Bend** bendArray,
169     bend_set* the_bends );
170     void initializeTorsions( int nTorsions, Torsion** torsionArray,
171     torsion_set* the_torsions );
172    
173     void initForceField( int ljMixRule );
174    
175 chuckv 657 void calcRcut( void );
176 chuckv 500 private:
177    
178     void fastForward( char* stopText, char* searchOwner );
179 chuckv 657
180     double eamRcut;
181 chuckv 500 };
182    
183 chrisfen 976 class WATER : public ForceFields{
184    
185     public:
186     WATER();
187     virtual ~WATER();
188    
189     void readParams();
190     void cleanMe( void );
191     void initializeAtoms( int nAtoms, Atom** atomArray );
192     void initializeBonds( int nBonds, Bond** bondArray,
193     bond_pair* the_bonds );
194     void initializeBends( int nBends, Bend** bendArray,
195     bend_set* the_bends );
196     void initializeTorsions( int nTorsions, Torsion** torsionArray,
197     torsion_set* the_torsions );
198     void initForceField( int ljMixRule );
199    
200     private:
201    
202     void fastForward( char* stopText, char* searchOwner );
203 chrisfen 999 void sectionSearch( char* secHead, char* stopText, char* searchOwner );
204    
205 chrisfen 976 };
206    
207 mmeineke 377 #endif
208