This PR aims to adopt the distinction between symmetric and hermitian properties for complex-valued matrices.
The biggest changes are listed below
enum class SymProp for symmetry properties ( NonSym, Sym, Herm)
TPZBaseMatrix::IsSymmetric() is now TPZBaseMatrix::GetSymmetry()
Adds TPZBaseMatrix::SetSymmetry(SymProp) and correspondent TPZBaseMatrix::fSymProp attribute
TPZBaseMatrix::AutoFill now generates matrices with the three symmetry properties
PardisoSolver<T>::SetMatrixType will always assume symmetric sparsity pattern
Adjustments were made in the library and additional unit tests for new matrix types (complex symmetric) were added.
Regarding the TPZBaseMatrix::fSymProp attribute, checks were performed in symmetric storage matrices as to prevent setting them to SymProp::NonSym. Therefore, the GetSymmetry(formed IsSymmetric) method is no longer virtual, however the SetSymmetry method is.
Setting symmetry properties of the matrix after the assemble and before additional operations (multiplying, decomposing, etc) is a user responsibility that may allow for optimisations.
This PR aims to adopt the distinction between symmetric and hermitian properties for complex-valued matrices.
The biggest changes are listed below
SymProp
for symmetry properties (NonSym
,Sym
,Herm
)TPZBaseMatrix::IsSymmetric()
is nowTPZBaseMatrix::GetSymmetry()
TPZBaseMatrix::SetSymmetry(SymProp)
and correspondentTPZBaseMatrix::fSymProp
attributeTPZBaseMatrix::AutoFill
now generates matrices with the three symmetry propertiesPardisoSolver<T>::SetMatrixType
will always assume symmetric sparsity patternAdjustments were made in the library and additional unit tests for new matrix types (complex symmetric) were added.
Regarding the
TPZBaseMatrix::fSymProp
attribute, checks were performed in symmetric storage matrices as to prevent setting them toSymProp::NonSym
. Therefore, theGetSymmetry
(formedIsSymmetric
) method is no longer virtual, however theSetSymmetry
method is.Setting symmetry properties of the matrix after the assemble and before additional operations (multiplying, decomposing, etc) is a user responsibility that may allow for optimisations.