You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
100 lines
2.4 KiB
100 lines
2.4 KiB
#ifndef STORM_STORAGE_JACOBIDECOMPOSITION_H_
|
|
#define STORM_STORAGE_JACOBIDECOMPOSITION_H_
|
|
|
|
#include "boost/integer/integer_mask.hpp"
|
|
|
|
#include "log4cplus/logger.h"
|
|
#include "log4cplus/loggingmacros.h"
|
|
|
|
#include "src/exceptions/InvalidAccessException.h"
|
|
|
|
extern log4cplus::Logger logger;
|
|
|
|
namespace storm {
|
|
|
|
namespace storage {
|
|
|
|
/*!
|
|
* Forward declaration against Cycle
|
|
*/
|
|
template <class T>
|
|
class SparseMatrix;
|
|
|
|
|
|
/*!
|
|
* A simple container for a sparse Jacobi decomposition
|
|
*/
|
|
template <class T>
|
|
class JacobiDecomposition {
|
|
|
|
public:
|
|
JacobiDecomposition(storm::storage::SparseMatrix<T> * const jacobiLuMatrix, storm::storage::SparseMatrix<T> * const jacobiDInvMatrix) : jacobiLuMatrix(jacobiLuMatrix), jacobiDInvMatrix(jacobiDInvMatrix) {
|
|
}
|
|
|
|
~JacobiDecomposition() {
|
|
delete this->jacobiDInvMatrix;
|
|
delete this->jacobiLuMatrix;
|
|
}
|
|
|
|
/*!
|
|
* Accessor for the internal LU Matrix.
|
|
* Ownership stays with this class.
|
|
* @return A reference to the Jacobi LU Matrix
|
|
*/
|
|
storm::storage::SparseMatrix<T>& getJacobiLUReference() {
|
|
return *(this->jacobiLuMatrix);
|
|
}
|
|
|
|
/*!
|
|
* Accessor for the internal D^{-1} Matrix.
|
|
* Ownership stays with this class.
|
|
* @return A reference to the Jacobi D^{-1} Matrix
|
|
*/
|
|
storm::storage::SparseMatrix<T>& getJacobiDInvReference() {
|
|
return *(this->jacobiDInvMatrix);
|
|
}
|
|
|
|
/*!
|
|
* Accessor for the internal LU Matrix.
|
|
* Ownership stays with this class.
|
|
* @return A pointer to the Jacobi LU Matrix
|
|
*/
|
|
storm::storage::SparseMatrix<T>* getJacobiLU() {
|
|
return this->jacobiLuMatrix;
|
|
}
|
|
|
|
/*!
|
|
* Accessor for the internal D^{-1} Matrix.
|
|
* Ownership stays with this class.
|
|
* @return A pointer to the Jacobi D^{-1} Matrix
|
|
*/
|
|
storm::storage::SparseMatrix<T>* getJacobiDInv() {
|
|
return this->jacobiDInvMatrix;
|
|
}
|
|
|
|
private:
|
|
|
|
/*!
|
|
* The copy constructor is disabled for this class.
|
|
*/
|
|
//JacobiDecomposition(const JacobiDecomposition<T>& that) = delete; // not possible in VS2012
|
|
JacobiDecomposition(const JacobiDecomposition<T>& that) {
|
|
throw new storm::exceptions::InvalidAccessException() << "The copy constructor of JacobiDecomposition is explicitly disabled.";
|
|
}
|
|
|
|
/*!
|
|
* Pointer to the LU Matrix
|
|
*/
|
|
storm::storage::SparseMatrix<T> *jacobiLuMatrix;
|
|
|
|
/*!
|
|
* Pointer to the D^{-1} Matrix
|
|
*/
|
|
storm::storage::SparseMatrix<T> *jacobiDInvMatrix;
|
|
};
|
|
|
|
} // namespace storage
|
|
|
|
} // namespace storm
|
|
|
|
#endif // STORM_STORAGE_JACOBIDECOMPOSITION_H_
|