Skip to content

Commit

Permalink
First test for eigensolver class.
Browse files Browse the repository at this point in the history
  • Loading branch information
dsteinmo committed Jan 27, 2018
1 parent 747d17a commit 9171099
Showing 1 changed file with 50 additions and 0 deletions.
50 changes: 50 additions & 0 deletions src/test/tests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
#include <MeshManager.hpp>
#include <Nodes1DProvisioner.hpp>
#include <LUSolver.hpp>
#include <EigenSolver.hpp>


using namespace igloo;
Expand All @@ -22,6 +23,7 @@ LUSolver * luSolver = nullptr;
MeshManager * meshManager=nullptr;
SparseMatrixConverter * matrixConverter = nullptr;
Nodes1DProvisioner * nodes1DProvisioner = nullptr;
EigenSolver * eigenSolver = nullptr;


Describe(Simple_blitz_array_operations)
Expand Down Expand Up @@ -218,6 +220,54 @@ Describe(MeshManager_Object) {
}
};

Describe(EigenSolver_Object) {
void SetUp() {

A = 1,0,0,0,0,
0,2,0,0,0,
0,0,3,0,0,
0,0,0,4,0,
0,0,0,0,5;

matrixConverter = new SparseMatrixConverter();
eigenSolver = new EigenSolver(&A, *matrixConverter);
}

It(Should_Solve_Trivial_Eigenproblem) {
EigenSolver & solver = *eigenSolver;

Array<double, 1> eigenvalues(5);
eigenvalues = 0,0,0,0,0;
Array<double, 2> eigenvectors(5,5);
eigenvectors = 0,0,0,0,0,
0,0,0,0,0,
0,0,0,0,0,
0,0,0,0,0,
0,0,0,0,0;

cout << "Solving eigenproblem!";
solver.solve(eigenvalues, eigenvectors);
cout << "eigenvectors: " << eigenvectors << endl;

Array<double, 2> expectedEvecs(5,5);
expectedEvecs = 1,0,0,0,0,
0,1,0,0,0,
0,0,1,0,0,
0,0,0,1,0,
0,0,0,0,1;

Assert::That(eigenvalues(0), Equals(1.));
Assert::That(eigenvalues(1), Equals(2.));
Assert::That(eigenvalues(2), Equals(3.));
Assert::That(eigenvalues(3), Equals(4.));
Assert::That(eigenvalues(4), Equals(5.));

Array <double, 2> res(5,5);
res = eigenvectors - expectedEvecs;
Assert::That(sum(res(ii)*res(ii)), IsLessThan(eps));
}
};

Describe(Nodes1DProvisioner_Object) {
void SetUp() {
const int NOrder = 3;
Expand Down

0 comments on commit 9171099

Please sign in to comment.