labmec / neopz

An object oriented finite element programming environment
http://www.labmec.org.br
32 stars 11 forks source link

Symmetry changes in matrices #175

Closed orlandini closed 1 year ago

orlandini commented 1 year ago

This PR aims to adopt the distinction between symmetric and hermitian properties for complex-valued matrices.

The biggest changes are listed below

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.