ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/branches/development/src/nonbonded/InteractionManager.hpp
(Generate patch)

Comparing branches/development/src/nonbonded/InteractionManager.hpp (file contents):
Revision 1502 by gezelter, Sat Oct 2 19:53:32 2010 UTC vs.
Revision 1535 by gezelter, Fri Dec 31 18:31:56 2010 UTC

# Line 44 | Line 44
44  
45   #include "brains/SimInfo.hpp"
46   #include "types/AtomType.hpp"
47 #include "UseTheForce/ForceField.hpp"
47   #include "nonbonded/LJ.hpp"
48   #include "nonbonded/GB.hpp"
49   #include "nonbonded/Sticky.hpp"
# Line 52 | Line 51
51   #include "nonbonded/SC.hpp"
52   #include "nonbonded/Morse.hpp"
53   #include "nonbonded/Electrostatic.hpp"
54 + #include "nonbonded/MAW.hpp"
55 + #include "nonbonded/SwitchingFunction.hpp"
56  
57   using namespace std;
58  
59   namespace OpenMD {
60 +  enum CutoffMethod {
61 +    HARD,
62 +    SWITCHED,
63 +    SHIFTED_POTENTIAL,
64 +    SHIFTED_FORCE
65 +  };
66 +
67    /**
68     * @class InteractionManager InteractionManager is responsible for
69     * keeping track of the non-bonded interactions (C++) and providing
# Line 65 | Line 73 | namespace OpenMD {
73  
74    public:
75      static InteractionManager* Instance();
76 <    static void setForceField(ForceField *ff) {forceField_ = ff;};    
76 >    static void setSimInfo(SimInfo* info) {info_ = info;}
77 >    static void initialize();
78  
70    static void doPrePair(AtomType* atype1,
71                          AtomType* atype2,
72                          RealType rij,
73                          RealType &rho_i_at_j,
74                          RealType &rho_j_at_i);
75
76    static void doPreForce(AtomType* atype,
77                           RealType rho,      
78                           RealType &frho,
79                           RealType &dfrhodrho);
80
81    static void doSkipCorrection(AtomType* atype1,      
82                                 AtomType* atype2,
83                                 Vector3d d,
84                                 RealType rij,
85                                 RealType &skippedCharge1,
86                                 RealType &skippedCharge2,
87                                 RealType sw,
88                                 RealType electroMult,
89                                 RealType &pot,
90                                 RealType &vpair,
91                                 Vector3d &f1,
92                                 Mat3x3d eFrame1,
93                                 Mat3x3d eFrame2,
94                                 Vector3d &t1,
95                                 Vector3d &t2);
96    
97    static void doSelfCorrection(AtomType* atype,
98                                 Mat3x3d eFrame,
99                                 RealType skippedCharge,
100                                 RealType &pot,
101                                 Vector3d &t);
102
103    static RealType getCutoff();
104
79      // Fortran support routines
80  
81 <    static void do_prepair(int *atid1, int *atid2, RealType *rij, RealType *rho_i_at_j, RealType *rho_j_at_i);
82 <    static void do_preforce(int *atid, RealType *rho, RealType *frho, RealType *dfrhodrho);
83 <    static void do_pair(int *atid1, int *atid2, RealType *d, RealType *r, RealType *r2, RealType *rcut, RealType *sw, RealType *vdwMult,RealType *electroMult, RealType *pot, RealType *vpair, RealType *f1, RealType *eFrame1, RealType *eFrame2, RealType *A1, RealType *A2, RealType *t1, RealType *t2, RealType *rho1, RealType *rho2, RealType *dfrho1, RealType *dfrho2, RealType *fshift1, RealType *fshift2);    
84 <    static void do_skip_correction(int *atid1, int *atid2, RealType *d, RealType *r, RealType *skippedCharge1, RealType *skippedCharge2, RealType *sw, RealType *electroMult, RealType *pot, RealType *vpair, RealType *f1, RealType *eFrame1, RealType *eFrame2, RealType *t1, RealType *t2);
85 <    static void do_self_correction(int *atid, RealType *eFrame, RealType *skippedCharge, RealType *pot, RealType *t);
86 <  
81 >    static void doPrePair(int *atid1, int *atid2, RealType *rij, RealType *rho_i_at_j, RealType *rho_j_at_i);
82 >    static void doPreForce(int *atid, RealType *rho, RealType *frho, RealType *dfrhodrho);
83 >    static void doPair(int *atid1, int *atid2, RealType *d, RealType *r, RealType *r2, RealType *rcut, RealType *sw, int *topoDist, RealType *pot, RealType *vpair, RealType *f1, RealType *eFrame1, RealType *eFrame2, RealType *A1, RealType *A2, RealType *t1, RealType *t2, RealType *rho1, RealType *rho2, RealType *dfrho1, RealType *dfrho2, RealType *fshift1, RealType *fshift2);    
84 >    static void doSkipCorrection(int *atid1, int *atid2, RealType *d, RealType *r, RealType *skippedCharge1, RealType *skippedCharge2, RealType *sw, RealType *electroMult, RealType *pot, RealType *vpair, RealType *f1, RealType *eFrame1, RealType *eFrame2, RealType *t1, RealType *t2);
85 >    static void doSelfCorrection(int *atid, RealType *eFrame, RealType *skippedCharge, RealType *pot, RealType *t);
86 >    static RealType getSuggestedCutoffRadius(int *atid1);  
87 >    static RealType getSuggestedCutoffRadius(AtomType *atype);
88 >    static void setSwitch(RealType *rIn, RealType *rOut);
89 >    static void getSwitch(RealType *r2, RealType *sw, RealType *dswdr, RealType *r, int *in_switching_region);
90      
91    private:
92      virtual ~InteractionManager() { }
# Line 119 | Line 96 | namespace OpenMD {
96      InteractionManager& operator=(InteractionManager const&) {};
97      static InteractionManager* _instance;
98  
122    static void initialize();
99      static bool initialized_;
100  
101 <    static ForceField* forceField_;
101 >    static void setupCutoffs();
102 >    static void setupSwitching();
103 >    static void setupNeighborlists();
104 >
105 >    static SimInfo* info_;
106      static LJ* lj_;
107      static GB* gb_;
108      static Sticky* sticky_;
# Line 130 | Line 110 | namespace OpenMD {
110      static SC* sc_;
111      static Morse* morse_;
112      static Electrostatic* electrostatic_;
113 +    static MAW* maw_;
114 +    static SwitchingFunction* switcher_;
115  
116 +    static RealType rCut_;            /**< cutoff radius for non-bonded interactions */
117 +    static RealType rSwitch_;         /**< inner radius of switching function */
118 +    static CutoffMethod cutoffMethod_;/**< Cutoff Method for most non-bonded interactions */
119 +    static SwitchingFunctionType sft_;/**< Type of switching function in use */
120 +    static RealType listRadius_;      /**< Verlet neighbor list radius */
121 +    static RealType skinThickness_;   /**< Verlet neighbor list skin thickness */    
122 +
123 +    static RealType vdwScale_[4];
124 +    static RealType electrostaticScale_[4];
125 +  
126      static map<int, AtomType*> typeMap_;
127      /**
128       * Each pair of atom types can have multiple interactions, so the
129       * natural data structures are a map between the pair, and a set
130       * of non-bonded interactions.
131       */
132 <    static map<pair<AtomType*, AtomType*>, set<NonBondedInteraction*> > interactions_;
141 <    
142 <
132 >    static map<pair<AtomType*, AtomType*>, set<NonBondedInteraction*> > interactions_;    
133    };
134   }
135   #endif

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines