source: molecuilder/src/atom.hpp@ 2e2a70

Last change on this file since 2e2a70 was 2e2a70, checked in by Frederik Heber <heber@…>, 16 years ago

Refactored atom.cpp into multiple files.

After the class atom was refactored into multiple base classes that are inherited, these base classes are also all put into separate files. This is basically a preparatory step for the like-wise refactoring of class molecule into inherited base classes and splitting up (that is there done already). Finally, we will also separate the relations, i.e. not have "atom.hpp" included everywhere and use class atom, but rather the subclasses such as TrajectoryParticle and its header files only.
Signed-off-by: Frederik Heber <heber@…>

  • Property mode set to 100644
File size: 2.0 KB
Line 
1/*
2 * atom.hpp
3 *
4 * Created on: Aug 3, 2009
5 * Author: heber
6 */
7
8#ifndef ATOM_HPP_
9#define ATOM_HPP_
10
11using namespace std;
12
13/*********************************************** includes ***********************************/
14
15// include config.h
16#ifdef HAVE_CONFIG_H
17#include <config.h>
18#endif
19
20#include <iostream>
21#include <list>
22#include <vector>
23
24#include "atom_atominfo.hpp"
25#include "atom_bondedparticle.hpp"
26#include "atom_graphnode.hpp"
27#include "atom_particleinfo.hpp"
28#include "atom_trajectoryparticle.hpp"
29#include "tesselation.hpp"
30
31/****************************************** forward declarations *****************************/
32
33class Vector;
34
35/********************************************** declarations *******************************/
36
37/** Single atom.
38 * Class incorporates position, type
39 */
40class atom : public TesselPoint, public TrajectoryParticle, public GraphNode, public BondedParticle, public virtual ParticleInfo, public virtual AtomInfo {
41 public:
42 atom *previous; //!< previous atom in molecule list
43 atom *next; //!< next atom in molecule list
44 atom *father; //!< In many-body bond order fragmentations points to originating atom
45 int *sort; //!< sort criteria
46
47 atom();
48 atom(class atom *pointer);
49 virtual ~atom();
50
51 bool Output(ofstream *out, int ElementNo, int AtomNo, const char *comment = NULL) const;
52 bool Output(ofstream *out, int *ElementNo, int *AtomNo, const char *comment = NULL);
53 bool OutputXYZLine(ofstream *out) const;
54 bool OutputTrajectory(ofstream *out, int *ElementNo, int *AtomNo, int step) const;
55 bool OutputTrajectoryXYZ(ofstream *out, int step) const;
56 void OutputMPQCLine(ofstream *out, Vector *center, int *AtomNo) const;
57
58 void InitComponentNr();
59
60 void EqualsFather ( atom *ptr, atom **res );
61 void CorrectFather();
62 atom *GetTrueFather();
63 bool Compare(const atom &ptr);
64
65 double DistanceToVector(Vector &origin);
66 double DistanceSquaredToVector(Vector &origin);
67 bool IsInParallelepiped(Vector offset, double *parallelepiped);
68
69 private:
70};
71
72#endif /* ATOM_HPP_ */
Note: See TracBrowser for help on using the repository browser.