後期、4個目のSACLAビームタイムが終了

イメージ
厳くんのビームタイム(100テスラXFEL回折)があり、先週の月から金でSACLAに滞在していた。実験は順調に進み、3種類ものサンプルのデータがとれた。大きな変化という意味では一つのサンプルが大成功で、あとはちょっと磁場が足りないことが判明した。データクオリティはめちゃ高かったので雰囲気も良かった。11 keVシードビームの安定性も高い。 今回は今まで自分がやっていた作業も含めて、学生さんたちにかなり任せて活躍してもらった。学生さんたちはとても良くやってくれました。(自分でやるよりもずっと早くて上手だと判明) フルショットを打ちまくって、検出器にデブリがとびまくった。久保田さんが心配そうにしているので、新プロテクターを作らなくてはだめだ。 2.5日のビームタイムで破壊ショット20発。2発はミスでデータなし。前回・前々回に引き続き非常に良いビームタイムでした。PINK-02の実験が共用実験っぽくなってきてよかったよかった。後期で4つめのPINK-SACLAのビームタイムが終了したのでやっと安心。低温・強磁場・X線の準備が整っていたのでうまくいったと思う。年間ではPINK-SACLAが5件。その他、野尻・プラズマも合わせると、7件のSACLA実験があった。それ以外に関西研にも行った。ナノテラスも3月に行くかも。今年度は今までで一番多かった。 来年度は前期に3つ。後期はどうなるか。SPring-8や関西研もありそう。少し時間があったので、SPring-8のビームラインで打ち合わせがてら装置を見たり、兵庫県立大にも短い時間滞在した。効率的に過ごせた。 週末はアートの展覧会にお呼ばれして行き、ちょっとおしゃべりもしてきた。動画を後日見せてもらったが、さすがに、伸びシロしかない・・・。 連休中、調布ではトトロが再上映。家族で観覧した。 ここ1年ほどは映画館で新作・リバイバルを見るのがブーム 国宝 チェンソーマン レゼ編(2~3回) PERFECT BLUE もののけ姫 IMAX(2回) エヴァンゲリオン Air/まごころを君に となりのトトロ 時計じかけのオレンジ その他にこどもと おまえうまそうだな すみっコぐらし クリーミーマミ ズートピア2 時計じかけのオレンジに影響されて、赤ワインを飲んだり、聖書を買って読んだりした。 聖書は意外に読みやすく、最後まで目を通した。めっち...

磁場分布シミュレータv0.1をpythonで

(追記 5/4)下記のプログラムは不完全です。平面にかかる電流素片のみからの磁場を足し合わせています。コイルを巻く方向に360°積分するのをサボっているので、正確ではありません。ちゃんとしたプログラムは、またいつか作ります。。。。 (5/5)作りました。



実はアイディアがあるのです。誰もまねしないだろうから、言いますが、ベクトルパルスマグネットを作ろうとしています。なぜかというと、世の中にそんなものはないし、面白そうだからです。ベクトルマグネットはありますが、ベクトルパルスマグネットはないです。ググっても出てこない。


3月末に思いついてから、割と良い考えだなーと思って今まで来ました。


電源の材料調達のために、モノコイルのLCR回路のシミュレーターはそれらしいのができました。

スプリットペアとなると、磁場の値や、分布が気になるところ。しかもスプリットペアを2つ組み合わせるとなるとなおのことです。


というわけでまた、ネット上のサンプルプログラムを改変して、それっぽい磁場分布シミュレータを作ってみました。もちろんver 0.1です。


計算の中身は電流が作る磁場のベクトル場を、どんどん足し合わせているだけの、しょぼいプログラムです。それをベクトル場を表示するmatplotlib.pyplot.quiverという関数を使って表示しています。







定量性はないけど、なんかそれっぽい!

学生のN田くんがきて、「ラインで切って、磁場分布がプロットできるようになると良いですね・・・では、さよなら」と、コメントを残して去って行った。。。





import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

"""
Magnetic field distribution simulator v0.1

A. Ikeda of UEC Tokyo
2 May 2022

References
[1]https://krajit.github.io/sympy/vectorFields/vectorFields.html

"""




### basic parameters for calculations ###
xrang = 25
yrang = 25
div = 60
limit = 60
x, y = np.meshgrid(np.linspace(-xrang, xrang, div), np.linspace(-yrang, yrang, div))



### definition of B field generated by a wire ###
def wireat_x(a, b):
    return -(y - b)/((x - a)**2 + (y - b)**2)
def wireat_y(a, b):
    return (x - a)/((x - a)**2 + (y - b)**2)

u = x - x
v = y - y



### parameters for the 1st split pair ###
bore = 10
gap = 20
hgap = gap/2
borer = bore/2
layer = 10
wind = 5



### calculating B fields of the 1st split pair ###
for la in np.arange(layer):
    for wi in np.arange(wind):
        u += wireat_x(wi + hgap, -(borer + la)) -wireat_x(wi + hgap, (borer + la))
        v += wireat_y(wi + hgap, -(borer + la)) -wireat_y(wi + hgap, (borer + la))

for la in np.arange(layer):
    for wi in np.arange(wind):
        u += wireat_x(-wi - hgap, -(borer + la)) -wireat_x(-wi - hgap, (borer + la))
        v += wireat_y(-wi - hgap, -(borer + la)) -wireat_y(-wi - hgap, (borer + la))



### parameters for the 2nd split pair ###
bore2 = 5
borer2 = bore2/2
gap2 = 10
hgap2 = gap2/2
layer2 = 5
wind2 = 5
cf = 1



### calculating B fields of the 1st split pair ###
for la in np.arange(layer2):
    for wi in np.arange(wind2):
        u += (wireat_x(-(borer2 + la), wi + hgap2) -wireat_x(borer2 + la, wi + hgap2))/cf
        v += (wireat_y(-(borer2 + la), wi + hgap2) -wireat_y(borer2 + la, wi + hgap2))/cf

for la in np.arange(layer2):
    for wi in np.arange(wind2):
        u += (-wireat_x((borer2 + la), -wi - hgap2) + wireat_x(- (borer2 + la), -wi - hgap2))/cf
        v += (-wireat_y((borer2 + la), -wi - hgap2) + wireat_y(- (borer2 + la), -wi - hgap2))/cf
        

ul = np.where((u > limit) | (u < -limit), 0, u)
vl = np.where((v > limit) | (v < -limit), 0, v)

plt.figure(figsize = (12,12))
plt.quiver(x,y,ul,vl) 
plt.savefig('out.pdf')
plt.show()


コメント

このブログの人気の投稿