/* * atom.hpp * * Created on: Aug 3, 2009 * Author: heber */ #ifndef ATOM_HPP_ #define ATOM_HPP_ using namespace std; /*********************************************** includes ***********************************/ // include config.h #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include "atom_atominfo.hpp" #include "atom_bondedparticle.hpp" #include "atom_graphnode.hpp" #include "atom_particleinfo.hpp" #include "atom_trajectoryparticle.hpp" #include "tesselation.hpp" /****************************************** forward declarations *****************************/ class Vector; /********************************************** declarations *******************************/ /** Single atom. * Class incorporates position, type */ class atom : public TesselPoint, public TrajectoryParticle, public GraphNode, public BondedParticle, public virtual ParticleInfo, public virtual AtomInfo { public: atom *previous; //!< previous atom in molecule list atom *next; //!< next atom in molecule list atom *father; //!< In many-body bond order fragmentations points to originating atom int *sort; //!< sort criteria atom(); atom(class atom *pointer); virtual ~atom(); bool OutputIndexed(ofstream * const out, const int ElementNo, const int AtomNo, const char *comment = NULL) const; bool OutputArrayIndexed(ofstream * const out, const int *ElementNo, int *AtomNo, const char *comment = NULL) const; bool OutputXYZLine(ofstream *out) const; bool OutputTrajectory(ofstream * const out, const int *ElementNo, int *AtomNo, const int step) const; bool OutputTrajectoryXYZ(ofstream * const out, const int step) const; void OutputMPQCLine(ofstream * const out, const Vector *center, int *AtomNo) const; void InitComponentNr(); void EqualsFather ( const atom *ptr, const atom **res ) const; void CorrectFather(); atom *GetTrueFather(); bool Compare(const atom &ptr) const; double DistanceToVector(const Vector &origin) const; double DistanceSquaredToVector(const Vector &origin) const; bool IsInParallelepiped(const Vector offset, const double *parallelepiped) const; private: }; #endif /* ATOM_HPP_ */