Changeset 8cbb97 for src/vector.hpp
- Timestamp:
- Apr 29, 2010, 1:55:21 PM (15 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:
- d79639
- Parents:
- 632bc3 (diff), 753f02 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/vector.hpp
r632bc3 r8cbb97 15 15 #include <gsl/gsl_multimin.h> 16 16 17 #include <memory> 18 17 19 #include "defs.hpp" 18 20 … … 23 25 */ 24 26 class Vector { 25 public: 26 double x[NDIM]; 27 protected: 28 // this struct is used to indicate calls to the Baseconstructor from inside vectors. 29 struct Baseconstructor{}; 30 public: 27 31 28 32 Vector(); 29 Vector(const Vector * const a);30 Vector(const Vector &a);31 33 Vector(const double x1, const double x2, const double x3); 32 ~Vector(); 34 Vector(const Vector& src); 35 virtual ~Vector(); 33 36 34 double Distance(const Vector * const y) const; 35 double DistanceSquared(const Vector * const y) const; 36 double DistanceToPlane(const Vector * const PlaneNormal, const Vector * const PlaneOffset) const; 37 double PeriodicDistance(const Vector * const y, const double * const cell_size) const; 38 double PeriodicDistanceSquared(const Vector * const y, const double * const cell_size) const; 39 double ScalarProduct(const Vector * const y) const; 37 // Method implemented by forwarding to the Representation 38 39 double DistanceSquared(const Vector &y) const; 40 Vector GetDistanceVectorToPlane(const Vector &PlaneNormal, const Vector &PlaneOffset) const; 41 double DistanceToPlane(const Vector &PlaneNormal, const Vector &PlaneOffset) const; 42 double PeriodicDistance(const Vector &y, const double * const cell_size) const; 43 double PeriodicDistanceSquared(const Vector &y, const double * const cell_size) const; 44 double ScalarProduct(const Vector &y) const; 45 double Angle(const Vector &y) const; 46 bool IsZero() const; 47 bool IsOne() const; 48 bool IsNormalTo(const Vector &normal) const; 49 bool IsEqualTo(const Vector &a) const; 50 51 void AddVector(const Vector &y); 52 void SubtractVector(const Vector &y); 53 void VectorProduct(const Vector &y); 54 void ProjectOntoPlane(const Vector &y); 55 void ProjectIt(const Vector &y); 56 Vector Projection(const Vector &y) const; 57 void Mirror(const Vector &x); 58 void ScaleAll(const double *factor); 59 void Scale(const double factor); 60 void MatrixMultiplication(const double * const M); 61 bool InverseMatrixMultiplication(const double * const M); 62 void KeepPeriodic(const double * const matrix); 63 bool GetOneNormalVector(const Vector &x1); 64 bool MakeNormalTo(const Vector &y1); 65 bool IsInParallelepiped(const Vector &offset, const double * const parallelepiped) const; 66 void WrapPeriodically(const double * const M, const double * const Minv); 67 68 // Accessors ussually come in pairs... and sometimes even more than that 69 double& operator[](size_t i); 70 const double& operator[](size_t i) const; 71 double& at(size_t i); 72 const double& at(size_t i) const; 73 74 // Assignment operator 75 Vector &operator=(const Vector& src); 76 77 // Access to internal structure 78 double* get(); 79 80 // Methods that are derived directly from other methods 81 double Distance(const Vector &y) const; 40 82 double Norm() const; 41 83 double NormSquared() const; 42 double Angle(const Vector * const y) const; 43 bool IsZero() const; 44 bool IsOne() const; 45 bool IsNormalTo(const Vector * const normal) const; 46 bool IsEqualTo(const Vector * const a) const; 47 48 void AddVector(const Vector * const y); 49 void SubtractVector(const Vector * const y); 50 void CopyVector(const Vector * const y); 51 void CopyVector(const Vector &y); 52 void RotateVector(const Vector * const y, const double alpha); 53 void VectorProduct(const Vector * const y); 54 void ProjectOntoPlane(const Vector * const y); 55 void ProjectIt(const Vector * const y); 56 Vector Projection(const Vector * const y) const; 84 void Normalize(); 57 85 void Zero(); 58 86 void One(const double one); 59 void Init(const double x1, const double x2, const double x3); 60 void Normalize(); 61 void Translate(const Vector * const x); 62 void Mirror(const Vector * const x); 63 void Scale(const double ** const factor); 64 void Scale(const double * const factor); 65 void Scale(const double factor); 66 void MatrixMultiplication(const double * const M); 67 void InverseMatrixMultiplication(const double * const M); 68 void KeepPeriodic(const double * const matrix); 69 void LinearCombinationOfVectors(const Vector * const x1, const Vector * const x2, const Vector * const x3, const double * const factors); 70 double CutsPlaneAt(const Vector * const A, const Vector * const B, const Vector * const C) const; 71 Vector GetDistanceVectorToPlane(const Vector * const PlaneNormal, const Vector * const PlaneOffset) const; 72 bool GetIntersectionWithPlane(const Vector * const PlaneNormal, const Vector * const PlaneOffset, const Vector * const Origin, const Vector * const LineVector); 73 bool GetIntersectionOfTwoLinesOnPlane(const Vector * const Line1a, const Vector * const Line1b, const Vector * const Line2a, const Vector * const Line2b, const Vector *Normal = NULL); 74 bool GetOneNormalVector(const Vector * const x1); 75 bool MakeNormalVector(const Vector * const y1); 76 bool MakeNormalVector(const Vector * const y1, const Vector * const y2); 77 bool MakeNormalVector(const Vector * const x1, const Vector * const x2, const Vector * const x3); 78 bool SolveSystem(Vector * x1, Vector * x2, Vector * y, const double alpha, const double beta, const double c); 79 bool LSQdistance(const Vector ** vectors, int dim); 80 void AskPosition(const double * const cell_size, const bool check); 81 void Output() const; 82 bool IsInParallelepiped(const Vector &offset, const double * const parallelepiped) const; 83 void WrapPeriodically(const double * const M, const double * const Minv); 87 void LinearCombinationOfVectors(const Vector &x1, const Vector &x2, const Vector &x3, const double * const factors); 88 89 // operators for mathematical operations 90 bool operator==(const Vector& b) const; 91 const Vector& operator+=(const Vector& b); 92 const Vector& operator-=(const Vector& b); 93 Vector const operator+(const Vector& b) const; 94 Vector const operator-(const Vector& b) const; 95 96 protected: 97 98 private: 99 double x[NDIM]; 84 100 85 101 }; 86 102 87 103 ostream & operator << (ostream& ost, const Vector &m); 88 bool operator==(const Vector& a, const Vector& b);89 const Vector& operator+=(Vector& a, const Vector& b);90 const Vector& operator-=(Vector& a, const Vector& b);91 104 const Vector& operator*=(Vector& a, const double m); 92 105 Vector const operator*(const Vector& a, const double m); 93 106 Vector const operator*(const double m, const Vector& a); 94 Vector const operator+(const Vector& a, const Vector& b);95 Vector const operator-(const Vector& a, const Vector& b);96 97 107 98 108 #endif /*VECTOR_HPP_*/
Note:
See TracChangeset
for help on using the changeset viewer.