| 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] Vardeman & Gezelter, in progress (2009). |
| 40 |
|
*/ |
| 41 |
|
|
| 42 |
|
/** |
| 58 |
|
#include "utils/PropertyMap.hpp" |
| 59 |
|
#include "brains/Snapshot.hpp" |
| 60 |
|
#include "brains/SnapshotManager.hpp" |
| 61 |
< |
namespace oopse{ |
| 61 |
> |
namespace OpenMD{ |
| 62 |
|
|
| 63 |
|
|
| 64 |
|
|
| 760 |
|
*/ |
| 761 |
|
void addTrq(const Vector3d& trq, int snapshotNo) { |
| 762 |
|
((snapshotMan_->getSnapshot(snapshotNo))->*storage_).torque[localIndex_] += trq; |
| 763 |
+ |
} |
| 764 |
+ |
|
| 765 |
+ |
|
| 766 |
+ |
|
| 767 |
+ |
/** |
| 768 |
+ |
* Returns the previous particlePot of this stuntDouble |
| 769 |
+ |
* @return the particlePot of this stuntDouble |
| 770 |
+ |
*/ |
| 771 |
+ |
RealType getPrevParticlePot() { |
| 772 |
+ |
return ((snapshotMan_->getPrevSnapshot())->*storage_).particlePot[localIndex_]; |
| 773 |
+ |
} |
| 774 |
+ |
|
| 775 |
+ |
/** |
| 776 |
+ |
* Returns the current particlePot of this stuntDouble |
| 777 |
+ |
* @return the particlePot of this stuntDouble |
| 778 |
+ |
*/ |
| 779 |
+ |
RealType getParticlePot() { |
| 780 |
+ |
return ((snapshotMan_->getCurrentSnapshot())->*storage_).particlePot[localIndex_]; |
| 781 |
+ |
} |
| 782 |
+ |
|
| 783 |
+ |
/** |
| 784 |
+ |
* Returns the particlePot of this stuntDouble in specified snapshot |
| 785 |
+ |
* |
| 786 |
+ |
* @return the particlePot of this stuntDouble |
| 787 |
+ |
* @param snapshotNo |
| 788 |
+ |
*/ |
| 789 |
+ |
RealType getParticlePot(int snapshotNo) { |
| 790 |
+ |
return ((snapshotMan_->getSnapshot(snapshotNo))->*storage_).particlePot[localIndex_]; |
| 791 |
+ |
} |
| 792 |
+ |
|
| 793 |
+ |
/** |
| 794 |
+ |
* Sets the previous particlePot of this stuntDouble |
| 795 |
+ |
* |
| 796 |
+ |
* @param particlePot new particlePot |
| 797 |
+ |
* @see #getParticlePot |
| 798 |
+ |
*/ |
| 799 |
+ |
void setPrevParticlePot(const RealType& particlePot) { |
| 800 |
+ |
((snapshotMan_->getPrevSnapshot())->*storage_).particlePot[localIndex_] = particlePot; |
| 801 |
+ |
} |
| 802 |
+ |
|
| 803 |
+ |
/** |
| 804 |
+ |
* Sets the current particlePot of this stuntDouble |
| 805 |
+ |
* @param particlePot new particlePot |
| 806 |
+ |
*/ |
| 807 |
+ |
void setParticlePot(const RealType& particlePot) { |
| 808 |
+ |
((snapshotMan_->getCurrentSnapshot())->*storage_).particlePot[localIndex_] = particlePot; |
| 809 |
+ |
} |
| 810 |
+ |
|
| 811 |
+ |
/** |
| 812 |
+ |
* Sets the particlePot of this stuntDouble in specified snapshot |
| 813 |
+ |
* |
| 814 |
+ |
* @param particlePot particlePot to be set |
| 815 |
+ |
* @param snapshotNo |
| 816 |
+ |
* @see #getParticlePot |
| 817 |
+ |
*/ |
| 818 |
+ |
void setParticlePot(const RealType& particlePot, int snapshotNo) { |
| 819 |
+ |
((snapshotMan_->getSnapshot(snapshotNo))->*storage_).particlePot[localIndex_] = particlePot; |
| 820 |
+ |
} |
| 821 |
+ |
|
| 822 |
+ |
/** |
| 823 |
+ |
* Adds particlePot into the previous particlePot of this stuntDouble |
| 824 |
+ |
* |
| 825 |
+ |
* @param particlePot new particlePot |
| 826 |
+ |
* @see #getParticlePot |
| 827 |
+ |
*/ |
| 828 |
+ |
void addPrevParticlePot(const RealType& particlePot) { |
| 829 |
+ |
((snapshotMan_->getPrevSnapshot())->*storage_).particlePot[localIndex_] += particlePot; |
| 830 |
+ |
} |
| 831 |
+ |
|
| 832 |
+ |
/** |
| 833 |
+ |
* Adds particlePot into the current particlePot of this stuntDouble |
| 834 |
+ |
* @param particlePot new particlePot |
| 835 |
+ |
*/ |
| 836 |
+ |
void addParticlePot(const RealType& particlePot) { |
| 837 |
+ |
((snapshotMan_->getCurrentSnapshot())->*storage_).particlePot[localIndex_] += particlePot; |
| 838 |
+ |
} |
| 839 |
+ |
|
| 840 |
+ |
/** |
| 841 |
+ |
* Adds particlePot into the particlePot of this stuntDouble in specified snapshot |
| 842 |
+ |
* |
| 843 |
+ |
* @param particlePot particlePot to be add |
| 844 |
+ |
* @param snapshotNo |
| 845 |
+ |
* @see #getParticlePot |
| 846 |
+ |
*/ |
| 847 |
+ |
void addParticlePot(const RealType& particlePot, int snapshotNo) { |
| 848 |
+ |
((snapshotMan_->getSnapshot(snapshotNo))->*storage_).particlePot[localIndex_] += particlePot; |
| 849 |
|
} |
| 850 |
|
|
| 851 |
|
|
| 1011 |
|
} |
| 1012 |
|
|
| 1013 |
|
/** |
| 928 |
– |
* Returns the previous particle potential of this stuntDouble |
| 929 |
– |
* @return the particle potential of this stuntDouble |
| 930 |
– |
*/ |
| 931 |
– |
RealType getPrevParticlePot() { |
| 932 |
– |
return ((snapshotMan_->getPrevSnapshot())->*storage_).particlePot[localIndex_]; |
| 933 |
– |
} |
| 934 |
– |
|
| 935 |
– |
/** |
| 936 |
– |
* Returns the current particle potential of this stuntDouble |
| 937 |
– |
* @return the particle potential of this stuntDouble |
| 938 |
– |
*/ |
| 939 |
– |
RealType getParticlePot() { |
| 940 |
– |
return ((snapshotMan_->getCurrentSnapshot())->*storage_).particlePot[localIndex_]; |
| 941 |
– |
} |
| 942 |
– |
|
| 943 |
– |
/** |
| 944 |
– |
* Returns the particle potential of this stuntDouble in specified snapshot |
| 945 |
– |
* @return the particle potential of this stuntDouble |
| 946 |
– |
* @param snapshotNo |
| 947 |
– |
*/ |
| 948 |
– |
RealType getParticlePot(int snapshotNo) { |
| 949 |
– |
return ((snapshotMan_->getSnapshot(snapshotNo))->*storage_).particlePot[localIndex_]; |
| 950 |
– |
} |
| 951 |
– |
|
| 952 |
– |
/** |
| 953 |
– |
* Sets the previous particle potential of this stuntDouble |
| 954 |
– |
* @param po tnew particle potential |
| 955 |
– |
* @see #getParticlePot |
| 956 |
– |
*/ |
| 957 |
– |
void setPrevParticlePot(RealType pot) { |
| 958 |
– |
((snapshotMan_->getPrevSnapshot())->*storage_).particlePot[localIndex_] = pot; |
| 959 |
– |
} |
| 960 |
– |
|
| 961 |
– |
/** |
| 962 |
– |
* Sets the current velocity of this stuntDouble |
| 963 |
– |
* @param vel new velocity |
| 964 |
– |
*/ |
| 965 |
– |
void setParticlePot(RealType pot) { |
| 966 |
– |
((snapshotMan_->getCurrentSnapshot())->*storage_).particlePot[localIndex_] = pot; |
| 967 |
– |
} |
| 968 |
– |
|
| 969 |
– |
/** |
| 970 |
– |
* Sets the particle potential of this stuntDouble in specified snapshot |
| 971 |
– |
* @param pot potential to be set |
| 972 |
– |
* @param snapshotNo |
| 973 |
– |
* @see #getVel |
| 974 |
– |
*/ |
| 975 |
– |
void setParticlePot(RealType pot, int snapshotNo) { |
| 976 |
– |
((snapshotMan_->getSnapshot(snapshotNo))->*storage_).particlePot[localIndex_] = pot; |
| 977 |
– |
} |
| 978 |
– |
|
| 979 |
– |
/** |
| 1014 |
|
* <p> |
| 1015 |
< |
* The purpose of the Visitor Pattern is to encapsulate an operation that you want to perform on |
| 1016 |
< |
* the elements of a data structure. In this way, you can change the operation being performed |
| 1017 |
< |
* on a structure without the need of changing the classes of the elements that you are operating |
| 1018 |
< |
* on. Using a Visitor pattern allows you to decouple the classes for the data structure and the |
| 1019 |
< |
* algorithms used upon them |
| 1015 |
> |
* The purpose of the Visitor Pattern is to encapsulate an |
| 1016 |
> |
* operation that you want to perform on the elements of a data |
| 1017 |
> |
* structure. In this way, you can change the operation being |
| 1018 |
> |
* performed on a structure without the need of changing the |
| 1019 |
> |
* classes of the elements that you are operating on. Using a |
| 1020 |
> |
* Visitor pattern allows you to decouple the classes for the data |
| 1021 |
> |
* structure and the algorithms used upon them |
| 1022 |
|
* </p> |
| 1023 |
|
* @param v visitor |
| 1024 |
|
*/ |
| 1089 |
|
PropertyMap properties_; |
| 1090 |
|
}; |
| 1091 |
|
|
| 1092 |
< |
}//end namespace oopse |
| 1092 |
> |
}//end namespace OpenMD |
| 1093 |
|
#endif //PRIMITIVES_STUNTDOUBLE_HPP |