Helper functions for creating scaled/adjoint linear operators.
[Thyra Operator/Vector Interfaces as an API for the Development of Abstract Numerical Algorithms (ANAs)]


Functions

template<class Scalar>
void Thyra::unwrap (const Teuchos::RefCountPtr< const LinearOpBase< Scalar > > &Op, Scalar *scalar, ETransp *transp, Teuchos::RefCountPtr< const LinearOpBase< Scalar > > *origOp)
 Extract the overallScalar, overallTransp and Teuchos::RefCountPtr wrapped const origOp from a Teuchos::RefCountPtr wrapped const LinearOpBase object.
template<class Scalar>
Teuchos::RefCountPtr< LinearOpBase<
Scalar > > 
Thyra::scale (const Scalar &scalar, const Teuchos::RefCountPtr< LinearOpBase< Scalar > > &Op)
 Build an implicit non-const scaled linear operator.
template<class Scalar>
Teuchos::RefCountPtr< const
LinearOpBase< Scalar > > 
Thyra::scale (const Scalar &scalar, const Teuchos::RefCountPtr< const LinearOpBase< Scalar > > &Op)
 Build an implicit const scaled linear operator.
template<class Scalar>
Teuchos::RefCountPtr< LinearOpBase<
Scalar > > 
Thyra::adjoint (const Teuchos::RefCountPtr< LinearOpBase< Scalar > > &Op)
 Build an implicit non-const adjoined linear operator.
template<class Scalar>
Teuchos::RefCountPtr< const
LinearOpBase< Scalar > > 
Thyra::adjoint (const Teuchos::RefCountPtr< const LinearOpBase< Scalar > > &Op)
 Build an implicit const adjoined linear operator.
template<class Scalar>
Teuchos::RefCountPtr< LinearOpBase<
Scalar > > 
Thyra::transpose (const Teuchos::RefCountPtr< LinearOpBase< Scalar > > &Op)
 Build an implicit non-const transposed linear operator.
template<class Scalar>
Teuchos::RefCountPtr< const
LinearOpBase< Scalar > > 
Thyra::transpose (const Teuchos::RefCountPtr< const LinearOpBase< Scalar > > &Op)
 Build an implicit const transposed linear operator.
template<class Scalar>
Teuchos::RefCountPtr< LinearOpBase<
Scalar > > 
Thyra::scaleAndAdjoint (const Scalar &scalar, const ETransp &transp, const Teuchos::RefCountPtr< LinearOpBase< Scalar > > &Op)
 Build an implicit non-const scaled and/or adjoined (transposed) linear operator.
template<class Scalar>
Teuchos::RefCountPtr< const
LinearOpBase< Scalar > > 
Thyra::scaleAndAdjoint (const Scalar &scalar, const ETransp &transp, const Teuchos::RefCountPtr< const LinearOpBase< Scalar > > &Op)
 Build an implicit const scaled and/or adjoined (transposed) linear operator.

Detailed Description

These are helper functions for creating and manipulating ScaledAdjointLinearOp objects. In general, clients should create dynamically allocated ScaledAdjointLinearOp objects by calling these helper functions and not by directly calling the constructor for ScaledAdjointLinearOp.

Function Documentation

template<class Scalar>
void Thyra::unwrap const Teuchos::RefCountPtr< const LinearOpBase< Scalar > > &  Op,
Scalar *  scalar,
ETransp transp,
Teuchos::RefCountPtr< const LinearOpBase< Scalar > > *  origOp
 

Extract the overallScalar, overallTransp and Teuchos::RefCountPtr wrapped const origOp from a Teuchos::RefCountPtr wrapped const LinearOpBase object.

Parameters:
Op [in] The input, possibly scaled and/or adjoined, linear operator
scalar [out] The overall scaling factor.
transp [out] The overall adjoint (transposition) enum.
origOp [out] The underlying, non-scaled and non-adjoined linear operator. This pointer returns a non-persisting relationship that is to be used and then immediately forgotten.
Preconditions:
  • scalar!==NULL
  • transp!==NULL
  • origOp!==NULL

Postconditions:

  • *origOp!==NULL

The purpose of this function is to strip off the ScaledAdjointLinearOpBase wrapper and get at the underlying linear operator for the purpose of further dynamic casting to some more derived interface.

The implementation of this function is not too complicated and is appropriate for study.

Definition at line 64 of file Thyra_ScaledAdjointLinearOpBase.hpp.

template<class Scalar>
Teuchos::RefCountPtr< Thyra::LinearOpBase< Scalar > > Thyra::scale const Scalar &  scalar,
const Teuchos::RefCountPtr< LinearOpBase< Scalar > > &  Op
[inline]
 

Build an implicit non-const scaled linear operator.

Returns Teuchos::rcp(new ScaledAdjointLinearOp<Scalar>(scalar,NOTRANS,Op).

Preconditions:

  • Op.get()!=NULL

Postconditions:

  • return.get()!=NULL

Definition at line 503 of file Thyra_ScaledAdjointLinearOpDecl.hpp.

template<class Scalar>
Teuchos::RefCountPtr< const Thyra::LinearOpBase< Scalar > > Thyra::scale const Scalar &  scalar,
const Teuchos::RefCountPtr< const LinearOpBase< Scalar > > &  Op
[inline]
 

Build an implicit const scaled linear operator.

Returns Teuchos::rcp(new ScaledAdjointLinearOp<Scalar>(scalar,NOTRANS,rcp_const_cast<LinearOpBase<Scalar> >(Op)).

Preconditions:

  • Op.get()!=NULL

Postconditions:

  • return.get()!=NULL

Definition at line 510 of file Thyra_ScaledAdjointLinearOpDecl.hpp.

template<class Scalar>
Teuchos::RefCountPtr< Thyra::LinearOpBase< Scalar > > Thyra::adjoint const Teuchos::RefCountPtr< LinearOpBase< Scalar > > &  Op  )  [inline]
 

Build an implicit non-const adjoined linear operator.

Returns Teuchos::rcp(new ScaledAdjointLinearOp<Scalar>(Teuchos::ScalarTraits<Scalar>::one(),CONJTRANS,Op).

Preconditions:

  • Op.get()!=NULL

Postconditions:

  • return.get()!=NULL
Examples:
sillyCgSolve_serial.cpp, and test_composite_linear_ops.cpp.

Definition at line 517 of file Thyra_ScaledAdjointLinearOpDecl.hpp.

template<class Scalar>
Teuchos::RefCountPtr< const Thyra::LinearOpBase< Scalar > > Thyra::adjoint const Teuchos::RefCountPtr< const LinearOpBase< Scalar > > &  Op  )  [inline]
 

Build an implicit const adjoined linear operator.

Returns Teuchos::rcp(new ScaledAdjointLinearOp<Scalar>(Teuchos::ScalarTraits<Scalar>::one(),CONJTRANS,rcp_const_cast<LinearOpBase<Scalar> >(Op)).

Preconditions:

  • Op.get()!=NULL

Postconditions:

  • return.get()!=NULL

Definition at line 524 of file Thyra_ScaledAdjointLinearOpDecl.hpp.

template<class Scalar>
Teuchos::RefCountPtr< Thyra::LinearOpBase< Scalar > > Thyra::transpose const Teuchos::RefCountPtr< LinearOpBase< Scalar > > &  Op  )  [inline]
 

Build an implicit non-const transposed linear operator.

Returns Teuchos::rcp(new ScaledAdjointLinearOp<Scalar>(Teuchos::ScalarTraits<Scalar>::one(),TRANS,Op).

Preconditions:

  • Op.get()!=NULL

Postconditions:

  • return.get()!=NULL
Examples:
test_composite_linear_ops.cpp.

Definition at line 532 of file Thyra_ScaledAdjointLinearOpDecl.hpp.

template<class Scalar>
Teuchos::RefCountPtr< const Thyra::LinearOpBase< Scalar > > Thyra::transpose const Teuchos::RefCountPtr< const LinearOpBase< Scalar > > &  Op  )  [inline]
 

Build an implicit const transposed linear operator.

Returns Teuchos::rcp(new ScaledAdjointLinearOp<Scalar>(Teuchos::ScalarTraits<Scalar>::one(),TRANS,rcp_const_cast<LinearOpBase<Scalar> >(Op)).

Preconditions:

  • Op.get()!=NULL

Postconditions:

  • return.get()!=NULL

Definition at line 539 of file Thyra_ScaledAdjointLinearOpDecl.hpp.

template<class Scalar>
Teuchos::RefCountPtr< Thyra::LinearOpBase< Scalar > > Thyra::scaleAndAdjoint const Scalar &  scalar,
const ETransp transp,
const Teuchos::RefCountPtr< LinearOpBase< Scalar > > &  Op
[inline]
 

Build an implicit non-const scaled and/or adjoined (transposed) linear operator.

Returns Teuchos::rcp(new ScaledAdjointLinearOp<Scalar>(scale,transp,Op).

Preconditions:

  • Op.get()!=NULL

Postconditions:

  • return.get()!=NULL
Examples:
test_composite_linear_ops.cpp.

Definition at line 547 of file Thyra_ScaledAdjointLinearOpDecl.hpp.

template<class Scalar>
Teuchos::RefCountPtr< const Thyra::LinearOpBase< Scalar > > Thyra::scaleAndAdjoint const Scalar &  scalar,
const ETransp transp,
const Teuchos::RefCountPtr< const LinearOpBase< Scalar > > &  Op
[inline]
 

Build an implicit const scaled and/or adjoined (transposed) linear operator.

Returns Teuchos::rcp(new ScaledAdjointLinearOp<Scalar>(scale,transp,rcp_const_cast<LinearOpBase<Scalar> >(Op)).

Preconditions:

  • Op.get()!=NULL

Postconditions:

  • return.get()!=NULL

Definition at line 554 of file Thyra_ScaledAdjointLinearOpDecl.hpp.


Generated on Thu Sep 18 12:39:53 2008 for Thyra ANA Operator/VectorBase Interfaces and Related Software by doxygen 1.3.9.1