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

Comparing trunk/src/nonbonded/InteractionManager.hpp (file contents):
Revision 1879 by gezelter, Sun Jun 16 15:15:42 2013 UTC vs.
Revision 1925 by gezelter, Wed Aug 7 15:24:16 2013 UTC

# Line 60 | Line 60 | namespace OpenMD {
60  
61   namespace OpenMD {
62  
63  const static int ELECTROSTATIC_PAIR  = (1 << 0);  
64  const static int LJ_PAIR             = (1 << 1);
65  const static int EAM_PAIR            = (1 << 2);
66  const static int SC_PAIR             = (1 << 3);
67  const static int STICKY_PAIR         = (1 << 4);
68  const static int GB_PAIR             = (1 << 5);
69  const static int MORSE_PAIR          = (1 << 6);
70  const static int REPULSIVEPOWER_PAIR = (1 << 7);
71  const static int MAW_PAIR            = (1 << 8);
72
63    /**
64     * @class InteractionManager
65     * InteractionManager is responsible for
# Line 85 | Line 75 | namespace OpenMD {
75  
76      // Fortran support routines
77  
78 <    void doPrePair(InteractionData idat);
79 <    void doPreForce(SelfData sdat);
80 <    void doPair(InteractionData idat);    
81 <    void doSkipCorrection(InteractionData idat);
82 <    void doSelfCorrection(SelfData sdat);
78 >    void doPrePair(InteractionData &idat);
79 >    void doPreForce(SelfData &sdat);
80 >    void doPair(InteractionData &idat);    
81 >    void doSkipCorrection(InteractionData &idat);
82 >    void doSelfCorrection(SelfData &sdat);
83 >    void doReciprocalSpaceSum(RealType &recipPot);
84      void setCutoffRadius(RealType rCut);
85      RealType getSuggestedCutoffRadius(int *atid1);  
86      RealType getSuggestedCutoffRadius(AtomType *atype);
# Line 112 | Line 103 | namespace OpenMD {
103      
104      map<int, AtomType*> typeMap_;
105      /**
106 <     * Each pair of atom types can have multiple interactions, so the
106 >     * Each pair of atom types can have multiple interactions, so the
107       * natural data structures are a map between the pair, and a set
108 <     * of non-bonded interactions.
108 >     * of non-bonded interactions:
109 >     *
110 >     *  map<pair<AtomType*, AtomType*>, set<NonBondedInteraction*> > interactions_;
111 >     *
112 >     * Pair creation turns out to be inefficient, and map searching
113 >     * isn't necessary.  Instead of AtomType* sort keys, we now use
114 >     * the AtomType idents (atids) which are ints to access the vector
115 >     * locations.  iHash_ contains largely the same information as
116 >     * interactions_, but in a way that doesn't require a set iterator
117 >     * inside the main pair loop.
118       */
119 <    map<pair<AtomType*, AtomType*>, set<NonBondedInteraction*> > interactions_;
120 <    map<pair<AtomType*, AtomType*>, int> iHash_;
121 <
119 >    vector<vector<set<NonBondedInteraction*> > > interactions_;
120 >    vector<vector<int> > iHash_;
121    };
122   }
123   #endif

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines