[Trilinos-Users] Aztec, DD-prec and reuse
Simone Deparis
deparis at MIT.EDU
Wed Jan 4 08:19:46 MST 2006
Mike,
Mike Heroux wrote:
> Simone,
>
> It is possible to reuse a native AztecOO preconditioner (e.g., the
> preconditioner obtained by setting options[AZ_precond] = AZ_dom_decomp and
> options[AZ_subdomain_solve] = AZ_ilut) in one of two ways:
>
> (1) By setting options[AZ_pre_calc] = AZ_reuse prior to calling the
> Iterate() method the first time. The actual preconditioner will be
> constructed when the Iterate() method tries to use the preconditioner for
> the first time.
Setting reuse before calling Iterate gives the following error at the
first time I solve:
Error: Did not find previous factorization (requested
by setting options[AZ_pre_calc] to AZ_reuse).
To find this factorization, the following
parameters must match the previous factorization:
(...)
> (2) You can also explicitly construct and destroy AztecOO's native
> preconditioners by use the AztecOO's ConstructPreconditioner() and
> DestroyPreconditioner() methods. ConstructPreconditioner() creates a
> persistent copy of an AztecOO native internal preconditioner that remains
> viable until DestroyPreconditioner() is called or the AztecOO object is
> destroyed. The exact type of preconditioner that is constructed is
> determined by the same options[AZ_precond] etc. as above.
Same error as above.
I went through the source code of ztec and I have the impression that
reuse works only with external preconditioners, setted via SetPrecMatrix()
Am I wrong?
>>+++++++++++++++++++++++++++++
>>
>>In a later stage, I would like to build M starting from P and
>>use M as a preconditioner to A, via something like:
>>
>> Epetra_Operator* M = P->GetPrecOperator()
>> A->SetPrecOperator(M);
>>or
>> Epetra_RowMat* M =P->GetPrecMatrix();
>> A->SetPrecMatrix(M);
>>
>>Do you think that this is feasible?
>>
>>+++++++++++++++++++++++++++++
>>
>
>
> I am not quite sure what you mean here. Since P is an Epetra_CrsMatrix,
> there is no GetPrecOperator() or GetPrecMatrix() methods. If you want to
> reuse a preconditioner from a previous call to Iterate(), you can use one of
> the two ways listed above.
>
> Mike
What I mean here is:
I have A, P and M, suvh that:
P is a preconditioner for A
M is a preconditioner for P that comes from AZ_dom_decomp
I would like to build M from P (using ConstructPreconditioner) but use M
as a preconditioner for A
Thank yo
Simone
More information about the Trilinos-Users
mailing list