-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTensor.cpp
More file actions
56 lines (46 loc) · 1.1 KB
/
Tensor.cpp
File metadata and controls
56 lines (46 loc) · 1.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include "Tensor.h"
Tensor::Tensor(): N(10), M(10), hx(1/9), hy(1/9), k_r(1), k_t(1)
{
}
Tensor::Tensor(size_t n, size_t m, double h_x, double h_y, double kr, double kt): N(n), M(m), hx(h_x), hy(h_y), k_r(kr), k_t(kt)
{
}
double Tensor::K_11(size_t i, size_t j)
{
double x = i * hx;
double y = j * hy;
return 1.0;
return (k_r * x * x + k_t * y * y)/(x * x + y * y);
}
double Tensor::K_12(size_t i, size_t j)
{
double x = i * hx;
double y = j * hy;
return 0.0;
return (k_r - k_t) * x * y/(x * x + y * y);
}
double Tensor::K_21(size_t i, size_t j)
{
double x = i * hx;
double y = j * hy;
return 0.0;
return (k_r - k_t) * x * y/(x * x + y * y);
}
double Tensor::K_22(size_t i, size_t j)
{
double x = i * hx;
double y = j * hy;
return 1.0;
return (k_r * y * y + k_t * x * x)/(x * x + y * y);
}
double Tensor::getValue(size_t i, size_t j, int num_elem)
{
if (num_elem == 1)
return K_11(i, j);
if (num_elem == 2)
return K_12(i, j);
if (num_elem == 3)
return K_21(i, j);
else // num_elem = 4
return K_22(i, j);
}