ソレノイドコイルの磁場

# はじめに
ソレノイドコイルの中心部に生じる磁場の大きさは単位あたりの巻数と電流の積で決定される。しかし、外部に生じる磁場などは複雑になるのでシミュレーションを用いないと求められない。そこで、今回は導線に電流が流れると右ねじの法則によって磁場が生じるというプログラムを参考にしてソレノイドコイルの断面モデル製作して様々な実験をしてみることを目的とする。

# モデル
まず、導線に流れる電流の周りには以下のように右ねじの方向に磁場が生じる。

```python:jiba.py

"""
画面垂直方向に伸びる導線の周辺に働く磁場について
"""

import numpy as np
import matplotlib.pyplot as plt
import math
plt.figure()


LX, LY=3,3

gridwidth=0.3 
X, Y= np.meshgrid(np.arange(-LX, LX, gridwidth), np.arange(-LY, LY,gridwidth)) 



#導線の位置
x1,y1=0,0 
z1=x1+1j*y1
I=10  #定常電流の値
R1=np.sqrt((X-X1)**2+(Y-Y1)**2)
plt.plot(x1,y1,'o',color='blue')

#ベクトル関数の設定。定常電流が作る静磁場 F(U(x,y), V(x,y))


x=[]
y=[]
u=[]
v=[]

z=0

for i in range(len(X)):
    for k in range(len(X)):
        x=X[i][k]
        y=Y[i][k]
        z=x+1j*y
        z_1=z-z1
        H=I/(2*math.pi*abs(z_1))*((-1j)*z_1/abs(z_1))
        u=H.real
        v=H.imag
        if abs(z_1)>0.3:
            plt.quiver(x,y,u,v,color='red',angles='xy',scale_units='xy', scale=4.5)
plt.xlim([-LX,LX])
plt.ylim([-LY,LY])

# グラフ描画
plt.grid()
plt.draw()
plt.show()
```

![磁場１-300x228.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1686019/ac7427df-5f5d-7611-f9f4-002d76ca3d16.png)

# ソレノイドコイル
一本の導線を等間隔に複数並べることによってコイルを作成することができる。なので、以下のようなプログラムを書くことで、ソレノイドコイルが発生させる磁場の分布を表すことが可能になる。
```python:coil.py

"""
ソレノイドコイルに生じる磁場
"""


import numpy as np
import matplotlib.pyplot as plt
import math
plt.figure()


LX, LY=4,4

gridwidth=0.3 
X, Y= np.meshgrid(np.arange(-LX, LX, gridwidth), np.arange(-LY, LY,gridwidth)) 

n=20
x=np.linspace(-2,+2,n)
d=1.5
zp=np.zeros(n)
zp2=np.zeros(n)
for i in range(n):
    zp[i]=x[i]    
    plt.plot(x[i],0,'o',color='blue')

    plt.plot(x[i],d,'o',color='blue')



I=1
print()
x=[]
y=[]
u=[]
v=[]

z=0

for i in range(len(X)):
    for k in range(len(X)):
        x=X[i][k]
        y=Y[i][k]
        z=x+1j*y
        
     
        #H=I1/(2*math.pi*abs(z_1))*((-1j)*z_1/abs(z_1)) +I2/(2*math.pi*abs(z_2))*((-1j)*z_2/abs(z_2))
        H=0
        for p in range(len(zp)):
            z_1=z-zp[p]
            z_2=z-(zp[p]+d*1j)
            H=H+I/(2*math.pi*abs(z_1))*((-1j)*z_1/abs(z_1)) -I/(2*math.pi*abs(z_2))*((-1j)*z_2/abs(z_2)) 
            
        u=H.real
        v=H.imag
        
        plt.quiver(x,y,u,v,color='red',angles='xy',scale_units='xy', scale=4.5)


plt.xlim([-LX,LX])
plt.ylim([-LY,LY])

# グラフ描画
plt.grid()
plt.draw()
plt.savefig("solenoid.png")
plt.show()
```

![solenoid.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1686019/05b91d6e-cc05-4437-e2f7-0e34ac1d541d.png)


このように、右ねじの法則を一本一本の導線に適用することによって、ソレノイドコイルの磁場の分布を解析することができる。

# パラメータの変更
それでは、ソレノイドコイルのパラメータを変更したときの磁場の分布について調べてみよう。
## 巻き数
まず巻き数を2倍にした場合の画像を以下に示す。

![solenoid_40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1686019/b8e60278-d35b-afa0-dc4c-2592acfe6178.png)

このように、コイル中心付近の磁場の強さが増していることが分かる。

## 密度一定
それでは、密度（単位あたりの巻き数）を一定にして長さを1.5倍にしたときについて以下のグラフに示す。

![solenoid_30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1686019/a3b334b3-a25f-507b-ab71-9b873e46ab12.png)

このことから、コイル中心の磁場の強さは初期のモデルと同じであることから、単位あたりの巻き数を一定にした場合は原理的には中心部の磁場の大きさは等しいことが分かる。

## 間隔
それでは最後にコイルの上下の間隔を倍にした場合の磁場の分布の画像を以下に示す。

![solenoid_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1686019/28735434-faa7-c547-18c5-1ac582e943bf.png)

巻き数以外のパラメータを変化させたとしても、中心部付近に生じる電場は変化しないようである。また、このようにコイル末端付近で磁場がかき乱されるのは、無限大の長さとみなせていないからである。（十分に広い長さのコイルとも言い換えることができる）

# まとめ
今回は、右ねじの法則をもとに一本の導線に電流を流したときの磁場の分布について解析した。そしてそれを拡張してソレノイドコイルの断面に生じる磁場について解析したあと、ソレノイドコイルのパラメータを変更してそれらが磁場に与える影響について調査した。結果、コイル中心部に生じる磁場の大きさはコイルの単位あたりの巻き数が重要であるということを確認することができた。



#　参考文献

https://qiita.com/sci_Haru/items/21777764ae50996abd95