|
Belos Package Browser (Single Doxygen Collection)
Development
|
Go to the documentation of this file.
63 using namespace Teuchos;
65 int main(
int argc,
char *argv[]) {
68 typedef std::complex<double> ST;
70 typedef std::complex<double> ST;
72 std::cout <<
"Not compiled with std::complex support." << std::endl;
73 std::cout <<
"End Result: TEST FAILED" << std::endl;
78 typedef SCT::magnitudeType MT;
84 ST zero = SCT::zero();
95 bool norm_failure =
false;
96 bool proc_verbose =
false;
101 int maxrestarts = 15;
106 cmdp.
setOption(
"verbose",
"quiet",&verbose,
"Print messages and results.");
107 cmdp.
setOption(
"pseudo",
"regular",&pseudo,
"Use pseudo-block TFQMR to solve the linear systems.");
108 cmdp.
setOption(
"frequency",&frequency,
"Solvers frequency for printing residuals (#iters).");
109 cmdp.
setOption(
"tol",&tol,
"Relative residual tolerance used by TFQMR solver.");
110 cmdp.
setOption(
"num-rhs",&numrhs,
"Number of right-hand sides to be solved for.");
111 cmdp.
setOption(
"num-restarts",&maxrestarts,
"Maximum number of restarts allowed for the TFQMR solver.");
112 cmdp.
setOption(
"blocksize",&blocksize,
"Block size used by TFQMR.");
113 cmdp.
setOption(
"subspace-length",&length,
"Maximum dimension of block-subspace used by TFQMR solver.");
118 proc_verbose = verbose && (MyPID==0);
125 #ifndef HAVE_BELOS_TRIUTILS
126 std::cout <<
"This test requires Triutils. Please configure with --enable-triutils." << std::endl;
128 std::cout <<
"End Result: TEST FAILED" << std::endl;
137 std::vector<ST> diag( dim, (ST)4.0 );
144 int maxits = dim/blocksize;
147 belosList.
set(
"Num Blocks", length );
148 belosList.
set(
"Block Size", blocksize );
149 belosList.
set(
"Maximum Iterations", maxits );
150 belosList.
set(
"Maximum Restarts", maxrestarts );
151 belosList.
set(
"Convergence Tolerance", tol );
156 belosList.
set(
"Output Frequency", frequency );
167 MVT::MvInit( *rhs, 1.0 );
168 MVT::MvInit( *soln, zero );
174 bool set = problem->setProblem();
177 std::cout << std::endl <<
"ERROR: Belos::LinearProblem failed to set up correctly!" << std::endl;
196 std::cout << std::endl << std::endl;
197 std::cout <<
"Dimension of matrix: " << dim << std::endl;
198 std::cout <<
"Number of right-hand sides: " << numrhs << std::endl;
199 std::cout <<
"Block size used by solver: " << blocksize << std::endl;
200 std::cout <<
"Max number of TFQMR iterations: " << maxits << std::endl;
201 std::cout <<
"Relative residual tolerance: " << tol << std::endl;
202 std::cout << std::endl;
212 OPT::Apply( *
A, *soln, *temp );
213 MVT::MvAddMv( one, *rhs, -one, *temp, *temp );
214 std::vector<MT> norm_num(numrhs), norm_denom(numrhs);
215 MVT::MvNorm( *temp, norm_num );
216 MVT::MvNorm( *rhs, norm_denom );
217 for (
int i=0; i<numrhs; ++i) {
219 std::cout <<
"Relative residual "<<i<<
" : " << norm_num[i] / norm_denom[i] << std::endl;
220 if ( norm_num[i] / norm_denom[i] > tol ) {
228 std::cout <<
"End Result: TEST PASSED" << std::endl;
231 std::cout <<
"End Result: TEST FAILED" << std::endl;
236 return ( success ? EXIT_SUCCESS : EXIT_FAILURE );
Belos header file which uses auto-configuration information to include necessary C++ headers.
Class which defines basic traits for the operator type.
Class which describes the linear problem to be solved by the iterative solver.
Interface for multivectors used by Belos' linear solvers.
The Belos::TFQMRSolMgr provides a powerful and fully-featured solver manager over the TFQMR linear so...
The Belos::PseudoBlockTFQMRSolMgr provides a solver manager for the pseudo-block TFQMR linear solver.
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
A linear system to solve, and its associated information.
int main(int argc, char *argv[])
std::string Belos_Version()
ParameterList & set(std::string const &name, T const &value, std::string const &docString="", RCP< const ParameterEntryValidator > const &validator=null)
myDepList set(dependee1, "val1")
The Belos::PseudoBlockTFQMRSolMgr provides a powerful and fully-featured solver manager over the pseu...
ReturnType
Whether the Belos solve converged for all linear systems.
void setOption(const char option_true[], const char option_false[], bool *option_val, const char documentation[]=NULL)
Simple example of a user's defined Belos::Operator class.
The Belos::TFQMRSolMgr provides a solver manager for the TFQMR linear solver.
EParseCommandLineReturn parse(int argc, char *argv[], std::ostream *errout=&std::cerr) const
Traits class which defines basic operations on multivectors.
Alternative run-time polymorphic interface for operators.
#define TEUCHOS_STANDARD_CATCH_STATEMENTS(VERBOSE, ERR_STREAM, SUCCESS_FLAG)
Simple example of a user's defined Belos::MultiVec class.