magnetic field by using BEM method B = vb_bem_meg_linear_grk(Bvol,Vs,Fs,V,J,X,Q) Bvol : 境界頂点係数行列 Vs : 境界三角面の座標 Fs : 境界三角面頂点インデックス V : 電流双極子座標 (m) (Ndipole,3) J : 電流双極子モーメント (A) (Ndipole,3) X : 磁気センサー座標 (Npick, 3) Q : 磁場の観測方向 (Npick, 3) B : X における磁場 (テスラ) (Npick, Ndipole) 真空の透磁率 = 4π×10^(-7) (N/A^2), 1T(テスラ)= 1N/A・m 2004-02-06 Taku Yoshioka 2004-12-26 M. Sato modified Copyright (C) 2011, ATR All Rights Reserved. License : New BSD License(see VBMEG_LICENSE.txt)
0001 function B = vb_bem_meg_linear_grk(Bvol,Vs,Fs,V,J,X,Q) 0002 % magnetic field by using BEM method 0003 % B = vb_bem_meg_linear_grk(Bvol,Vs,Fs,V,J,X,Q) 0004 % 0005 % Bvol : 境界頂点係数行列 0006 % Vs : 境界三角面の座標 0007 % Fs : 境界三角面頂点インデックス 0008 % V : 電流双極子座標 (m) (Ndipole,3) 0009 % J : 電流双極子モーメント (A) (Ndipole,3) 0010 % X : 磁気センサー座標 (Npick, 3) 0011 % Q : 磁場の観測方向 (Npick, 3) 0012 % 0013 % B : X における磁場 (テスラ) (Npick, Ndipole) 0014 % 0015 % 真空の透磁率 = 4π×10^(-7) (N/A^2), 1T(テスラ)= 1N/A・m 0016 % 0017 % 2004-02-06 Taku Yoshioka 0018 % 2004-12-26 M. Sato modified 0019 % 0020 % Copyright (C) 2011, ATR All Rights Reserved. 0021 % License : New BSD License(see VBMEG_LICENSE.txt) 0022 0023 % 変数の次元 0024 NS = size(X,1); % 磁気センサー 0025 NJ = size(V,1); % 電流双極子 0026 NF = size(Fs,1); % 境界三角面 0027 NV = size(Vs,1); % 境界頂点 0028 0029 % 磁場とポテンシャル 0030 B = zeros(NS,NJ); % 観測点 X における磁場 0031 B0 = zeros(NS,1); 0032 P0 = zeros(NV,1); 0033 0034 % 境界三角面の頂点 triangle vertex 0035 x1 = Vs(Fs(:,1),:); 0036 x2 = Vs(Fs(:,2),:); 0037 x3 = Vs(Fs(:,3),:); 0038 0039 %% 境界三角面の面積 0040 s0 = vb_cross2(x2-x1,x3-x1); 0041 S = sqrt(sum(s0.^2,2)); 0042 0043 %%%% 観測点での磁場計算 %%% 0044 0045 % 境界三角面の内点 0046 ip1 = (4*x1+x2+x3)/6; 0047 ip2 = (x1+4*x2+x3)/6; 0048 ip3 = (x1+x2+4*x3)/6; 0049 0050 for n=1:NJ, 0051 % n-番目の双極子 0052 x0 = V(n,:); 0053 J0 = J(n,:); 0054 0055 % 境界三角面内点上の双極子ポテンシャル 0056 p1 = vb_dipole_pot(J0,x0,ip1); 0057 p2 = vb_dipole_pot(J0,x0,ip2); 0058 p3 = vb_dipole_pot(J0,x0,ip3); 0059 0060 P0 = zeros(NV,1); 0061 0062 % 境界三角面上のポテンシャル積分を内点の重み付き和で近似 0063 for i = 1:NF 0064 ix1 = Fs(i,1); 0065 ix2 = Fs(i,2); 0066 ix3 = Fs(i,3); 0067 P0(ix1) = P0(ix1)+S(i)/36*(4*p1(i)+p2(i)+p3(i)); 0068 P0(ix2) = P0(ix2)+S(i)/36*(p1(i)+4*p2(i)+p3(i)); 0069 P0(ix3) = P0(ix3)+S(i)/36*(p1(i)+p2(i)+4*p3(i)); 0070 end 0071 0072 % 観測点(センサ位置)における双極子磁場計算 0073 B0 = vb_dipole_mag(J0,x0,X,Q); 0074 0075 % 磁場に境界面ポテンシャルからの体積電流寄与 Bvol*P0 を加える 0076 B(:,n) = B0 + Bvol*P0/(4*pi); % (Nsensor x 1) 0077 end; 0078 0079 B = B*(10^(-7)); % (真空中の透磁率)/(4π)