This PR aims to add possibility of performing not only Transpose operations but also Conjugate Transpose, which is
important for complex arithmetic.
For now, only the MultAdd and AddContribution methods were changed, more functionality can be implemented when someone has the time to do so.
Both modifications were made transforming a bool parameter to an int. 0 stands for no transposition, 1 for transposition and 2 to conjugate transposition. Given that the standard assures that a true boolean value is always converted to 1, no changes in the behaviour of existent code are expected (perhaps a few warnings depending on compiler's settings).
Additionally, the Transpose method now has the signature
virtual void TPZMatrix<TVar>::Transpose(TPZMatrix<TVar>*const T, bool conj = false) const;
and, in the TPZFMatrix template class, the void ConjTranspose();
This PR aims to add possibility of performing not only Transpose operations but also Conjugate Transpose, which is important for complex arithmetic.
For now, only the
MultAdd
andAddContribution
methods were changed, more functionality can be implemented when someone has the time to do so.Both modifications were made transforming a
bool
parameter to anint
.0
stands for no transposition,1
for transposition and2
to conjugate transposition. Given that the standard assures that atrue
boolean value is always converted to1
, no changes in the behaviour of existent code are expected (perhaps a few warnings depending on compiler's settings).Additionally, the
Transpose
method now has the signaturevirtual void TPZMatrix<TVar>::Transpose(TPZMatrix<TVar>*const T, bool conj = false) const;
and, in the
TPZFMatrix
template class, thevoid ConjTranspose();
method was added.