monolish  0.14.2
MONOlithic LIner equation Solvers for Highly-parallel architecture
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 }
49  const int n);
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