Thyra::LinearOpTester< Scalar > Class Template Reference
[Development of linear Abstract Numerical Algorithms (ANAs) (Client Support)]

Testing class for LinearOpBase. More...

#include <Thyra_LinearOpTester_decl.hpp>

List of all members.
bool check (const LinearOpBase< Scalar > &op, MultiVectorRandomizerBase< Scalar > *rangeRandomizer, MultiVectorRandomizerBase< Scalar > *domainRandomizer, Teuchos::FancyOStream *out) const
 Deprecated. Deprecated.
bool check (const LinearOpBase< Scalar > &op, Teuchos::FancyOStream *out) const
 Deprecated.
bool compare (const LinearOpBase< Scalar > &op1, const LinearOpBase< Scalar > &op2, MultiVectorRandomizerBase< Scalar > *domainRandomizer, Teuchos::FancyOStream *out_arg) const
 Deprecated.
bool compare (const LinearOpBase< Scalar > &op1, const LinearOpBase< Scalar > &op2, Teuchos::FancyOStream *out_arg) const
 Deprecated.

Public Types

typedef Teuchos::ScalarTraits<
Scalar >::magnitudeType 
ScalarMag
 Local typedef for promoted scalar magnitude.

Public Member Functions

 LinearOpTester ()
 Default constructor which sets default parameter values.
 STANDARD_MEMBER_COMPOSITION_MEMBERS (bool, check_linear_properties)
 Set if to check for linear properties alpha*op*(x + y) == op(alpha*x) + op(alpha*y).
 STANDARD_MEMBER_COMPOSITION_MEMBERS (ScalarMag, linear_properties_warning_tol)
 Set the tolerance above which a relative error will generate a warning message for the check of the linear properties.
 STANDARD_MEMBER_COMPOSITION_MEMBERS (ScalarMag, linear_properties_error_tol)
 Set the tolerance above which a relative error will generate a error message and result in test failure for the check of the linear properties.
 STANDARD_MEMBER_COMPOSITION_MEMBERS (bool, check_adjoint)
 Set if to check for adjoint property x'*(op*y) == y'*(op'*x) if adjoint is supported.
 STANDARD_MEMBER_COMPOSITION_MEMBERS (ScalarMag, adjoint_warning_tol)
 Set the tolerance above which a relative error will generate a warning message for the check of the adjoint.
 STANDARD_MEMBER_COMPOSITION_MEMBERS (ScalarMag, adjoint_error_tol)
 Set the tolerance above which a relative error will generate a error message and result in test failure for the check of the adjoint.
 STANDARD_MEMBER_COMPOSITION_MEMBERS (bool, check_for_symmetry)
 Set if to check for symmetry property x'*(op*y) == y'*(op*x) for symmetric operators.
 STANDARD_MEMBER_COMPOSITION_MEMBERS (ScalarMag, symmetry_warning_tol)
 Set the tolerance above which a relative error will generate a warning message for the check of symmetry.
 STANDARD_MEMBER_COMPOSITION_MEMBERS (ScalarMag, symmetry_error_tol)
 Set the tolerance above which a relative error will generate a error message and result in test failure for the check of symmetry.
 STANDARD_MEMBER_COMPOSITION_MEMBERS (int, num_random_vectors)
 Set the number random vectors that is generated during each test.
 STANDARD_MEMBER_COMPOSITION_MEMBERS (bool, show_all_tests)
 Set if all tests are shown or just summaries.
 STANDARD_MEMBER_COMPOSITION_MEMBERS (bool, dump_all)
 Set if all of the vectors are dumped or not (only relevant if show_all_tests()==true).
 STANDARD_MEMBER_COMPOSITION_MEMBERS (int, num_rhs)
 Set the number of right-hand-sides in the multivectors.
void enable_all_tests (const bool enable_all_tests)
 Enable or disable all tests.
void set_all_warning_tol (const ScalarMag warning_tol)
 Set all the warning tolerances to the same value.
void set_all_error_tol (const ScalarMag error_tol)
 Set all the error tolerances to the same value.
bool check (const LinearOpBase< Scalar > &op, const Ptr< MultiVectorRandomizerBase< Scalar > > &rangeRandomizer, const Ptr< MultiVectorRandomizerBase< Scalar > > &domainRandomizer, const Ptr< Teuchos::FancyOStream > &out) const
 Check a linear operator.
bool check (const LinearOpBase< Scalar > &op, const Ptr< Teuchos::FancyOStream > &out) const
 Calls this->check(op,null,null,out,leadingIndent,indentSpacer).
bool compare (const LinearOpBase< Scalar > &op1, const LinearOpBase< Scalar > &op2, const Ptr< MultiVectorRandomizerBase< Scalar > > &domainRandomizer, const Ptr< Teuchos::FancyOStream > &out_arg) const
 Check if two linear operators are the same or not.
bool compare (const LinearOpBase< Scalar > &op1, const LinearOpBase< Scalar > &op2, const Ptr< Teuchos::FancyOStream > &out_arg) const
 Calls this->compare(op1,op2,NULL,out,leadingIndent,indentSpacer).


Detailed Description

template<class Scalar>
class Thyra::LinearOpTester< Scalar >

Testing class for LinearOpBase.

This testing class performs many different tests just given a LinearOpBase object using the function check().

This testing class also can check if two linear operators are the same using random vectors by using the function compare().

ToDo: Finish documentation!

The default compiler-generated copy constructor and assignment operators are allowed since they have the correct semantics which are to simply copy control parameters.

Definition at line 62 of file Thyra_LinearOpTester_decl.hpp.


Member Typedef Documentation

template<class Scalar>
typedef Teuchos::ScalarTraits<Scalar>::magnitudeType Thyra::LinearOpTester< Scalar >::ScalarMag

Local typedef for promoted scalar magnitude.

Definition at line 66 of file Thyra_LinearOpTester_decl.hpp.


Constructor & Destructor Documentation

template<class Scalar>
Thyra::LinearOpTester< Scalar >::LinearOpTester (  ) 

Default constructor which sets default parameter values.

See the implementation of this function for the defaults that get set.

Definition at line 142 of file Thyra_LinearOpTester_def.hpp.


Member Function Documentation

template<class Scalar>
Thyra::LinearOpTester< Scalar >::STANDARD_MEMBER_COMPOSITION_MEMBERS ( bool  ,
check_linear_properties   
)

Set if to check for linear properties alpha*op*(x + y) == op(alpha*x) + op(alpha*y).

template<class Scalar>
Thyra::LinearOpTester< Scalar >::STANDARD_MEMBER_COMPOSITION_MEMBERS ( ScalarMag  ,
linear_properties_warning_tol   
)

Set the tolerance above which a relative error will generate a warning message for the check of the linear properties.

template<class Scalar>
Thyra::LinearOpTester< Scalar >::STANDARD_MEMBER_COMPOSITION_MEMBERS ( ScalarMag  ,
linear_properties_error_tol   
)

Set the tolerance above which a relative error will generate a error message and result in test failure for the check of the linear properties.

template<class Scalar>
Thyra::LinearOpTester< Scalar >::STANDARD_MEMBER_COMPOSITION_MEMBERS ( bool  ,
check_adjoint   
)

Set if to check for adjoint property x'*(op*y) == y'*(op'*x) if adjoint is supported.

template<class Scalar>
Thyra::LinearOpTester< Scalar >::STANDARD_MEMBER_COMPOSITION_MEMBERS ( ScalarMag  ,
adjoint_warning_tol   
)

Set the tolerance above which a relative error will generate a warning message for the check of the adjoint.

template<class Scalar>
Thyra::LinearOpTester< Scalar >::STANDARD_MEMBER_COMPOSITION_MEMBERS ( ScalarMag  ,
adjoint_error_tol   
)

Set the tolerance above which a relative error will generate a error message and result in test failure for the check of the adjoint.

template<class Scalar>
Thyra::LinearOpTester< Scalar >::STANDARD_MEMBER_COMPOSITION_MEMBERS ( bool  ,
check_for_symmetry   
)

Set if to check for symmetry property x'*(op*y) == y'*(op*x) for symmetric operators.

template<class Scalar>
Thyra::LinearOpTester< Scalar >::STANDARD_MEMBER_COMPOSITION_MEMBERS ( ScalarMag  ,
symmetry_warning_tol   
)

Set the tolerance above which a relative error will generate a warning message for the check of symmetry.

template<class Scalar>
Thyra::LinearOpTester< Scalar >::STANDARD_MEMBER_COMPOSITION_MEMBERS ( ScalarMag  ,
symmetry_error_tol   
)

Set the tolerance above which a relative error will generate a error message and result in test failure for the check of symmetry.

template<class Scalar>
Thyra::LinearOpTester< Scalar >::STANDARD_MEMBER_COMPOSITION_MEMBERS ( int  ,
num_random_vectors   
)

Set the number random vectors that is generated during each test.

template<class Scalar>
Thyra::LinearOpTester< Scalar >::STANDARD_MEMBER_COMPOSITION_MEMBERS ( bool  ,
show_all_tests   
)

Set if all tests are shown or just summaries.

template<class Scalar>
Thyra::LinearOpTester< Scalar >::STANDARD_MEMBER_COMPOSITION_MEMBERS ( bool  ,
dump_all   
)

Set if all of the vectors are dumped or not (only relevant if show_all_tests()==true).

template<class Scalar>
Thyra::LinearOpTester< Scalar >::STANDARD_MEMBER_COMPOSITION_MEMBERS ( int  ,
num_rhs   
)

Set the number of right-hand-sides in the multivectors.

template<class Scalar>
void Thyra::LinearOpTester< Scalar >::enable_all_tests ( const bool  enable_all_tests  ) 

Enable or disable all tests.

Postconditions:

Definition at line 162 of file Thyra_LinearOpTester_def.hpp.

template<class Scalar>
void Thyra::LinearOpTester< Scalar >::set_all_warning_tol ( const ScalarMag  warning_tol  ) 

Set all the warning tolerances to the same value.

Postconditions:

Definition at line 171 of file Thyra_LinearOpTester_def.hpp.

template<class Scalar>
void Thyra::LinearOpTester< Scalar >::set_all_error_tol ( const ScalarMag  error_tol  ) 

Set all the error tolerances to the same value.

Postconditions:

Definition at line 180 of file Thyra_LinearOpTester_def.hpp.

template<class Scalar>
bool Thyra::LinearOpTester< Scalar >::check ( const LinearOpBase< Scalar > &  op,
const Ptr< MultiVectorRandomizerBase< Scalar > > &  rangeRandomizer,
const Ptr< MultiVectorRandomizerBase< Scalar > > &  domainRandomizer,
const Ptr< Teuchos::FancyOStream > &  out 
) const

Check a linear operator.

Parameters:
op [in] The linear operator to check.
out [in/out] If out!=NULL then trace output about the tests performed will be sent to *out.
rangeRandomizer [in] Randomizer strategy object for creating random vectors in the range of the operator op. If NULL then UniveralMultiVectorRandomizer is used intead.
domainRandomizer [in] Randomizer strategy object for creating random vectors in the domain of the operator op. If NULL then UniveralMultiVectorRandomizer is used intead.
Preconditions:

This function performs a number of tests on op:

All relative errors that exceed xxx_warning_tol() but do not exceed xxx_error_tol will result in special warning messages printed to *out (if out!=NULL).

Returns:
The function returns true if all of the tests where within the xxx_error_tol() and returns false if not.
The best way to see what this testing function is doing is to run the test with out!=NULL and to look at the implementation by clicking on the following link to the source code:

Definition at line 189 of file Thyra_LinearOpTester_def.hpp.

template<class Scalar>
bool Thyra::LinearOpTester< Scalar >::check ( const LinearOpBase< Scalar > &  op,
const Ptr< Teuchos::FancyOStream > &  out 
) const

Calls this->check(op,null,null,out,leadingIndent,indentSpacer).

Definition at line 569 of file Thyra_LinearOpTester_def.hpp.

template<class Scalar>
bool Thyra::LinearOpTester< Scalar >::compare ( const LinearOpBase< Scalar > &  op1,
const LinearOpBase< Scalar > &  op2,
const Ptr< MultiVectorRandomizerBase< Scalar > > &  domainRandomizer,
const Ptr< Teuchos::FancyOStream > &  out_arg 
) const

Check if two linear operators are the same or not.

Parameters:
op1 [in] The first linear operator
op2 [in] The second linear operator
domainRandomizer [in] Randomizer strategy object for creating random vectors in the domain of the operator op. If NULL then UniveralMultiVectorRandomizer is used intead.
out [in/out] If out!=NULL then trace output about the tests performed will be sent to *out.
leadingIndent [in] All output to *out will insert this spacer before each new line is printed. Default value "".
indentSpacer [in] All output to *out that is further indented will use this indentation. Default value " ".
This function checks if op1 and op2 are the same by checking that the range and domain spaces are compatible and then checking that sum(op1*v) == sum(op2*v) for various random vectors. The allowed warning and error tolerances are taken from linear_properties_warning_tol() and linear_properties_error_tol().

All relative errors that exceed xxx_warning_tol() but do not exceed xxx_error_tol will result in special warning messages printed to *out (if out!=NULL).

Returns:
The function returns true if all of the tests where within the xxx_error_tol() and returns false if not.
The best way to see what this testing function is doing is to run the test with out!=NULL and to look at the implementation by clicking on the following link to the source code:

Definition at line 580 of file Thyra_LinearOpTester_def.hpp.

template<class Scalar>
bool Thyra::LinearOpTester< Scalar >::compare ( const LinearOpBase< Scalar > &  op1,
const LinearOpBase< Scalar > &  op2,
const Ptr< Teuchos::FancyOStream > &  out_arg 
) const

Calls this->compare(op1,op2,NULL,out,leadingIndent,indentSpacer).

Definition at line 740 of file Thyra_LinearOpTester_def.hpp.

template<class Scalar>
bool Thyra::LinearOpTester< Scalar >::check ( const LinearOpBase< Scalar > &  op,
MultiVectorRandomizerBase< Scalar > *  rangeRandomizer,
MultiVectorRandomizerBase< Scalar > *  domainRandomizer,
Teuchos::FancyOStream out 
) const [inline]

Deprecated. Deprecated.

Definition at line 307 of file Thyra_LinearOpTester_decl.hpp.

template<class Scalar>
bool Thyra::LinearOpTester< Scalar >::check ( const LinearOpBase< Scalar > &  op,
Teuchos::FancyOStream out 
) const [inline]

Deprecated.

Definition at line 319 of file Thyra_LinearOpTester_decl.hpp.

template<class Scalar>
bool Thyra::LinearOpTester< Scalar >::compare ( const LinearOpBase< Scalar > &  op1,
const LinearOpBase< Scalar > &  op2,
MultiVectorRandomizerBase< Scalar > *  domainRandomizer,
Teuchos::FancyOStream out_arg 
) const [inline]

Deprecated.

Definition at line 328 of file Thyra_LinearOpTester_decl.hpp.

template<class Scalar>
bool Thyra::LinearOpTester< Scalar >::compare ( const LinearOpBase< Scalar > &  op1,
const LinearOpBase< Scalar > &  op2,
Teuchos::FancyOStream out_arg 
) const [inline]

Deprecated.

Definition at line 340 of file Thyra_LinearOpTester_decl.hpp.


The documentation for this class was generated from the following files:
Generated on Tue Jul 13 09:26:36 2010 for Thyra by  doxygen 1.4.7