monolish
0.14.2
MONOlithic LIner equation Solvers for Highly-parallel architecture
src
equation
precond.cpp
Go to the documentation of this file.
1
#include "../../include/monolish_blas.hpp"
2
#include "../../include/monolish_equation.hpp"
3
#include "../internal/monolish_internal.hpp"
4
5
namespace
monolish
{
7
// solver set precond /////////////////////////////////
9
template
<
typename
MATRIX,
typename
T>
10
template
<
class
PRECOND>
11
void
solver::solver<MATRIX, T>::set_create_precond
(PRECOND &p) {
12
Logger
&logger =
Logger::get_instance
();
13
logger.
util_in
(
monolish_func
);
14
precond.create_precond =
15
std::bind(&PRECOND::create_precond, &p, std::placeholders::_1);
16
logger.
util_out
();
17
}
18
19
// none
20
template
void
solver::solver<matrix::Dense<double>
,
double
>::set_create_precond(
21
equation::none
<
matrix::Dense<double>
,
double
> &p);
22
template
void
solver::solver<matrix::Dense<float>
,
float
>::set_create_precond(
23
equation::none
<
matrix::Dense<float>
,
float
> &p);
24
25
template
void
solver::solver<matrix::CRS<double>
,
double
>::set_create_precond(
26
equation::none
<
matrix::CRS<double>
,
double
> &p);
27
template
void
solver::solver<matrix::CRS<float>
,
float
>::set_create_precond(
28
equation::none
<
matrix::CRS<float>
,
float
> &p);
29
30
template
void
31
solver::solver<matrix::LinearOperator<double>
,
double
>::set_create_precond(
32
equation::none
<
matrix::LinearOperator<double>
,
double
> &p);
33
template
void
34
solver::solver<matrix::LinearOperator<float>
,
float
>::set_create_precond(
35
equation::none
<
matrix::LinearOperator<float>
,
float
> &p);
36
37
// jacobi
38
template
void
solver::solver<matrix::Dense<double>
,
double
>::set_create_precond(
39
equation::Jacobi
<
matrix::Dense<double>
,
double
> &p);
40
template
void
solver::solver<matrix::Dense<float>
,
float
>::set_create_precond(
41
equation::Jacobi
<
matrix::Dense<float>
,
float
> &p);
42
43
template
void
solver::solver<matrix::CRS<double>
,
double
>::set_create_precond(
44
equation::Jacobi
<
matrix::CRS<double>
,
double
> &p);
45
template
void
solver::solver<matrix::CRS<float>
,
float
>::set_create_precond(
46
equation::Jacobi
<
matrix::CRS<float>
,
float
> &p);
47
48
template
void
49
solver::solver<matrix::LinearOperator<double>
,
double
>::set_create_precond(
50
equation::Jacobi
<
matrix::LinearOperator<double>
,
double
> &p);
51
template
void
52
solver::solver<matrix::LinearOperator<float>
,
float
>::set_create_precond(
53
equation::Jacobi
<
matrix::LinearOperator<float>
,
float
> &p);
54
56
template
<
typename
MATRIX,
typename
T>
57
template
<
class
PRECOND>
58
void
solver::solver<MATRIX, T>::set_apply_precond
(PRECOND &p) {
59
Logger
&logger =
Logger::get_instance
();
60
logger.
util_in
(
monolish_func
);
61
precond.apply_precond =
62
std::bind(&PRECOND::apply_precond, &p, std::placeholders::_1,
63
std::placeholders::_2);
64
logger.
util_out
();
65
}
66
// none
67
template
void
solver::solver<matrix::Dense<double>
,
double
>::set_apply_precond(
68
equation::none
<
matrix::Dense<double>
,
double
> &p);
69
template
void
solver::solver<matrix::Dense<float>
,
float
>::set_apply_precond(
70
equation::none
<
matrix::Dense<float>
,
float
> &p);
71
72
template
void
solver::solver<matrix::CRS<double>
,
double
>::set_apply_precond(
73
equation::none
<
matrix::CRS<double>
,
double
> &p);
74
template
void
solver::solver<matrix::CRS<float>
,
float
>::set_apply_precond(
75
equation::none
<
matrix::CRS<float>
,
float
> &p);
76
77
template
void
78
solver::solver<matrix::LinearOperator<double>
,
double
>::set_apply_precond(
79
equation::none
<
matrix::LinearOperator<double>
,
double
> &p);
80
template
void
81
solver::solver<matrix::LinearOperator<float>
,
float
>::set_apply_precond(
82
equation::none
<
matrix::LinearOperator<float>
,
float
> &p);
83
84
// jacobi
85
template
void
solver::solver<matrix::Dense<double>
,
double
>::set_apply_precond(
86
equation::Jacobi
<
matrix::Dense<double>
,
double
> &p);
87
template
void
solver::solver<matrix::Dense<float>
,
float
>::set_apply_precond(
88
equation::Jacobi
<
matrix::Dense<float>
,
float
> &p);
89
90
template
void
solver::solver<matrix::CRS<double>
,
double
>::set_apply_precond(
91
equation::Jacobi
<
matrix::CRS<double>
,
double
> &p);
92
template
void
solver::solver<matrix::CRS<float>
,
float
>::set_apply_precond(
93
equation::Jacobi
<
matrix::CRS<float>
,
float
> &p);
94
95
template
void
96
solver::solver<matrix::LinearOperator<double>
,
double
>::set_apply_precond(
97
equation::Jacobi
<
matrix::LinearOperator<double>
,
double
> &p);
98
template
void
99
solver::solver<matrix::LinearOperator<float>
,
float
>::set_apply_precond(
100
equation::Jacobi
<
matrix::LinearOperator<float>
,
float
> &p);
101
}
// namespace monolish
monolish::matrix::LinearOperator
Linear Operator imitating Matrix.
Definition:
monolish_coo.hpp:37
monolish_func
#define monolish_func
Definition:
monolish_logger.hpp:9
monolish::solver::solver::set_apply_precond
void set_apply_precond(PRECOND &p)
set precondition apply fucntion
Definition:
precond.cpp:58
monolish::Logger
logger class (singleton, for developper class)
Definition:
monolish_logger.hpp:19
monolish::matrix::Dense
Dense format Matrix.
Definition:
monolish_coo.hpp:35
monolish::Logger::util_out
void util_out()
Definition:
logger_utils.cpp:123
monolish::solver::solver
solver base class
Definition:
monolish_solver.hpp:27
monolish::Logger::util_in
void util_in(const std::string func_name)
Definition:
logger_utils.cpp:113
monolish
Definition:
monolish_matrix_blas.hpp:10
monolish::solver::solver::set_create_precond
void set_create_precond(PRECOND &p)
set precondition create fucntion
Definition:
precond.cpp:11
monolish::equation::none
none solver class(nothing to do)
Definition:
monolish_equation.hpp:31
monolish::equation::Jacobi
Jacobi solver class.
Definition:
monolish_equation.hpp:159
monolish::Logger::get_instance
static Logger & get_instance()
Definition:
monolish_logger.hpp:42
monolish::matrix::CRS
Compressed Row Storage (CRS) format Matrix.
Definition:
monolish_coo.hpp:36
Generated by
1.8.17