monolish
0.14.2
MONOlithic LIner equation Solvers for Highly-parallel architecture
src
utils
create_matrix
laplacian_2D5p.cpp
Go to the documentation of this file.
1
#include "../../../include/monolish_blas.hpp"
2
#include "../../internal/monolish_internal.hpp"
3
4
namespace
monolish
{
5
6
template
<
typename
T>
7
matrix::COO<T>
util::laplacian_matrix_2D_5p
(
const
int
m,
const
int
n) {
8
Logger
&logger =
Logger::get_instance
();
9
logger.
util_in
(
monolish_func
);
10
11
int
size = m * n;
12
matrix::COO<T>
mat(size, size);
13
14
int
ctr = 0;
15
int
jj = 0;
16
for
(
int
ii = 0; ii < size; ii++) {
17
int
i = ii / m;
18
int
j = ii - i * m;
19
if
(i > 0) {
20
jj = ii - m;
21
mat.
insert
(ii, jj, -1.0);
22
ctr++;
23
}
24
if
(i < n - 1) {
25
jj = ii + m;
26
mat.
insert
(ii, jj, -1.0);
27
ctr++;
28
}
29
30
mat.
insert
(ii, ii, 4.0);
31
ctr++;
32
33
if
(j > 0) {
34
jj = ii - 1;
35
mat.
insert
(ii, jj, -1.0);
36
ctr++;
37
}
38
if
(j < m - 1) {
39
jj = ii + 1;
40
mat.
insert
(ii, jj, -1.0);
41
ctr++;
42
}
43
}
44
logger.
util_out
();
45
46
return
mat;
47
}
48
template
matrix::COO<double>
util::laplacian_matrix_2D_5p
(
const
int
m,
49
const
int
n);
50
template
matrix::COO<float>
util::laplacian_matrix_2D_5p
(
const
int
m,
51
const
int
n);
52
53
}
// namespace monolish
monolish_func
#define monolish_func
Definition:
monolish_logger.hpp:9
monolish::Logger
logger class (singleton, for developper class)
Definition:
monolish_logger.hpp:19
monolish::matrix::COO::insert
void insert(const size_t m, const size_t n, const Float val)
insert element to (m, n)
Definition:
at_insert_sort_coo.cpp:30
monolish::Logger::util_out
void util_out()
Definition:
logger_utils.cpp:123
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::matrix::COO
Coodinate (COO) format Matrix (need to sort)
Definition:
monolish_coo.hpp:45
monolish::util::laplacian_matrix_2D_5p
matrix::COO< T > laplacian_matrix_2D_5p(const int M, const int N)
create two dimensional Laplacian matrix using the five point central difference scheme
Definition:
laplacian_2D5p.cpp:7
monolish::Logger::get_instance
static Logger & get_instance()
Definition:
monolish_logger.hpp:42
Generated by
1.8.17