Changeset 2e2a70 for molecuilder/src/atom.hpp
- Timestamp:
- Oct 20, 2009, 8:55:17 AM (16 years ago)
- Children:
- 2e6aa1
- Parents:
- 3b0ba2
- File:
-
- 1 edited
-
molecuilder/src/atom.hpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
molecuilder/src/atom.hpp
r3b0ba2 r2e2a70 22 22 #include <vector> 23 23 24 #include <gsl/gsl_randist.h> 25 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" 26 29 #include "tesselation.hpp" 27 30 28 31 /****************************************** forward declarations *****************************/ 29 32 30 class atom;31 class bond;32 class config;33 class element;34 class ForceMatrix;35 33 class Vector; 36 34 37 #define BondList list<bond *>38 39 35 /********************************************** declarations *******************************/ 40 41 class AtomInfo {42 public:43 Vector x; //!< coordinate vector of atom, giving last position within cell44 Vector v; //!< velocity vector of atom, giving last velocity within cell45 Vector F; //!< Force vector of atom, giving last force within cell46 element *type; //!< pointing to element47 48 AtomInfo();49 ~AtomInfo();50 51 private:52 };53 54 class TrajectoryParticleInfo {55 public:56 struct57 {58 vector<Vector> R; //!< position vector59 vector<Vector> U; //!< velocity vector60 vector<Vector> F; //!< last force vector61 } Trajectory;62 int FixedIon; //!< config variable that states whether forces act on the ion or not63 64 TrajectoryParticleInfo();65 ~TrajectoryParticleInfo();66 67 private:68 };69 70 class TrajectoryParticle : public TrajectoryParticleInfo, public virtual AtomInfo, public virtual ParticleInfo {71 public:72 73 TrajectoryParticle();74 virtual ~TrajectoryParticle();75 76 // constraint potential and dynamics stuff77 void AddKineticToTemperature(double *temperature, int step) const;78 void EvaluateConstrainedForce(int startstep, int endstep, atom **PermutationMap, ForceMatrix *Force);79 void CorrectVelocity(double *ActualTemp, int Step, Vector *CoGVelocity);80 81 // trajectory stuff82 void ResizeTrajectory(int MaxSteps);83 void CopyStepOnStep(int dest, int src);84 void VelocityVerletUpdate(int MDSteps, config *configuration, ForceMatrix *Force);85 void SumUpKineticEnergy( int Step, double *TotalMass, Vector *TotalVelocity );86 87 // thermostats88 void Thermostat_Woodcock(double ScaleTempFactor, int Step, double *ekin);89 void Thermostat_Gaussian_init(int Step, double *G, double *E);90 void Thermostat_Gaussian_least_constraint(int Step, double G_over_E, double *ekin, config *configuration);91 void Thermostat_Langevin(int Step, gsl_rng * r, double *ekin, config *configuration);92 void Thermostat_Berendsen(int Step, double ScaleTempFactor, double *ekin, config *configuration);93 void Thermostat_NoseHoover_init(int Step, double *delta_alpha);94 void Thermostat_NoseHoover_scale(int Step, double *ekin, config *configuration);95 96 private:97 98 };99 100 class GraphNode;101 102 class GraphNodeInfo {103 public:104 105 int GraphNr; //!< unique number, given in DepthFirstSearchAnalysis()106 int *ComponentNr;//!< belongs to this non-separable components, given in DepthFirstSearchAnalysis() (if more than one, then is SeparationVertex)107 int LowpointNr; //!< needed in DepthFirstSearchAnalysis() to detect non-separable components, is the lowest possible number of an atom to reach via tree edges only followed by at most one back edge.108 bool SeparationVertex; //!< whether this atom separates off subsets of atoms or not, determined in DepthFirstSearchAnalysis()109 bool IsCyclic; //!< whether atom belong to as cycle or not, determined in DepthFirstSearchAnalysis()110 atom *Ancestor; //!< "Father" in Depth-First-Search111 112 GraphNodeInfo();113 ~GraphNodeInfo();114 private:115 116 };117 118 119 class GraphNode : public GraphNodeInfo, public virtual ParticleInfo {120 public:121 122 GraphNode();123 virtual ~GraphNode();124 125 void OutputGraphInfo(ofstream *out) const;126 void OutputComponentNumber(ofstream *out) const;127 128 private:129 130 };131 132 class BondedParticleInfo {133 public:134 unsigned char AdaptiveOrder; //!< current present bond order at site (0 means "not set")135 bool MaxOrder; //!< whether this atom as a root in fragmentation still creates more fragments on higher orders or not136 BondList ListOfBonds; //!< list of all bonds137 138 BondedParticleInfo();139 ~BondedParticleInfo();140 141 private:142 143 };144 145 class BondedParticle : public BondedParticleInfo, public virtual ParticleInfo, public virtual AtomInfo {146 public:147 BondedParticle();148 virtual ~BondedParticle();149 150 bool RegisterBond(bond *Binder);151 bool UnregisterBond(bond *Binder);152 void UnregisterAllBond();153 int CountBonds() const;154 int CorrectBondDegree(ofstream *out);155 bool OutputBondOfAtom(ofstream *out) const;156 void OutputAdjacency(ofstream *AdjacencyFile) const;157 void OutputOrder(ofstream *file);158 159 private:160 161 };162 36 163 37 /** Single atom.
Note:
See TracChangeset
for help on using the changeset viewer.
