|
> No.1528[元記事へ]
!銅線の表皮効果による電流分布 Ver.3
!
!各スライド・バーが、個別のスケール幅に、出来なかった不都合を、解消した。
! スライド 部分は、分離、転用しやすいよう、外部へモジュール化。
!交流における、エナメル銅線の太さの最適値を、探すツール。
!
!---------------
OPTION ARITHMETIC COMPLEX
ASK bitmap SIZE i,j !(ask bitmap size)=(ask pixel size)-1
LET i=MIN(i,j)
SET TEXT font "MS ゴシック",10*i/500
SET TEXT HEIGHT ABS(worldy(11*i/500)-worldy(0))
SET TEXT background "OPAQUE"
SET AREA COLOR 0
PLOT TEXT,AT .1,.93:"左ボタン押下で、赤線↓をドラッグする。 右クリック終了。"
!
DECLARE EXTERNAL NUMERIC s.mlb, s.mrb
!
!----- slide volume channel1
DIM B1(1,100) !指針の背景記憶
DIM u1$(-9 TO -1) !単位記号 10^-9 TO 10^-1 m
DATA 1nm,10nm,100nm, 0.001mm,0.01mm,0.1mm, 1mm,10mm,100mm
MAT READ u1$
CALL s.inibox(1,B1, LOG10(1e-6),LOG10(10e-3), u1$, 0,1, .785,.91)
! (channel1, , 直径(m)下限,上限 , , ViewPort左,右,下,上)
!
LET di=.2e-3 !mφ 開始の 銅線直径
CALL s.wrline(1,B1, LOG10(di),v1$(di))
DEF v1$(v)="d= "& STR$(TRUNCATE(v*1e3, 4))& "mmφ" !数値の表示形式
!----- slide volume channel2
DIM B2(1,100) !指針の背景記憶
DIM u2$( 2 TO 11) !単位記号 10^2 to 10^11 Hz
DATA 100hz, 1khz,10khz,100khz, 1Mhz,10Mhz,100Mhz, 1Ghz,10Ghz,100Ghz
MAT READ u2$
CALL s.inibox(2,B2, LOG10(1e3),LOG10(10e9),u2$, 0,1, .66,.785)
! (channel2, , 周波数(Hz)下限,上限 , , ViewPort左,右,下,上)
!
LET fq=4.77e6 !Hz 開始の 周波数
CALL s.wrline(2,B2, LOG10(fq),v2$(fq))
DEF v2$(v)="f= "& LTRIM$(USING$("###,###,###,###",v))& "Hz" !数値の表示形式
!----------------------------
! 内部半径r(m)の電流方向電界Er / 表皮半径a(m)の電流方向電界Ea = 電流密度の比
!
! Er/Ea= bessel.i(0,r*k)/ bessel.i(0,a*k) …bessel.i(0,z) 変形ベッセル関数1種0次
!
! k=(1+i)/δ δ(表皮の厚さm)=√{2/(ω*u*g)} …1/s*H/m*S/m= 1/m^2 …H=Wb/A Wb=V*s S=1/Ω
!
LET u=PI*4e-7 !H/m 透磁率 !銅(真空)
LET g=5.96e7 !S/m 導電率 !銅{ 6.45e7(0℃), 5.96e7(25℃), 4.48e7(100℃) }
!
!----- title window
SET VIEWPORT .1, .9, .54, .66
SET WINDOW -1,1, 0,1
SET TEXT background "opaque"
SET TEXT JUSTIFY "center","bottom"
PLOT TEXT,AT 0, .45:"表皮効果によるエナメル線(銅)の電流密度分布"
PLOT TEXT,AT 0, .05:" 表皮 ← 中心 → 表皮 "
SET TEXT JUSTIFY "left","bottom"
DO
!----- foot window
SET VIEWPORT 0, 1, .04, .14
SET WINDOW -1, 1, 0,1
PLOT AREA: -1,0; -1,1; 1,1; 1,0 !clear
PLOT TEXT,AT -.04, .5 :"Wait …"
!
!----- graph window
SET VIEWPORT .3, .7, .14, .54
LET a=di/2 !m 導線半径
SET WINDOW -a,a, 0,1
PLOT AREA: -a,0; -a,1; a,1; a,0 !clear
SET COLOR MIX(15) .4, .4, .4
DRAW grid( a/5, 0.2)
SET LINE STYLE 3
SET LINE COLOR 0
PLOT LINES: -a,0; a,0
SET LINE STYLE 1
SET COLOR MIX(15) .7, .7, .7
!---
SET LINE COLOR "black"
WHEN EXCEPTION IN
CALL skin( a, fq)
LET w$="(交流/直流) 電流密度の積分比 ="& USING$("###.#", sum)& "%"
USE
LET ext=EXTYPE
beep
LET w$="Overflow EXTYPE="& STR$(ext)
END WHEN
!
!----- foot window
SET VIEWPORT 0, 1, .04, .14
SET WINDOW -1, 1, 0,1
PLOT TEXT,AT -.37, .5 :w$
PLOT TEXT,AT -.7, 0 :"(表皮の厚さ"& USING$("#.####",δ*1e3)& "mm)が、断面に占める面積比 ="& USING$("###.#",sum1)& "%"
!
!----- waiting input
DO
WAIT DELAY .02
MOUSE POLL x,y,mlb,mrb
LOOP UNTIL mlb=1 OR mrb=1
!
!----- slide volume
DO WHILE mlb=1
CALL s.sensor(1, B1, x) !channel1
IF x< MAXNUM THEN
LET di=10^x
CALL s.wrline(1, B1, x,v1$(di))
END IF
CALL s.sensor(2, B2, x) !channel2
IF x< MAXNUM THEN
LET fq=10^x
CALL s.wrline(2, B2, x,v2$(fq))
END IF
WAIT DELAY .02
LOOP
LOOP UNTIL mrb=1
!------- 台形∫--------
!∫=(f0+f1)/2*⊿+(f1+f2)/2*⊿+ … +(fn-2 + fn-1)/2*⊿+(fn-1 + fn)/2*⊿
!∫=(f0 /2 + f1 + … + fn-2 + fn-1 + fn /2)*⊿
!
!∫={(f0+fn)/2 + f1 + … + fn-2 + fn-1 }*⊿
!∫={(f0-fn)/2 + f1 + … + fn-2 + fn-1 + fn }*⊿
!----------------------
!
! x^2*( d2y/dx2 ) + x*( dy/dx) - (x^2+n^2)*y =0 …変形ベッセル1種 微分方程式(n=次数)
!
!ξ^2*(d2Ez/dξ2) + ξ*(dEz/dξ) - ξ^2*Ez =0 …円柱の電流方向の電界Ez
!
!ξ=r*(1+i)/δ δ=√{2/(2*π*f*u*g)} …半径r 表皮の厚さδ
!
! Ez= bessel.i(0,ξ) …次数 0
!
!----------------------
SUB skin( a, fq) !( a=半径, fq=周波数 )
LET δ=1/SQR(PI*fq*u*g) !「表皮の厚さ」
!
LET sum1=( 1-MAX((1-δ/a),0)^2 ) *100 !%
!
!sum1 (表皮の厚さ)が、断面に占める面積比 = π{a^2 - (a-δ)^2}/πa^2 ={1 - (1-δ/a)^2}
!
LET k=COMPLEX(1,1)/δ !(1+i)/δ
LET Ea= ABS( bessel.i(0,a*k) ) !表面での電流方向電界
LET xb=0 ! r=0
LET yb=1/Ea !(E0/Ea) r=0 での電界比 ...besseli(0,0)=1
!---
LET dr=a/256 !(pixelx(a)-pixelx(0))
LET sum=-a/2 !{(E0/Ea)*0 - (Ea/Ea)*a}/2 ==(f0-fn)/2
FOR r=dr TO a+dr/2 STEP dr
LET Ratio=ABS( bessel.i(0,r*k))/Ea !Er/Ea 表面に対する電界比 (電流密度比)0~1
PLOT LINES: xb,yb; r,Ratio
PLOT LINES:-xb,yb;-r,Ratio ! n
LET sum=sum+Ratio*r !+∑{Er(i)/Ea*r(i)} ==(f0-fn)/2 +f1+f2+...+fn-1 +fn
LET xb=r ! i=1
LET yb=Ratio
NEXT r
LET sum=sum*dr *200/a^2 !2π*sum*dr /πa^2 *100%
! a
!sum= (交流/直流) 電流密度の積分比 = {2π∫Ratio(r)r dr} / {πa^2}
! 0
END SUB
END
!---------------------------
! π
! 変形ベッセル関数1種 n 次 I(n,x)= 1/π*∫{ exp(x*cos(t)) *cos(n*t) }*dt
! 0
!---------------------------
MODULE bessel
MODULE OPTION ARITHMETIC COMPLEX
SHARE NUMERIC m
EXTERNAL FUNCTION i(n,x) ! 変形ベッセル1種n次
LET m=2*INT( (6+MAX(n,1.5*ABS(x))+9*1.5*ABS(x)/(1.5*ABS(x)+2))/2)
LET w=0
FOR kk=1 TO m
LET w=w+Tki(kk,x)
NEXT kk
LET i=EXP(x)*Tki(n,x)/(Tki(0,x)+2*w)
END FUNCTION
EXTERNAL FUNCTION Tki(i,x)
LET t2=0
LET t1=1e-9 !EPS(0)
LET t0=2*(m+1)/x*t1+t2
FOR kp1=m TO i+1 STEP -1
LET t2=t1
LET t1=t0
LET t0=2*kp1/x*t1+t2
NEXT kp1
LET Tki=t0
END FUNCTION
END MODULE
!---------------
! スライド入力
!
!---------------
MODULE s
MODULE OPTION ARITHMETIC COMPLEX
PUBLIC NUMERIC mlb,mrb
SHARE NUMERIC lw(5),lx(5),ux(5),uw(5), ly(5),uy(5),bx(5), vx0(5),vx1(5),vy0(5),vy1(5)
EXTERNAL SUB sensor(ch,B(,), x)
SET VIEWPORT vx0(ch), vx1(ch), vy0(ch), vy1(ch)
SET WINDOW lw(ch),uw(ch), 0, 1
MOUSE POLL x,y,mlb,mrb
IF ly(ch)< y AND y< uy(ch) AND bx(ch)<>x THEN !領域 検査
LET x=MAX(lx(ch),x)
LET x=MIN(x,ux(ch))
MAT PLOT CELLS, IN bx(ch),uy(ch); bx(ch),ly(ch): B !背景 復元
ELSE
LET x=MAXNUM !無効
END IF
END SUB
EXTERNAL SUB wrline(ch,B(,), x, v$)
LET bx(ch)=worldx(pixelx(x))
ASK PIXEL ARRAY (bx(ch),uy(ch)) B !背景 記憶
SET LINE COLOR "red"
PLOT LINES: bx(ch),uy(ch); bx(ch),ly(ch) !指針 描画
PLOT TEXT,AT lx(ch),uy(ch): v$& REPEAT$(" ",10) !数値 表示
END SUB
EXTERNAL SUB inibox(ch,B(,), L,u, u$(), v1,v2,v3,v4) !initialize
LET vx0(ch)=v1
LET vx1(ch)=v2
LET vy0(ch)=v3
LET vy1(ch)=v4
SET VIEWPORT v1,v2, v3,v4
!
!----- 問題座標を、ピクセル中心位置に調整する。
LET w=pixelx(1)-pixelx(0) !window の初期値 0,1, 0,1 で計算
LET i=INT(.05*w)
LET j=INT(.09*w)
LET lw(ch)=L-(u-L)*i/(w-i-j) !左端 lw() から+5% 近傍 L
LET uw(ch)=u+(u-L)*j/(w-i-j) !右端 uw() から-9% 近傍 u
LET lx(ch)=L
LET ux(ch)=u
LET uy(ch)=worldy(pixely(.7)) !下端 0 から+70% 近傍 uy()
LET ly(ch)=worldy(pixely( 0)) !下端 0 の 近傍 ly()
SET WINDOW lw(ch),uw(ch), 0, 1 !L,u, uy(),ly() が、ピクセル中心になる。
!
!----- 対数目盛
SET LINE COLOR 59 !184
FOR i=INT(L) TO u
FOR j=1 TO 9
LET x=i+LOG10(j)
IF L<=x AND x<=u THEN PLOT LINES :x,ly(ch); x,uy(ch)
NEXT j
IF L<=i THEN PLOT TEXT,AT i,ly(ch) :u$(i)
NEXT i
!----- 目盛の外郭
SET LINE COLOR "blue"
PLOT LINES: lw(ch),ly(ch); uw(ch),ly(ch); uw(ch),uy(ch); lw(ch),uy(ch); lw(ch),ly(ch)
!
!----- 背景記憶の寸法
ASK PIXEL SIZE (L,uy(ch); L,ly(ch)) i,j
MAT B=ZER(i,j)
END SUB
END MODULE
|
|