# [Trilinos-Users] AztecOO: result is zero?

Sensei senseiwa at gmail.com
Mon Apr 4 11:49:15 MDT 2011

```On Apr 4, 2011, at 1:45pm, dorian.krause at usi.ch wrote:

>
> On Apr 4, 2011, at 1:06 PM, Sensei wrote:
>
>> I don't understand... Solving a linear problem with a 2D laplacian matrix should be a piece of cake: shouldn't it converge to the correct result, and not zero?
>>
> If the right hand side is zero, the exact solution is zero. In the code,
> you can find theses lines:
>
>
>  Epetra_Vector<http://trilinos.sandia.gov/packages/docs/r6.0/packages/epetra/doc/html/classEpetra__Vector.html> x(Map);
>  Epetra_Vector<http://trilinos.sandia.gov/packages/docs/r6.0/packages/epetra/doc/html/classEpetra__Vector.html> b(Map);
>
>  x.Random();
>
>
> This initializes x with random values and b with zeros (since the zeroOut value is true by default).

Then I am probably doing something terribly wrong. I think I am missing something in my code, or worse, I forgot how solvers work!

First, I am initializing the known term v, with values 10 * (index + 1), and it prints ok, so the following code works.

Epetra_Vector v(Map);
// set every element in the vector
for (i = 0; i < Map.NumMyElements(); i++)
{
v[i] = 10 * (i + 1 + Map.MinMyGID());
}

Next, I set the matrix to a (standard metrics) laplacian matrix (with elements being +1 -2 +1). The matrix prints fine after GlobalAssemble().

Finally, I set up the linear problem and the solver:

// results vector
Epetra_Vector res(Map);

// construct the linear problem
Epetra_LinearProblem lp(&m, &res, &v);

// solver
AztecOO solver(lp);

// get defaults and set them
int opt[AZ_OPTIONS_SIZE];
double par[AZ_PARAMS_SIZE];

AZ_defaults(opt, par);
solver.SetAllAztecOptions(opt);
solver.SetAllAztecParams(par);

// set specific parameters
solver.SetAztecOption(AZ_solver, AZ_cg);

solver.Iterate(1000, 10e-9);

From the documentation I see that Epetra_LinearProblem needs, in order, the matrix, the resulting vector, and the known term. In my code, I am passing them in order, I think!

However, res contains only zero values. In contrast, if I initialize res with v (copy constructor), res will end up containing all the original values of v.

So, is my code completely a havoc? What am I missing and doing wrong?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://software.sandia.gov/pipermail/trilinos-users/attachments/20110404/8f8c72ac/attachment-0001.html
```