MATLAB Mutual inductance of two disk coils (MATLAB)

Click For Summary
SUMMARY

The forum discussion centers on the calculation of mutual inductance between two thin coaxial disk coils using MATLAB, as detailed in the paper "The mutual inductance of two thin coaxial disk coils in air" by Babic S. The user implemented a MATLAB script to solve the equations from the paper but encountered complex results instead of the expected value of 1.226 mH. Key issues identified include the definition of the Heuman Lambda function and the occurrence of complex values in the arcsin calculations due to input exceeding the valid range.

PREREQUISITES
  • Understanding of mutual inductance principles
  • Proficiency in MATLAB programming (version not specified)
  • Familiarity with elliptic integrals and functions
  • Knowledge of complex numbers and their implications in mathematical computations
NEXT STEPS
  • Review the paper "The mutual inductance of two thin coaxial disk coils in air" by Babic S. for detailed equations
  • Learn about MATLAB's integral function and its application in numerical integration
  • Study the properties and applications of elliptic integrals in physics
  • Investigate methods to handle complex results in MATLAB, particularly with arcsin and similar functions
USEFUL FOR

Researchers, electrical engineers, and students working on electromagnetic theory, particularly those focusing on inductance calculations and MATLAB simulations.

tommydyhr
Messages
2
Reaction score
0
Hi,

I'm been spending way too much time this weekend, wrestling with the equations provided in the paper [The mutual inductance of two thin coaxial disk coils in air, Babic S., DOI: 10.1109/TMAG.2004.824810], but I just can't seem to verify the results obtained in the examples in the journal. Unfortunately, due to copyright reasons, I can't paste the equations here, but for those of you who have access to scientific journals (most college students, I suppose) can access it from the DOI.

To solve equation 3 in the paper, I've made the following script:

Code:
clear
clc

R1 = 0.1;
R2 = 0.2;
R3 = 0.3;
R4 = 0.4;
dist = 0.1;
N1 = 100;
N2 = 100;
mu_0 = 4.*pi.*10.^(-7);

p = [R1 R1 R2 R2];
l = [R3 R4 R4 R3];

sum_result = 0;
for n = 1:4
    J1F = @(beta) ((beta>0)&(beta<(pi/2))).*(1./sin(beta)).*(atan((dist.^2.*cos(beta)+p(n).*l(n).*(sin(beta)).^2)./(dist.*sin(beta).* (sqrt(l(n).^2+p(n).^2+dist.^2-2.*l(n).*p(n).*cos(beta))) ))-atan((dist.^2.*cos(beta)-p(n).*l(n).*(sin(beta)).^2)./(dist.*sin(beta).*(sqrt(l(n).^2+p(n).^2+dist.^2+2.*l(n).*p(n).*cos(beta)))))) + (beta==0)*((sqrt((l(n)+p(n))^2+dist^2)-(sqrt((l(n)-p(n)).^2+dist.^2)))./dist) + (beta==pi/2).*2.*atan((l(n).*p(n))./(dist.*sqrt(l(n).^2+p(n).^2+dist.^2)));
    J2F = @(beta) asinh((l(n)+p(n).*cos(2.*beta))./sqrt(p(n).^2.*(sin(2.*beta)).^2+dist.^2));
    J3F = @(beta) asinh((p(n)+l(n).*cos(2.*beta))./sqrt(l(n).^2.*(sin(2.*beta)).^2+dist.^2));
    J1 = integral(J1F,0,pi/2);
    J2 = integral(J2F,0,pi/2);
    J3 = integral(J3F,0,pi/2);
    k = sqrt((4*p(n)*l(n))/((l(n)+p(n))^2+dist^2));
    m = 2*p(n)/(sqrt(p(n)^2+dist^2)+p(n));
    pn = 2*l(n)/(sqrt(l(n)^2+dist^2)+l(n));
    theta1 = asin(abs(dist)/(sqrt(p(n)^2+dist^2)+p(n)));
    theta2 = asin(sqrt((1-m^2)/(1-k^2)));
    theta3 = asin(abs(dist)/(sqrt(l(n)^2+dist^2)+l(n)));
    theta4 = asin(sqrt((1-pn^2)/(1-k^2)));
    T = ellipticE(k)*(-2*l(n)*p(n)*sqrt(l(n)*p(n))/k) + k*sqrt(l(n)*p(n))*(dist^2-l(n)^2-p(n)^2+p(n)*sqrt(p(n)^2+dist^2)+l(n)*sqrt(l(n)^2+dist^2))*ellipticK(k)-pi*abs(dist)*0.5*p(n)*sqrt(p(n)^2+dist^2)*(1-Heuman_Lambda(theta1,k)-sign(sqrt(p(n)^2+dist^2)-l(n))*(1-Heuman_Lambda(theta2,k)))-pi*abs(dist)*0.5*l(n)*sqrt(l(n)^2+dist^2)*(1-Heuman_Lambda(theta3,k)-sign(sqrt(l(n)^2+dist^2)-p(n))*(1-Heuman_Lambda(theta4,k)))-0.5*dist^3*J1+p(n)^3*J2+l(n)^3*J3;
    sum_result = sum_result + ((-1)^(n-1))*T;
end

M = ((mu_0*N1*N2)/(3*(R2-R1)*(R4-R3)))*sum_result

Where I've defined the Heuman Lambda function in a separate file:
Code:
function [ HL ] = Heuman_Lambda( t,m )

mdash = (1-m);

[K,E] = ellipke(m);
[K2,E2] = ellipke(mdash);
incF = ellipticF(t,mdash);
incE = ellipticE(t,mdash);

Z = incE - (E2*incF)/K2; % Jacobi zeta function

HL = incF / K2 + (2/pi) * K * Z;

Whichever of the examples I try, I always seem to get a complex result, as opposed to the 1.226 mH from the paper.

If anyone can spot any glaringly obvious mistakes from the code, I'd be forever in your debt! :)

Edit: I suppose it's worth noting that with the values provided (ie. R1 = 10cm, R2 = 20cm, R3 = 30cm, R4 = 40cm, dist = 10cm), theta1 and theta2 returns complex values due to arcsin(x) not being defined in R for x > 1.
 
Physics news on Phys.org
Thanks for the post! Sorry you aren't generating responses at the moment. Do you have any further information, come to any new conclusions or is it possible to reword the post?
 
Thanks Greg. I found a completely alternative solution, which I can't really elaborate on here. I tried to delete this topic a couple of days ago, but I couldn't find the button for it! :rolleyes:
 

Similar threads

  • · Replies 8 ·
Replies
8
Views
2K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 5 ·
Replies
5
Views
2K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 8 ·
Replies
8
Views
3K
  • · Replies 9 ·
Replies
9
Views
2K