`#include <Meros_LSCPreconditionerFactory.h>`

## Public Member Functions | |

Constructors/initializers/accessors | |

LSCPreconditionerFactory () | |

Default constructor. | |

LSCPreconditionerFactory (RCP< const LinearOpWithSolveFactoryBase< double > > const &FSolveStrategy, RCP< const LinearOpWithSolveFactoryBase< double > > const &BBtSolveStrategy) | |

Constructor for Pressure Convection-Diffusion preconditioner factory. Takes an AztecOO parameter list for the F (convection-diffusion) solve and the B*Bt solve. | |

Overridden from PreconditionerFactoryBase | |

bool | isCompatible (const LinearOpSourceBase< double > &fwdOpSrc) const |

Check that a `LinearOperator` object is compatible with `*this` factory object. | |

RCP< PreconditionerBase< double > > | createPrec () const |

Create an (uninitialized) `LinearOperator` object to be initalized as the preconditioner later in `this->initializePrecOp()` . | |

void | initializePrec (const RCP< const LinearOpSourceBase< double > > &fwdOpSrc, PreconditionerBase< double > *precOp, const ESupportSolveUse supportSolveUse=SUPPORT_SOLVE_UNSPECIFIED) const |

Initialize the LSCPreconditioner object. | |

void | uninitializePrec (PreconditionerBase< double > *prec, RCP< const LinearOpSourceBase< double > > *fwdOpSrc, ESupportSolveUse *supportSolveUse=NULL) const |

Uninitialize the LSCPreconditioner object. | |

Overridden from ParameterListAcceptor | |

void | setParameterList (RCP< ParameterList > const ¶mList) |

RCP< ParameterList > | getNonconstParameterList () |

RCP< ParameterList > | unsetParameterList () |

RCP< const ParameterList > | getParameterList () const |

RCP< const Teuchos::ParameterList > | getValidParameters () const |

Note that the LSC preconditioner assumes that we are using a stable discretization an a uniform mesh.

The LDU factors of a saddle point system are given as follows:

where is the Schur complement . A pressure convection-diffusion style preconditioner is then given by

where for is an approximation to the Schur complement S.

To apply the above preconditioner, we need a linear solver on the (0,0) block and an approximation to the inverse of the Schur complement.

To build a concrete preconditioner object, we will also need a 2x2 block Thyra matrix or the 4 separate blocks as either Thyra or Epetra matrices. If Thyra, assumes each block is a Thyra EpetraMatrix.

RCP< PreconditionerBase< double > > LSCPreconditionerFactory::createPrec | ( | ) | const |

Create an (uninitialized) `LinearOperator`

object to be initalized as the preconditioner later in `this->initializePrecOp()`

.

Note that on output `return->domain().get()==NULL`

may be true which means that the operator is not fully initialized. In fact, the output operator object is not guaranteed to be fully initialized until after it is passed through `this->initializePrecOp()`

.

The documentation for this class was generated from the following files:

- Meros_LSCPreconditionerFactory.h
- Meros_LSCPreconditionerFactory.cpp

Generated on Wed May 12 21:40:17 2010 for Meros by 1.4.7