Changeset 6b919f8 for src/atom.hpp


Ignore:
Timestamp:
Oct 20, 2009, 8:55:17 AM (16 years ago)
Author:
Frederik Heber <heber@…>
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
Message:

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@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/atom.hpp

    rc75de1 r6b919f8  
    2222#include <vector>
    2323
    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"
    2629#include "tesselation.hpp"
    2730
    2831/****************************************** forward declarations *****************************/
    2932
    30 class atom;
    31 class bond;
    32 class config;
    33 class element;
    34 class ForceMatrix;
    3533class Vector;
    3634
    37 #define BondList list<bond *>
    38 
    3935/********************************************** declarations *******************************/
    40 
    41 class AtomInfo {
    42 public:
    43   Vector x;       //!< coordinate vector of atom, giving last position within cell
    44   Vector v;       //!< velocity vector of atom, giving last velocity within cell
    45   Vector F;       //!< Force vector of atom, giving last force within cell
    46   element *type;  //!< pointing to element
    47 
    48   AtomInfo();
    49   ~AtomInfo();
    50 
    51 private:
    52 };
    53 
    54 class TrajectoryParticleInfo {
    55 public:
    56   struct
    57   {
    58     vector<Vector> R;  //!< position vector
    59     vector<Vector> U;  //!< velocity vector
    60     vector<Vector> F;  //!< last force vector
    61   } Trajectory;
    62   int FixedIon;   //!< config variable that states whether forces act on the ion or not
    63 
    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 stuff
    77   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 stuff
    82   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   // thermostats
    88   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-Search
    111 
    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 not
    136   BondList ListOfBonds; //!< list of all bonds
    137 
    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 };
    16236
    16337/** Single atom.
Note: See TracChangeset for help on using the changeset viewer.