50#ifndef PRIMITIVES_ATOM_HPP
51#define PRIMITIVES_ATOM_HPP
54#include "types/AtomType.hpp"
57 class Atom :
public StuntDouble {
73 virtual std::string
getType() {
return atomType_->getName();}
85 virtual std::vector<RealType>
getGrad();
99 return atomType_->isCharge();
102 bool isDirectional() {
103 return atomType_->isDirectional();
107 return atomType_->isDipole();
111 return atomType_->isMultipole();
115 return atomType_->isGayBerne();
119 return atomType_->isSticky();
123 return atomType_->isShape();
127 return atomType_->isMetal();
130 bool isFluctuatingCharge() {
131 return atomType_->isFluctuatingCharge();
135 return atomType_->getIdent();
138 RealType getChargeMass() {
142 void setChargeMass(RealType cm) {
150 return static_cast<HybridizationType
>(hyb_);
155 RealType chargeMass_;
virtual std::string getType()
Returns the name of this stuntDouble.
virtual void accept(BaseVisitor *v)
HybridizationType getHybridization() const
returns our hybridization
virtual std::vector< RealType > getGrad()
Returns the gradient of this stuntdouble.
virtual Mat3x3d getI()
Returns the inertia tensor of this stuntdouble.
void setHybridization(HybridizationType what)
sets our hybridization
AtomType * getAtomType()
Returns the AtomType of this Atom.
AtomType is what OpenMD looks to for unchanging data about an atom.
This basic Periodic Table class was originally taken from the data.cpp file in OpenBabel.