[b4cf2b] | 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 |
|
---|