ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libmdtools/ForceFields.hpp
Revision: 559
Committed: Thu Jun 19 22:02:44 2003 UTC (21 years ago) by mmeineke
File size: 3417 byte(s)
Log Message:
slowly converting to new integrator and forcefield names.

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     #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 "fForceField.h"
19     #include "fortranWrapDefines.hpp"
20    
21     class bond_pair{
22     public:
23     bond_pair(){}
24     ~bond_pair(){}
25    
26     int a;
27     int b;
28     };
29    
30     class bend_set{
31     public:
32     bend_set(){ isGhost = 0; }
33     ~bend_set(){}
34    
35     int ghost;
36     int isGhost;
37    
38     int a;
39     int b;
40     int c;
41     };
42    
43     class torsion_set{
44     public:
45     torsion_set(){}
46     ~torsion_set(){}
47    
48     int a;
49     int b;
50     int c;
51     int d;
52     };
53    
54    
55    
56     class ForceFields{
57    
58     public:
59     ForceFields(){ frcFile = NULL; entry_plug = NULL; }
60     virtual ~ForceFields(){}
61    
62     void setSimInfo( SimInfo* the_entry_plug ) { entry_plug = the_entry_plug; }
63 mmeineke 420
64     virtual void readParams( void ) = 0;
65     virtual void cleanMe( void ) = 0;
66    
67    
68     virtual void initializeAtoms( int nAtoms, Atom** atomArray ) = 0;
69     virtual void initializeBonds( int nBonds, Bond** bondArray,
70     bond_pair* the_bonds ) = 0;
71     virtual void initializeBends( int nBends, Bend** bendArray,
72     bend_set* the_bends ) = 0;
73     virtual void initializeTorsions( int nTorsions, Torsion** torsionArray,
74     torsion_set* the_torsions ) = 0;
75 mmeineke 377 virtual void initForceField( int ljMixRule ) = 0;
76 mmeineke 420
77     virtual void calcRcut( void );
78 mmeineke 377 virtual void doForces( int calcPot, int calcStress );
79    
80     void setFortranForceLoop( void (*fsub) doForceLoopList ){
81     fortranForceLoop = fsub;
82     }
83    
84     protected:
85    
86     void initFortran( int ljMixPolicy, int useReactionField );
87     void (*fortranForceLoop) doForceLoopList;
88    
89     FILE *frcFile;
90     SimInfo* entry_plug;
91    
92     int lineNum;
93     char readLine[500];
94     char* eof_test;
95 mmeineke 420 double bigSigma;
96 mmeineke 377
97     };
98    
99    
100 mmeineke 559 class DUFF : public ForceFields{
101 mmeineke 377
102     public:
103 mmeineke 559 DUFF();
104     virtual ~DUFF();
105 mmeineke 377
106 mmeineke 420 void readParams();
107     void cleanMe( void );
108    
109     void initializeAtoms( int nAtoms, Atom** atomArray );
110     void initializeBonds( int nBonds, Bond** bondArray,
111     bond_pair* the_bonds );
112     void initializeBends( int nBends, Bend** bendArray,
113     bend_set* the_bends );
114     void initializeTorsions( int nTorsions, Torsion** torsionArray,
115     torsion_set* the_torsions );
116    
117 mmeineke 424 void initForceField( int ljMixRule );
118    
119 mmeineke 377 private:
120    
121     void fastForward( char* stopText, char* searchOwner );
122     };
123    
124 mmeineke 559 class LJFF : public ForceFields{
125 mmeineke 377
126     public:
127 mmeineke 559 LJFF();
128     virtual ~LJFF();
129 mmeineke 377
130    
131 mmeineke 420 void readParams();
132     void cleanMe( void );
133    
134     void initializeAtoms( int nAtoms, Atom** atomArray );
135     void initializeBonds( int nBonds, Bond** bondArray,
136     bond_pair* the_bonds );
137     void initializeBends( int nBends, Bend** bendArray,
138     bend_set* the_bends );
139     void initializeTorsions( int nTorsions, Torsion** torsionArray,
140     torsion_set* the_torsions );
141 mmeineke 424
142     void initForceField( int ljMixRule );
143    
144 mmeineke 377 private:
145    
146     void fastForward( char* stopText, char* searchOwner );
147 mmeineke 420
148 mmeineke 377 };
149 mmeineke 559
150 chuckv 500 class EAM_FF : public ForceFields{
151 mmeineke 377
152 chuckv 500 public:
153     EAM_FF();
154     virtual ~EAM_FF();
155    
156    
157     void readParams();
158     void cleanMe( void );
159    
160     void initializeAtoms( int nAtoms, Atom** atomArray );
161     void initializeBonds( int nBonds, Bond** bondArray,
162     bond_pair* the_bonds );
163     void initializeBends( int nBends, Bend** bendArray,
164     bend_set* the_bends );
165     void initializeTorsions( int nTorsions, Torsion** torsionArray,
166     torsion_set* the_torsions );
167    
168     void initForceField( int ljMixRule );
169    
170     private:
171    
172     void fastForward( char* stopText, char* searchOwner );
173    
174     };
175    
176 mmeineke 377 #endif
177