Add private copy constructors to sparse solvers backends

This commit is contained in:
Desire NUENTSA 2012-03-29 19:19:12 +02:00
parent 2d35f88bcf
commit 5dbb646190
5 changed files with 40 additions and 0 deletions

View File

@ -378,6 +378,9 @@ class CholmodDecomposition
bool m_isInitialized; bool m_isInitialized;
int m_factorizationIsOk; int m_factorizationIsOk;
int m_analysisIsOk; int m_analysisIsOk;
private:
CholmodDecomposition(CholmodDecomposition& ) {}
}; };
namespace internal { namespace internal {

View File

@ -339,6 +339,9 @@ class PastixBase
mutable int m_amalgamation; // level of amalgamation mutable int m_amalgamation; // level of amalgamation
mutable int m_size; // Size of the matrix mutable int m_size; // Size of the matrix
private:
PastixBase(PastixBase& ) {}
}; };
/** Initialize the PaStiX data structure. /** Initialize the PaStiX data structure.
@ -595,6 +598,9 @@ class PastixLU : public PastixBase< PastixLU<_MatrixType> >
using Base::m_dparm; using Base::m_dparm;
using Base::m_StrMatTrans; using Base::m_StrMatTrans;
using Base::m_hasTranspose; using Base::m_hasTranspose;
private:
PastixLU(PastixLU& ) {}
}; };
/** \ingroup PaStiXSupport_Module /** \ingroup PaStiXSupport_Module
@ -674,6 +680,9 @@ class PastixLLT : public PastixBase< PastixLLT<_MatrixType, _UpLo> >
} }
protected: protected:
using Base::m_iparm; using Base::m_iparm;
private:
PastixLLT(PastixLLT& ) {}
}; };
/** \ingroup PaStiXSupport_Module /** \ingroup PaStiXSupport_Module
@ -756,6 +765,9 @@ public:
protected: protected:
using Base::m_iparm; using Base::m_iparm;
private:
PastixLDLT(PastixLDLT& ) {}
}; };
namespace internal { namespace internal {

View File

@ -296,6 +296,9 @@ class PardisoImpl
mutable Array<Index,64,1> m_iparm; mutable Array<Index,64,1> m_iparm;
mutable IntColVectorType m_perm; mutable IntColVectorType m_perm;
Index m_size; Index m_size;
private:
PardisoImpl(PardisoImpl &) {}
}; };
template<class Derived> template<class Derived>
@ -451,6 +454,9 @@ class PardisoLU : public PardisoImpl< PardisoLU<MatrixType> >
{ {
m_matrix = matrix; m_matrix = matrix;
} }
private:
PardisoLU(PardisoLU& ) {}
}; };
/** \ingroup PardisoSupport_Module /** \ingroup PardisoSupport_Module
@ -507,6 +513,9 @@ class PardisoLLT : public PardisoImpl< PardisoLLT<MatrixType,_UpLo> >
m_matrix.resize(matrix.rows(), matrix.cols()); m_matrix.resize(matrix.rows(), matrix.cols());
m_matrix.template selfadjointView<Upper>() = matrix.template selfadjointView<UpLo>().twistedBy(p_null); m_matrix.template selfadjointView<Upper>() = matrix.template selfadjointView<UpLo>().twistedBy(p_null);
} }
private:
PardisoLLT(PardisoLLT& ) {}
}; };
/** \ingroup PardisoSupport_Module /** \ingroup PardisoSupport_Module
@ -563,6 +572,9 @@ class PardisoLDLT : public PardisoImpl< PardisoLDLT<MatrixType,Options> >
m_matrix.resize(matrix.rows(), matrix.cols()); m_matrix.resize(matrix.rows(), matrix.cols());
m_matrix.template selfadjointView<Upper>() = matrix.template selfadjointView<UpLo>().twistedBy(p_null); m_matrix.template selfadjointView<Upper>() = matrix.template selfadjointView<UpLo>().twistedBy(p_null);
} }
private:
PardisoLDLT(PardisoLDLT& ) {}
}; };
namespace internal { namespace internal {

View File

@ -470,6 +470,9 @@ class SuperLUBase
int m_factorizationIsOk; int m_factorizationIsOk;
int m_analysisIsOk; int m_analysisIsOk;
mutable bool m_extractedDataAreDirty; mutable bool m_extractedDataAreDirty;
private:
SuperLUBase(SuperLUBase& ) { }
}; };
@ -604,6 +607,10 @@ class SuperLU : public SuperLUBase<_MatrixType,SuperLU<_MatrixType> >
m_sluOptions.Trans = NOTRANS; m_sluOptions.Trans = NOTRANS;
m_sluOptions.ColPerm = COLAMD; m_sluOptions.ColPerm = COLAMD;
} }
private:
SuperLU(SuperLU& ) { }
}; };
template<typename MatrixType> template<typename MatrixType>
@ -916,6 +923,9 @@ class SuperILU : public SuperLUBase<_MatrixType,SuperILU<_MatrixType> >
m_sluOptions.ILU_DropRule = DROP_BASIC; m_sluOptions.ILU_DropRule = DROP_BASIC;
m_sluOptions.ILU_DropTol = NumTraits<Scalar>::dummy_precision()*10; m_sluOptions.ILU_DropTol = NumTraits<Scalar>::dummy_precision()*10;
} }
private:
SuperILU(SuperILU& ) { }
}; };
template<typename MatrixType> template<typename MatrixType>

View File

@ -318,6 +318,9 @@ class UmfPackLU
int m_factorizationIsOk; int m_factorizationIsOk;
int m_analysisIsOk; int m_analysisIsOk;
mutable bool m_extractedDataAreDirty; mutable bool m_extractedDataAreDirty;
private:
UmfPackLU(UmfPackLU& ) { }
}; };