ExampleTridiagSerialLinearOp< Scalar > Class Template Reference
[Templated Serial Implementation of the Power MethodTemplated Serial Implementation of the CG Method]

Simple example subclass for serial tridiagonal matrices. More...

#include <ExampleTridiagSerialLinearOp.hpp>

Inheritance diagram for ExampleTridiagSerialLinearOp< Scalar >:

Inheritance graph
[legend]
List of all members.

Public Member Functions

 ExampleTridiagSerialLinearOp ()
 Construct to uninitialized.
 ExampleTridiagSerialLinearOp (const Thyra::Index dim, const Scalar lower[], const Scalar diag[], const Scalar upper[])
 Calls initialize().
void initialize (const Thyra::Index dim, const Scalar lower[], const Scalar diag[], const Scalar upper[])
std::string description () const
 Default description that gives the label, type, and dimenstion .

Protected Member Functions

bool opSupported (Thyra::EOpTransp M_trans) const
 Return if the M_trans operation of apply() is supported or not.
void euclideanApply (const Thyra::EOpTransp M_trans, const RTOpPack::ConstSubVectorView< Scalar > &x_in, const RTOpPack::SubVectorView< Scalar > *y_out, const Scalar alpha, const Scalar beta) const
 Apply the operator to explicit vector data.

Detailed Description

template<class Scalar>
class ExampleTridiagSerialLinearOp< Scalar >

Simple example subclass for serial tridiagonal matrices.

This subclass form a linear operator for tridiagonal matrices of the form:

\[ M= \left[\begin{array}{ccccc} d_{(1)} & u_{(1)} \\ l_{(1)} & d_{(2)} & u_{(2)} \\ & \ddots & \ddots & \ddots \\ & & l_{(n-2)} & d_{(n-1)} & u_{(n-1)} \\ & & & l_{(n-1)} & d_{(n)} \end{array}\right] \]

given the arrays lower[], diag[], and upper[] of dimension dim-1, dim and dim-1 respectively (see initialize()).

Note, this is just an example class and for the sake of simplified presentation the private members are listed first and in class declarations are used which are not a good idea in production code. However, in this case, they make the example code easier to read and maintaining encapsulation and a well defined interface are unnecessary here.

See the source code for this simple example by clicking on the link to the definition below.

Examples:

ExampleTridiagSerialLinearOp.hpp, sillyCgSolve_serial.cpp, and sillyPowerMethod_serial.cpp.

Definition at line 69 of file ExampleTridiagSerialLinearOp.hpp.


Constructor & Destructor Documentation

template<class Scalar>
ExampleTridiagSerialLinearOp< Scalar >::ExampleTridiagSerialLinearOp (  )  [inline]

Construct to uninitialized.

Definition at line 83 of file ExampleTridiagSerialLinearOp.hpp.

template<class Scalar>
ExampleTridiagSerialLinearOp< Scalar >::ExampleTridiagSerialLinearOp ( const Thyra::Index  dim,
const Scalar  lower[],
const Scalar  diag[],
const Scalar  upper[] 
) [inline]

Calls initialize().

Definition at line 86 of file ExampleTridiagSerialLinearOp.hpp.


Member Function Documentation

template<class Scalar>
void ExampleTridiagSerialLinearOp< Scalar >::initialize ( const Thyra::Index  dim,
const Scalar  lower[],
const Scalar  diag[],
const Scalar  upper[] 
) [inline]

Initialize given lower, diagonal and upper arrays of data.

Parameters:
dim [in] Dimension of this matrix (must be >= 2).
lower [in] Array (length dim-1) of the lower diagonal elements
diag [in] Array (length dim) of the central diagonal elements
upper [in] Array (length dim-1) of the upper diagonal elements
Preconditions:

Postconditions:

Definition at line 105 of file ExampleTridiagSerialLinearOp.hpp.

template<class Scalar>
std::string ExampleTridiagSerialLinearOp< Scalar >::description (  )  const [inline, virtual]

Default description that gives the label, type, and dimenstion .

Reimplemented from Thyra::LinearOpDefaultBase< RangeScalar, DomainScalar >.

Definition at line 122 of file ExampleTridiagSerialLinearOp.hpp.

template<class Scalar>
bool ExampleTridiagSerialLinearOp< Scalar >::opSupported ( Thyra::EOpTransp  M_trans  )  const [inline, protected, virtual]

Return if the M_trans operation of apply() is supported or not.

Preconditions:

Note that an operator must support at least one of the values of ETrans (i.e. the transposed or the non-transposed operations must be supported, both can not be unsupported)

Implements Thyra::SingleScalarEuclideanLinearOpBase< Scalar >.

Definition at line 131 of file ExampleTridiagSerialLinearOp.hpp.

template<class Scalar>
void ExampleTridiagSerialLinearOp< Scalar >::euclideanApply ( const Thyra::EOpTransp  M_trans,
const RTOpPack::ConstSubVectorView< Scalar > &  x_in,
const RTOpPack::SubVectorView< Scalar > *  y_out,
const Scalar  alpha,
const Scalar  beta 
) const [inline, protected, virtual]

Apply the operator to explicit vector data.

See LinearOpBase::euclideanApply() for a discussion of the arguments to this function. What differentiates this function is that local_x and local_y are passed as objects with explicit pointers to local vector data.

Since this function is protected and does not get directly called by a client. Instead, this function is called by the vector version of euclideanApply().

Implements Thyra::SpmdLinearOpBase< Scalar >.

Definition at line 135 of file ExampleTridiagSerialLinearOp.hpp.


The documentation for this class was generated from the following file:
Generated on Wed May 12 21:42:30 2010 for Thyra Operator/Vector Support by  doxygen 1.4.7