6 |
|
* redistribute this software in source and binary code form, provided |
7 |
|
* that the following conditions are met: |
8 |
|
* |
9 |
< |
* 1. Acknowledgement of the program authors must be made in any |
10 |
< |
* publication of scientific results based in part on use of the |
11 |
< |
* program. An acceptable form of acknowledgement is citation of |
12 |
< |
* the article in which the program was described (Matthew |
13 |
< |
* A. Meineke, Charles F. Vardeman II, Teng Lin, Christopher |
14 |
< |
* J. Fennell and J. Daniel Gezelter, "OOPSE: An Object-Oriented |
15 |
< |
* Parallel Simulation Engine for Molecular Dynamics," |
16 |
< |
* J. Comput. Chem. 26, pp. 252-271 (2005)) |
17 |
< |
* |
18 |
< |
* 2. Redistributions of source code must retain the above copyright |
9 |
> |
* 1. Redistributions of source code must retain the above copyright |
10 |
|
* notice, this list of conditions and the following disclaimer. |
11 |
|
* |
12 |
< |
* 3. Redistributions in binary form must reproduce the above copyright |
12 |
> |
* 2. Redistributions in binary form must reproduce the above copyright |
13 |
|
* notice, this list of conditions and the following disclaimer in the |
14 |
|
* documentation and/or other materials provided with the |
15 |
|
* distribution. |
28 |
|
* arising out of the use of or inability to use software, even if the |
29 |
|
* University of Notre Dame has been advised of the possibility of |
30 |
|
* such damages. |
31 |
+ |
* |
32 |
+ |
* SUPPORT OPEN SCIENCE! If you use OpenMD or its source code in your |
33 |
+ |
* research, please cite the appropriate papers when you publish your |
34 |
+ |
* work. Good starting points are: |
35 |
+ |
* |
36 |
+ |
* [1] Meineke, et al., J. Comp. Chem. 26, 252-271 (2005). |
37 |
+ |
* [2] Fennell & Gezelter, J. Chem. Phys. 124, 234104 (2006). |
38 |
+ |
* [3] Sun, Lin & Gezelter, J. Chem. Phys. 128, 24107 (2008). |
39 |
+ |
* [4] Kuang & Gezelter, J. Chem. Phys. 133, 164101 (2010). |
40 |
+ |
* [5] Vardeman, Stocker & Gezelter, J. Chem. Theory Comput. 7, 834 (2011). |
41 |
|
*/ |
42 |
|
|
43 |
|
/** |
59 |
|
#include "utils/PropertyMap.hpp" |
60 |
|
#include "brains/Snapshot.hpp" |
61 |
|
#include "brains/SnapshotManager.hpp" |
62 |
< |
namespace oopse{ |
62 |
> |
namespace OpenMD{ |
63 |
|
|
64 |
|
|
65 |
|
|
928 |
|
void addZangle(RealType angle, int snapshotNo) { |
929 |
|
((snapshotMan_->getSnapshot(snapshotNo))->*storage_).zAngle[localIndex_] += angle; |
930 |
|
} |
931 |
+ |
|
932 |
+ |
/** |
933 |
+ |
* Returns the previous electric field of this stuntDouble |
934 |
+ |
* @return the electric field of this stuntDouble |
935 |
+ |
*/ |
936 |
+ |
Vector3d getPrevEField() { |
937 |
+ |
return ((snapshotMan_->getPrevSnapshot())->*storage_).electricField[localIndex_]; |
938 |
+ |
} |
939 |
+ |
|
940 |
+ |
/** |
941 |
+ |
* Returns the current electric field of this stuntDouble |
942 |
+ |
* @return the electric field of this stuntDouble |
943 |
+ |
*/ |
944 |
+ |
Vector3d getEField() { |
945 |
+ |
return ((snapshotMan_->getCurrentSnapshot())->*storage_).electricField[localIndex_]; |
946 |
+ |
} |
947 |
+ |
|
948 |
+ |
/** |
949 |
+ |
* Returns the electric field of this stuntDouble in specified snapshot |
950 |
+ |
* @return the electric field of this stuntDouble |
951 |
+ |
* @param snapshotNo |
952 |
+ |
*/ |
953 |
+ |
Vector3d getEField(int snapshotNo) { |
954 |
+ |
return ((snapshotMan_->getSnapshot(snapshotNo))->*storage_).electricField[localIndex_]; |
955 |
+ |
} |
956 |
|
|
957 |
+ |
/** |
958 |
+ |
* Sets the previous electric field of this stuntDouble |
959 |
+ |
* @param electricField new electric field |
960 |
+ |
* @see #getEField |
961 |
+ |
*/ |
962 |
+ |
void setPrevEField(const Vector3d& electricField) { |
963 |
+ |
((snapshotMan_->getPrevSnapshot())->*storage_).electricField[localIndex_] = electricField; |
964 |
+ |
} |
965 |
+ |
|
966 |
+ |
/** |
967 |
+ |
* Sets the current electric field of this stuntDouble |
968 |
+ |
* @param electricField new electric field |
969 |
+ |
*/ |
970 |
+ |
void setEField(const Vector3d& electricField) { |
971 |
+ |
DataStorage& data = snapshotMan_->getCurrentSnapshot()->*storage_; |
972 |
+ |
data.electricField[localIndex_] = electricField; |
973 |
+ |
//((snapshotMan_->getCurrentSnapshot())->*storage_).electricField[localIndex_] = electricField; |
974 |
+ |
} |
975 |
+ |
|
976 |
+ |
/** |
977 |
+ |
* Sets the electric field of this stuntDouble in specified snapshot |
978 |
+ |
* @param electricField electric field to be set |
979 |
+ |
* @param snapshotNo |
980 |
+ |
* @see #getEField |
981 |
+ |
*/ |
982 |
+ |
void setEField(const Vector3d& electricField, int snapshotNo) { |
983 |
+ |
|
984 |
+ |
((snapshotMan_->getSnapshot(snapshotNo))->*storage_).electricField[localIndex_] = electricField; |
985 |
+ |
|
986 |
+ |
} |
987 |
+ |
|
988 |
+ |
|
989 |
|
/** Set the force of this stuntDouble to zero */ |
990 |
|
void zeroForcesAndTorques(); |
991 |
|
/** |
1070 |
|
|
1071 |
|
/** |
1072 |
|
* <p> |
1073 |
< |
* The purpose of the Visitor Pattern is to encapsulate an operation that you want to perform on |
1074 |
< |
* the elements of a data structure. In this way, you can change the operation being performed |
1075 |
< |
* on a structure without the need of changing the classes of the elements that you are operating |
1076 |
< |
* on. Using a Visitor pattern allows you to decouple the classes for the data structure and the |
1077 |
< |
* algorithms used upon them |
1073 |
> |
* The purpose of the Visitor Pattern is to encapsulate an |
1074 |
> |
* operation that you want to perform on the elements of a data |
1075 |
> |
* structure. In this way, you can change the operation being |
1076 |
> |
* performed on a structure without the need of changing the |
1077 |
> |
* classes of the elements that you are operating on. Using a |
1078 |
> |
* Visitor pattern allows you to decouple the classes for the data |
1079 |
> |
* structure and the algorithms used upon them |
1080 |
|
* </p> |
1081 |
|
* @param v visitor |
1082 |
|
*/ |
1147 |
|
PropertyMap properties_; |
1148 |
|
}; |
1149 |
|
|
1150 |
< |
}//end namespace oopse |
1150 |
> |
}//end namespace OpenMD |
1151 |
|
#endif //PRIMITIVES_STUNTDOUBLE_HPP |