Contents
Coil currents design study
Calculate the radii for an ellipsoidal solenoid and calculate the currents to maintain a desired average field. This is compared to a uniform current in the same coils.
Note: for a 4 m long PFRC, 16 magnets produce a much more uniform field. 8 magnets are more suitable for a 2 m long PFRC.
See also: EllipsoidalSolenoid, ConcentricCoils, PFRCSolenoid
%-------------------------------------------------------------------------- % Copyright (c) 2016 Princeton Satellite Systems, Inc. % All rights reserved. %-------------------------------------------------------------------------- % Taper the coil following an ellipsoid and calculate currents to create a % nearly constant axial field zC = [-1.75 -1.25 -0.75 -0.25 0.25 0.75 1.25 1.75]; bAve = 5; n = length(zC); aMin = [0.3 0.35 0.4 0.45 0.5]; m = length(aMin); b = zeros(m,500); i = zeros(m,n); a = zeros(m,n); s = {}; for k = 1:m a(k,:) = EllipsoidalSolenoid( aMin(k), 0.5, zC ); [b(k,:),i(k,:),z] = ConcentricCoils( zC, bAve, a(k,:) ); s{k} = sprintf('a_{min} = %4.2f',aMin(k)); end ll = {}; IT = []; B = []; for k = 1:m a(k,:) = EllipsoidalSolenoid( aMin(k), 0.5, zC ); gamma = 1; [IT(k,:),~,~,B(k,:),zs] = PFRCSolenoid(a(k,:),gamma,bAve); bm(k,:) = FieldCurrentLoop( a(k,:), IT(k,:), 0 ); ll{k} = sprintf('I = %4.2f',IT(k,1)*1e-3); end h1 = Plot2D(z,b,'z (m)', 'B (T)', 'Axial Field - Stepped Currents'); legend(s,'location','best') hold on plot(zC,max(b(:))*ones(size(zC)),'kx') h3 = Plot2D(zs,B,'z (m)', 'B (T)', 'Axial Field - Uniform Current'); legend(s,'location','best') hold on plot(zC,max(B(:))*ones(size(zC)),'kx') h2 = NewFig('Coil Radii and Stepped Currents'); subplot(2,1,1) plot(1:n,i/1e6,'.-','markersize',20); YLabelS('Current (MA)'); grid on subplot(2,1,2) plot(1:n,a,'.-','markersize',20); grid on YLabelS('Coil Radii (m)'); XLabelS('Coil Number'); legend(s,'location','best') h2 = NewFig('Coil Radii and Uniform Current'); subplot(2,1,1) plot(1:n,bm,'.-','markersize',20); YLabelS('Field (T)'); grid on legend(ll,'location','best') subplot(2,1,2) plot(1:n,a,'.-','markersize',20); grid on YLabelS('Coil Radii (m)'); XLabelS('Coil Number'); legend(s,'location','best') if 0 PrintFig(1,4,h1,'CoilB'); PrintFig(1,4,h2,'CoilAR'); end DispWithTitle(a','Coil Radius') DispWithTitle(i','Coil Current') disp(i) return
Coil Radius 0.3 0.35 0.4 0.45 0.5 0.41231 0.43157 0.45277 0.47566 0.5 0.47258 0.47828 0.48477 0.49202 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.47258 0.47828 0.48477 0.49202 0.5 0.41231 0.43157 0.45277 0.47566 0.5 0.3 0.35 0.4 0.45 0.5 Coil Current 1.9074e+06 2.1318e+06 2.3588e+06 2.5931e+06 2.8375e+06 2.2397e+06 2.1648e+06 2.0974e+06 2.035e+06 1.9752e+06 2.0902e+06 2.0964e+06 2.0947e+06 2.0869e+06 2.0744e+06 2.1477e+06 2.1198e+06 2.09e+06 2.0579e+06 2.0231e+06 2.1477e+06 2.1198e+06 2.09e+06 2.0579e+06 2.0231e+06 2.0902e+06 2.0964e+06 2.0947e+06 2.0869e+06 2.0744e+06 2.2397e+06 2.1648e+06 2.0974e+06 2.035e+06 1.9752e+06 1.9074e+06 2.1318e+06 2.3588e+06 2.5931e+06 2.8375e+06 Columns 1 through 6 1.9074e+06 2.2397e+06 2.0902e+06 2.1477e+06 2.1477e+06 2.0902e+06 2.1318e+06 2.1648e+06 2.0964e+06 2.1198e+06 2.1198e+06 2.0964e+06 2.3588e+06 2.0974e+06 2.0947e+06 2.09e+06 2.09e+06 2.0947e+06 2.5931e+06 2.035e+06 2.0869e+06 2.0579e+06 2.0579e+06 2.0869e+06 2.8375e+06 1.9752e+06 2.0744e+06 2.0231e+06 2.0231e+06 2.0744e+06 Columns 7 through 8 2.2397e+06 1.9074e+06 2.1648e+06 2.1318e+06 2.0974e+06 2.3588e+06 2.035e+06 2.5931e+06 1.9752e+06 2.8375e+06




Compare to fixed-radii, constant-current array of current loops
This is a 2 m long array
iC = 1.5e6; aMax = 0.45; % Field of a single loop b1 = MagneticFieldCurrentLoop( iC, aMax, [0;0;0], [1;0;0;0], [0;0;0] ) % Field of the array of loops zF = [-0.9 -0.64 -0.38 -0.13 0.13 0.38 0.64 0.9]; bS = MagneticFieldCurrentLoop( iC*ones(1,8), aMax*ones(1,8), [zF;zeros(1,8);zeros(1,8)], repmat([1;0;0;0],1,8), [0;0;0] ) % Add the nozzle coils zz = linspace(-1.5,1.5,40); z2 = [zz;zeros(size(zz));zeros(size(zz))]; bN = MagneticFieldCurrentLoop( [iC*ones(1,8) 3e6*[1 1]],... [aMax*ones(1,8) 0.1*[1 1]], [[zF 1.25 -1.25];zeros(1,10);zeros(1,10)],... repmat([1;0;0;0],1,10), z2 ); Plot2D(zz,bN(1,:),'z','Bz','Axial Scan') %--------------------------------------