12 #include "exact_solution.hpp"
14 #pragma GCC diagnostic push
15 #pragma GCC diagnostic ignored "-Wunused-parameter"
17 using namespace dealii;
21 ExactSolutionSSOLIIAXI_A::value(
const Point<2>& p,
22 const unsigned int component)
const
27 double rG1 = mu_0 * K_0 * pow(r, 2) / 3.0;
28 double rG2 = mu_0 * K_0 * pow(r, 2) / (3.0 * pow(s, 3));
31 return 0.5 * (pow(b, 2) - pow(a, 2)) * rG1;
34 return (0.5 * (pow(b, 2) - pow(s, 2)) * rG1 +
35 0.2 * (pow(s, 5) - pow(a, 5)) * rG2);
37 return 0.2 * (pow(b, 5) - pow(a, 5)) * rG2;
41 ExactSolutionSSOLIIAXI_A::gradient(
const Point<2>& p,
42 const unsigned int component)
const
44 Point<2> grad_A, L1, L2;
49 double M = (1.0 / 3.0) * mu_0 * K_0;
54 L2(0) = M * (2.0 * r / pow(s, 3) - 3.0 * pow(r, 3) / pow(s, 5));
55 L2(1) = -M * 3.0 * pow(r, 2) * z / pow(s, 5);
58 grad_A = 0.5 * (pow(b, 2) - pow(a, 2)) * L1;
61 0.5 * (pow(b, 2) - pow(s, 2)) * L1 + 0.2 * (pow(s, 5) - pow(a, 5)) * L2;
63 grad_A = 0.2 * (pow(b, 5) - pow(a, 5)) * L2;
70 ExactSolutionSSOLIIAXI_B::vector_value_list(
71 const std::vector<Point<2>>& r,
72 std::vector<Vector<double>>& values)
const
74 Assert(values.size() == r.size(),
75 ExcDimensionMismatch(values.size(), r.size()));
79 for (
unsigned int i = 0; i < values.size(); i++) {
80 B = magnetic_field(0.0, r[i][0], r[i][1], K_0, mu_0, a, b);
82 values[i][0] = r[i][0] * B[1];
83 values[i][1] = r[i][0] * B[2];
88 ExactSolutionSSOLIIAXI_H::vector_value_list(
89 const std::vector<Point<2>>& r,
90 std::vector<Vector<double>>& values)
const
92 Assert(values.size() == r.size(),
93 ExcDimensionMismatch(values.size(), r.size()));
95 B.vector_value_list(r, values);
97 for (
unsigned int i = 0; i < r.size(); i++) {
98 values[i][0] = values[i][0] / mu_0;
99 values[i][1] = values[i][1] / mu_0;
103 #pragma GCC diagnostic pop