--- trunk/mdtools/headers/ForceFields.hpp 2002/07/09 18:40:59 11 +++ trunk/mdtools/headers/ForceFields.hpp 2003/01/30 15:20:21 253 @@ -7,6 +7,10 @@ class bond_pair{ #include "Atom.hpp" #include "SimInfo.hpp" +#ifdef IS_MPI +#include "mpiForceField.h" +#endif + class bond_pair{ public: bond_pair(){} @@ -37,35 +41,29 @@ class torsion_set{ (public) int d; }; -// typedef struct{ -// int a, b; -// } bond_pair; -// typedef struct{ -// int a, b, c; -// } bend_set; -// typedef struct{ -// int a, b, c, d; -// } torsion_set; - - class ForceFields{ public: ForceFields(){ frcFile = NULL; entry_plug = NULL; } - ~ForceFields(){} + virtual ~ForceFields(){} void setSimInfo( SimInfo* the_entry_plug ) { entry_plug = the_entry_plug; } virtual void initializeAtoms( void ) = 0; virtual void initializeBonds( bond_pair* the_bonds ) = 0; virtual void initializeBends( bend_set* the_bends ) = 0; virtual void initializeTorsions( torsion_set* the_torsions ) = 0; + virtual void doForces( int calcPot ) = 0; protected: FILE *frcFile; SimInfo* entry_plug; + + int lineNum; + char readLine[500]; + char* eof_test; }; @@ -73,12 +71,13 @@ class TraPPEFF : public ForceFields{ (public) public: TraPPEFF(); - ~TraPPEFF(); + virtual ~TraPPEFF(); void initializeAtoms( void ); void initializeBonds( bond_pair* the_bonds ); void initializeBends( bend_set* the_bends ); void initializeTorsions( torsion_set* the_torsions ); + void doForces( int ) {} }; @@ -86,24 +85,57 @@ class DipoleTestFF : public ForceFields{ (public) public: DipoleTestFF(); - ~DipoleTestFF(); + virtual ~DipoleTestFF(); void initializeAtoms( void ); void initializeBonds( bond_pair* the_bonds ); void initializeBends( bend_set* the_bends ); void initializeTorsions( torsion_set* the_torsions ); + void doForces( int ) {} }; class TraPPE_ExFF : public ForceFields{ public: TraPPE_ExFF(); - ~TraPPE_ExFF(); + virtual ~TraPPE_ExFF(); void initializeAtoms( void ); void initializeBonds( bond_pair* the_bonds ); void initializeBends( bend_set* the_bends ); void initializeTorsions( torsion_set* the_torsions ); + void doForces( int ) {} }; +class LJ_FF : public ForceFields{ + +public: + LJ_FF(); + virtual ~LJ_FF(); + + void initializeAtoms( void ); + void initializeBonds( bond_pair* the_bonds ); + void initializeBends( bend_set* the_bends ); + void initializeTorsions( torsion_set* the_torsions ); + void setLJfortran( void (*fortranSub)( double* positionArray, + double* forceArray, + double* potentialEnergy, + short int* doPotentialCalc ) ){ + doLJfortran = fortranSub; + } + void doForces( int ); + +private: + + void fastForward( char* stopText, char* searchOwner ); + + // set our sister fortran module's function to be our own. + void wrapMe( void ); + void (*doLJfortran)( double* positionArray, + double* forceArray, + double* potentialEnergy, + short int* doPotentialCalc ); + void initFortran( void ); +}; + #endif