[Trilinos-Users] Aztec, DD-prec and reuse

Simone Deparis deparis at MIT.EDU
Wed Jan 4 11:47:57 MST 2006


Mike,

Mike Heroux wrote:
> Simone,
> 
> One general comment:  
> 
> You might consider using Ifpack for preconditioners for AztecOO.  Ifpack has
> a much cleaner design and provides far more preconditioning capabilities.
> In contrast, the interface to AztecOO's native preconditioners is and will
> always be clumsy for advanced use cases.  This is because we have to live
> within the constraints of the underlying Aztec capabilities which are not
> object-oriented and quite fragile under changes.

I understand. If I can not solve this issue, I'll migrate to ifpack

> Regarding AZ_reuse:  
> 
> Sorry to mislead you.  You should set options[AZ_pre_calc] = AZ_reuse
> *after* the first call to Iterate, but before the second.  You should not
> set options[AZ_pre_calc] = AZ_reuse *at all* if using the
> Construct/DestroyPreconditioner() methods, since this setting is handled for
> you.

Ok. But I get the error also when using
Construct/DestroyPreconditioner() and *not* set  options[AZ_pre_calc]
(which as yuo say is handeld by ConstrucPreconditioner()

Is it possible that the preconditioner is destroyed anyway?:
in fact Iterate() calls AZ_solve which at the end calls
AZ_precond_destroy. So I understand that the preconditioner is destroyed.
In iterate:

  if (prec_allocated == 1) {
    AZ_precond_destroy(&Prec_);
    Prec_ = 0;
    prec_allocated = 0;
  }

where:

void AZ_precond_destroy(AZ_PRECOND **precond)
{
  if ( (*precond) == NULL) return;
   if ( (*precond)->print_string != NULL) AZ_free(
(*precond)->print_string);
   AZ_free(*precond);
   *precond = NULL;
}


Am I wrong?

Simone



More information about the Trilinos-Users mailing list