Loading...
Searching...
No Matches
solve.h
// Copyright (C) 2007-2011 Anders Logg
//
// This file is part of DOLFIN.
//
// DOLFIN is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// DOLFIN is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with DOLFIN. If not, see <http://www.gnu.org/licenses/>.
//
// Modified by Ola Skavhaug 2008.
// Modified by Garth N. Wells 2011.
//
// First added: 2007-04-30
// Last changed: 2011-10-19
#ifndef __SOLVE_LA_H
#define __SOLVE_LA_H
#include <map>
#include <string>
#include <vector>
#include <dolfin/common/types.h>
namespace dolfin
{
// Forward declarations
class GenericLinearOperator;
class GenericVector;
std::size_t solve(const GenericLinearOperator& A, GenericVector& x,
const GenericVector& b,
std::string method = "lu",
std::string preconditioner = "none");
void list_linear_algebra_backends();
void list_linear_solver_methods();
void list_lu_solver_methods();
void list_krylov_solver_methods();
void list_krylov_solver_preconditioners();
bool has_linear_algebra_backend(std::string backend);
bool has_lu_solver_method(std::string method);
bool has_krylov_solver_method(std::string method);
bool has_krylov_solver_preconditioner(std::string preconditioner);
std::map<std::string, std::string> linear_algebra_backends();
std::map<std::string, std::string> linear_solver_methods();
std::map<std::string, std::string> lu_solver_methods();
std::map<std::string, std::string> krylov_solver_methods();
std::map<std::string, std::string> krylov_solver_preconditioners();
double residual(const GenericLinearOperator& A, const GenericVector& x,
const GenericVector& b);
double norm(const GenericVector& x, std::string norm_type="l2");
double normalize(GenericVector& x,
std::string normalization_type = "average");
}
#endif
dolfin::GenericLinearOperator
Definition GenericLinearOperator.h:43
dolfin::GenericVector
This class defines a common interface for vectors.
Definition GenericVector.h:48
dolfin
Definition adapt.h:30
dolfin::list_lu_solver_methods
void list_lu_solver_methods()
List available LU methods for current linear algebra backend.
Definition solve.cpp:63
dolfin::krylov_solver_methods
std::map< std::string, std::string > krylov_solver_methods()
Definition solve.cpp:132
dolfin::solve
void solve(const Equation &equation, Function &u, const double tol, GoalFunctional &M)
Definition adaptivesolve.cpp:33
dolfin::has_krylov_solver_preconditioner
bool has_krylov_solver_preconditioner(std::string preconditioner)
Definition solve.cpp:156
dolfin::has_krylov_solver_method
bool has_krylov_solver_method(std::string method)
Definition solve.cpp:149
dolfin::lu_solver_methods
std::map< std::string, std::string > lu_solver_methods()
Definition solve.cpp:127
dolfin::list_krylov_solver_methods
void list_krylov_solver_methods()
List available Krylov methods for current linear algebra backend.
Definition solve.cpp:75
dolfin::list_krylov_solver_preconditioners
void list_krylov_solver_preconditioners()
Definition solve.cpp:87
dolfin::linear_solver_methods
std::map< std::string, std::string > linear_solver_methods()
Definition solve.cpp:100
dolfin::has_lu_solver_method
bool has_lu_solver_method(std::string method)
Definition solve.cpp:142
dolfin::list_linear_solver_methods
void list_linear_solver_methods()
List available solver methods for current linear algebra backend.
Definition solve.cpp:51
dolfin::linear_algebra_backends
std::map< std::string, std::string > linear_algebra_backends()
Return available linear algebra backends.
Definition solve.cpp:244
dolfin::list_linear_algebra_backends
void list_linear_algebra_backends()
List available linear algebra backends.
Definition solve.cpp:233
dolfin::norm
double norm(const GenericVector &x, std::string norm_type="l2")
Definition solve.cpp:173
dolfin::krylov_solver_preconditioners
std::map< std::string, std::string > krylov_solver_preconditioners()
Definition solve.cpp:137
dolfin::normalize
double normalize(GenericVector &x, std::string normalization_type="average")
Normalize vector according to given normalization type.
Definition solve.cpp:178
dolfin::residual
double residual(const GenericLinearOperator &A, const GenericVector &x, const GenericVector &b)
Compute residual ||Ax - b||.
Definition solve.cpp:163
dolfin::has_linear_algebra_backend
bool has_linear_algebra_backend(std::string backend)
Return true if a specific linear algebra backend is supported.
Definition solve.cpp:209