磁束検出コイルの差
磁束検出コイルにはmagnetometer、axial gradiometer、planar gradiometerなどがあります。
上記3つの検出コイルの性質を
BiotSavartの式とSarvasの式
でシミュレーションしてみます。
中心から(7,0,0)cmのところに(0,0,20nA)の電流があり、半径12cmの円周上で磁束を検出したとします。
axial gradiometerのbaselineは5cm、planar gradiometerのbaseline?は左右に±8.4mmとします。
センサー雑音を5fTもしくは5fT/cmとします。
周囲からの磁束あるときは、(0,100,50)fTであると仮定します。
//// load SCE files ////
getf('.../BiotSavart.sce');
// if ungained, download
getf('.../Sarvas.sce');
// if ungained, download
//// default ////
stacksize(50000000);
r=0.12;
t=linspace(-%pi,%pi,361)';
Z=[cos(t),sin(t),zeros(t)]; // radial unit vector
X=[sin(t),-cos(t),zeros(t)]; // horizontal unit vector
q=[0.07,0,0,0,0,20e-9]; // dipole
C=[0,0,0]; //spherical center
angle=t/%pi*180; // radian -> degree
ax_baseline=0.05;
pl_baseline=0.0084;
u=1e+15; //[fT]
Noise=rand(361,1)*5;
Bout=ones(361,1)*[0,100,50];
//// Magnetometer ////
Smag=r*Z;
BiotM=u*BiotSavart(q,Smag);
SarvM=u*Sarvas(q,Smag,C);
//// Axial Gradiometer ////
Sax=(r+ax_baseline)*Z;
BiotA=u*BiotSavart(q,Sax);
SarvA=u*Sarvas(q,Sax,C);
//// Planar Gradiometer ////
Spl1=r*Z+pl_baseline*X;
Spl2=r*Z-pl_baseline*X;
BiotP1=u*BiotSavart(q,Spl1);
BiotP2=u*BiotSavart(q,Spl2);
SarvP1=u*Sarvas(q,Spl1,C);
SarvP2=u*Sarvas(q,Spl2,C);
//// Measured Signal ////
MagBiot=sum(BiotM.*Z,2)+Noise;
MagSarv=sum(SarvM.*Z,2)+Noise;
MagBiotBout=sum((BiotM+Bout).*Z,2)+Noise;
MagSarvBout=sum((SarvM+Bout).*Z,2)+Noise;
AxBiot=sum((BiotM-BiotA).*Z,2)+Noise;
AxSarv=sum((SarvM-SarvA).*Z,2)+Noise;
AxBiotBout=sum(((BiotM+Bout)-(BiotA+Bout)).*Z,2)+Noise;
AxSarvBout=sum(((SarvM+Bout)-(SarvA+Bout)).*Z,2)+Noise;
PlBiot=sum((BiotP1-BiotP2).*Z,2)/(2*pl_baseline*100)+Noise;
PlSarv=sum((SarvP1-SarvP2).*Z,2)/(2*pl_baseline*100)+Noise;
PlBiotBout=sum(((BiotP1+Bout)-(BiotP2+Bout)).*Z,2)/(2*pl_baseline*100)+Noise;
PlSarvBout=sum(((SarvP1+Bout)-(SarvP2+Bout)).*Z,2)/(2*pl_baseline*100)+Noise;
では実際にグラフを書いてみます。
scf();plot2d(angle,[MagBiot,AxBiot,PlBiot]);
h=gca();h.data_bounds=[-180,-250;180,250];
h.children.children(1).foreground=5;
h.grid=[0,0];h.tight_limits='on';
h.children.children(:).thickness=3;
legends(['magnetometer';'axial gradiometer';'planar gradiometer'],[1,2,5],opt='ur');
hf=gcf();//gca() is not legend but graph!
hf.children(1).children.children([2,4,6]).thickness=3;//Figure.Axes.Agregation.Polyline
周囲からの磁束なしでBiot-Savartの式で解いたものです。
scf();plot2d(angle,[MagBiotBout,AxBiotBout,PlBiotBout]);
h=gca();h.data_bounds=[-180,-250;180,250];
h.children.children(1).foreground=5;
h.grid=[0,0];h.tight_limits='on';
h.children.children(:).thickness=3;
legends(['magnetometer';'axial gradiometer';'planar gradiometer'],[1,2,5],opt='ur');
hf=gcf();//gca() is not legend but graph!
hf.children(1).children.children([2,4,6]).thickness=3;//Figure.Axes.Agregation.Polyline
周囲からの磁束ありでBiot-Savartで解いたものです。Magnetometerの値は大きく変化しています。
scf();plot2d(angle,[MagSarv,AxSarv,PlSarv]);
h=gca();h.data_bounds=[-180,-250;180,250];
h.children.children(1).foreground=5;
h.grid=[0,0];h.tight_limits='on';
h.children.children(:).thickness=3;
legends(['magnetometer';'axial gradiometer';'planar gradiometer'],[1,2,5],opt='ur');
hf=gcf();//gca() is not legend but graph!
hf.children(1).children.children([2,4,6]).thickness=3;//Figure.Axes.Agregation.Polyline
周囲からの磁束なしでSarvasの式で解いたものです。planar gradiometerの波形が変化しています。
scf();plot2d(angle,[MagSarvBout,AxSarvBout,PlSarvBout]);
h=gca();h.data_bounds=[-180,-250;180,250];
h.children.children(1).foreground=5;
h.grid=[0,0];h.tight_limits='on';
h.children.children(:).thickness=3;
legends(['magnetometer';'axial gradiometer';'planar gradiometer'],[1,2,5],opt='ur');
hf=gcf();//gca() is not legend but graph!
hf.children(1).children.children([2,4,6]).thickness=3;//Figure.Axes.Agregation.Polyline
周囲からの磁束ありでSarvasの式で解いたものです。
MagnetometerとAxial Gradiometerの計算はコイル中心部のみを用いていますが、
中心以外の点をもっと取ればBiot-SavartとSarvasで違いが出てくるかもしれません。