[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