Ifpack Package Browser (Single Doxygen Collection)
Development
Toggle main menu visibility
Loading...
Searching...
No Matches
test
AztecOO_LL
AztecOO_LL/build_solver.cpp
Go to the documentation of this file.
1
/*
2
//@HEADER
3
// ***********************************************************************
4
//
5
// Ifpack: Object-Oriented Algebraic Preconditioner Package
6
// Copyright (2002) Sandia Corporation
7
//
8
// Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
9
// license for use of this work by or on behalf of the U.S. Government.
10
//
11
// Redistribution and use in source and binary forms, with or without
12
// modification, are permitted provided that the following conditions are
13
// met:
14
//
15
// 1. Redistributions of source code must retain the above copyright
16
// notice, this list of conditions and the following disclaimer.
17
//
18
// 2. Redistributions in binary form must reproduce the above copyright
19
// notice, this list of conditions and the following disclaimer in the
20
// documentation and/or other materials provided with the distribution.
21
//
22
// 3. Neither the name of the Corporation nor the names of the
23
// contributors may be used to endorse or promote products derived from
24
// this software without specific prior written permission.
25
//
26
// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
27
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
29
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
30
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
31
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
32
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
33
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
34
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
35
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
36
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37
//
38
// Questions? Contact Michael A. Heroux (maherou@sandia.gov)
39
//
40
// ***********************************************************************
41
//@HEADER
42
*/
43
44
#ifndef _build_solver_hpp_
45
#define _build_solver_hpp_
46
47
#include "Teuchos_RefCountPtr.hpp"
48
#include "Teuchos_ParameterList.hpp"
49
#include "Teuchos_Time.hpp"
50
#include "
Epetra_LinearProblem.h
"
51
#include "
Epetra_Map.h
"
52
#include "
Epetra_Comm.h
"
53
#include "AztecOO.h"
54
#include "
Ifpack.h
"
55
56
#include "
ParameterHelper.hpp
"
57
58
Teuchos::RCP<AztecOO>
59
build_solver
(Teuchos::ParameterList& test_params,
60
Teuchos::RCP<Epetra_LinearProblem> problem)
61
{
62
Teuchos::ParameterList azparams;
63
if
(test_params.isSublist(
"AztecOO"
)) {
64
azparams = test_params.sublist(
"AztecOO"
);
65
}
66
67
Teuchos::RCP<AztecOO> solver = Teuchos::rcp(
new
AztecOO);
68
69
solver->SetProblem(*problem);
70
71
solver->SetParameters(azparams);
72
73
std::string ifpack_precond(
"not specified"
);
74
helper::GetParameter
(test_params,
"Ifpack_Preconditioner"
, ifpack_precond);
75
if
(ifpack_precond !=
"not specified"
) {
76
Ifpack
factory;
77
Ifpack_Preconditioner
* precond = factory.
Create
(ifpack_precond, problem->GetMatrix());
78
79
if
(test_params.isSublist(
"Ifpack"
)) {
80
Teuchos::ParameterList& ifparams = test_params.sublist(
"Ifpack"
);
81
precond->
SetParameters
(ifparams);
82
}
83
Teuchos::Time prec_time(
"precond"
);
84
prec_time.start();
85
precond->
Initialize
();
86
precond->
Compute
();
87
prec_time.stop();
88
int
my_proc = problem->GetMatrix()->RowMatrixRowMap().Comm().MyPID();
89
if
(my_proc == 0) {
90
std::cout <<
"Time to initialize/compute preconditioner: "
<< prec_time.totalElapsedTime() <<
"s"
<< std::endl;
91
}
92
93
solver->SetPrecOperator(precond);
94
}
95
96
return
solver;
97
}
98
#endif
99
ParameterHelper.hpp
build_solver
Teuchos::RCP< AztecOO > build_solver(Teuchos::ParameterList &test_params, Teuchos::RCP< Epetra_LinearProblem > problem)
Definition
AztecOO_LL/build_solver.cpp:59
Epetra_Comm.h
Epetra_LinearProblem.h
Epetra_Map.h
Ifpack.h
Ifpack_Preconditioner
Ifpack_Preconditioner: basic class for preconditioning in Ifpack.
Definition
Ifpack_Preconditioner.h:136
Ifpack_Preconditioner::Compute
virtual int Compute()=0
Computes all it is necessary to apply the preconditioner.
Ifpack_Preconditioner::SetParameters
virtual int SetParameters(Teuchos::ParameterList &List)=0
Sets all parameters for the preconditioner.
Ifpack_Preconditioner::Initialize
virtual int Initialize()=0
Computes all it is necessary to initialize the preconditioner.
Ifpack::Create
static Ifpack_Preconditioner * Create(EPrecType PrecType, Epetra_RowMatrix *Matrix, const int overlap=0, bool overrideSerialDefault=false)
Creates an instance of Ifpack_Preconditioner given the enum value of the preconditioner type (can not...
Definition
Ifpack.cpp:253
Ifpack
Definition
ifp_parameters.cpp:50
helper::GetParameter
void GetParameter(const Teuchos::ParameterList ¶ms, const std::string &name, T &value)
Set a value from a ParameterList if a parameter with the specified name exists.
Definition
AztecOO/ParameterHelper.hpp:55
Generated by
1.17.0