ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/mdtools/headers/ForceFields.hpp
Revision: 253
Committed: Thu Jan 30 15:20:21 2003 UTC (21 years, 5 months ago) by chuckv
File size: 2780 byte(s)
Log Message:
Added a generic util code directory and moved Linux_ifc_machdep to it.
MPI changes to compile MPI modules.

File Contents

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