Belos Package Browser (Single Doxygen Collection)
Development
Toggle main menu visibility
Loading...
Searching...
No Matches
test
RealSolverManager
test_lsqr_complex.cpp
Go to the documentation of this file.
1
//@HEADER
2
// ************************************************************************
3
//
4
// Belos: Block Linear Solvers Package
5
// Copyright 2004 Sandia Corporation
6
//
7
// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
8
// the U.S. Government retains certain rights in this software.
9
//
10
// Redistribution and use in source and binary forms, with or without
11
// modification, are permitted provided that the following conditions are
12
// met:
13
//
14
// 1. Redistributions of source code must retain the above copyright
15
// notice, this list of conditions and the following disclaimer.
16
//
17
// 2. Redistributions in binary form must reproduce the above copyright
18
// notice, this list of conditions and the following disclaimer in the
19
// documentation and/or other materials provided with the distribution.
20
//
21
// 3. Neither the name of the Corporation nor the names of the
22
// contributors may be used to endorse or promote products derived from
23
// this software without specific prior written permission.
24
//
25
// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
26
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
29
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36
//
37
// Questions? Contact Michael A. Heroux (maherou@sandia.gov)
38
//
39
// ************************************************************************
40
//@HEADER
41
42
#include <
BelosConfigDefs.hpp
>
43
#include <Teuchos_UnitTestHarness.hpp>
44
#include <Teuchos_CommandLineProcessor.hpp>
45
#include <
BelosLinearProblem.hpp
>
46
#include <
BelosLSQRSolMgr.hpp
>
47
#include <complex>
48
49
#include "
MyMultiVec.hpp
"
50
#include "
MyBetterOperator.hpp
"
51
#include "
MyOperator.hpp
"
52
53
//
54
// mfh 20 Jan 2014: This test ensures the following:
55
//
56
// 1. Belos::LSQRSolMgr can compile whether its ScalarType (first)
57
// template parameter is real or complex.
58
// 2. Belos::LSQRSolMgr's constructor throws std::logic_error if and
59
// only if its ScalarType (first) template parameter is complex.
60
//
61
// At some point, if LSQRSolMgr gets fixed so that it works with
62
// complex ScalarType, the second test will no longer pass. This will
63
// be a good thing! The test should still be built in that case, in
64
// order to demonstrate that LSQRSolMgr compiles for complex
65
// ScalarType. However, in that case, the TEST_THROW macro should be
66
// changed to TEST_NOTHROW, and the macro's second argument should be
67
// removed.
68
//
69
// This test requires that Trilinos was compiled with complex
70
// arithmetic support enabled.
71
//
72
73
TEUCHOS_UNIT_TEST
( LSQR, RealDoesNotThrow )
74
{
75
using
Teuchos::RCP;
76
using
Teuchos::rcp;
77
typedef
double
ST;
78
typedef
Belos::MultiVec<ST>
MV;
79
typedef
Belos::Operator<ST>
OP;
80
// typedef Belos::MultiVecTraits<ST, MV> MVT;
81
// typedef Belos::OperatorTraits<ST, MV, OP> OPT;
82
typedef
Belos::LSQRSolMgr<ST, MV, OP>
sol_mgr_type;
83
84
RCP<sol_mgr_type> solver;
85
TEST_NOTHROW( solver = rcp (
new
sol_mgr_type ()) );
86
}
87
88
TEUCHOS_UNIT_TEST
( LSQR, ComplexThrows )
89
{
90
using
Teuchos::RCP;
91
using
Teuchos::rcp;
92
typedef
std::complex<double> ST;
93
typedef
Belos::MultiVec<ST>
MV;
94
typedef
Belos::Operator<ST>
OP;
95
// typedef Belos::MultiVecTraits<ST, MV> MVT;
96
// typedef Belos::OperatorTraits<ST, MV, OP> OPT;
97
typedef
Belos::LSQRSolMgr<ST, MV, OP>
sol_mgr_type;
98
99
// no longer throws due to DII system needing to make dummy constructor
100
RCP<sol_mgr_type> solver = rcp (
new
sol_mgr_type ());
101
TEST_THROW( solver->getNumIters() , std::logic_error );
// throws!
102
}
BelosConfigDefs.hpp
Belos header file which uses auto-configuration information to include necessary C++ headers.
BelosLSQRSolMgr.hpp
LSQRSolMgr: interface to the LSQR method.
BelosLinearProblem.hpp
Class which describes the linear problem to be solved by the iterative solver.
MyBetterOperator.hpp
MyMultiVec.hpp
MyOperator.hpp
Belos::LSQRSolMgr
LSQR method (for linear systems and linear least-squares problems).
Definition
BelosLSQRSolMgr.hpp:222
Belos::MultiVec
Interface for multivectors used by Belos' linear solvers.
Definition
BelosMultiVec.hpp:91
Belos::Operator
Alternative run-time polymorphic interface for operators.
Definition
BelosOperator.hpp:80
TEUCHOS_UNIT_TEST
TEUCHOS_UNIT_TEST(LSQR, RealDoesNotThrow)
Definition
test_lsqr_complex.cpp:73
Generated by
1.17.0