#include <ExampleTridiagSerialLinearOp.hpp>
Inheritance diagram for ExampleTridiagSerialLinearOp< Scalar >:
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::ETransp M_trans) const |
Return if the M_trans operation of apply() is supported or not. | |
| void | euclideanApply (const Thyra::ETransp 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. | |
This subclass form a linear operator for tridiagonal matrices of the form:
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.
ExampleTridiagSerialLinearOp.hpp, sillyCgSolve_serial.cpp, and sillyPowerMethod_serial.cpp.
Definition at line 69 of file ExampleTridiagSerialLinearOp.hpp.
| ExampleTridiagSerialLinearOp< Scalar >::ExampleTridiagSerialLinearOp | ( | ) | [inline] |
| ExampleTridiagSerialLinearOp< Scalar >::ExampleTridiagSerialLinearOp | ( | const Thyra::Index | dim, | |
| const Scalar | lower[], | |||
| const Scalar | diag[], | |||
| const Scalar | upper[] | |||
| ) | [inline] |
| 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.
| 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 |
dim >= 2 Postconditions:
setDimensions() Definition at line 105 of file ExampleTridiagSerialLinearOp.hpp.
| 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.
| bool ExampleTridiagSerialLinearOp< Scalar >::opSupported | ( | Thyra::ETransp | 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.
| void ExampleTridiagSerialLinearOp< Scalar >::euclideanApply | ( | const Thyra::ETransp | 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.
1.4.7