[Trilinos-Users] Amesos Superlu/Superludist Question
Travis Austin
austin at txcorp.com
Tue Sep 4 10:22:28 MDT 2012
Hi,
I am using Amesos Superlu and Superludist to solve a very simple nonsymmetric problem. There is agreement in the
solution between the two problems but the residual ||Ax - b|| is not in agreement. (See below.)
Amesos_Superlu:
===================
Amesos_Superlu : vector 0, ||Ax - b|| = 0
Amesos_Superlu : vector 0, ||x|| = 0.25, ||b|| = 1
Amesos_Superludist:
===================
Amesos_Superludist : vector 0, ||Ax - b|| = 0.5
Amesos_Superludist : vector 0, ||x|| = 0.25, ||b|| = 1
The residual is being printed out because I am setting the ComputeTrueResidual parameter to true.
In Amesos_Superludist.cpp I see the method Amesos_Superludist::Solve() actually compute the residual and issues the
following call:
if (ComputeTrueResidual_)
ComputeTrueResidual(*RowMatrixA_, *vecX, *vecB, UseTranspose(),
"Amesos_Superludist");
Furthermore, for Superludist UseTranspose() always returns true implying that I am computing ||A^t x - b||. This is exactly
what I have found for my small example matrix and explains the nonzero residual above in Amesos_Superludist.
Can someone explain why UseTranspose() is hard coded to return true in Amesos_Superludist.h:118-120
118 //! Always returns true.
119 bool UseTranspose() const {return(true);};
120 //@}
I'd think it should return false since it says that Superludist does not support transpose solves.
Thanks,
Travis
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Travis Austin, Ph.D.
VP of Computational Mathematics
Tech-X Corporation
5621 Arapahoe Ave, Suite A
Boulder, CO 80303
austin at txcorp.com
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
More information about the Trilinos-Users
mailing list