LOCA::BorderedSystem::Bordering Class Reference

Solved bordered system of equations using bordering. More...

#include <LOCA_BorderedSystem_Bordering.H>

Inheritance diagram for LOCA::BorderedSystem::Bordering:

[legend]
Collaboration diagram for LOCA::BorderedSystem::Bordering:
[legend]
List of all members.

Public Member Functions

 Bordering (NOX::Parameter::List &params)
 Constructor.
 Bordering (const Bordering &source)
 Copy constructor.
virtual ~Bordering ()
 Destructor.
virtual Borderingoperator= (const Bordering &source)
 Assignment operator.
virtual LOCA::BorderedSystem::Genericclone () const
 Clone function.
virtual LOCA::BorderedSystem::Genericoperator= (const LOCA::BorderedSystem::Generic &source)
 Assignment operator.
virtual NOX::Abstract::Group::ReturnType reset (NOX::Parameter::List &params)
 Reset parameters.
virtual void setIsZero (bool flagA, bool flagB, bool flagC, bool flagF, bool flagG)
 Set flags indicating if any blocks are zero.
virtual void setIsContiguous (bool flag)
 Set flag indicating whether F and A are continguous.
virtual void setMatrixBlocks (const NOX::Abstract::Group *group, const NOX::Abstract::MultiVector *blockA, const NOX::Abstract::MultiVector *blockB, const NOX::Abstract::MultiVector::DenseMatrix *blockC)
 Set blocks.
virtual NOX::Abstract::Group::ReturnType apply (const NOX::Abstract::MultiVector &X, const NOX::Abstract::MultiVector::DenseMatrix &Y, NOX::Abstract::MultiVector &U, NOX::Abstract::MultiVector::DenseMatrix &V) const
 Computed extended matrix-multivector product.
virtual NOX::Abstract::Group::ReturnType applyTranspose (const NOX::Abstract::MultiVector &X, const NOX::Abstract::MultiVector::DenseMatrix &Y, NOX::Abstract::MultiVector &U, NOX::Abstract::MultiVector::DenseMatrix &V) const
 Computed extended matrix transpose-multivector product.
virtual NOX::Abstract::Group::ReturnType applyInverse (NOX::Parameter::List &params, const NOX::Abstract::MultiVector *F, const NOX::Abstract::MultiVector::DenseMatrix *G, NOX::Abstract::MultiVector &X, NOX::Abstract::MultiVector::DenseMatrix &Y) const
 Solves the extended system as defined above using bordering.

Protected Member Functions

NOX::Abstract::Group::ReturnType solveBZeroNoncontiguous (NOX::Parameter::List &params, const NOX::Abstract::MultiVector *AA, const NOX::Abstract::MultiVector::DenseMatrix *CC, const NOX::Abstract::MultiVector *F, const NOX::Abstract::MultiVector::DenseMatrix *G, NOX::Abstract::MultiVector &X, NOX::Abstract::MultiVector::DenseMatrix &Y) const
 Solves the extended system when B = 0 and F and A are not contiguous.
NOX::Abstract::Group::ReturnType solveBNonZeroNoncontiguous (NOX::Parameter::List &params, const NOX::Abstract::MultiVector *AA, const NOX::Abstract::MultiVector *BB, const NOX::Abstract::MultiVector::DenseMatrix *CC, const NOX::Abstract::MultiVector *F, const NOX::Abstract::MultiVector::DenseMatrix *G, NOX::Abstract::MultiVector &X, NOX::Abstract::MultiVector::DenseMatrix &Y) const
 Solves the extended system when B is not 0 and F and A are not contiguous.
NOX::Abstract::Group::ReturnType solveBNonZeroContiguous (NOX::Parameter::List &params, const NOX::Abstract::MultiVector *AA, const NOX::Abstract::MultiVector *BB, const NOX::Abstract::MultiVector::DenseMatrix *CC, vector< int > &indexF, vector< int > &indexA, const NOX::Abstract::MultiVector *F, const NOX::Abstract::MultiVector::DenseMatrix *G, NOX::Abstract::MultiVector &X, NOX::Abstract::MultiVector::DenseMatrix &Y) const
 Solves the extended system when B is not 0 and F and A are contiguous.

Protected Attributes

const NOX::Abstract::Groupgrp
 Pointer to group storing J.
const NOX::Abstract::MultiVector * A
 Pointer to A block.
const NOX::Abstract::MultiVector * B
 Pointer to B block.
const NOX::Abstract::MultiVector::DenseMatrix * C
 Pointer to C block.
bool isZeroA
 flag indicating whether A block is zero
bool isZeroB
 flag indicating whether B block is zero
bool isZeroC
 flag indicating whether C block is zero
bool isZeroF
 flag indicating whether F block is zero
bool isZeroG
 flag indicating whether G block is zero
bool isContiguous
 flag indicating whether F and A are contiguous
bool isZeroX
 flag indicating whether X block is zero
bool isZeroY
 flag indicating whether Y block is zero
bool isZeroT1
 flag indicating whether B^T*X1 block is zero
bool isZeroT2
 flag indicating whether B^T*X2 block is zero

Detailed Description

Solved bordered system of equations using bordering.

This class solves the extended system of equations

\[ \begin{bmatrix} J & A \\ B^T & C \end{bmatrix} \begin{bmatrix} X \\ Y \end{bmatrix} = \begin{bmatrix} F \\ G \end{bmatrix} \]

via bordering (block elimination):

\[ \begin{aligned} X_1 &= J^{-1} F \\ X_2 &= J^{-1} A \\ Y &= (C-B^T X_2)^{-1}(G-B^T X_1) X &= X_1 - X_2 Y \end{aligned} \]


Member Function Documentation

NOX::Abstract::Group::ReturnType LOCA::BorderedSystem::Bordering::apply const NOX::Abstract::MultiVector &  X,
const NOX::Abstract::MultiVector::DenseMatrix &  Y,
NOX::Abstract::MultiVector &  U,
NOX::Abstract::MultiVector::DenseMatrix &  V
const [virtual]
 

Computed extended matrix-multivector product.

Computes

\[ \begin{bmatrix} U \\ V \end{bmatrix} = \begin{bmatrix} J & A \\ B^T & C \end{bmatrix} \begin{bmatrix} X \\ Y \end{bmatrix} = \begin{bmatrix} J*X + A*Y \\ B^T*X + C*Y \end{bmatrix}. \]

Implements LOCA::BorderedSystem::Generic.

NOX::Abstract::Group::ReturnType LOCA::BorderedSystem::Bordering::applyInverse NOX::Parameter::List params,
const NOX::Abstract::MultiVector *  F,
const NOX::Abstract::MultiVector::DenseMatrix *  G,
NOX::Abstract::MultiVector &  X,
NOX::Abstract::MultiVector::DenseMatrix &  Y
const [virtual]
 

Solves the extended system as defined above using bordering.

The params argument is the linear solver parameters. If isZeroF or isZeroG is true, than the corresponding F or G pointers may be NULL.

Implements LOCA::BorderedSystem::Generic.

NOX::Abstract::Group::ReturnType LOCA::BorderedSystem::Bordering::applyTranspose const NOX::Abstract::MultiVector &  X,
const NOX::Abstract::MultiVector::DenseMatrix &  Y,
NOX::Abstract::MultiVector &  U,
NOX::Abstract::MultiVector::DenseMatrix &  V
const [virtual]
 

Computed extended matrix transpose-multivector product.

Computes

\[ \begin{bmatrix} U \\ V \end{bmatrix} = \begin{bmatrix} J^T & B \\ A^T & C \end{bmatrix} \begin{bmatrix} X \\ Y \end{bmatrix} = \begin{bmatrix} J^T*X + B*Y \\ A^T*X + C^T*Y \end{bmatrix}. \]

Implements LOCA::BorderedSystem::Generic.

void LOCA::BorderedSystem::Bordering::setMatrixBlocks const NOX::Abstract::Group group,
const NOX::Abstract::MultiVector *  blockA,
const NOX::Abstract::MultiVector *  blockB,
const NOX::Abstract::MultiVector::DenseMatrix *  blockC
[virtual]
 

Set blocks.

Any of these block pointers (execpt the group pointer) may be NULL if the corresponding flag is set indicating the block is zero.

Implements LOCA::BorderedSystem::Generic.


The documentation for this class was generated from the following files:
Generated on Thu Sep 18 12:42:23 2008 for NOX by doxygen 1.3.9.1