Torus Magnetic Moment
Torus Magnetic Moment
Torus Magnetic Moment
where −→
m is the magnetic dipole moment vector, − →
r is the position vector of a
−
→
point on the surface, I is the current, and dl is the element of surface area.
Integrating over a torus with a major radius A and minor radius a gives us
−
→ 1 ( )
m = Q 2A2 + 3a2 ωẑ (2)
8
where Q is the total charge, ω is the angular velocity, and ẑ is the unit vector
along the axis of rotation.
2 Calculating Capacitance
Since, by definition, Q = CV , we need to calulate the capacitance of a torus.
This can be accomplished by using the following formula:
√
C = 16ε0 ᚠ(x) A2 − a2 ;
∞
1 Q−1/2 (x) ∑ Qn−1/2 (x)
ᚠ(x) = + ; (3)
2 P−1/2 (x) n=1 Pn−1/2 (x)
A
x= ;
a
where ε0 is the permittivity of free space, and Qn−1/2 (x) and Pn−1/2 (x) are
Legendre functions.
1
These functions, for half-integer degree, are defined as:
where K and E are the complete elliptic integrals of first and second kinds,
with modulus √
2
k= (5)
x+1
and K ′ and E ′ have the modulus
√
k′ = 1 − k2 (6)
Note that we can factor π2 out of the Pn−1/2 (x) functions, perform the
summation, and multiply the result by π2 to complete the calculation of ᚠ(x),
if desired.
2
Because ᚠ(x) only depends on the ratio Aa , this can be rewritten as:
√ ( )
1 3
m̂ = 2ε0 ᚠ(x) 1 − 2 2 + 2 A3 V ωẑ (9)
x x
A
Since this scales with A3 , we can see how the a ratio affects the magnetic dipole
moment:
√ ( )
Figure 1: ᚠ(x) 1 − 1
x2 2 + 3 x12 for values of 1
x between 0 and 1
Interestingly, the formula for the magnetic dipole moment of a chaged rotating
spherical shell is
4π
m̂ = ε0 A3 V ωẑ (10)
3
which means that, for a sphere with a radius equal to the major radius A, a
ratio of 0.38572893788 has the same magnetic dipole moment, given an equal
voltage and angular velocity. It is, however, impossible to achieve equal results
using a sphere with radius equal to the total radius of the torus, IE A + a.
4 Example C Implementation
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <float.h>
3
typedef long double real;
// Returns x^2
static inline real square(real x) {
return x * x;
}
4
real
m = 2.0/(x + 1.0),
k = sq_root(m),
K,Kprime,E,Eprime;
real
lastQ = k * K,
Q = (2.0 * (K - E) / k) - lastQ,
lastP = (k * Kprime),
P = (((2.0 * Eprime)/k) - lastP),
lastQ = Q;
lastP = P;
Q = nextQ;
P = nextP;
5
real capacitancePf(real A, real a) {
return 16.0 * e_0_pf * fehu(A/a) * sq_root(square(A) - square(a));
}
return EXIT_SUCCESS;
}