17 #include <deal.II/base/polynomials_adini.h> 19 #define ENTER_COEFFICIENTS( \ 20 koefs, z, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) \ 35 DEAL_II_NAMESPACE_OPEN
48 ENTER_COEFFICIENTS(
coef, 0, 1, 0, 0, -3, -3, -1, 2, 2, 3, 3, -2, -2);
49 ENTER_COEFFICIENTS(
coef, 1, 0, 1, 0, -2, 0, -1, 1, 0, 0, 2, -1, 0);
50 ENTER_COEFFICIENTS(
coef, 2, 0, 0, 1, 0, -2, -1, 0, 1, 2, 0, 0, -1);
51 ENTER_COEFFICIENTS(
coef, 3, 0, 0, 0, 3, 0, 1, -2, 0, -3, -3, 2, 2);
52 ENTER_COEFFICIENTS(
coef, 4, 0, 0, 0, -1, 0, 0, 1, 0, 0, 1, -1, 0);
53 ENTER_COEFFICIENTS(
coef, 5, 0, 0, 0, 0, 0, 1, 0, 0, -2, 0, 0, 1);
54 ENTER_COEFFICIENTS(
coef, 6, 0, 0, 0, 0, 3, 1, 0, -2, -3, -3, 2, 2);
55 ENTER_COEFFICIENTS(
coef, 7, 0, 0, 0, 0, 0, 1, 0, 0, 0, -2, 1, 0);
56 ENTER_COEFFICIENTS(
coef, 8, 0, 0, 0, 0, -1, 0, 0, 1, 1, 0, 0, -1);
57 ENTER_COEFFICIENTS(
coef, 9, 0, 0, 0, 0, 0, -1, 0, 0, 3, 3, -2, -2);
58 ENTER_COEFFICIENTS(
coef, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0);
59 ENTER_COEFFICIENTS(
coef, 11, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 1);
61 ENTER_COEFFICIENTS(
dx, 0, 0, -6, -1, 6, 3, 6, 0, -2, 0, -6, 0, 0);
62 ENTER_COEFFICIENTS(
dx, 1, 1, -4, -1, 3, 0, 4, 0, 0, 0, -3, 0, 0);
63 ENTER_COEFFICIENTS(
dx, 2, 0, 0, -1, 0, 2, 0, 0, -1, 0, 0, 0, 0);
64 ENTER_COEFFICIENTS(
dx, 3, 0, 6, 1, -6, -3, -6, 0, 2, 0, 6, 0, 0);
65 ENTER_COEFFICIENTS(
dx, 4, 0, -2, 0, 3, 0, 2, 0, 0, 0, -3, 0, 0);
66 ENTER_COEFFICIENTS(
dx, 5, 0, 0, 1, 0, -2, 0, 0, 1, 0, 0, 0, 0);
67 ENTER_COEFFICIENTS(
dx, 6, 0, 0, 1, 0, -3, -6, 0, 2, 0, 6, 0, 0);
68 ENTER_COEFFICIENTS(
dx, 7, 0, 0, 1, 0, 0, -4, 0, 0, 0, 3, 0, 0);
69 ENTER_COEFFICIENTS(
dx, 8, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 0);
70 ENTER_COEFFICIENTS(
dx, 9, 0, 0, -1, 0, 3, 6, 0, -2, 0, -6, 0, 0);
71 ENTER_COEFFICIENTS(
dx, 10, 0, 0, 0, 0, 0, -2, 0, 0, 0, 3, 0, 0);
72 ENTER_COEFFICIENTS(
dx, 11, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0);
74 ENTER_COEFFICIENTS(
dy, 0, 0, -1, -6, 3, 6, 6, -2, 0, -6, 0, 0, 0);
75 ENTER_COEFFICIENTS(
dy, 1, 0, -1, 0, 2, 0, 0, -1, 0, 0, 0, 0, 0);
76 ENTER_COEFFICIENTS(
dy, 2, 1, -1, -4, 0, 3, 4, 0, 0, -3, 0, 0, 0);
77 ENTER_COEFFICIENTS(
dy, 3, 0, 1, 0, -3, 0, -6, 2, 0, 6, 0, 0, 0);
78 ENTER_COEFFICIENTS(
dy, 4, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 0, 0);
79 ENTER_COEFFICIENTS(
dy, 5, 0, 1, 0, 0, 0, -4, 0, 0, 3, 0, 0, 0);
80 ENTER_COEFFICIENTS(
dy, 6, 0, 1, 6, -3, -6, -6, 2, 0, 6, 0, 0, 0);
81 ENTER_COEFFICIENTS(
dy, 7, 0, 1, 0, -2, 0, 0, 1, 0, 0, 0, 0, 0);
82 ENTER_COEFFICIENTS(
dy, 8, 0, 0, -2, 0, 3, 2, 0, 0, -3, 0, 0, 0);
83 ENTER_COEFFICIENTS(
dy, 9, 0, -1, 0, 3, 0, 6, -2, 0, -6, 0, 0, 0);
84 ENTER_COEFFICIENTS(
dy, 10, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0);
85 ENTER_COEFFICIENTS(
dy, 11, 0, 0, 0, 0, 0, -2, 0, 0, 3, 0, 0, 0);
88 ENTER_COEFFICIENTS(
dxx, 0, -6, 12, 6, 0, 0, -12, 0, 0, 0, 0, 0, 0);
89 ENTER_COEFFICIENTS(
dxx, 1, -4, 6, 4, 0, 0, -6, 0, 0, 0, 0, 0, 0);
90 ENTER_COEFFICIENTS(
dxx, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
91 ENTER_COEFFICIENTS(
dxx, 3, 6, -12, -6, 0, 0, 12, 0, 0, 0, 0, 0, 0);
92 ENTER_COEFFICIENTS(
dxx, 4, -2, 6, 2, 0, 0, -6, 0, 0, 0, 0, 0, 0);
93 ENTER_COEFFICIENTS(
dxx, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
94 ENTER_COEFFICIENTS(
dxx, 6, 0, 0, -6, 0, 0, 12, 0, 0, 0, 0, 0, 0);
95 ENTER_COEFFICIENTS(
dxx, 7, 0, 0, -4, 0, 0, 6, 0, 0, 0, 0, 0, 0);
96 ENTER_COEFFICIENTS(
dxx, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
97 ENTER_COEFFICIENTS(
dxx, 9, 0, 0, 6, 0, 0, -12, 0, 0, 0, 0, 0, 0);
98 ENTER_COEFFICIENTS(
dxx, 10, 0, 0, -2, 0, 0, 6, 0, 0, 0, 0, 0, 0);
99 ENTER_COEFFICIENTS(
dxx, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
101 ENTER_COEFFICIENTS(
dyy, 0, -6, 6, 12, 0, 0, -12, 0, 0, 0, 0, 0, 0);
102 ENTER_COEFFICIENTS(
dyy, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
103 ENTER_COEFFICIENTS(
dyy, 2, -4, 4, 6, 0, 0, -6, 0, 0, 0, 0, 0, 0);
104 ENTER_COEFFICIENTS(
dyy, 3, 0, -6, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0);
105 ENTER_COEFFICIENTS(
dyy, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
106 ENTER_COEFFICIENTS(
dyy, 5, 0, -4, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0);
107 ENTER_COEFFICIENTS(
dyy, 6, 6, -6, -12, 0, 0, 12, 0, 0, 0, 0, 0, 0);
108 ENTER_COEFFICIENTS(
dyy, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
109 ENTER_COEFFICIENTS(
dyy, 8, -2, 2, 6, 0, 0, -6, 0, -0, 0, 0, 0, 0);
110 ENTER_COEFFICIENTS(
dyy, 9, 0, 6, 0, 0, 0, -12, 0, 0, 0, 0, 0, 0);
111 ENTER_COEFFICIENTS(
dyy, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
112 ENTER_COEFFICIENTS(
dyy, 11, 0, -2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0);
114 ENTER_COEFFICIENTS(
dxy, 0, -1, 6, 6, -6, -6, 0, 0, 0, 0, 0, 0, 0);
115 ENTER_COEFFICIENTS(
dxy, 1, -1, 4, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0);
116 ENTER_COEFFICIENTS(
dxy, 2, -1, 0, 4, 0, -3, 0, 0, 0, 0, 0, 0, 0);
117 ENTER_COEFFICIENTS(
dxy, 3, 1, -6, -6, 6, 6, 0, 0, 0, 0, 0, 0, 0);
118 ENTER_COEFFICIENTS(
dxy, 4, 0, 2, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0);
119 ENTER_COEFFICIENTS(
dxy, 5, 1, 0, -4, 0, 3, 0, 0, 0, 0, 0, 0, 0);
120 ENTER_COEFFICIENTS(
dxy, 6, 1, -6, -6, 6, 6, 0, 0, 0, 0, 0, 0, 0);
121 ENTER_COEFFICIENTS(
dxy, 7, 1, -4, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0);
122 ENTER_COEFFICIENTS(
dxy, 8, 0, 0, 2, 0, -3, 0, 0, 0, 0, 0, 0, 0);
123 ENTER_COEFFICIENTS(
dxy, 9, -1, 6, 6, -6, -6, 0, 0, 0, 0, 0, 0, 0);
124 ENTER_COEFFICIENTS(
dxy, 10, 0, -2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0);
125 ENTER_COEFFICIENTS(
dxy, 11, 0, 0, -2, 0, 3, 0, 0, 0, 0, 0, 0, 0);
130 std::vector<double> & values,
134 if (values.empty() ==
false)
136 for (
unsigned int i = 0; i < values.size(); ++i)
142 if (grads.empty() ==
false)
144 for (
unsigned int i = 0; i < grads.size(); ++i)
150 if (grad_grads.empty() ==
false)
152 for (
unsigned int i = 0; i < grad_grads.size(); ++i)
163 const double x = p(0);
164 const double y = p(1);
166 coef(4, i) * y * y +
coef(5, i) * x * y +
coef(6, i) * x * x * x +
167 coef(7, i) * y * y * y +
coef(8, i) * x * y * y +
168 coef(9, i) * x * x * y +
coef(10, i) * x * x * x * y +
169 coef(11, i) * x * y * y * y;
175 const double x = p(0);
176 const double y = p(1);
178 tensor[0] =
dx(0, i) +
dx(1, i) * x +
dx(2, i) * y +
dx(3, i) * x * x +
179 dx(4, i) * y * y +
dx(5, i) * x * y +
dx(6, i) * x * x * x +
180 dx(7, i) * y * y * y +
dx(8, i) * x * y * y +
181 dx(9, i) * x * x * y +
dx(10, i) * x * x * x * y +
182 dx(11, i) * x * y * y * y;
184 tensor[1] =
dy(0, i) +
dy(1, i) * x +
dy(2, i) * y +
dy(3, i) * x * x +
185 dy(4, i) * y * y +
dy(5, i) * x * y +
dy(6, i) * x * x * x +
186 dy(7, i) * y * y * y +
dy(8, i) * x * y * y +
187 dy(9, i) * x * x * y +
dy(10, i) * x * x * x * y +
188 dy(11, i) * x * y * y * y;
196 const double x = p(0);
197 const double y = p(1);
199 tensor[0][0] =
dxx(0, i) +
dxx(1, i) * x +
dxx(2, i) * y +
dxx(3, i) * x * x +
200 dxx(4, i) * y * y +
dxx(5, i) * x * y +
dxx(6, i) * x * x * x +
201 dxx(7, i) * y * y * y +
dxx(8, i) * x * y * y +
202 dxx(9, i) * x * x * y +
dxx(10, i) * x * x * x * y +
203 dxx(11, i) * x * y * y * y;
204 tensor[0][1] =
dxy(0, i) +
dxy(1, i) * x +
dxy(2, i) * y +
dxy(3, i) * x * x +
205 dxy(4, i) * y * y +
dxy(5, i) * x * y +
dxy(6, i) * x * x * x +
206 dxy(7, i) * y * y * y +
dxy(8, i) * x * y * y +
207 dxy(9, i) * x * x * y +
dxy(10, i) * x * x * x * y +
208 dxy(11, i) * x * y * y * y;
209 tensor[1][0] = tensor[0][1];
210 tensor[1][1] =
dyy(0, i) +
dyy(1, i) * x +
dyy(2, i) * y +
dyy(3, i) * x * x +
211 dyy(4, i) * y * y +
dyy(5, i) * x * y +
dyy(6, i) * x * x * x +
212 dyy(7, i) * y * y * y +
dyy(8, i) * x * y * y +
213 dyy(9, i) * x * x * y +
dyy(10, i) * x * x * x * y +
214 dyy(11, i) * x * y * y * y;
219 DEAL_II_NAMESPACE_CLOSE
double compute_value(const unsigned int i, const Point< 2 > &p) const
Tensor< 2, 2 > compute_grad_grad(const unsigned int i, const Point< 2 > &p) const
Tensor< 1, 2 > compute_grad(const unsigned int i, const Point< 2 > &p) const
void compute(const Point< 2 > &unit_point, std::vector< double > &values, std::vector< Tensor< 1, 2 >> &grads, std::vector< Tensor< 2, 2 >> &grad_grads) const