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

Comparing branches/development/src/nonbonded/NonBondedInteraction.hpp (file contents):
Revision 1553 by gezelter, Wed Apr 27 18:38:15 2011 UTC vs.
Revision 1554 by gezelter, Sat Apr 30 02:54:02 2011 UTC

# Line 64 | Line 64 | namespace OpenMD {
64      N_INTERACTION_FAMILIES
65    };
66  
67 +  typedef Vector<RealType, N_INTERACTION_FAMILIES> potVec;
68 +
69    /**
70     * The InteractionData struct.  
71     *
72 <   * This is used to pass data to specific non-bonded interactions for
73 <   * force calculations.  Not all of the struct members are utilized
74 <   * by any given interaction.
72 >   * This is used to pass pointers to data to specific non-bonded
73 >   * interactions for force calculations.  Not all of the struct
74 >   * members are utilized by any given interaction.
75     */
76    struct InteractionData {
77 <    pair<AtomType*, AtomType*> atypes; /**< pair of atom types interacting */
78 <    Vector3d d;              /**< interatomic vector (already wrapped into box) */
79 <    RealType rij;            /**< interatomic separation */
80 <    RealType r2;             /**< square of rij */
81 <    RealType rcut;           /**< cutoff radius for this interaction */
82 <    RealType sw;             /**< switching function value at rij */
83 <    int topoDist;            /**< topological distance between atoms */
84 <    RealType vdwMult;        /**< multiplier for van der Waals interactions */
85 <    RealType electroMult;    /**< multiplier for electrostatic interactions */
86 <    RealType pot[4];         /**< total potential */
87 <    RealType vpair;          /**< pair potential */
88 <    Vector3d f1;             /**< force between the two atoms */
89 <    Mat3x3d eFrame1;         /**< pointer to electrostatic frame for first atom */
90 <    Mat3x3d eFrame2;         /**< pointer to electrostatic frame for second atom*/
91 <    RotMat3x3d A1;           /**< pointer to rotation matrix of first atom */
92 <    RotMat3x3d A2;           /**< pointer to rotation matrix of second atom */
93 <    Vector3d t1;             /**< pointer to torque on first atom */
94 <    Vector3d t2;             /**< pointer to torque on second atom */
95 <    RealType rho_i_at_j;     /**< electron density at second atom due to first */
96 <    RealType rho_j_at_i;     /**< electron density at first atom due to second */
97 <    RealType rho1;           /**< total electron density at first atom */
98 <    RealType rho2;           /**< total electron density at second atom */
99 <    RealType dfrho1;         /**< derivative of density functional for atom 1 */
100 <    RealType dfrho2;         /**< derivative of density functional for atom 2 */
101 <    RealType fshift1;        /**< indirect potential contribution from atom 1 */
102 <    RealType fshift2;        /**< indirect potential contribution from atom 2 */
103 <    RealType skippedCharge1; /**< charge skipped in normal pairwise interaction loop */
104 <    RealType skippedCharge2; /**< charge skipped in normal pairwise interaction loop */
77 >    pair<AtomType*, AtomType*>* atypes; /**< pair of atom types interacting */
78 >    Vector3d* d;              /**< interatomic vector (already wrapped into box) */
79 >    RealType* rij;            /**< interatomic separation */
80 >    RealType* r2;             /**< square of rij */
81 >    RealType* rcut;           /**< cutoff radius for this interaction */
82 >    RealType* sw;             /**< switching function value at rij */
83 >    int* topoDist;            /**< topological distance between atoms */
84 >    RealType* vdwMult;        /**< multiplier for van der Waals interactions */
85 >    RealType* electroMult;    /**< multiplier for electrostatic interactions */
86 >    potVec* pot;              /**< total potential */
87 >    RealType* vpair;          /**< pair potential */
88 >    Vector3d* f1;             /**< force between the two atoms */
89 >    Mat3x3d* eFrame1;         /**< pointer to electrostatic frame for first atom */
90 >    Mat3x3d* eFrame2;         /**< pointer to electrostatic frame for second atom*/
91 >    RotMat3x3d* A1;           /**< pointer to rotation matrix of first atom */
92 >    RotMat3x3d* A2;           /**< pointer to rotation matrix of second atom */
93 >    Vector3d* t1;             /**< pointer to torque on first atom */
94 >    Vector3d* t2;             /**< pointer to torque on second atom */
95 >    RealType* rho_i_at_j;     /**< electron density at second atom due to first */
96 >    RealType* rho_j_at_i;     /**< electron density at first atom due to second */
97 >    RealType* rho1;           /**< total electron density at first atom */
98 >    RealType* rho2;           /**< total electron density at second atom */
99 >    RealType* dfrho1;         /**< derivative of density functional for atom 1 */
100 >    RealType* dfrho2;         /**< derivative of density functional for atom 2 */
101 >    RealType* fshift1;        /**< indirect potential contribution from atom 1 */
102 >    RealType* fshift2;        /**< indirect potential contribution from atom 2 */
103 >    RealType* skippedCharge1; /**< charge skipped in normal pairwise interaction loop */
104 >    RealType* skippedCharge2; /**< charge skipped in normal pairwise interaction loop */
105    };
106    
107    /**
108     * The SelfData struct.
109     *
110 <   * This is used to pass data for the self-interaction or derived
111 <   * information on a single atom after a pass through all other
112 <   * interactions.  This is used by electrostatic methods that have
113 <   * long-range corrections involving interactions with a medium or a
114 <   * boundary and also by specific metal interactions for electron
115 <   * density functional calculations.  Not all of the struct members
116 <   * are utilized by any given self interaction.
110 >   * This is used to pass pointers to data for the self-interaction or
111 >   * derived information on a single atom after a pass through all
112 >   * other interactions.  This is used by electrostatic methods that
113 >   * have long-range corrections involving interactions with a medium
114 >   * or a boundary and also by specific metal interactions for
115 >   * electron density functional calculations.  Not all of the struct
116 >   * members are utilized by any given self interaction.
117     */
118    struct SelfData {
119 <    AtomType* atype;        /**< pointer to AtomType of the atom */
120 <    Mat3x3d eFrame;         /**< pointer to electrostatic frame for atom */
121 <    RealType skippedCharge; /**< charge skipped in normal pairwise interaction loop */
122 <    RealType pot[4];        /**< total potential contribution */
123 <    Vector3d t;             /**< pointer to resultant torque on atom */
124 <    RealType rho;           /**< electron density */
125 <    RealType frho;          /**< value of density functional for the atom */
126 <    RealType dfrhodrho;     /**< derivative of density functional for the atom */
119 >    AtomType* atype;       /**< pointer to AtomType of the atom */
120 >    Mat3x3d* eFrame;       /**< pointer to electrostatic frame for atom */
121 >    RealType* skippedCharge;/**< charge skipped in normal pairwise interaction loop */
122 >    potVec pot;            /**< total potential */
123 >    Vector3d* t;           /**< pointer to resultant torque on atom */
124 >    RealType* rho;         /**< electron density */
125 >    RealType* frho;        /**< value of density functional for the atom */
126 >    RealType* dfrhodrho;   /**< derivative of density functional for the atom */
127    };
128    
129      

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines