Changeset 8e9ce1
- Timestamp:
- Dec 4, 2010, 11:56:27 PM (14 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:
- ef0c6b
- Parents:
- b4cf2b
- git-author:
- Frederik Heber <heber@…> (11/16/10 10:42:35)
- git-committer:
- Frederik Heber <heber@…> (12/04/10 23:56:27)
- Location:
- src/LinearAlgebra
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
src/LinearAlgebra/MatrixContent.cpp
rb4cf2b r8e9ce1 48 48 } 49 49 50 /** Constructor of class VectorContent. 51 * We need this MatrixBaseCase for the VectorContentView class. 52 * There no content should be allocated, as it is just a view with an internal 53 * gsl_vector_view. Hence, MatrixBaseCase is just dummy class to give the 54 * constructor a unique signature. 55 * \param MatrixBaseCase 56 */ 57 MatrixContent::MatrixContent(size_t _rows, size_t _columns, MatrixBaseCase) : 58 rows(_rows), 59 columns(_columns) 60 {} 61 50 62 /** Constructor for class MatrixContent. 51 63 * \param rows number of rows … … 54 66 */ 55 67 MatrixContent::MatrixContent(size_t _rows, size_t _columns, const double *src) : 56 57 68 rows(_rows), 69 columns(_columns) 58 70 { 59 71 content = gsl_matrix_calloc(rows, columns); … … 77 89 */ 78 90 MatrixContent::MatrixContent(gsl_matrix *&src) : 79 80 91 rows(src->size1), 92 columns(src->size2) 81 93 { 82 94 content = gsl_matrix_alloc(src->size1, src->size2); … … 90 102 */ 91 103 MatrixContent::MatrixContent(const MatrixContent &src) : 92 93 104 rows(src.rows), 105 columns(src.columns) 94 106 { 95 107 content = gsl_matrix_alloc(src.rows, src.columns); … … 101 113 */ 102 114 MatrixContent::MatrixContent(const MatrixContent *src) : 103 104 115 rows(src->rows), 116 columns(src->columns) 105 117 { 106 118 ASSERT(src != NULL, "MatrixContent::MatrixContent - pointer to source matrix is NULL!"); … … 376 388 } 377 389 390 // show squared matrix 391 MatrixContent *ContentSquare = new MatrixViewContent(gsl_matrix_submatrix(content,0,0,content->size1, content->size2)); 392 std::cout << "The squared matrix is " << *ContentSquare << std::endl; 393 delete ContentSquare; 394 378 395 // solve eigenvalue problem 379 396 gsl_eigen_nonsymmv_workspace *T = gsl_eigen_nonsymmv_alloc(rows); … … 383 400 gsl_eigen_nonsymmv_free(T); 384 401 385 // copy eigenvectors real-parts into content_square and display 402 // copy eigenvectors real-parts into content_square and ... 403 // ... show complex-valued eigenvector matrix 386 404 std::cout << "Resulting eigenvector matrix is ["; 387 405 for (size_t i=0; i<greaterDimension; i++) { -
src/LinearAlgebra/MatrixContent.hpp
rb4cf2b r8e9ce1 39 39 class Vector; 40 40 41 /** Dummy structure to create a unique signature. 42 * 43 */ 44 struct MatrixBaseCase{}; 45 41 46 class MatrixContent 42 47 { … … 50 55 public: 51 56 MatrixContent(size_t rows, size_t columns); 57 MatrixContent(size_t _rows, size_t _columns, MatrixBaseCase); 52 58 MatrixContent(size_t rows, size_t columns, const double *src); 53 59 MatrixContent(gsl_matrix *&src); 54 60 MatrixContent(const MatrixContent &src); 55 61 MatrixContent(const MatrixContent *src); 56 ~MatrixContent();62 virtual ~MatrixContent(); 57 63 58 64 // Accessing … … 98 104 const double *const_Pointer(size_t m, size_t n) const; 99 105 100 private:101 106 gsl_matrix * content; 102 107 const size_t rows; // store for internal purposes 103 108 const size_t columns; // store for internal purposes 109 110 private: 104 111 }; 105 112 … … 109 116 std::ostream & operator<<(std::ostream &ost, const MatrixContent &mat); 110 117 118 /** Matrix view. 119 * Extension of MatrixContent to contain not a gsl_matrix but only a view on a 120 * gsl_matrix 121 * 122 * We need the above MatrixBaseCase here: 123 * content, i.e. the gsl_matrix, must not be allocated, as it is just a view 124 * with an internal gsl_matrix_view. Hence, MatrixBaseCase is just dummy class 125 * to give the constructor a unique signature. 126 */ 127 struct MatrixViewContent : public MatrixContent 128 { 129 MatrixViewContent(gsl_matrix_view _view) : 130 MatrixContent(_view.matrix.size1, _view.matrix.size2, MatrixBaseCase()), 131 view(_view) 132 { 133 content = &view.matrix; 134 } 135 ~MatrixViewContent(){ 136 content=0; 137 } 138 gsl_matrix_view view; 139 }; 140 111 141 #endif /* MATRIXCONTENT_HPP_ */ -
src/LinearAlgebra/VectorContent.cpp
rb4cf2b r8e9ce1 39 39 40 40 /** Constructor of class VectorContent. 41 * We need this BaseCase for the VectorContentView class.41 * We need this VectorBaseCase for the VectorContentView class. 42 42 * There no content should be allocated, as it is just a view with an internal 43 * gsl_vector_view. Hence, BaseCase is just dummy class to give the constructor44 * a unique signature.45 * \param BaseCase46 */ 47 VectorContent::VectorContent( BaseCase)43 * gsl_vector_view. Hence, VectorBaseCase is just dummy class to give the 44 * constructor a unique signature. 45 * \param VectorBaseCase 46 */ 47 VectorContent::VectorContent(VectorBaseCase) 48 48 {} 49 49 -
src/LinearAlgebra/VectorContent.hpp
rb4cf2b r8e9ce1 27 27 * 28 28 */ 29 struct BaseCase{};29 struct VectorBaseCase{}; 30 30 31 31 class VectorContent{ … … 38 38 public: 39 39 explicit VectorContent(size_t _dim); 40 VectorContent( BaseCase);40 VectorContent(VectorBaseCase); 41 41 VectorContent(const VectorContent * const src); 42 42 VectorContent(const VectorContent & src); … … 99 99 * gsl_vector (or row/column in a gsl_matrix). 100 100 * 101 * We need the above BaseCase here:101 * We need the above VectorBaseCase here: 102 102 * content, i.e. the gsl_vector, must not be allocated, as it is just a view 103 * with an internal gsl_vector_view. Hence, BaseCase is just dummy class to104 * give the constructor a unique signature.103 * with an internal gsl_vector_view. Hence, VectorBaseCase is just dummy class 104 * to give the constructor a unique signature. 105 105 */ 106 106 struct VectorViewContent : public VectorContent 107 107 { 108 108 VectorViewContent(gsl_vector_view _view) : 109 VectorContent( BaseCase()),109 VectorContent(VectorBaseCase()), 110 110 view(_view) 111 111 {
Note:
See TracChangeset
for help on using the changeset viewer.