12 #include <deal.II/base/types.h>
13 #define BOOST_ALLOW_DEPRECATED_HEADERS
15 #include "static_vector_input.hpp"
19 using namespace StaticVectorSolver;
22 #pragma GCC diagnostic push
23 #pragma GCC diagnostic ignored "-Wunused-parameter"
24 #pragma GCC diagnostic ignored "-Wunused-but-set-variable"
29 types::material_id mid,
31 std::vector<double>& values)
const
33 Assert(r.size() == values.size(),
34 ExcDimensionMismatch(r.size(), values.size()));
36 auto v = values.begin();
38 *v = mu_0 * (pow(p[0], 2) + pow(p[1], 2) + 1.0);
46 types::material_id mid,
48 std::vector<double>& values)
const
50 Assert(r.size() == values.size(),
51 ExcDimensionMismatch(r.size(), values.size()));
53 auto v = values.begin();
55 *v = mu_0 * (pow(p[0], 2) + pow(p[1], 2) + 1.0);
63 types::material_id mid,
65 std::vector<Tensor<1, 3>>& values)
const
67 Assert(r.size() == values.size(),
68 ExcDimensionMismatch(r.size(), values.size()));
70 auto v = values.begin();
74 (*v)[2] = (cos(k * p[0]) + cos(k * p[1])) /
75 ((mu_0 * (pow(p[0], 2) + pow(p[1], 2) + 1.0)));
83 types::material_id mid,
85 std::vector<Tensor<1, 2>>& values)
const
87 Assert(r.size() == values.size(),
88 ExcDimensionMismatch(r.size(), values.size()));
90 auto v = values.begin();
92 (*v)[0] = (cos(k * p[0]) + cos(k * p[1])) /
93 ((mu_0 * (pow(p[0], 2) + pow(p[1], 2) + 1.0)));
102 const std::vector<Tensor<1, 3>>& n,
103 types::boundary_id bid,
104 types::material_id mid,
107 std::vector<double>& values)
const
109 Assert(r.size() == values.size(),
110 ExcDimensionMismatch(r.size(), values.size()));
112 auto v = values.begin();
114 double mu = mu_0 * (pow(p[0], 2) + pow(p[1], 2) + 1.0);
115 *v = (1.0 / mu) * (sqrt(pow(p[0], 2) + pow(p[1], 2)) + 2.0);
123 const std::vector<Tensor<1, 2>>& n,
124 types::boundary_id bid,
125 types::material_id mid,
128 std::vector<double>& values)
const
130 Assert(r.size() == values.size(),
131 ExcDimensionMismatch(r.size(), values.size()));
133 auto v = values.begin();
135 double mu = mu_0 * (pow(p[0], 2) + pow(p[1], 2) + 1.0);
136 *v = (1.0 / mu) * (sqrt(pow(p[0], 2) + pow(p[1], 2)) + 2.0);
144 const std::vector<Tensor<1, 3>>& n,
145 types::boundary_id bid,
146 types::material_id mid,
149 std::vector<Tensor<1, 3>>& values)
const
151 Assert(r.size() == values.size(),
152 ExcDimensionMismatch(r.size(), values.size()));
160 auto v = values.begin();
163 mu = mu_0 * (pow(p[0], 2) + pow(p[1], 2) + 1.0);
164 gamma = (1 / mu) * (sqrt(pow(p[0], 2) + pow(p[1], 2)) + 2.0);
168 T[2] = (cos(k * p[0]) + cos(k * p[1])) / mu;
170 A[0] = -sin(k * p[1]) / k;
171 A[1] = sin(k * p[0]) / k;
174 Q = cross_product_3d(*nn, T) +
175 gamma * cross_product_3d(*nn, cross_product_3d(*nn, A));
188 const std::vector<Tensor<1, 2>>& n,
189 types::boundary_id bid,
190 types::material_id mid,
193 std::vector<Tensor<1, 2>>& values)
const
195 Assert(r.size() == values.size(),
196 ExcDimensionMismatch(r.size(), values.size()));
204 auto v = values.begin();
207 mu = mu_0 * (pow(p[0], 2) + pow(p[1], 2) + 1.0);
208 gamma = (1 / mu) * (sqrt(pow(p[0], 2) + pow(p[1], 2)) + 2.0);
209 T = (cos(k * p[0]) + cos(k * p[1])) / mu;
211 A[0] = -sin(k * p[1]) / k;
212 A[1] = sin(k * p[0]) / k;
215 (*nn)[1] * T + gamma * (*nn)[1] * ((*nn)[0] * A[1] - (*nn)[1] * A[0]);
217 -(*nn)[0] * T - gamma * (*nn)[0] * ((*nn)[0] * A[1] - (*nn)[1] * A[0]);
230 const std::vector<Tensor<1, 3>>& n,
231 types::material_id mid,
234 std::vector<Tensor<1, 3>>& values)
const
236 Assert(r.size() == values.size(),
237 ExcDimensionMismatch(r.size(), values.size()));
239 auto v = values.begin();
251 const std::vector<Tensor<1, 2>>& n,
252 types::material_id mid,
255 std::vector<Tensor<1, 2>>& values)
const
257 Assert(r.size() == values.size(),
258 ExcDimensionMismatch(r.size(), values.size()));
260 auto v = values.begin();
282 #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< Tensor< 1, dim >> &values) const
Computes values of the surface free-current density, , on the right-hand side of the continuity condi...
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 values of the parameter of the Robin boundary condition 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 vector field on the right-hand side of the partial differential equation.
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< Tensor< 1, dim >> &values) const
Computes values of the vector field on the right-hand side of the Robin boundary condition at quadra...
void value_list(const std::vector< Point< dim >> &r, types::material_id mid, unsigned int cuid, std::vector< double > &values) const
Computes values of permeability, , 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...