Changeset 6b919f8 for src/atom.hpp
- Timestamp:
- Oct 20, 2009, 8:55:17 AM (16 years ago)
- Branches:
- Action_Thermostats, Add_AtomRandomPerturbation, Add_FitFragmentPartialChargesAction, Add_RotateAroundBondAction, Add_SelectAtomByNameAction, Added_ParseSaveFragmentResults, AddingActions_SaveParseParticleParameters, Adding_Graph_to_ChangeBondActions, Adding_MD_integration_tests, Adding_ParticleName_to_Atom, Adding_StructOpt_integration_tests, AtomFragments, Automaking_mpqc_open, AutomationFragmentation_failures, Candidate_v1.5.4, Candidate_v1.6.0, Candidate_v1.6.1, ChangeBugEmailaddress, ChangingTestPorts, ChemicalSpaceEvaluator, CombiningParticlePotentialParsing, Combining_Subpackages, Debian_Package_split, Debian_package_split_molecuildergui_only, Disabling_MemDebug, Docu_Python_wait, EmpiricalPotential_contain_HomologyGraph, EmpiricalPotential_contain_HomologyGraph_documentation, Enable_parallel_make_install, Enhance_userguide, Enhanced_StructuralOptimization, Enhanced_StructuralOptimization_continued, Example_ManyWaysToTranslateAtom, Exclude_Hydrogens_annealWithBondGraph, FitPartialCharges_GlobalError, Fix_BoundInBox_CenterInBox_MoleculeActions, Fix_ChargeSampling_PBC, Fix_ChronosMutex, Fix_FitPartialCharges, Fix_FitPotential_needs_atomicnumbers, Fix_ForceAnnealing, Fix_IndependentFragmentGrids, Fix_ParseParticles, Fix_ParseParticles_split_forward_backward_Actions, Fix_PopActions, Fix_QtFragmentList_sorted_selection, Fix_Restrictedkeyset_FragmentMolecule, Fix_StatusMsg, Fix_StepWorldTime_single_argument, Fix_Verbose_Codepatterns, Fix_fitting_potentials, Fixes, ForceAnnealing_goodresults, ForceAnnealing_oldresults, ForceAnnealing_tocheck, ForceAnnealing_with_BondGraph, ForceAnnealing_with_BondGraph_continued, ForceAnnealing_with_BondGraph_continued_betteresults, ForceAnnealing_with_BondGraph_contraction-expansion, FragmentAction_writes_AtomFragments, FragmentMolecule_checks_bonddegrees, GeometryObjects, Gui_Fixes, Gui_displays_atomic_force_velocity, ImplicitCharges, IndependentFragmentGrids, IndependentFragmentGrids_IndividualZeroInstances, IndependentFragmentGrids_IntegrationTest, IndependentFragmentGrids_Sole_NN_Calculation, JobMarket_RobustOnKillsSegFaults, JobMarket_StableWorkerPool, JobMarket_unresolvable_hostname_fix, MoreRobust_FragmentAutomation, ODR_violation_mpqc_open, PartialCharges_OrthogonalSummation, PdbParser_setsAtomName, PythonUI_with_named_parameters, QtGui_reactivate_TimeChanged_changes, Recreated_GuiChecks, Rewrite_FitPartialCharges, RotateToPrincipalAxisSystem_UndoRedo, SaturateAtoms_findBestMatching, SaturateAtoms_singleDegree, StoppableMakroAction, Subpackage_CodePatterns, Subpackage_JobMarket, Subpackage_LinearAlgebra, Subpackage_levmar, Subpackage_mpqc_open, Subpackage_vmg, Switchable_LogView, ThirdParty_MPQC_rebuilt_buildsystem, TrajectoryDependenant_MaxOrder, TremoloParser_IncreasedPrecision, TremoloParser_MultipleTimesteps, TremoloParser_setsAtomName, Ubuntu_1604_changes, stable
- Children:
- 831a14
- Parents:
- c75de1
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/atom.hpp
rc75de1 r6b919f8 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.