st-red-strat / 1dim-qm-sim

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

hbar = 1, m = 1/2
すなわち 2m / hbar^2 = 1
の単位系(変更したければシュレディンガー方程式の**項、
つまりstep関数の中でphiの2階微分の前の係数を変更してください)で
任意のポテンシャル下の1次元量子力学系を解けます。
c++14をサポートするg++及びgnuplotの動くコマンドライン上で
./1dim-qm-sim-execute.sh
と入力すれば実行でき、コンパイルからgif画像(outputフォルダ内にデモあり)の出力まで一通りやってくれます。

デフォルトでは#DEFINE MODEの部分を書き換えることで
箱型ポテンシャル、調和振動子、自由粒子のシミュレーションが出来ますが、
さらに別のポテンシャルを試したければvInitを変更してください。
調和振動子を出力する際はgnuplotのスクリプトも専用のもの
(gif_plot_for_harm_osci.gp)に切り替えることをオススメします。
古典系と量子系の違い(散乱によるphase shiftなど)が見えるはずです。

デフォルトの初期条件は位置x0、**量p0の規格化されたガウス波束ですが、
これを変えたければphiInitを変更すればよいはずです。

細い注意として、デフォルトではprintVandPhiはint_tが10変化するごとに呼び出されますが、
これでは出力ファイル ./output/output.dat のサイズが数百MB程度になり
gnuplotに読ませるのに多少時間がかかるかもしれません。
解決策としてint_tは例えば30ごととかにして、代わりに.gpファイルのdo文の中のindex
(output.datのうち実際に画像出力に使う部分をここで指定しています)
の係数の3を除くなど、各自で工夫してください

About


Languages

Language:C++ 74.0%Language:Gnuplot 22.6%Language:Shell 3.4%