[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#menu(LABO/MenuBar)
* LABO/nameless [#lc55cba5]
#contents
** 一行メモ [#ldad7c53]
- namelessでの計算式や説明
#ref(3P089_w.pdf)
#ref(電子ダイナミクスのためのプログラム開発・実装20181005...
#ref(SCCJ-1P16.pdf)
#ref(3P112_w.pdf)
#ref(3P123_w.pdf)
- ソースコードの行数カウント
wc -l `ls -1 nameless*.[chly] | grep -v 'nameless_input....
- Intel Intrinsics Guide https://software.intel.com/sites...
-- https://www.officedaytime.com/simd512/
- インテル® 64 および IA-32 アーキテクチャー 最適化リファ...
- gccで -malign-double はデフォルト -- &new{2021-01-31 (...
- gcc mallocはアライメントされている? https://hangstuck....
- DDRメモリの理論メモリバンド幅の求め方 https://freak-da....
- CPUのクロックを調べる -- &new{2021-02-10 (水) 10:59:43};
-- ssh compute-0-1 cpupower frequency-info #こっちはroot...
-- ssh compute-0-1 grep MHz /proc/cpuinfo #現時点での周...
-- sarコマンド -- &new{2021-02-16 (火) 13:39:46};
$ sar -P ALL 1
$ sar -m CPU 1
$ while [ 1 ]; do sleep 1; echo `grep MHz /proc/cpuinfo`...
[ref] http://honeotech.hatenablog.com/entry/2016/11/06/2...
- gcc -mavx や -mavx2 で自動で AVX, AVX2命令を使ってコン...
- MKLライブラリ https://qiita.com/tenomoto/items/c50fa1e3...
- 参考(けっこう間違いある) -- &new{2021-07-02 (金) 09:...
-- [[第一原理バンド計算(基礎編)>https://mmnakayama.jimd...
-- [[第一原理計算(解析編)>https://mmnakayama.jimdofree....
- namelessディレクトリ内の入力サンプルを、sampleinpディレ...
- https://www.intel.co.jp/content/www/jp/ja/products/sku/...
- インテルCPUプロセッサーのスペック http://ark.intel.com/ja
-- CPUの名前の由来 https://pcfreebook.com/article/4532705...
- WD HDD,SSDのスペック https://www.westerndigital.com/ja-...
- GPUやCPU, Socの性能比較 https://www.topcpu.net/ja/gpu-c...
- CPU性能比較表 https://pcrecommend.com/cpu/ -- &new{202...
- チューニングメモ:calcVext_tが遅い? NonequalintervalsG...
#comment
//katexの呼び出し
#katex
//$y=ax^2+bx+c$
//https://katex.org/docs/supported.html#style-color-size-...
//$\alpha$
//$\beta$
//$\mathrm{H_2^-}$
//$\mathbf{H_2^-}$
//&color(RED){hoge}; and COLOR(RED){junk}~
//F&sup{2}; and FSUP{2}~
//K&sub{4}; and FSUB{4}~
//-------------------------------------------------------...
* namelessの使い方 [#m253b555]
//- 旧版
//#ref(namelessの使い方_20190415b.docx)
//#ref(namelessの使い方_20180518.docx)
//#ref(namelessの使い方_20170701.docx)
** 入力サンプル(sample_*.inpファイル)と実行 [#zcf9227c]
alliumでは /share/apps/namelessディレクトリ(ivyでは /opt...
同じディレクトリ内のsampleinpディレクトリに、下記の入力サ...
この入力サンプルはシェルスクリプトであり、nameless.xに入...
また、入力サンプルはSGEキューに投入できるスクリプトにもな...
入力サンプルの他に、sample_*.out.chkedファイル(過去の実...
|~ファイル名 |~説明|
|sample_vWFEMr1pk.inp |自由電子の波動関数(右に進む波...
|sample_optH2mb64g64.inp |H&sub{2};&sup{-};イオンについ...
|sample_H2mb64g64.inp |上の定常状態をt=0の波動関数と...
|sample_H2mb64g64_c2.inp |上の続きとして、さらに波動関...
|sample_optH2b64g64.inp |H&sub{2};分子について、定常状...
|sample_H2b64g64.inp |上の定常状態をt=0の波動関数と...
|sample_optppH2mb64g64.inp |H&sub{2};&sup{-};イオンについ...
|sample_optppH2b64g64.inp |H&sub{2};分子について、擬ポテ...
入力サンプルは、/share/apps/nameless/sampleinpディレクト...
適当なディレクトリで実行する場合は、入力サンプル内のシェ...
nameless.xのパスに変更するなどしてから実行する。
また、入力サンプルのファイル名は拡張子が.inpであれば自由...
namelessを実行すると、カレントディレクトリなどに下記の実...
(入力サンプル内のシェル変数dirRSTが "./"以外の場合は、.o...
なお、条件によって trjファイルのファイルサイズはとても大...
|~拡張子|~説明|
|.out |ログ出力|
|.rst |リスタートファイル(継続計算に利用)|
|.sup |.outのうち、エネルギーなどの値がここにも出力され...
|.trj |トラジェクトリーファイル(波動関数などの時系列の...
|.nuc |核座標が含まれる。現在未使用、出力されない|
入力サンプルとログ出力の例と説明はこちら。~
wordファイル: &ref(namelessの入力サンプルとログ出力の...
CENTER:
&ref(vWFEMr1pkガウス波束.png,left,70%,nowrap); &ref(H2...
図:
(左) sample_vWFEMr1pkの右に進む波束、
(右) H&sub{2};&sup{-};とH&sub{2};の分子軌道
*** 入力の書式 [#q7615d46]
[[LABO/namelessの入力]]
*** 処理フロー [#xe8a65a4]
&ref(nameless処理フロー20220727.pdf);
Miroボードへの共有リンク https://miro.com/app/board/uXjVO...
パスワードは、N...2..P...です。
(ボードのバックアップファイル &ref(nameless処理フロー_bo...
c.f. Miro https://miro.com/
参考(時間発展演算子、Eum法、CG法など):
&ref(一部抽出修正→編集版20220801.pdf);
*** 補足 [#f203508f]
namelessでは波動関数$\Psi$は、$N$個のスピン軌道$\chi^j$か...
$j$番目の電子の空間座標$(x_j,y_j,z_j)$とスピン座標$\sigma...
$\bm{\zeta}_j \equiv (x_j,y_j,z_j,\sigma_j)$ であり、$j=1...
スレータ行列式は次の表式であり、真の波動関数を近似したも...
$$
\Psi =
\frac{1}{\sqrt{N!}}
\begin{vmatrix}
\chi^1(\bm{\zeta}_1) & \chi^2(\bm{\zeta}_1) & ... & \chi^...
\chi^1(\bm{\zeta}_2) & \chi^2(\bm{\zeta}_2) & ... & \chi^...
... & ... & ... & ... ...
\chi^1(\bm{\zeta}_N) & \chi^2(\bm{\zeta}_N) & ... & \chi^...
\end{vmatrix}
$$
ここで
$$
\Bigg\{
\begin{matrix}
\chi^{2i-1}(\bm{\zeta}) = \psi^{\alpha i}(x,y,z) \alpha...
\chi^{2i}(\bm{\zeta}) = \psi^{\beta i}(x,y,z) \beta(\...
\end{matrix}
$$
などであり、$\alpha(\sigma)$と$\beta(\sigma)$はそれぞれ$\...
$\psi^{s i}(x,y,z)$はスピン$s$の $i$番目の空間軌道である。
スピン軌道$\chi^j$や空間軌道$\psi^{s i}$は、1電子波動関数...
真の波動関数を近似するときに $\psi^{\alpha i} = \psi^{\be...
という制限を付ける場合がある。このような空間軌道は、制限...
$\psi^{\alpha i} \ne \psi^{\beta i}$ のときは非制限空間軌...
真の波動関数を近似するときに、制限付き空間軌道を使ったり...
////////////////////////スピン分極・非スピン分極
$\alpha$スピンと$\beta$スピンがひとつずつ対になって同じ空...
この状態を空間軌道$\psi^i$に、$\alpha$スピンの電子と$\bet...
この空間軌道$\psi^i$は閉殻であると言う。
$\alpha$または$\beta$スピン電子の片方しか入っていない空間...
電子を偶数個もつ原子や分子などで、すべての空間軌道$\psi^i...
三次元空間のどの場所でも、$\alpha$スピンの電子数と$\beta$...
このような状態を、スピン分極していない(非スピン分極であ...
電子数が奇数個であれば、三次元空間のいずれかの場所で $\al...
偶数個であっても、$\alpha$と$\beta$スピンの電子で異なる空...
このような状態は、スピン分極していると呼ぶ。
namelessでは、入力で spin_polarization=YES を指定すると、...
一方、制限付き空間軌道を使い、なおかつ閉殻のみである場合...
spin_polarization=NO を指定して計算できる。
$\psi^{s i}$を時刻$t$の関数$\psi^{s i}(x,y,z,t)$とすると...
$$
i \hbar \frac{\partial}{\partial t} \Psi(\bm{\zeta}_1,\bm...
= \mathscr{H} \Psi(\bm{\zeta}_1,\bm{\zeta}_2,...,\bm{\zet...
$$
から、1電子波動関数の時間発展の式
$$
i \hbar \frac{\partial}{\partial t} \psi^{s i}(x,y,z,t) =...
\quad for \space i=1,2,...,N_s \space and \space s=\alpha...
$$
を導くことができる。$N_\alpha$は$\alpha$電子の数、$N_\bet...
最初のスタートとなる $N$個の $\psi^{s i}(x,y,z)$を用意し...
この式から 1電子波動関数の時間発展、そして波動関数$\Psi$...
$$
\psi^{s i}(x,y,z,t_1) → \psi^{s i}(x,y,z,t_2) → \psi^{s i...
$$
すなわち
$$
\Psi(\bm{\zeta}_1,...,\bm{\zeta}_N,t_1) → \Psi(\bm{\zeta}...
→ \Psi(\bm{\zeta}_1,...,\bm{\zeta}_N,t_3) → ...
$$
がわかる。
各時刻での$\Psi$がわかると、物理量$\hat{A}$の期待値は $\b...
から求めることができる。
最初のスタートとなる $\psi^{s i}$は、例えば次のいずれかを...
・波束、平面波、水素原子の$1s$や$2p_z$関数など、入力で...
・定常状態の波動関数(すなわちその1電子波動関数$\psi^{s ...
・前に時間発展等をさせた結果($\psi^{s i}$)を使う。~
定常状態の波動関数は、時間非依存シュレーディンガー方程式
$$
\mathscr{H} \Psi(\bm{\zeta}_1,...,\bm{\zeta}_N) = E \Psi(...
$$
の解である。
定常状態の場合は、$\psi^{s i}$ (そして$\Psi$) を実関数と...
namelessでは Eum法により定常状態の実関数としての波動関数...
Eum法では適当な$\psi^{s i}$の初期値を与えて繰り返し計算を...
定常状態の波動関数は $t$に関する因子が掛かって
$$
\Psi(\bm{\zeta}_1,...,\bm{\zeta}_N,t)
= \Psi(\bm{\zeta}_1,...,\bm{\zeta}_N) e^{ \frac{E}{i\hbar...
$$
のように振動する時間発展をする。
定常状態の波動関数をスタートに使うという事は、$t=0$とした
$\Psi(\bm{\zeta}_1,...,\bm{\zeta}_N,0)=\Psi(\bm{\zeta}_1,...
** リスタートファイル(.rst)のフォーマット (VER 0.9.8) [#q...
ファイルは
最初の3行はヘッダ(テキスト)
グリッドのデータ(テキスト又はバイナリ)
空行
から成る。
ヘッダは次の通り。
ヘッダの1行目:ステップ数, 時刻, バージョン
ヘッダの2行目:α軌道の数, β軌道の数, NS(グリッド上...
BOX(計算領域)のxmin, xmax, ymin, yma...
ヘッダの3行目:TEXT or BINARY, EXACTVALUE or SINGLE...
x, y, z, VnucSoft, VnucDiff, Vhar, V...
が続いて、
rhoA, PsiA
がα軌道の数だけ繰り返し続き、POLの場...
rhoB, PsiB
がβ軌道の数だけ繰り返し続く。
** トラジェクトリーファイル(.trj)のフォーマット(VER 0.9.8...
リスタートファイルを単に繋げたもの。
** ツールプログラム(nltrjrst2cube.x)の使い方 [#mc1ae681]
trjやrstファイルから ParaViewソフトで読み込めるグリッドデ...
例えば、trjファイルのあるディレクトリで
$ ln -s /share/apps/nameless/nltrjrst2cube.x
$ ./nltrjrst2cube.x -pvdraw hoge.trj junkname
とすると、
hoge.trjに含まれる各時刻の波動関数のグリッドデータが、jun...
出力される。junkname.pvdも出力される。
junknameはパス名を部分的に含んでいてもよい。
$ ./nltrjrst2cube.x -pvdraw hoge.trj junkdir/junk
とすると、junkdir/junk-f0001.vti, junkdir/junk-f0002.vti,...
出力される。予めディレクトリ junkdirが存在すること。
$ ./nltrjrst2cube.x -help
で簡易的な使い方が表示される。
** その他のツールプログラム(sampleinpディレクトリ内) [#...
いくつかは python3が必要である。
:nlout2info.sh |
namelessのログなどから使用メモリ量やディスク量などの情報...
(実行例)~
&ref(nlout2info.shの実行例.png,left,60%,nowrap);
:ovgnuplot.py |
ovgpファイルを読み込み gnuplotでグラフを描く。
sample.ovgpは supファイルをグラフ化するovgpファイルの例で...
(使い方)~
python3が必要なので、alliumでは最初に1回だけ
source /share/apps/anaconda3.bash_conda
をする。
.ovgpファイルは、gnuplotのコマンドを書き並べるが、
{ }内は plotコマンドに書き換えられてグラフが描かれる。
{ }内の書式はサンプルを参考にするか、ovgnuplot.pyファイル...
ovgnuplot.pyは .ovgpファイルの通りグラフを描いた後、
プロンプトovgnuplot> を出し、追加のgnuplotコマンドを受け...
終了はquit。
(なお、端末やgnuplotウィンドウの表示が乱れる事がある。)~
(実行例)~
&ref(ovgnuplot.pyの実行例.png,left,nowrap,35%);
:samplesupplot.sh |
ovgnuplot.pyを使用したスクリプト例で、supファイルを次々と...
ovgpファイルの代わりにヒアドキュメントを使用している。
例はsupファイルはひとつだけを読み込んでいるが、4個まで読...
詳細はスクリプトを参照のこと。
:sampletrjplot.gp |
trj-linexファイル(step毎のx,ψなど含む)をグラフ(動画)にす...
使い方はスクリプト内にある説明を参照のこと。
trj-linexファイルは、
./nltrjrst2cube.x -linex hoge.trj hoge.trj-linex
などのように作成したものである。
** GUI (gui4nameless.py) の使い方 [#mca2065a]
python3が必要であるため、次のように python3の実行環境を設...
$ . /share/apps/anaconda3.bash_conda
その後
$ PYTHONPATH=$HOME/hoge ~/hoge/gui4nameless.py #hogeは...
#ref(GUInameless.png,center,50%,nowrap)
CENTER:
Fig: GUInamelessのスクリーンショット
** Paraviewから実行する可視化制御GUIプログラム(visgui.py)...
以下は alliumでの起動方法である。~
~~/.config/ParaView/Macros ディレクトリに $HOME/hoge/visg...
hogeは namelessをインストールしたディレクトリである。
$ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/share/apps/ParaView-...
PYTHONPATH=/share/apps/ParaView-5.11-etc/pypkg:$HOME/h...
/share/apps/ParaView-5.11.0-RC2-MPI-Linux-Python3.9-x8...
その後、ParaViewのMacroメニューから visguirunを選択して動...
(なお、Load Stateしたパイプラインについては visgui.pyの "...
#ref(VisGui.png,center,50%,nowrap)
CENTER:
Fig: VisGuiのスクリーンショット
** コンパイル方法 [#t5e7f7e5]
&color(RED){(注) 現在、ソースコードは非公開としているので...
$ git clone ssh://idrepgit@ivy.eit.hirosaki-u.ac.jp/hom...
(パスワードは#0ivy0ShrdPwdA)
そして
(1) cloneした作業ディレクトリ内のlibxcディレクトリに移動...
(2) 作業ディレクトリに移動してmake depend, makeをする。
(3) 作業ディレクトリ/sampleinpに入力サンプル(*.inp)が...
(備考) コンパイルには bison, flex, gfortran, lapack も必...
CentOS: yum install bison flex-devel gfortran lapack-devel
Ubuntu: sudo apt-get install bison flex gfortran liblapa...
などとする。
//-------------------------------------------------------...
* デバッガを利用した例 [#nd1814c9]
** セグメンテーションフォルトしたときのデバッグ例 [#l2254...
.inpファイルのnamelessロードモジュール実行部分を変更して...
いったんファイルに保存する。
-cat << end_of_input | $LOADMOD...
+cat << end_of_input | tee sample_hoge.inptmp | $LOADMOD...
いちど .inpを実行して sample_hoge.inptmpを作っておく。
$ ./sample_hoge.inp
デバッガを利用して動かす。あらかじめ -gオプション付きで...
$ gdb ../nameless.x #sampleinpディレクトリで実行したと...
(gdb) run -nt 4 < sample_hoge.inptmp
...
Program received signal SIGSEGV, Segmentation fault. で...
(gdb) where
(gdb) list
(gdb) up
(gdb) list
(gdb) up
(gdb) list
など。
これとは別に
printf("HELLO1\n");
printf("HELLO2\n");
printf("HELLO3\n");
などを要所要所に入れるのも良い。
** セグメンテーションフォルトしたときのデバッグ例2 [#ncfb...
キューで実行したときにはセグメンテーションフォルトしてた...
上記のようにデバッガを使用したところ正常に実行された(gdb...
なるべくもっと同じ実行環境にするために、次のようにキュー...
sample_hoge-dbg.inpを次のようにしてサブミットする。
#!/bin/bash --norc
# ver 1.6.2 for SGE and command line
#$-S /bin/bash # interpreting shell
#$-q potp.q
#$-cwd # execute for the current working directory
#$-j y # y/n: merge stderr into stdout
#$-pe smp 4 # total num slots. NSLOTS is set to N of P...
# -- jobs ------------------------------
processId=$$
export OMP_NUM_THREADS=${NSLOTS:-1} # <-- CHECK!!!...
numThre=$OMP_NUM_THREADS
numProc=1 # <-- CHECK!!!...
sysName=`basename $0 ".inp"`
[ -z ${sysName//[0-9]/} ] && sysName=`basename ${JOB_NAM...
dirRst="./" # <-- CHECK!!!
rstName="none" # <-- CHECK!!!
LOADMODULE=./nameless.x # <-- CHECK!!!
echo ${SGE_O_HOST:-C} ${HOSTNAME%%.*} ${LOADMODULE} usin...
if [ ${QUEUE:-x} = potp.q ]; then #taskset for Pcore ...
echo "taskset 0-7 cores" >> ${sysName}.out 2>&1
taskset -p -c 0-7 $$ >> ${sysName}.out 2>&1
elif [ ${QUEUE:-x} = pote.q ]; then #taskset for Ecore ...
echo "taskset 8-23 cores" >> ${sysName}.out 2>&1
taskset -p -c 8-23 $$ >> ${sysName}.out 2>&1
else
echo "taskset not specified" >> ${sysName}.out 2>&1
fi
cat << end_of_input | gdb $LOADMODULE #上はsample_hoge....
run -nt 4 < tempinp
where
list
quit
y
end_of_input
# end of file #
セグメンテーションフォルトして止まったら、where, list, qu...
標準出力・エラー出力の sample_hoge-dbg.inp.oXXXXを見る。
** MSG_STOPでエラーメッセージが出てストップしてしまう、ど...
MSG_STOPのところ(216行目)にブレークポイントを設定して走...
みる。
$ gdb ../nltrjrst2cube.x
(gdb) break nameless_ngrid.c:216 #ファイル名:行番号、...
(gdb) run -text H1S_laser2.rst H1S_laser2.rst-text #ブ...
(gdb) up #とこから呼ばれたかを登ってゆき、呼び出し関...
#whereコマンドでもよい。
(gdb) up
(gdb) up
//-------------------------------------------------------...
* 練習 [#jc9fca81]
** namelessの実行 [#p8e925cb]
alliumで、H&sub{2};&sup{-};イオンのサンプルsample_optH2mb...
sample_H2mb64g64.inpを ~/pracなど、適当なディレクトリにコ...
そして、結果の .outを対応する .out.chkedのファイルと差分(...
$ cd ~/prac
$ ln -s /share/apps/nameless/nameless.x
$ cp -ip /share/apps/nameless/sampleinp/{sample_optH2mb6...
.inpの #$-q によるキューの指定が pan.q でなかったら pan.q...
上では ~/pracにnameless.xへのリンクを作ったので、.inpのLO...
** 定常状態と時間発展計算での期待値の確認 [#b3640719]
sample_optH2mb64g64.supから、Eum法によって定常状態を求め...
sample_H2mb64g64.supから、時間発展計算について TEと Xxの...
gnuplotでもexcelでもなんでも使ってよいが、gnuplotの方が楽。
gnuplotだと、ファイルで #から始まる行はコメント行として扱...
.supで不要なデータの先頭行に#を書き入れるとほぼそのままで...
(注) 定常状態の時間発展では TEは一定値で、Xxはゼロである...
** 分子軌道の変化の確認 [#g0db22ff]
ツールプログラムnltrjrst2cube.xを使って、時系列の分子軌道...
sample_H2mb64g64ディレクトリを作り、この中に各時刻のファ...
このディレクトリ内に sample_H2mb64g64.trj.pvdも作られる。
$ cd ~/prac
$ ln -s /share/apps/nameless/nltrjrst2cube.x
$ mkdir sample_H2mb64g64
$ ./nltrjrst2cube.x -pvdraw sample_H2mb64g64.trj sample_...
*** 電子密度を見る [#d221d1d8]
alliumで以下のように ParaViewを起動して、$\alpha_2$分子軌...
等値面(値 $0.0001 e/Bohr^3$)の時間変化を見る。
(4.4の場合)
$ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/share/apps/ParaView-...
$ /share/apps/ParaView-4.4.0-Qt4-Linux-64bit/bin/paraview
(5.11の場合)
$ /share/apps/ParaView-5.11.0-RC2-MPI-Linux-Python3.9-x8...
qt.qpa.xcb: X server does not support XInput 2
failed to get the current screen resources
Fontconfig warning: "/etc/fonts/fonts.conf", line 86:...
などが出る場合があるが気にしない(Xサーバに依存、Xming...
--mesaオプション無しで起動する場合そのほうが速い。
また、少なくともXmingのXサーバだと Filters->Alphabetic...
代わりに Filters->Searchメニューを使うとよい。
その後、
File->Open->sample_H2mb64g64フォルダ内のsample_H2mb64g64...
Filters->Alphabetical->Calculatorを選択。
左下にPropertiesタブが出ているので、
Result Array Nameを rhoにして、
その下の電卓の計算式の入力に psi_a02_re^2+psi_a02_im...
Applyボタンを押す。
Filters->Alphabetical->Contourを選択。
左下にPropertiesタブが出ているので、
Counter By を rho にし、
Value Rangeを 0.0001 にし、
Applyボタンを押す。
上のPlayボタンなどで時間変化を再生して見れる。
(注) 定常状態の時間発展では 電子密度は時間とともに変化し...
CENTER:
&ref(paraview_rhomenu1.png,left,70%,nowrap); &ref(para...
図: Propertiesタブ
(左) Calculator、
(右) Contour
*** 分子軌道を見る [#gcb0bbc8]
(最初はここは読むだけでスキップし、時間があったらあとです...
Calculatorフィルタで使った psi_sN_reと psi_sN_imは .pvdや...
$\psi^{s N}$の実部と虚部のグリッドデータを表す変数名のよ...
これらを用い、Contourフィルタを4つ使えば $\psi^{\alpha 2...
それぞれ値±0.01の2つの面)を表示し、分子軌道の形をみるこ...
また、ParaViewの File->Save Stateや Load Stateを使えば、
操作途中の状態をファイルとして保存したり、読み込んだりも...
なお、$\psi^{\alpha 1}$と$\psi^{\beta 1}$は、$\psi^{\alph...
時間変化は滑らかには見えない。
その場合は、namelessの入力 ptrevery, trjeveryを 25ではな...
CENTER:
&ref(paraview_psi_a02.png,left,70%,nowrap);~
図: $\psi^{\alpha 2}$分子軌道。電子密度を白いワイヤーフレ...
分子軌道の虚部の等値面(値0.01, -0.01)をピンクと緑で示して...
赤と青で、実部の等値面(値0.01, -0.01)もContourで作成して...
** $128^3$グリッドでの計算 [#j03c1932]
sample_optH2mb64g64.inpとsample_H2mb64g64.inpの入力 xng、...
下のように128グリッドにしてグリッド間隔を半分にした inpフ...
64グリッドの場合と同様にグラフを見たり、ParaViewで電子密...
グリッド数を倍にする~
xng,yng,zng: 64 -> 128
グリッド間隔(dx=dy=dz)が半分になるので、時間間隔もそれに...
dt: $0.66×(\frac{32-(-32)}{64})^2=0.66$ -> $0.66×(\fr...
時間間隔を変えたので、同じ時刻まで時間発展をさせるためにm...
maxstep: 1000 -> 1000×4 = 4000
時間間隔を変えたので、同じ時間間隔で期待値やトラジェクト...
なお、各時刻の出力のことはフレームと呼ばれる。~
prtevery: 25 -> 25×4 = 100~
trjevery: 25 -> 25×4 = 100
** Eum法の0回目と収束後の分子軌道の比較 [#g174aad7]
波動関数の時間発展のスタートにした分子軌道は、定常状態の...
rstファイルに含まれる(入力サンプルのように定常状態の計算...
ツールプログラムを利用して、このrstファイルからvtiファイ...
例)
$ ./nltrjrst2cube.x -pvdraw optH2mb64g128.rst optH2mb64g...
これで optH2mb64g128.rst-f0001.vtiができる。
次に、定常状態を求める繰り返し計算の収束前(繰り返し0回目...
として実行することで、rstファイルに出力させる。そして同様...
例)
$ ./nltrjrst2cube.x -pvdraw optH2mb64g128iter0.rst optH2...
これで optH2mb64g128iter0.rst-f0001.vtiができる。
2つの vtiファイルを ParaViewで読み込み(File->Openでvtiフ...
$\alpha_1$、$\beta_1$、$\alpha_2$分子軌道の等値面を表示し...
0回目や収束して求まった分子軌道は実関数なので、虚部の等値...
両方のvtiファイルで、±0.01の実部の等値面を描く。
また、$\psi^{\alpha 1}$と$\psi^{\beta 1}$は正の値のみなの...
0回目と収束した分子軌道の等値面は重なるため、
ワイヤーフレーム表示にしたり、一時的に非表示(Pipline Bro...
Contourフィルタの Propertiesタブにある Contour By により...
ひとつの分子軌道を比べたら、別のグリッドデータを選択して...
終了行:
#menu(LABO/MenuBar)
* LABO/nameless [#lc55cba5]
#contents
** 一行メモ [#ldad7c53]
- namelessでの計算式や説明
#ref(3P089_w.pdf)
#ref(電子ダイナミクスのためのプログラム開発・実装20181005...
#ref(SCCJ-1P16.pdf)
#ref(3P112_w.pdf)
#ref(3P123_w.pdf)
- ソースコードの行数カウント
wc -l `ls -1 nameless*.[chly] | grep -v 'nameless_input....
- Intel Intrinsics Guide https://software.intel.com/sites...
-- https://www.officedaytime.com/simd512/
- インテル® 64 および IA-32 アーキテクチャー 最適化リファ...
- gccで -malign-double はデフォルト -- &new{2021-01-31 (...
- gcc mallocはアライメントされている? https://hangstuck....
- DDRメモリの理論メモリバンド幅の求め方 https://freak-da....
- CPUのクロックを調べる -- &new{2021-02-10 (水) 10:59:43};
-- ssh compute-0-1 cpupower frequency-info #こっちはroot...
-- ssh compute-0-1 grep MHz /proc/cpuinfo #現時点での周...
-- sarコマンド -- &new{2021-02-16 (火) 13:39:46};
$ sar -P ALL 1
$ sar -m CPU 1
$ while [ 1 ]; do sleep 1; echo `grep MHz /proc/cpuinfo`...
[ref] http://honeotech.hatenablog.com/entry/2016/11/06/2...
- gcc -mavx や -mavx2 で自動で AVX, AVX2命令を使ってコン...
- MKLライブラリ https://qiita.com/tenomoto/items/c50fa1e3...
- 参考(けっこう間違いある) -- &new{2021-07-02 (金) 09:...
-- [[第一原理バンド計算(基礎編)>https://mmnakayama.jimd...
-- [[第一原理計算(解析編)>https://mmnakayama.jimdofree....
- namelessディレクトリ内の入力サンプルを、sampleinpディレ...
- https://www.intel.co.jp/content/www/jp/ja/products/sku/...
- インテルCPUプロセッサーのスペック http://ark.intel.com/ja
-- CPUの名前の由来 https://pcfreebook.com/article/4532705...
- WD HDD,SSDのスペック https://www.westerndigital.com/ja-...
- GPUやCPU, Socの性能比較 https://www.topcpu.net/ja/gpu-c...
- CPU性能比較表 https://pcrecommend.com/cpu/ -- &new{202...
- チューニングメモ:calcVext_tが遅い? NonequalintervalsG...
#comment
//katexの呼び出し
#katex
//$y=ax^2+bx+c$
//https://katex.org/docs/supported.html#style-color-size-...
//$\alpha$
//$\beta$
//$\mathrm{H_2^-}$
//$\mathbf{H_2^-}$
//&color(RED){hoge}; and COLOR(RED){junk}~
//F&sup{2}; and FSUP{2}~
//K&sub{4}; and FSUB{4}~
//-------------------------------------------------------...
* namelessの使い方 [#m253b555]
//- 旧版
//#ref(namelessの使い方_20190415b.docx)
//#ref(namelessの使い方_20180518.docx)
//#ref(namelessの使い方_20170701.docx)
** 入力サンプル(sample_*.inpファイル)と実行 [#zcf9227c]
alliumでは /share/apps/namelessディレクトリ(ivyでは /opt...
同じディレクトリ内のsampleinpディレクトリに、下記の入力サ...
この入力サンプルはシェルスクリプトであり、nameless.xに入...
また、入力サンプルはSGEキューに投入できるスクリプトにもな...
入力サンプルの他に、sample_*.out.chkedファイル(過去の実...
|~ファイル名 |~説明|
|sample_vWFEMr1pk.inp |自由電子の波動関数(右に進む波...
|sample_optH2mb64g64.inp |H&sub{2};&sup{-};イオンについ...
|sample_H2mb64g64.inp |上の定常状態をt=0の波動関数と...
|sample_H2mb64g64_c2.inp |上の続きとして、さらに波動関...
|sample_optH2b64g64.inp |H&sub{2};分子について、定常状...
|sample_H2b64g64.inp |上の定常状態をt=0の波動関数と...
|sample_optppH2mb64g64.inp |H&sub{2};&sup{-};イオンについ...
|sample_optppH2b64g64.inp |H&sub{2};分子について、擬ポテ...
入力サンプルは、/share/apps/nameless/sampleinpディレクト...
適当なディレクトリで実行する場合は、入力サンプル内のシェ...
nameless.xのパスに変更するなどしてから実行する。
また、入力サンプルのファイル名は拡張子が.inpであれば自由...
namelessを実行すると、カレントディレクトリなどに下記の実...
(入力サンプル内のシェル変数dirRSTが "./"以外の場合は、.o...
なお、条件によって trjファイルのファイルサイズはとても大...
|~拡張子|~説明|
|.out |ログ出力|
|.rst |リスタートファイル(継続計算に利用)|
|.sup |.outのうち、エネルギーなどの値がここにも出力され...
|.trj |トラジェクトリーファイル(波動関数などの時系列の...
|.nuc |核座標が含まれる。現在未使用、出力されない|
入力サンプルとログ出力の例と説明はこちら。~
wordファイル: &ref(namelessの入力サンプルとログ出力の...
CENTER:
&ref(vWFEMr1pkガウス波束.png,left,70%,nowrap); &ref(H2...
図:
(左) sample_vWFEMr1pkの右に進む波束、
(右) H&sub{2};&sup{-};とH&sub{2};の分子軌道
*** 入力の書式 [#q7615d46]
[[LABO/namelessの入力]]
*** 処理フロー [#xe8a65a4]
&ref(nameless処理フロー20220727.pdf);
Miroボードへの共有リンク https://miro.com/app/board/uXjVO...
パスワードは、N...2..P...です。
(ボードのバックアップファイル &ref(nameless処理フロー_bo...
c.f. Miro https://miro.com/
参考(時間発展演算子、Eum法、CG法など):
&ref(一部抽出修正→編集版20220801.pdf);
*** 補足 [#f203508f]
namelessでは波動関数$\Psi$は、$N$個のスピン軌道$\chi^j$か...
$j$番目の電子の空間座標$(x_j,y_j,z_j)$とスピン座標$\sigma...
$\bm{\zeta}_j \equiv (x_j,y_j,z_j,\sigma_j)$ であり、$j=1...
スレータ行列式は次の表式であり、真の波動関数を近似したも...
$$
\Psi =
\frac{1}{\sqrt{N!}}
\begin{vmatrix}
\chi^1(\bm{\zeta}_1) & \chi^2(\bm{\zeta}_1) & ... & \chi^...
\chi^1(\bm{\zeta}_2) & \chi^2(\bm{\zeta}_2) & ... & \chi^...
... & ... & ... & ... ...
\chi^1(\bm{\zeta}_N) & \chi^2(\bm{\zeta}_N) & ... & \chi^...
\end{vmatrix}
$$
ここで
$$
\Bigg\{
\begin{matrix}
\chi^{2i-1}(\bm{\zeta}) = \psi^{\alpha i}(x,y,z) \alpha...
\chi^{2i}(\bm{\zeta}) = \psi^{\beta i}(x,y,z) \beta(\...
\end{matrix}
$$
などであり、$\alpha(\sigma)$と$\beta(\sigma)$はそれぞれ$\...
$\psi^{s i}(x,y,z)$はスピン$s$の $i$番目の空間軌道である。
スピン軌道$\chi^j$や空間軌道$\psi^{s i}$は、1電子波動関数...
真の波動関数を近似するときに $\psi^{\alpha i} = \psi^{\be...
という制限を付ける場合がある。このような空間軌道は、制限...
$\psi^{\alpha i} \ne \psi^{\beta i}$ のときは非制限空間軌...
真の波動関数を近似するときに、制限付き空間軌道を使ったり...
////////////////////////スピン分極・非スピン分極
$\alpha$スピンと$\beta$スピンがひとつずつ対になって同じ空...
この状態を空間軌道$\psi^i$に、$\alpha$スピンの電子と$\bet...
この空間軌道$\psi^i$は閉殻であると言う。
$\alpha$または$\beta$スピン電子の片方しか入っていない空間...
電子を偶数個もつ原子や分子などで、すべての空間軌道$\psi^i...
三次元空間のどの場所でも、$\alpha$スピンの電子数と$\beta$...
このような状態を、スピン分極していない(非スピン分極であ...
電子数が奇数個であれば、三次元空間のいずれかの場所で $\al...
偶数個であっても、$\alpha$と$\beta$スピンの電子で異なる空...
このような状態は、スピン分極していると呼ぶ。
namelessでは、入力で spin_polarization=YES を指定すると、...
一方、制限付き空間軌道を使い、なおかつ閉殻のみである場合...
spin_polarization=NO を指定して計算できる。
$\psi^{s i}$を時刻$t$の関数$\psi^{s i}(x,y,z,t)$とすると...
$$
i \hbar \frac{\partial}{\partial t} \Psi(\bm{\zeta}_1,\bm...
= \mathscr{H} \Psi(\bm{\zeta}_1,\bm{\zeta}_2,...,\bm{\zet...
$$
から、1電子波動関数の時間発展の式
$$
i \hbar \frac{\partial}{\partial t} \psi^{s i}(x,y,z,t) =...
\quad for \space i=1,2,...,N_s \space and \space s=\alpha...
$$
を導くことができる。$N_\alpha$は$\alpha$電子の数、$N_\bet...
最初のスタートとなる $N$個の $\psi^{s i}(x,y,z)$を用意し...
この式から 1電子波動関数の時間発展、そして波動関数$\Psi$...
$$
\psi^{s i}(x,y,z,t_1) → \psi^{s i}(x,y,z,t_2) → \psi^{s i...
$$
すなわち
$$
\Psi(\bm{\zeta}_1,...,\bm{\zeta}_N,t_1) → \Psi(\bm{\zeta}...
→ \Psi(\bm{\zeta}_1,...,\bm{\zeta}_N,t_3) → ...
$$
がわかる。
各時刻での$\Psi$がわかると、物理量$\hat{A}$の期待値は $\b...
から求めることができる。
最初のスタートとなる $\psi^{s i}$は、例えば次のいずれかを...
・波束、平面波、水素原子の$1s$や$2p_z$関数など、入力で...
・定常状態の波動関数(すなわちその1電子波動関数$\psi^{s ...
・前に時間発展等をさせた結果($\psi^{s i}$)を使う。~
定常状態の波動関数は、時間非依存シュレーディンガー方程式
$$
\mathscr{H} \Psi(\bm{\zeta}_1,...,\bm{\zeta}_N) = E \Psi(...
$$
の解である。
定常状態の場合は、$\psi^{s i}$ (そして$\Psi$) を実関数と...
namelessでは Eum法により定常状態の実関数としての波動関数...
Eum法では適当な$\psi^{s i}$の初期値を与えて繰り返し計算を...
定常状態の波動関数は $t$に関する因子が掛かって
$$
\Psi(\bm{\zeta}_1,...,\bm{\zeta}_N,t)
= \Psi(\bm{\zeta}_1,...,\bm{\zeta}_N) e^{ \frac{E}{i\hbar...
$$
のように振動する時間発展をする。
定常状態の波動関数をスタートに使うという事は、$t=0$とした
$\Psi(\bm{\zeta}_1,...,\bm{\zeta}_N,0)=\Psi(\bm{\zeta}_1,...
** リスタートファイル(.rst)のフォーマット (VER 0.9.8) [#q...
ファイルは
最初の3行はヘッダ(テキスト)
グリッドのデータ(テキスト又はバイナリ)
空行
から成る。
ヘッダは次の通り。
ヘッダの1行目:ステップ数, 時刻, バージョン
ヘッダの2行目:α軌道の数, β軌道の数, NS(グリッド上...
BOX(計算領域)のxmin, xmax, ymin, yma...
ヘッダの3行目:TEXT or BINARY, EXACTVALUE or SINGLE...
x, y, z, VnucSoft, VnucDiff, Vhar, V...
が続いて、
rhoA, PsiA
がα軌道の数だけ繰り返し続き、POLの場...
rhoB, PsiB
がβ軌道の数だけ繰り返し続く。
** トラジェクトリーファイル(.trj)のフォーマット(VER 0.9.8...
リスタートファイルを単に繋げたもの。
** ツールプログラム(nltrjrst2cube.x)の使い方 [#mc1ae681]
trjやrstファイルから ParaViewソフトで読み込めるグリッドデ...
例えば、trjファイルのあるディレクトリで
$ ln -s /share/apps/nameless/nltrjrst2cube.x
$ ./nltrjrst2cube.x -pvdraw hoge.trj junkname
とすると、
hoge.trjに含まれる各時刻の波動関数のグリッドデータが、jun...
出力される。junkname.pvdも出力される。
junknameはパス名を部分的に含んでいてもよい。
$ ./nltrjrst2cube.x -pvdraw hoge.trj junkdir/junk
とすると、junkdir/junk-f0001.vti, junkdir/junk-f0002.vti,...
出力される。予めディレクトリ junkdirが存在すること。
$ ./nltrjrst2cube.x -help
で簡易的な使い方が表示される。
** その他のツールプログラム(sampleinpディレクトリ内) [#...
いくつかは python3が必要である。
:nlout2info.sh |
namelessのログなどから使用メモリ量やディスク量などの情報...
(実行例)~
&ref(nlout2info.shの実行例.png,left,60%,nowrap);
:ovgnuplot.py |
ovgpファイルを読み込み gnuplotでグラフを描く。
sample.ovgpは supファイルをグラフ化するovgpファイルの例で...
(使い方)~
python3が必要なので、alliumでは最初に1回だけ
source /share/apps/anaconda3.bash_conda
をする。
.ovgpファイルは、gnuplotのコマンドを書き並べるが、
{ }内は plotコマンドに書き換えられてグラフが描かれる。
{ }内の書式はサンプルを参考にするか、ovgnuplot.pyファイル...
ovgnuplot.pyは .ovgpファイルの通りグラフを描いた後、
プロンプトovgnuplot> を出し、追加のgnuplotコマンドを受け...
終了はquit。
(なお、端末やgnuplotウィンドウの表示が乱れる事がある。)~
(実行例)~
&ref(ovgnuplot.pyの実行例.png,left,nowrap,35%);
:samplesupplot.sh |
ovgnuplot.pyを使用したスクリプト例で、supファイルを次々と...
ovgpファイルの代わりにヒアドキュメントを使用している。
例はsupファイルはひとつだけを読み込んでいるが、4個まで読...
詳細はスクリプトを参照のこと。
:sampletrjplot.gp |
trj-linexファイル(step毎のx,ψなど含む)をグラフ(動画)にす...
使い方はスクリプト内にある説明を参照のこと。
trj-linexファイルは、
./nltrjrst2cube.x -linex hoge.trj hoge.trj-linex
などのように作成したものである。
** GUI (gui4nameless.py) の使い方 [#mca2065a]
python3が必要であるため、次のように python3の実行環境を設...
$ . /share/apps/anaconda3.bash_conda
その後
$ PYTHONPATH=$HOME/hoge ~/hoge/gui4nameless.py #hogeは...
#ref(GUInameless.png,center,50%,nowrap)
CENTER:
Fig: GUInamelessのスクリーンショット
** Paraviewから実行する可視化制御GUIプログラム(visgui.py)...
以下は alliumでの起動方法である。~
~~/.config/ParaView/Macros ディレクトリに $HOME/hoge/visg...
hogeは namelessをインストールしたディレクトリである。
$ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/share/apps/ParaView-...
PYTHONPATH=/share/apps/ParaView-5.11-etc/pypkg:$HOME/h...
/share/apps/ParaView-5.11.0-RC2-MPI-Linux-Python3.9-x8...
その後、ParaViewのMacroメニューから visguirunを選択して動...
(なお、Load Stateしたパイプラインについては visgui.pyの "...
#ref(VisGui.png,center,50%,nowrap)
CENTER:
Fig: VisGuiのスクリーンショット
** コンパイル方法 [#t5e7f7e5]
&color(RED){(注) 現在、ソースコードは非公開としているので...
$ git clone ssh://idrepgit@ivy.eit.hirosaki-u.ac.jp/hom...
(パスワードは#0ivy0ShrdPwdA)
そして
(1) cloneした作業ディレクトリ内のlibxcディレクトリに移動...
(2) 作業ディレクトリに移動してmake depend, makeをする。
(3) 作業ディレクトリ/sampleinpに入力サンプル(*.inp)が...
(備考) コンパイルには bison, flex, gfortran, lapack も必...
CentOS: yum install bison flex-devel gfortran lapack-devel
Ubuntu: sudo apt-get install bison flex gfortran liblapa...
などとする。
//-------------------------------------------------------...
* デバッガを利用した例 [#nd1814c9]
** セグメンテーションフォルトしたときのデバッグ例 [#l2254...
.inpファイルのnamelessロードモジュール実行部分を変更して...
いったんファイルに保存する。
-cat << end_of_input | $LOADMOD...
+cat << end_of_input | tee sample_hoge.inptmp | $LOADMOD...
いちど .inpを実行して sample_hoge.inptmpを作っておく。
$ ./sample_hoge.inp
デバッガを利用して動かす。あらかじめ -gオプション付きで...
$ gdb ../nameless.x #sampleinpディレクトリで実行したと...
(gdb) run -nt 4 < sample_hoge.inptmp
...
Program received signal SIGSEGV, Segmentation fault. で...
(gdb) where
(gdb) list
(gdb) up
(gdb) list
(gdb) up
(gdb) list
など。
これとは別に
printf("HELLO1\n");
printf("HELLO2\n");
printf("HELLO3\n");
などを要所要所に入れるのも良い。
** セグメンテーションフォルトしたときのデバッグ例2 [#ncfb...
キューで実行したときにはセグメンテーションフォルトしてた...
上記のようにデバッガを使用したところ正常に実行された(gdb...
なるべくもっと同じ実行環境にするために、次のようにキュー...
sample_hoge-dbg.inpを次のようにしてサブミットする。
#!/bin/bash --norc
# ver 1.6.2 for SGE and command line
#$-S /bin/bash # interpreting shell
#$-q potp.q
#$-cwd # execute for the current working directory
#$-j y # y/n: merge stderr into stdout
#$-pe smp 4 # total num slots. NSLOTS is set to N of P...
# -- jobs ------------------------------
processId=$$
export OMP_NUM_THREADS=${NSLOTS:-1} # <-- CHECK!!!...
numThre=$OMP_NUM_THREADS
numProc=1 # <-- CHECK!!!...
sysName=`basename $0 ".inp"`
[ -z ${sysName//[0-9]/} ] && sysName=`basename ${JOB_NAM...
dirRst="./" # <-- CHECK!!!
rstName="none" # <-- CHECK!!!
LOADMODULE=./nameless.x # <-- CHECK!!!
echo ${SGE_O_HOST:-C} ${HOSTNAME%%.*} ${LOADMODULE} usin...
if [ ${QUEUE:-x} = potp.q ]; then #taskset for Pcore ...
echo "taskset 0-7 cores" >> ${sysName}.out 2>&1
taskset -p -c 0-7 $$ >> ${sysName}.out 2>&1
elif [ ${QUEUE:-x} = pote.q ]; then #taskset for Ecore ...
echo "taskset 8-23 cores" >> ${sysName}.out 2>&1
taskset -p -c 8-23 $$ >> ${sysName}.out 2>&1
else
echo "taskset not specified" >> ${sysName}.out 2>&1
fi
cat << end_of_input | gdb $LOADMODULE #上はsample_hoge....
run -nt 4 < tempinp
where
list
quit
y
end_of_input
# end of file #
セグメンテーションフォルトして止まったら、where, list, qu...
標準出力・エラー出力の sample_hoge-dbg.inp.oXXXXを見る。
** MSG_STOPでエラーメッセージが出てストップしてしまう、ど...
MSG_STOPのところ(216行目)にブレークポイントを設定して走...
みる。
$ gdb ../nltrjrst2cube.x
(gdb) break nameless_ngrid.c:216 #ファイル名:行番号、...
(gdb) run -text H1S_laser2.rst H1S_laser2.rst-text #ブ...
(gdb) up #とこから呼ばれたかを登ってゆき、呼び出し関...
#whereコマンドでもよい。
(gdb) up
(gdb) up
//-------------------------------------------------------...
* 練習 [#jc9fca81]
** namelessの実行 [#p8e925cb]
alliumで、H&sub{2};&sup{-};イオンのサンプルsample_optH2mb...
sample_H2mb64g64.inpを ~/pracなど、適当なディレクトリにコ...
そして、結果の .outを対応する .out.chkedのファイルと差分(...
$ cd ~/prac
$ ln -s /share/apps/nameless/nameless.x
$ cp -ip /share/apps/nameless/sampleinp/{sample_optH2mb6...
.inpの #$-q によるキューの指定が pan.q でなかったら pan.q...
上では ~/pracにnameless.xへのリンクを作ったので、.inpのLO...
** 定常状態と時間発展計算での期待値の確認 [#b3640719]
sample_optH2mb64g64.supから、Eum法によって定常状態を求め...
sample_H2mb64g64.supから、時間発展計算について TEと Xxの...
gnuplotでもexcelでもなんでも使ってよいが、gnuplotの方が楽。
gnuplotだと、ファイルで #から始まる行はコメント行として扱...
.supで不要なデータの先頭行に#を書き入れるとほぼそのままで...
(注) 定常状態の時間発展では TEは一定値で、Xxはゼロである...
** 分子軌道の変化の確認 [#g0db22ff]
ツールプログラムnltrjrst2cube.xを使って、時系列の分子軌道...
sample_H2mb64g64ディレクトリを作り、この中に各時刻のファ...
このディレクトリ内に sample_H2mb64g64.trj.pvdも作られる。
$ cd ~/prac
$ ln -s /share/apps/nameless/nltrjrst2cube.x
$ mkdir sample_H2mb64g64
$ ./nltrjrst2cube.x -pvdraw sample_H2mb64g64.trj sample_...
*** 電子密度を見る [#d221d1d8]
alliumで以下のように ParaViewを起動して、$\alpha_2$分子軌...
等値面(値 $0.0001 e/Bohr^3$)の時間変化を見る。
(4.4の場合)
$ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/share/apps/ParaView-...
$ /share/apps/ParaView-4.4.0-Qt4-Linux-64bit/bin/paraview
(5.11の場合)
$ /share/apps/ParaView-5.11.0-RC2-MPI-Linux-Python3.9-x8...
qt.qpa.xcb: X server does not support XInput 2
failed to get the current screen resources
Fontconfig warning: "/etc/fonts/fonts.conf", line 86:...
などが出る場合があるが気にしない(Xサーバに依存、Xming...
--mesaオプション無しで起動する場合そのほうが速い。
また、少なくともXmingのXサーバだと Filters->Alphabetic...
代わりに Filters->Searchメニューを使うとよい。
その後、
File->Open->sample_H2mb64g64フォルダ内のsample_H2mb64g64...
Filters->Alphabetical->Calculatorを選択。
左下にPropertiesタブが出ているので、
Result Array Nameを rhoにして、
その下の電卓の計算式の入力に psi_a02_re^2+psi_a02_im...
Applyボタンを押す。
Filters->Alphabetical->Contourを選択。
左下にPropertiesタブが出ているので、
Counter By を rho にし、
Value Rangeを 0.0001 にし、
Applyボタンを押す。
上のPlayボタンなどで時間変化を再生して見れる。
(注) 定常状態の時間発展では 電子密度は時間とともに変化し...
CENTER:
&ref(paraview_rhomenu1.png,left,70%,nowrap); &ref(para...
図: Propertiesタブ
(左) Calculator、
(右) Contour
*** 分子軌道を見る [#gcb0bbc8]
(最初はここは読むだけでスキップし、時間があったらあとです...
Calculatorフィルタで使った psi_sN_reと psi_sN_imは .pvdや...
$\psi^{s N}$の実部と虚部のグリッドデータを表す変数名のよ...
これらを用い、Contourフィルタを4つ使えば $\psi^{\alpha 2...
それぞれ値±0.01の2つの面)を表示し、分子軌道の形をみるこ...
また、ParaViewの File->Save Stateや Load Stateを使えば、
操作途中の状態をファイルとして保存したり、読み込んだりも...
なお、$\psi^{\alpha 1}$と$\psi^{\beta 1}$は、$\psi^{\alph...
時間変化は滑らかには見えない。
その場合は、namelessの入力 ptrevery, trjeveryを 25ではな...
CENTER:
&ref(paraview_psi_a02.png,left,70%,nowrap);~
図: $\psi^{\alpha 2}$分子軌道。電子密度を白いワイヤーフレ...
分子軌道の虚部の等値面(値0.01, -0.01)をピンクと緑で示して...
赤と青で、実部の等値面(値0.01, -0.01)もContourで作成して...
** $128^3$グリッドでの計算 [#j03c1932]
sample_optH2mb64g64.inpとsample_H2mb64g64.inpの入力 xng、...
下のように128グリッドにしてグリッド間隔を半分にした inpフ...
64グリッドの場合と同様にグラフを見たり、ParaViewで電子密...
グリッド数を倍にする~
xng,yng,zng: 64 -> 128
グリッド間隔(dx=dy=dz)が半分になるので、時間間隔もそれに...
dt: $0.66×(\frac{32-(-32)}{64})^2=0.66$ -> $0.66×(\fr...
時間間隔を変えたので、同じ時刻まで時間発展をさせるためにm...
maxstep: 1000 -> 1000×4 = 4000
時間間隔を変えたので、同じ時間間隔で期待値やトラジェクト...
なお、各時刻の出力のことはフレームと呼ばれる。~
prtevery: 25 -> 25×4 = 100~
trjevery: 25 -> 25×4 = 100
** Eum法の0回目と収束後の分子軌道の比較 [#g174aad7]
波動関数の時間発展のスタートにした分子軌道は、定常状態の...
rstファイルに含まれる(入力サンプルのように定常状態の計算...
ツールプログラムを利用して、このrstファイルからvtiファイ...
例)
$ ./nltrjrst2cube.x -pvdraw optH2mb64g128.rst optH2mb64g...
これで optH2mb64g128.rst-f0001.vtiができる。
次に、定常状態を求める繰り返し計算の収束前(繰り返し0回目...
として実行することで、rstファイルに出力させる。そして同様...
例)
$ ./nltrjrst2cube.x -pvdraw optH2mb64g128iter0.rst optH2...
これで optH2mb64g128iter0.rst-f0001.vtiができる。
2つの vtiファイルを ParaViewで読み込み(File->Openでvtiフ...
$\alpha_1$、$\beta_1$、$\alpha_2$分子軌道の等値面を表示し...
0回目や収束して求まった分子軌道は実関数なので、虚部の等値...
両方のvtiファイルで、±0.01の実部の等値面を描く。
また、$\psi^{\alpha 1}$と$\psi^{\beta 1}$は正の値のみなの...
0回目と収束した分子軌道の等値面は重なるため、
ワイヤーフレーム表示にしたり、一時的に非表示(Pipline Bro...
Contourフィルタの Propertiesタブにある Contour By により...
ひとつの分子軌道を比べたら、別のグリッドデータを選択して...
ページ名: