--- trunk/OOPSE/libmdtools/ForceFields.hpp 2003/04/15 20:40:04 500 +++ trunk/OOPSE/libmdtools/ForceFields.hpp 2004/05/20 20:24:07 1180 @@ -5,11 +5,13 @@ #define STR_DEFINE(t, s) t = MK_STR(s) -#include -#include +#include +#include +#include #include "Atom.hpp" #include "SimInfo.hpp" +#include "StuntDouble.hpp" #ifdef IS_MPI #include "mpiForceField.h" @@ -73,18 +75,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; @@ -94,14 +99,16 @@ class ForceFields{ (public) char* eof_test; double bigSigma; + vector myStunts; + }; -class TraPPE_ExFF : public ForceFields{ +class DUFF : public ForceFields{ public: - TraPPE_ExFF(); - virtual ~TraPPE_ExFF(); + DUFF(); + virtual ~DUFF(); void readParams(); void cleanMe( void ); @@ -121,11 +128,11 @@ class LJ_FF : public ForceFields{ void fastForward( char* stopText, char* searchOwner ); }; -class LJ_FF : public ForceFields{ +class LJFF : public ForceFields{ public: - LJ_FF(); - virtual ~LJ_FF(); + LJFF(); + virtual ~LJFF(); void readParams(); @@ -146,6 +153,7 @@ class EAM_FF : public ForceFields{ void fastForward( char* stopText, char* searchOwner ); }; + class EAM_FF : public ForceFields{ public: @@ -166,10 +174,36 @@ class EAM_FF : public ForceFields{ (private) void initForceField( int ljMixRule ); + void calcRcut( void ); private: void fastForward( char* stopText, char* searchOwner ); + + 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