12 #ifndef ExactSolutionsSSOLIII_H__
13 #define ExactSolutionsSSOLIII_H__
15 #include "constants.hpp"
16 #include "settings.hpp"
17 #include <deal.II/base/function.h>
18 #include <deal.II/lac/vector.h>
22 using namespace dealii;
25 volume_free_current_density(
double x,
35 r = sqrt(pow(x, 2) + pow(y, 2) + pow(z, 2));
37 if ((r > a) && (r < b)) {
51 magnetic_field_coil(
double x,
66 Tensor<1, 3> theta_hat;
74 r = sqrt(pow(x, 2) + pow(y, 2) + pow(z, 2));
77 sin_theta = sqrt(pow(x, 2) + pow(y, 2)) / r;
79 cos_phi = x / sqrt(pow(x, 2) + pow(y, 2));
80 sin_phi = y / sqrt(pow(x, 2) + pow(y, 2));
86 theta_hat[0] = cos_theta * cos_phi;
87 theta_hat[1] = cos_theta * sin_phi;
88 theta_hat[2] = -sin_theta;
90 F1 = (2.0 / 3.0) * mu_0 * K_0 * (cos_theta * r_hat - sin_theta * theta_hat);
91 F2 = (2.0 / 3.0) * mu_0 * K_0 *
92 (cos_theta * r_hat + 0.5 * sin_theta * theta_hat) / pow(r, 3);
95 B = 0.5 * (pow(b, 2) - pow(a, 2)) * F1;
97 B = 0.2 * (pow(b, 5) - pow(a, 5)) * F2;
99 B = 0.5 * (pow(b, 2) - pow(r, 2)) * F1 + 0.2 * (pow(r, 5) - pow(a, 5)) * F2;
106 magnetic_field_core(
double x,
115 double a3 = std::pow(a, 3);
116 double b3 = std::pow(b, 3);
118 double OMEGA = ((mur - 1.0) / (mur + 2.0)) * (a3 / b3);
120 (-3.0 * b3 * H_0 * OMEGA) / ((2.0 * mur + 1.0) - 2.0 * (mur - 1.0) * OMEGA);
121 double beta_1 = ((2.0 * mur + 1.0) * gamma_1) / ((mur - 1.0) * a3);
122 double alpha_1 = (-b3 * H_0 + 2.0 * mur * gamma_1 - mur * b3 * beta_1) / 2.0;
123 double delta_1 = (mur * a3 * beta_1 - 2.0 * mur * gamma_1) / a3;
125 double r = sqrt(pow(x, 2) + pow(y, 2) + pow(z, 2));
126 double r3 = std::pow(r, 3.0);
127 double zz = -3.0 * z * z / std::pow(r, 5.0);
128 double xz = -3.0 * x * z / std::pow(r, 5.0);
129 double yz = -3.0 * y * z / std::pow(r, 5.0);
133 Tensor<1, 3> grad_psi;
140 grad_psi[2] = delta_1;
143 grad_psi[0] = alpha_1 * xz;
144 grad_psi[1] = alpha_1 * yz;
145 grad_psi[2] = -H_0 + alpha_1 / r3 + alpha_1 * zz;
148 grad_psi[0] = gamma_1 * xz;
149 grad_psi[1] = gamma_1 * yz;
150 grad_psi[2] = beta_1 + gamma_1 / r3 + gamma_1 * zz;
158 B = -mu * grad_psi - mu0 * Happl;
175 virtual void vector_value_list(
176 const std::vector<Point<3>>& r,
177 std::vector<Vector<double>>& values)
const override final;
192 virtual void vector_value_list(
193 const std::vector<Point<3>>& r,
194 std::vector<Vector<double>>& values)
const override final;
Describes exact solution, , of the Spherical coil with magnetic core (ssol-iii/) numerical experiment...
Describes exact solution, , of the Spherical coil with magnetic core (ssol-iii/) numerical experiment...
Global settings for the Spherical coil with magnetic core (ssol-iii/) numerical experiment.