物理の駅 by onsanai

Physics Station → PhSt 質問・疑問・間違いの指摘は、コメントに書くか、直接伝えるときっと良いことがあります。主にWindows or Ubuntu用の記事です

Woods-Saxon potentialをPythonで描画する

import numpy as np
from matplotlib import pyplot as plt
v0 = 14
A = 15
a = 0.5
r0 = 1.25
R = r0*A**(1/3)
x = np.linspace(0.0, 10.0)
y = -v0/(1+np.exp((x-R)/a))
plt.plot(x, y, "b-")
plt.title(r"Woods-Saxon potential")
plt.text(3, -v0*0.8, 
         r"$V(r)=\frac{-V_0}{1+{\rm exp}(r-R)/a}$"+
         "\n"+
         r"Parameters: A$={}$, $V_0={}$ MeV".format(A,v0)+
         "\n"+
         r"$a={}$ fm, $r_0={}$ fm, $R={:.1f} $fm".format(a,r0,R),
        fontsize=12)
plt.xlabel(r"$r$ [fm]")
plt.ylabel(r"$V(r)$ [MeV]")
plt.show()

f:id:onsanai:20210205111754p:plain

オリジナルコード

http://nucleartalent.github.io/Course2ManyBodyMethods/doc/pub/intro/pdf/intro-print.pdf

ポアソン分布と二項分布をPythonで描画する

Pythonを用いた ポアソン分布の確率分布の描画。適宜meanを変えてね。

from scipy.stats import poisson
import matplotlib.pyplot as plt

mean = 2.3

xs = []
prob = []
for i in range(7):
    print(i,poisson.pmf(i, mean))
    prob.append(poisson.pmf(i, mean))
    xs.append(i)
    
plt.plot(xs,prob,lw=0,marker="o")

for x,p in zip(xs,prob):
    plt.text(x+0.1, p, "{:.4f}".format(p),size=10)

plt.xlim(-0.5,6.5)
plt.ylim(-0.,1.0)
plt.xlabel(r"$\lambda$")
plt.ylabel(r"Probability")
plt.show()

mean=2.30 の確率分布

f:id:onsanai:20210126145402p:plain

二項分布の場合。

from scipy.stats import binom
import matplotlib.pyplot as plt

mean = 2.3
entries = 200

xs = []
prob = []
for i in range(7):
    print(i,binom(entries,mean/entries).pmf(i))
    prob.append(binom(entries,mean/entries).pmf(i))
    xs.append(i)
    
# 以下同

今回はn=200として計算。ポアソン分布とはわずかに異なる。

f:id:onsanai:20210126204224p:plain

Windows Server 2019にIntel LAN Adapter I219-Vのドライバをインストールする

Intelのコンシューマー用のネットワークアダプターは、いろんな思惑から、Windows Server用のドライバを提供していないことがある。しかし、Windows10とServer2019は同じものなのでドライバが使えないわけではない。使うためには、やや専門的な知識を必要とする。

I219-V Windows Server 2019用のドライバーをダウンロード

downloadcenter.intel.com

PROWinx64.exe を起動し次のエラーが出るまで進む

ドライバーをインストールできません。このコンピューターにはインテル(R)アダプターがありません。

その状態で、%LOCALAPPDATA%/Temp を開く。更新日時の新しいフォルダで、WZSE0.TMP的なのを開く。微妙に名前は違うらしい。フォルダ内にPRO1000が入っている。このPRO1000をデスクトップ等にコピーする。

バイスマネージャーで認識していないネットワークアダプターのDEV IDを確認する。今回は0D55だった。

Winx64NDIS68e1d68x64.infを開く。名前は微妙に違うかもしれない。

0D55で検索する。

[Intel.NTamd64.10.0.1]のセクションに

%E0D55NC.DeviceDesc%            = E0D55.10.0.1,       PCI\VEN_8086&DEV_0D55
%E0D55NC.DeviceDesc%            = E0D55.10.0.1,       PCI\VEN_8086&DEV_0D55&SUBSYS_00008086

[Intel.NTamd64.10.0.1..18362]のセクションに

%E0D55NC.DeviceDesc%            = E0D55.10.0.1.19H1,       PCI\VEN_8086&DEV_0D55
%E0D55NC.DeviceDesc%            = E0D55.10.0.1.19H1,       PCI\VEN_8086&DEV_0D55&SUBSYS_00008086

みたいなのが見つかるはず。このどちらか(当方で試したのは19H1の方)を

[Intel.NTamd64.10.0]
[Intel.NTamd64.10.0...18362]

のセクションの最後に追加し保存する。書き換えた未署名のinfファイルはインストールできないので、次の操作を行う。

管理者権限のコマンドプロンプトで以下のコマンドを実行する。

bcdedit /set LOADOPTIONS DISABLE_INTEGRITY_CHECKS
bcdedit /set TESTSIGNING ON
bcdedit /set NOINTEGRITYCHECKS ON

再起動

e1d68x64.infを右クリックしてインストール

これでネットワークアダプターが認識されるはずである。

未署名のinfファイルを使えなくするため、管理者権限のコマンドプロンプトで以下のコマンドを実行しておく。

bcdedit /set LOADOPTIONS ENABLE_INTEGRITY_CHECKS
bcdedit /set TESTSIGNING OFF
bcdedit /set NOINTEGRITYCHECKS OFF

環境変数を設定したコマンドプロンプトの簡単な作成方法

バッチファイル(拡張子がbat)のファイル作っておき、それを起動するのが簡単な作成方法である

ファイル名は例えば setenv.bat とし、中身には以下のように記述する。この例では、C:\ をPATHに追加している。

@echo off
PATH=C:\;%PATH%
cmd /k

作成後、 setenv.bat をダブルクリックするだけで、必要な環境のコマンドプロンプトが立ち上がる。

calibreのアンインストール時に拡張子への関連付けが消えない問題の解決

Bug #1856268 “File Associations Not Removed On Uninstall” : Bugs : calibre

ここで報告されてる通り、アンインストール時に関連付けの登録が消えないのは仕様通りだそうだ。

例えば、64bit版をインストールし、起動時に(無意識に)関連付けをしてしまうと、PDFなどのファイルに

"C:\Program Files\Calibre2\calibre.exe" "%1"
"C:\Program Files\Calibre2\ebook-viewer.exe" "%1"

で開くという選択肢が残ったままになる。レジストリからも削除できるが、手動でレジストリを操作するのはトラブルの元だからやめよう。

公式に削除する方法が提供されている。calibre-debug.exe が必要なので、再度calibreをインストールする。calibreは起動しない。通常はPATHが通っているので、コマンドプロンプトなどで

calibre-debug --default-programs=unregister

を実行すると、関連付けの登録を解除してくれる。インストールだけでは関連付け登録はされないのでそのままcalibreをアンインストールすれば作業完了である。