--- trunk/OOPSE/libmdtools/ForceFields.hpp 2003/10/28 16:03:37 829 +++ trunk/OOPSE/libmdtools/ForceFields.hpp 2004/06/11 14:14:10 1261 @@ -7,9 +7,11 @@ #include #include +#include #include "Atom.hpp" #include "SimInfo.hpp" +#include "StuntDouble.hpp" #ifdef IS_MPI #include "mpiForceField.h" @@ -56,12 +58,14 @@ class ForceFields{ (public) class ForceFields{ public: - ForceFields(){ frcFile = NULL; entry_plug = NULL; } + ForceFields(){ frcFile = NULL; entry_plug = NULL; has_variant=0;} + ForceFields(char * theVariant ){ frcFile = NULL; entry_plug = NULL; has_variant=1; strcpy(variant, theVariant); } virtual ~ForceFields(){} void setSimInfo( SimInfo* the_entry_plug ) { entry_plug = the_entry_plug; } virtual void readParams( void ) = 0; + virtual void cleanMe( void ) = 0; @@ -73,18 +77,21 @@ class ForceFields{ (public) virtual void initializeTorsions( int nTorsions, Torsion** torsionArray, torsion_set* the_torsions ) = 0; virtual void initForceField( int ljMixRule ) = 0; + virtual void initRestraints(); + virtual void dumpzAngle(); virtual void calcRcut( void ); + virtual void setRcut( double LJrcut ); virtual void doForces( int calcPot, int calcStress ); - void setFortranForceLoop( void (*fsub) doForceLoopList ){ + void setFortranForceLoop( doForceLoop_TD fsub ){ fortranForceLoop = fsub; } protected: void initFortran( int ljMixPolicy, int useReactionField ); - void (*fortranForceLoop) doForceLoopList; + doForceLoop_TD fortranForceLoop; FILE *frcFile; SimInfo* entry_plug; @@ -92,6 +99,8 @@ class ForceFields{ (public) int lineNum; char readLine[500]; char* eof_test; + char variant[100]; + short int has_variant; double bigSigma; }; @@ -151,6 +160,7 @@ class EAM_FF : public ForceFields{ (public) public: EAM_FF(); + EAM_FF(char* the_variant); virtual ~EAM_FF(); @@ -175,5 +185,29 @@ class EAM_FF : public ForceFields{ (public) double eamRcut; }; +class WATER : public ForceFields{ + +public: + WATER(); + virtual ~WATER(); + + void readParams(); + void cleanMe( void ); + void initializeAtoms( int nAtoms, Atom** atomArray ); + void initializeBonds( int nBonds, Bond** bondArray, + bond_pair* the_bonds ); + void initializeBends( int nBends, Bend** bendArray, + bend_set* the_bends ); + void initializeTorsions( int nTorsions, Torsion** torsionArray, + torsion_set* the_torsions ); + void initForceField( int ljMixRule ); + +private: + + void fastForward( char* stopText, char* searchOwner ); + void sectionSearch( char* secHead, char* stopText, char* searchOwner ); + +}; + #endif