12 #define BOOST_ALLOW_DEPRECATED_HEADERS
14 #include "static_scalar_input.hpp"
17 using namespace StaticScalarSolver;
20 #pragma GCC diagnostic push
21 #pragma GCC diagnostic ignored "-Wunused-parameter"
26 types::material_id mid,
28 std::vector<double>& values)
const
30 Assert(r.size() == values.size(),
31 ExcDimensionMismatch(r.size(), values.size()));
33 auto v = values.begin();
35 *v = ep_0 * (p[0] * pow(p[1], 2) + 1.0);
43 types::material_id mid,
45 std::vector<double>& values)
const
47 Assert(rr.size() == values.size(),
48 ExcDimensionMismatch(rr.size(), values.size()));
50 auto v = values.begin();
52 double r = sqrt(pow(p[0], 2.0) + pow(p[1], 2.0));
53 *v = ep_0 * (r * pow(p[2], 2.0) + 1.0);
61 types::material_id mid,
63 std::vector<double>& values)
const
65 Assert(r.size() == values.size(),
66 ExcDimensionMismatch(r.size(), values.size()));
68 auto v = values.begin();
71 ((2.0 * pow(p[1], 2) + (1.0 / p[0])) * sin(k * p[0]) +
72 k * (p[0] * pow(p[1], 2) + 1.0) * cos(k * p[0]) +
73 (2.0 * p[0] * p[1]) * sin(k * p[1]) +
74 k * (p[0] * pow(p[1], 2) + 1.0) * cos(k * p[1]));
82 types::material_id mid,
84 std::vector<double>& values)
const
86 Assert(rr.size() == values.size(),
87 ExcDimensionMismatch(rr.size(), values.size()));
89 auto v = values.begin();
91 double r = sqrt(pow(p[0], 2) + pow(p[1], 2));
94 ((1.0 / r) * (2.0 * r * pow(p[2], 2.0) + 1.0) * sin(k * r) +
95 k * (r * pow(p[2], 2.0) + 1.0) * cos(k * r) +
96 (2.0 * r * p[2]) * sin(k * p[2]) +
97 k * (r * pow(p[2], 2.0) + 1.0) * cos(k * p[2]));
105 types::material_id mid,
107 std::vector<Tensor<1, 2>>& values)
const
109 Assert(r.size() == values.size(),
110 ExcDimensionMismatch(r.size(), values.size()));
112 for (
unsigned int i = 0; i < values.size(); i++) {
121 types::material_id mid,
123 std::vector<Tensor<1, 3>>& values)
const
125 Assert(r.size() == values.size(),
126 ExcDimensionMismatch(r.size(), values.size()));
128 for (
unsigned int i = 0; i < values.size(); i++) {
138 const std::vector<Tensor<1, 2>>& n,
139 types::boundary_id bid,
140 types::material_id mid,
143 std::vector<double>& values)
const
145 Assert(r.size() == values.size(),
146 ExcDimensionMismatch(r.size(), values.size()));
148 auto v = values.begin();
150 *v = ep_0 * (sqrt(pow(p[0], 2) + pow(p[1], 2)) + 2.0);
158 const std::vector<Tensor<1, 3>>& n,
159 types::boundary_id bid,
160 types::material_id mid,
163 std::vector<double>& values)
const
165 Assert(r.size() == values.size(),
166 ExcDimensionMismatch(r.size(), values.size()));
168 auto v = values.begin();
170 double r = sqrt(pow(p[0], 2) + pow(p[1], 2));
172 *v = ep_0 * (sqrt(pow(r, 2) + pow(p[2], 2)) + 2.0);
180 const std::vector<Tensor<1, 2>>& n,
181 types::boundary_id bid,
182 types::material_id mid,
185 std::vector<double>& values)
const
188 Assert(r.size() == values.size(),
189 ExcDimensionMismatch(r.size(), values.size()));
194 Tensor<1, 2> grad_phi;
196 auto v = values.begin();
199 epsilon = ep_0 * (p[0] * pow(p[1], 2) + 1.0);
200 phi = cos(k * p[0]) + cos(k * p[1]);
202 grad_phi[0] = -k * sin(k * p[0]);
203 grad_phi[1] = -k * sin(k * p[0]);
205 gamma = ep_0 * (sqrt(pow(p[0], 2) + pow(p[1], 2)) + 2.0);
207 *v = epsilon * (*nn * grad_phi) + gamma * phi;
216 const std::vector<Tensor<1, 3>>& n,
217 types::boundary_id bid,
218 types::material_id mid,
221 std::vector<double>& values)
const
224 Assert(rr.size() == values.size(),
225 ExcDimensionMismatch(rr.size(), values.size()));
230 Tensor<1, 3> grad_phi;
232 auto v = values.begin();
235 double r = sqrt(pow(p[0], 2) + pow(p[1], 2));
236 double cos_phi = p[0] / sqrt(pow(p[0], 2) + pow(p[1], 2));
237 double sin_phi = p[1] / sqrt(pow(p[0], 2) + pow(p[1], 2));
239 epsilon = ep_0 * (r * pow(p[2], 2.0) + 1.0);
241 phi = cos(k * r) + cos(k * p[2]);
243 grad_phi[0] = -k * cos_phi * sin(k * r);
244 grad_phi[1] = -k * sin_phi * sin(k * r);
245 grad_phi[2] = -k * sin(k * p[2]);
247 gamma = ep_0 * (sqrt(pow(r, 2) + pow(p[2], 2)) + 2.0);
249 *v = epsilon * (*nn * grad_phi) + gamma * phi;
258 const std::vector<Tensor<1, 2>>& n,
259 types::material_id mid,
262 std::vector<double>& values)
const
264 Assert(r.size() == values.size(),
265 ExcDimensionMismatch(r.size(), values.size()));
267 for (
unsigned int i = 0; i < values.size(); i++)
274 const std::vector<Tensor<1, 3>>& n,
275 types::material_id mid,
278 std::vector<double>& values)
const
280 Assert(r.size() == values.size(),
281 ExcDimensionMismatch(r.size(), values.size()));
283 for (
unsigned int i = 0; i < values.size(); i++)
301 #pragma GCC diagnostic pop
void value_list(const std::vector< Point< dim >> &r, const std::vector< Tensor< 1, dim >> &n, types::material_id mid, unsigned int cuid, unsigned int fuid, std::vector< double > &values) const
Computes the right-hand side of the second continuity condition ( , , , or ).
void value_list(const std::vector< Point< dim >> &r, const std::vector< Tensor< 1, dim >> &n, types::boundary_id bid, types::material_id mid, unsigned int cuid, unsigned int fuid, std::vector< double > &values) const
Computes the coefficient at quadrature points.
void value_list(const std::vector< Point< dim >> &r, types::material_id mid, unsigned int cuid, std::vector< Tensor< 1, dim >> &values) const
Computes the two-dimensional free-current density on the right-hand side of the partial differential...
void value_list(const std::vector< Point< dim >> &r, types::material_id mid, unsigned int cuid, std::vector< double > &values) const
Computes the right-hand side of the div-grad partial differential equation at quadrature points.
void value_list(const std::vector< Point< dim >> &r, const std::vector< Tensor< 1, dim >> &n, types::boundary_id bid, types::material_id mid, unsigned int cuid, unsigned int fuid, std::vector< double > &values) const
Computes the right-hand side of the Robin boundary condition ( or ).
void value_list(const std::vector< Point< dim >> &r, types::material_id mid, unsigned int cuid, std::vector< double > &values) const
Computes the values of the coefficient at quadrature points.
virtual double value(const Point< dim > &r, const unsigned int component=0) const override final
Returns the value of weight at point r. All error norms, , , and , at point r will be multiplied by t...