ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-4/src/primitives/Atom.hpp
Revision: 1930
Committed: Wed Jan 12 22:41:40 2005 UTC (19 years, 5 months ago) by gezelter
File size: 4270 byte(s)
Log Message:
merging new_design branch into OOPSE-2.0

File Contents

# User Rev Content
1 gezelter 1930 /*
2     * Copyright (c) 2005 The University of Notre Dame. All Rights Reserved.
3     *
4     * The University of Notre Dame grants you ("Licensee") a
5     * non-exclusive, royalty free, license to use, modify and
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
19     * notice, this list of conditions and the following disclaimer.
20     *
21     * 3. Redistributions in binary form must reproduce the above copyright
22     * notice, this list of conditions and the following disclaimer in the
23     * documentation and/or other materials provided with the
24     * distribution.
25     *
26     * This software is provided "AS IS," without a warranty of any
27     * kind. All express or implied conditions, representations and
28     * warranties, including any implied warranty of merchantability,
29     * fitness for a particular purpose or non-infringement, are hereby
30     * excluded. The University of Notre Dame and its licensors shall not
31     * be liable for any damages suffered by licensee as a result of
32     * using, modifying or distributing the software or its
33     * derivatives. In no event will the University of Notre Dame or its
34     * licensors be liable for any lost revenue, profit or data, or for
35     * direct, indirect, special, consequential, incidental or punitive
36     * damages, however caused and regardless of the theory of liability,
37     * arising out of the use of or inability to use software, even if the
38     * University of Notre Dame has been advised of the possibility of
39     * such damages.
40     */
41    
42     /**
43     * @file Atom.hpp
44     * @author tlin
45     * @date 10/22/2004
46     * @version 1.0
47     */
48 gezelter 1490
49 gezelter 1930 #ifndef PRIMITIVES_ATOM_HPP
50     #define PRIMITIVES_ATOM_HPP
51 gezelter 1490
52 tim 1492 #include "primitives/StuntDouble.hpp"
53 gezelter 1930 #include "types/AtomType.hpp"
54 gezelter 1490
55 gezelter 1930 namespace oopse{
56     class Atom : public StuntDouble {
57     public:
58     Atom(AtomType* at);
59 gezelter 1490
60 gezelter 1930 virtual std::string getType() {return atomType_->getName();}
61    
62     /**
63     * Returns the inertia tensor of this stuntdouble
64     * @return the inertia tensor of this stuntdouble
65     */
66     virtual Mat3x3d getI();
67 gezelter 1490
68 gezelter 1930 /**
69     * Returns the gradient of this stuntdouble
70     * @return the inertia tensor of this stuntdouble
71     */
72     virtual std::vector<double> getGrad();
73 gezelter 1490
74 gezelter 1930 virtual void accept(BaseVisitor* v);
75 gezelter 1490
76 gezelter 1930 /**
77     * Returns the AtomType of this Atom.
78     * @return the atom type of this atom
79     */
80     AtomType* getAtomType() {
81     return atomType_;
82     }
83    
84     //forward functions of AtomType class
85     bool isCharge() {
86     return atomType_->isCharge();
87     }
88    
89     bool isDirectional() {
90     return atomType_->isDirectional();
91     }
92 gezelter 1490
93 gezelter 1930 bool isDipole() {
94     return atomType_->isDipole();
95     }
96 gezelter 1490
97 gezelter 1930 bool isQudrapole() {
98     return atomType_->isQuadrupole();
99     }
100    
101     bool isMultipole() {
102     return atomType_->isMultipole();
103     }
104    
105     bool isGayBerne() {
106     return atomType_->isGayBerne();
107     }
108    
109     bool isSticky() {
110     return atomType_->isSticky();
111     }
112 gezelter 1490
113 gezelter 1930 bool isShape() {
114     return atomType_->isShape();
115     }
116 gezelter 1490
117 gezelter 1930 int getIdent() {
118     return atomType_->getIdent();
119     }
120    
121     protected:
122     AtomType* atomType_;
123     };
124 gezelter 1490
125 gezelter 1930 }//namepace oopse
126 gezelter 1490
127 gezelter 1930 #endif //PRIMITIVES_ATOM_HPP