26 #ifndef OOMPH_TRILINOS_SOLVER_HEADER
27 #define OOMPH_TRILINOS_SOLVER_HEADER
53 bool use_epetra_values =
false)
91 std::ostringstream error_message;
92 error_message <<
"SetUseTranspose() is a pure virtual Epetra_Operator "
93 <<
"member that is not required for a Preconditioner"
100 int Apply(
const Epetra_MultiVector&
X, Epetra_MultiVector&
Y)
const
102 std::ostringstream error_message;
103 error_message <<
"Apply() is a pure virtual Epetra_Operator member"
104 <<
"that is not required for a Preconditioner" << std::endl;
116 Epetra_MultiVector& epetra_z)
const
123 epetra_r.ExtractView(&r_pt);
132 unsigned nrow_local =
134 for (
unsigned i = 0;
i < nrow_local;
i++)
136 oomph_r[
i] = r_pt[0][
i];
145 epetra_z.ExtractView(&z_pt);
161 unsigned nrow_local =
163 for (
unsigned i = 0;
i < nrow_local;
i++)
165 epetra_z.ReplaceMyValue(
i, 0, oomph_z[
i]);
176 std::ostringstream error_message;
177 error_message <<
"NormInf() is a pure virtual Epetra_Operator member"
178 <<
"that is not required for a Preconditioner" << std::endl;
192 std::ostringstream error_message;
194 <<
"UseTranspose() is a pure virtual Epetra_Operator member "
195 <<
"that is not required for a Preconditioner" << std::endl;
203 std::ostringstream error_message;
204 error_message <<
"HasNormInf() is a pure virtual Epetra_Operator member "
205 <<
"that is not required for a Preconditioner" << std::endl;
211 const Epetra_Comm&
Comm()
const
int i
Definition: BiCGSTAB_step_by_step.cpp:9
Array< double, 1, 3 > e(1./3., 0.5, 2.)
The conjugate gradient method.
Definition: iterative_linear_solver.h:410
LinearAlgebraDistribution * distribution_pt() const
access to the LinearAlgebraDistribution
Definition: linear_algebra_distribution.h:457
Definition: matrices.h:261
Definition: double_vector.h:58
void set_external_values(const LinearAlgebraDistribution *const &dist_pt, double *external_values, bool delete_external_values)
Definition: double_vector.h:167
void build(const DoubleVector &old_vector)
Just copys the argument DoubleVector.
Definition: double_vector.cc:35
Definition: iterative_linear_solver.h:54
double Tolerance
Convergence tolerance.
Definition: iterative_linear_solver.h:239
Preconditioner *& preconditioner_pt()
Access function to preconditioner.
Definition: iterative_linear_solver.h:95
unsigned Max_iter
Maximum number of iterations.
Definition: iterative_linear_solver.h:242
OomphCommunicator * communicator_pt() const
const access to the communicator pointer
Definition: linear_algebra_distribution.h:335
unsigned nrow_local() const
Definition: linear_algebra_distribution.h:193
bool Enable_resolve
Definition: linear_solver.h:73
Definition: oomph_definitions.h:222
Definition: trilinos_solver.h:43
Epetra_SerialComm Operator_comm
An Epetra Serial Comm object.
Definition: trilinos_solver.h:238
Preconditioner * Oomph_lib_preconditioner_pt
A pointer to the oomph-lib preconditioner.
Definition: trilinos_solver.h:231
const Epetra_Map & OperatorDomainMap() const
Epetra_Operator member - OperatorDomainMap.
Definition: trilinos_solver.h:217
const Epetra_Map & OperatorRangeMap() const
Epetra_Operator member - OperatorRangeMap.
Definition: trilinos_solver.h:223
OomphLibPreconditionerEpetraOperator(const OomphLibPreconditionerEpetraOperator &)=delete
Broken copy constructor.
bool Use_epetra_values
Definition: trilinos_solver.h:244
const char * Label() const
Epetra_Operator::Label - returns a string describing the operator.
Definition: trilinos_solver.h:184
bool HasNormInf() const
Broken Epetra_Operator member - HasNormInf.
Definition: trilinos_solver.h:201
int ApplyInverse(const Epetra_MultiVector &epetra_r, Epetra_MultiVector &epetra_z) const
Definition: trilinos_solver.h:115
~OomphLibPreconditionerEpetraOperator()
Definition: trilinos_solver.h:75
void operator=(const OomphLibPreconditionerEpetraOperator &)=delete
Broken assignment operator.
std::string Preconditioner_label
a label for the preconditioner ( for Epetra_Operator::Label() )
Definition: trilinos_solver.h:253
bool UseTranspose() const
Broken Epetra_Operator member - UseTranspose.
Definition: trilinos_solver.h:190
double NormInf() const
Broken Epetra_Operator member - NormInf.
Definition: trilinos_solver.h:174
OomphLibPreconditionerEpetraOperator(Preconditioner *preconditioner_pt, bool use_epetra_values=false)
Definition: trilinos_solver.h:52
int SetUseTranspose(bool UseTranspose)
Broken Epetra_Operator member - SetUseTranspose.
Definition: trilinos_solver.h:89
const Epetra_Comm & Comm() const
Returns the Epetra MPI_Comm object.
Definition: trilinos_solver.h:211
int Apply(const Epetra_MultiVector &X, Epetra_MultiVector &Y) const
Broken Epetra_Operator member - Apply.
Definition: trilinos_solver.h:100
Epetra_Map * Operator_map_pt
Definition: trilinos_solver.h:250
Definition: preconditioner.h:54
virtual void clean_up_memory()
Clean up memory (empty). Generic interface function.
Definition: preconditioner.h:147
virtual void preconditioner_solve(const DoubleVector &r, DoubleVector &z)=0
Definition: problem.h:151
Definition: trilinos_solver.h:267
bool Using_problem_based_solve
Definition: trilinos_solver.h:535
void resolve(const DoubleVector &rhs, DoubleVector &solution)
Definition: trilinos_solver.cc:489
bool If_oomphlib_preconditioner_use_epetra_values
Definition: trilinos_solver.h:556
void solver_setup(DoubleMatrixBase *const &matrix_pt)
Definition: trilinos_solver.cc:283
void disable_aztecoo_workaround_for_epetra_matrix_setup()
Definition: trilinos_solver.h:333
unsigned Iterations
Stores number of iterations used.
Definition: trilinos_solver.h:506
TrilinosAztecOOSolver()
Constructor.
Definition: trilinos_solver.h:270
Epetra_CrsMatrix * Epetra_matrix_pt
A pointer for the linear system matrix in Epetra_CrsMatrix format.
Definition: trilinos_solver.h:538
void clean_up_memory()
Definition: trilinos_solver.h:347
double jacobian_setup_time()
Function to return Jacobian_setup_time;.
Definition: trilinos_solver.h:448
bool Assemble_serial_jacobian
Definition: trilinos_solver.h:527
void solve_using_AztecOO(Epetra_Vector *&rhs_pt, Epetra_Vector *&soln_pt)
Definition: trilinos_solver.cc:570
unsigned & max_iter()
Access function to Max_iter.
Definition: trilinos_solver.h:424
bool Delete_matrix
Definition: trilinos_solver.h:523
void disable_delete_matrix()
Call if the matrix can not be deleted (default)
Definition: trilinos_solver.h:418
DoubleMatrixBase * Oomph_matrix_pt
Oomph lib matrix pointer.
Definition: trilinos_solver.h:545
Epetra_Operator * Epetra_preconditioner_pt
Definition: trilinos_solver.h:542
~TrilinosAztecOOSolver()
Destructor - delete the solver and the matrices.
Definition: trilinos_solver.h:304
void disable_resolve()
Definition: trilinos_solver.h:405
void solve(Problem *const &problem_pt, DoubleVector &solution)
Definition: trilinos_solver.cc:43
void enable_assemble_serial_jacobian()
Definition: trilinos_solver.h:461
double linear_solver_solution_time()
Function to return Linear_solver_solution_time.
Definition: trilinos_solver.h:454
AztecOO_solver_types
Enumerated list to define which AztecOO solver is used.
Definition: trilinos_solver.h:484
@ GMRES
Definition: trilinos_solver.h:486
@ CG
Definition: trilinos_solver.h:485
unsigned & solver_type()
Access function to Solver_type.
Definition: trilinos_solver.h:442
void disable_assemble_serial_jacobian()
Unset the assembly of the serial jacobian.
Definition: trilinos_solver.h:467
TrilinosAztecOOSolver(const TrilinosAztecOOSolver &)=delete
Broken copy constructor.
void enable_aztecoo_workaround_for_epetra_matrix_setup()
Definition: trilinos_solver.h:326
unsigned Solver_type
Definition: trilinos_solver.h:531
unsigned iterations() const
Acess function to Iterations.
Definition: trilinos_solver.h:430
double Linear_solver_solution_time
Stores time for the solution (excludes time to set up preconditioner)
Definition: trilinos_solver.h:515
Problem * Problem_pt
Definition: trilinos_solver.h:550
bool is_aztecoo_workaround_for_epetra_matrix_setup_enabled()
Definition: trilinos_solver.h:340
void enable_delete_matrix()
Call if the matrix can be deleted.
Definition: trilinos_solver.h:412
AztecOO * AztecOO_solver_pt
Pointer to the AztecOO solver.
Definition: trilinos_solver.h:509
void operator=(const TrilinosAztecOOSolver &)=delete
Broken assignment operator.
bool Use_aztecoo_workaround_for_epetra_matrix_setup
Definition: trilinos_solver.h:503
double & tolerance()
Access function to Tolerance.
Definition: trilinos_solver.h:436
double Jacobian_setup_time
Stores set up time for Jacobian.
Definition: trilinos_solver.h:512
#define X
Definition: icosphere.cpp:20
void solution(const Vector< double > &x, Vector< double > &u)
Definition: two_d_biharmonic.cc:113
std::string string(const unsigned &i)
Definition: oomph_definitions.cc:286
Epetra_Map * create_epetra_map(const LinearAlgebraDistribution *const dist)
create an Epetra_Map corresponding to the LinearAlgebraDistribution
Definition: trilinos_helpers.cc:977
DRAIG: Change all instances of (SPATIAL_DIM) to (DIM-1).
Definition: AnisotropicHookean.h:10
#define OOMPH_EXCEPTION_LOCATION
Definition: oomph_definitions.h:61
#define OOMPH_CURRENT_FUNCTION
Definition: oomph_definitions.h:86
const char Y
Definition: test/EulerAngles.cpp:32