1 | /*
|
---|
2 | * Project: MoleCuilder
|
---|
3 | * Description: creates and alters molecular systems
|
---|
4 | * Copyright (C) 2010 University of Bonn. All rights reserved.
|
---|
5 | * Please see the LICENSE file or "Copyright notice" in builder.cpp for details.
|
---|
6 | */
|
---|
7 |
|
---|
8 | /*
|
---|
9 | * SubspaceFactorizerUnittest.cpp
|
---|
10 | *
|
---|
11 | * Created on: Nov 13, 2010
|
---|
12 | * Author: heber
|
---|
13 | */
|
---|
14 |
|
---|
15 | // include config.h
|
---|
16 | #ifdef HAVE_CONFIG_H
|
---|
17 | #include <config.h>
|
---|
18 | #endif
|
---|
19 |
|
---|
20 | #include <cppunit/CompilerOutputter.h>
|
---|
21 | #include <cppunit/extensions/TestFactoryRegistry.h>
|
---|
22 | #include <cppunit/ui/text/TestRunner.h>
|
---|
23 |
|
---|
24 | #include <cmath>
|
---|
25 |
|
---|
26 | #include <gsl/gsl_vector.h>
|
---|
27 |
|
---|
28 | #include "SubspaceFactorizerUnittest.hpp"
|
---|
29 | #include "LinearAlgebra/VectorContent.hpp"
|
---|
30 | #include "LinearAlgebra/MatrixContent.hpp"
|
---|
31 |
|
---|
32 | #ifdef HAVE_TESTRUNNER
|
---|
33 | #include "UnitTestMain.hpp"
|
---|
34 | #endif /*HAVE_TESTRUNNER*/
|
---|
35 |
|
---|
36 | // Registers the fixture into the 'registry'
|
---|
37 | CPPUNIT_TEST_SUITE_REGISTRATION( SubspaceFactorizerUnittest );
|
---|
38 |
|
---|
39 | void SubspaceFactorizerUnittest::setUp(){
|
---|
40 | fourbyfour = new MatrixContent(4,4);
|
---|
41 | fourbyfour->setZero();
|
---|
42 | for (int i=0; i<4 ; i++) {
|
---|
43 | fourbyfour->set(i,i, 2.);
|
---|
44 | if (i < (4-1)) {
|
---|
45 | fourbyfour->set(i+1,i, 1.);
|
---|
46 | fourbyfour->set(i,i+1, 1.);
|
---|
47 | }
|
---|
48 | }
|
---|
49 | permU1_1 = new MatrixContent(4,1);
|
---|
50 | permU1_1->setZero();
|
---|
51 | permU1_1->set(0,0, 1.);
|
---|
52 | permU1_2 = new MatrixContent(4,1);
|
---|
53 | permU1_2->setZero();
|
---|
54 | permU1_2->set(1,0, 1.);
|
---|
55 | permU1_3 = new MatrixContent(4,1);
|
---|
56 | permU1_3->setZero();
|
---|
57 | permU1_3->set(2,0, 1.);
|
---|
58 | permU1_4 = new MatrixContent(4,1);
|
---|
59 | permU1_4->setZero();
|
---|
60 | permU1_4->set(3,0, 1.);
|
---|
61 |
|
---|
62 | permU2_1 = new MatrixContent(4,2);
|
---|
63 | permU2_1->setZero();
|
---|
64 | permU2_1->set(0,0, 1.);
|
---|
65 | permU2_1->set(1,1, 1.);
|
---|
66 | permU2_2 = new MatrixContent(4,2);
|
---|
67 | permU2_2->setZero();
|
---|
68 | permU2_2->set(1,0, 1.);
|
---|
69 | permU2_2->set(2,1, 1.);
|
---|
70 | permU2_3 = new MatrixContent(4,2);
|
---|
71 | permU2_3->setZero();
|
---|
72 | permU2_3->set(2,0, 1.);
|
---|
73 | permU2_3->set(3,1, 1.);
|
---|
74 |
|
---|
75 | permU3_1 = new MatrixContent(4,3);
|
---|
76 | permU3_1->setZero();
|
---|
77 | permU3_1->set(0,0, 1.);
|
---|
78 | permU3_1->set(1,1, 1.);
|
---|
79 | permU3_1->set(2,2, 1.);
|
---|
80 | permU3_2 = new MatrixContent(4,3);
|
---|
81 | permU3_2->setZero();
|
---|
82 | permU3_2->set(1,0, 1.);
|
---|
83 | permU3_2->set(2,1, 1.);
|
---|
84 | permU3_2->set(3,2, 1.);
|
---|
85 | }
|
---|
86 | void SubspaceFactorizerUnittest::tearDown(){
|
---|
87 | delete fourbyfour;
|
---|
88 | delete permU1_1;
|
---|
89 | delete permU1_2;
|
---|
90 | delete permU1_3;
|
---|
91 | delete permU1_4;
|
---|
92 | delete permU2_1;
|
---|
93 | delete permU2_2;
|
---|
94 | delete permU2_3;
|
---|
95 | delete permU3_1;
|
---|
96 | delete permU3_2;
|
---|
97 | }
|
---|
98 |
|
---|
99 | void SubspaceFactorizerUnittest::BlockTest()
|
---|
100 | {
|
---|
101 | MatrixContent temp((*fourbyfour)*(*permU1_1));
|
---|
102 | std::cout << "Our matrix is " << *fourbyfour << "." << std::endl;
|
---|
103 |
|
---|
104 | std::cout << "Multiplying " << *fourbyfour << " by " << *permU1_1 << " is: " << std::endl;
|
---|
105 | std::cout << temp << std::endl;
|
---|
106 |
|
---|
107 | gsl_vector *eigenvalues = temp.transformToEigenbasis();
|
---|
108 | std::cout << "The resulting eigenbasis is " << temp
|
---|
109 | << " with eigenvalues " << gsl_vector_get(eigenvalues, 0)
|
---|
110 | << std::endl;
|
---|
111 | gsl_vector_free(eigenvalues);
|
---|
112 |
|
---|
113 | CPPUNIT_ASSERT_EQUAL(0,0);
|
---|
114 | }
|
---|
115 |
|
---|