Windows での FDMNES の実行#

インストールとデモデータの計算#

操作#

  1. FDMNES Web サイト の Download から fdmnes_Windows_64 を選択してダウンロードする.

  2. fdmnes_Win64_2022_06_15.zip (頻繁に更新されるため,日付は異なる) の中の fdmnes_Win64 フォルダをデスクトップに展開する.

  3. コマンドプロンプトを起動し,cd C:\Users\Asakura\Desktop\fdmnes_Win64 などと入力して,フォルダに移動.

  4. fdmnes_win64.exe と入力して,fdmnes を実行.

FDMNES program, Revision 15th of June 2022
Date = 10 07 2022
Time = 21 h 42 mn 33 s

などの文字列が表示され,計算結果が出力されていれば実行はできている.

あまり古くない PC であれば,数秒程度で計算は終了するはずである.(手元の環境だと 8 秒程度)

結果の確認#

操作#

  1. Sim\Test_stand\ にある Cu から始まる計算結果のファイルのうち, Cu_conv.txt を開くと, Energy<xanes> の列が現れる.FDMNES には GUI は無いので,このデータを Excel で開いてプロットしてみる.

Cu の例

FDMNES に含まれるテスト用入力ファイルによる Cu K-edge の計算例#

このようにプロットされていれば正しく計算ができている.

デモデータの説明#

多くの理論計算プログラムと同じく,計算内容を指示した入力ファイルを元にいくつかの出力ファイルが得られる.

操作#

  1. fdmfile.txt を開くと以下のようになっている.

! General indata file for FDMNES
! with indata files examples

 1
Sim/Test_stand/in/Cu_inp.txt

Sim/Test_stand/in/Ba2ZnUO6_inp.txt
Sim/Test_stand/in/Ca3Co2O6_inp.txt
Sim/Test_stand/in/Cr_inp.txt
Sim/Test_stand/in/Cr_conv_inp.txt
(以下略)

fdmfile.txt には一度の計算で実行したい入力ファイルの一覧を書き込むことになる.最初は多数のデモ用の入力ファイルが記載されている. ! から始まる行は無視される.最初の行は,4行目の 1 である.これは次の行から始まる入力ファイルについて,1つ目の入力ファイルだけを計算することに対応している.よって, Sim/Test_stand/in/Ba2ZnUO6_inp.txt 以下の行は今回は無視されたことになる.

次に,今回計算された入力ファイルである Cu_inp.txt をメモ帳で開くと以下の通りである.

! Fdmnes indata file
! Calculation for the copper K-edge in copper cfc
! Finite difference method calculation with convolution

Filout
Sim/Test_stand/Cu

Range                              ! Energy range of calculation (eV)
-1. 0.2  5. 0.5 20. 1. 50.         ! first energy, step, intermediary energy, step ..., last energy

Radius                             ! Radius of the cluster where final state calculation is performed
3.0                                ! For a good calculation, this radius must be increased up to 6 or 7 Angstroems

Crystal                            ! Periodic material description (unit cell)
    3.61  3.61  3.61  90. 90. 90.  ! a, b, c, (Angstroem) alpha, beta, gamma (degree)
29  0.0   0.0   0.0                ! Z, x, y, z (unit cell unit)
29  0.5   0.5   0.0
29  0.5   0.0   0.5
29  0.0   0.5   0.5

! Convolution keyword : broadening with a width increasing versus energy as an arctangent

Convolution

End

やはり, ! から始まる行は無視される(コメント)行である.

多数のコメントで説明されているので,FEFF を使った XANES シミュレーションや他の理論計算プログラム利用経験があれば,内容はおおよそ想像できるであろう.以下に各行の意味を簡単に説明する.なお,FDMNES のマニュアルは丁寧に書かれているため,マニュアルを読むことを勧める.この文章はあくまで補助のために書かれている.

Filout

次の行に来るパス(フォルダとファイル名)が結果ファイルの元の名前になる.今回は, Sim/Test_stand/Cu なので Sim/Test_stand/Cu.txtSim/Test_stand/Cu_conv.txt などのファイルが出力された.

Range

Energy range of calculation (eV) とあるとおり,具体的に計算したいエネルギー点を指定する.例えば, -1. 0.2  5. 0.5 20. 1. 50. とあるので, -1 eV から 0.2 eV 刻みで 5 eV まで, 5 eV から 0.5 eV 刻みで 20 eV まで, 20 eV から 1.0 eV 刻みで 50 eV まで計算される.

Radius

Radius of the cluster where final state calculation is performed とあるとおり,理論計算を行うクラスターのサイズを決めている.今回は 3.0 であるが,これも For a good calculation, this radius must be increased up to 6 or 7 Angstroems とコメントにあるとおり,通常,もう少し大きな数にした方が実験データに近くなっていく.

Crystal

結晶構造における格子定数と各原子位置を示す.以下の書式を見れば理解できるであろう.

Crystal                            ! Periodic material description (unit cell)
    3.61  3.61  3.61  90. 90. 90.  ! a, b, c, (Angstroem) alpha, beta, gamma (degree)
29  0.0   0.0   0.0                ! Z, x, y, z (unit cell unit)
29  0.5   0.5   0.0
29  0.5   0.0   0.5
29  0.0   0.5   0.5
Convolution

これはキーワードでとりあえず書けばよいと思ってよい.

End

入力ファイルの終わりをしめす.

大きなクラスターによる計算#

さて,

! For a good calculation, this radius must be increased up to 6 or 7 Angstroems

とのことなので,実際に Sim にある Cu_inp.txt をメモ帳などのテキストエディタで開いて,

! Fdmnes indata file
! Calculation for the copper K-edge in copper cfc
! Finite difference method calculation with convolution

Filout
Sim/Test_stand/Cu

Range                              ! Energy range of calculation (eV)
-1. 0.2  5. 0.5 20. 1. 50.         ! first energy, step, intermediary energy, step ..., last energy

Radius                             ! Radius of the cluster where final state calculation is performed
7.0                                ! For a good calculation, this radius must be increased up to 6 or 7 Angstroems

Crystal                            ! Periodic material description (unit cell)
    3.61  3.61  3.61  90. 90. 90.  ! a, b, c, (Angstroem) alpha, beta, gamma (degree)
29  0.0   0.0   0.0                ! Z, x, y, z (unit cell unit)
29  0.5   0.5   0.0
29  0.5   0.0   0.5
29  0.0   0.5   0.5

! Convolution keyword : broadening with a width increasing versus energy as an arctangent

Convolution

End

のように,Radius を 3.0 から 7.0 に変更し,もう一度コマンドプロンプトから fdmnes_win64.exe を実行してみると,計算には 2, 3 分程度かかったはずである.

今回は,Cu 金属というとても簡単なモデルについて計算したため,計算時間はほとんどかからなかった.しかし,3.0 の時にかかった時間を 10 秒,7.0 の時にかかった時間を 120 秒とすると,12倍の計算時間がかかったことになる.仮に非常に小さなサイズでも1時間かかる計算であれば,十分なサイズで計算するには12時間かかることになり,少なくとも PC で計算するにはかなり時間がかかる.

最近の PC に搭載されている CPU は複数のコアからなる.ここまで Windows 上で実行したプログラムは並列化されているバージョンではない.並列化されているバージョンも配布されているが,Windows ではなく,Linux 上でしか使えない.但し,Windows 10 以上であれば,Windows 上で Linux 環境を利用できる WSL (Windows Subsystem for Linux) が容易に利用できる.以下では,WSL をつかって,並列化された FDMNES をインストールおよび実行する方法について説明する.

並列化された FDMNES のインストール (Windows)#

手順#

操作#

  1. Windows 10 用 Windows Subsystem for Linux のインストール ガイド にしたがって,Debian GNU/Linux をインストールする.途中で再起動を求められたら再起動すること.

  2. Windows キーを押しながら,X キーを押し,Windows PowerShell(管理者用)を起動する.

  3. wsl --install -d Debian と入力して実行(Enter キーを押す)

  4. Debian GNU/Linux (以下,単に Debian)を起動する.(再起動後に自動的に起動するはず)

注釈

Linux の経験がない場合は,WSL でデフォルトに設定されている Ubuntu を選択 (wsl --install とだけ実行) してもよい.Debian と Ubuntu はよく似ているので利用には全く問題がない.以下で Ubuntu と読み替えて進めること.

注釈

すでに Windows 11 に移行している人が多いかもしれない.WSL の利用は同じだと思われるので適宜読み替えて試してみてください.

_images/StartMenu.png

スタートメニューから PowerShell の起動#

_images/WSL2_Debian.png

Debian GNU/Linux のインストール#

_images/Debian_account.png

Debian 起動直後(再起動後)#

操作#

  1. Enter new UNIX username に対して,英数字のユーザー名を入れる.例えば,asakura.以下,自分のユーザー名と置き換えること.

  2. Enter new UNIX password に対して,英数字・記号のパスワードを入れる.簡単なものでよい.キーボードを打っても画面に表示されないので注意すること.表示されていなくても問題なく入力されている.Retype new UNIX password と言われるのでもう一度入力する.

_images/Debian_account.png

Debian でのアカウント作成#

操作#

  1. Debian 上で,sudo -s と入力して,スーパーユーザー (root, Windows の管理者にあたる)になる.パスワードを聞かれるので,上で決めた自分のパスワードを入力する.

  2. apt update と入力して終わったら,apt upgrade と入力して,Y を入力する.いろいろと表示されるがあまり気にしなくていい.(Windows アップデートを実行しているのと同じ.)

  3. apt install unzip と入力して終わったら,exit と入力してもとの状態(自分のユーザ)に戻る.

_images/Debian_install_unzip.png

unzip のインストール#

操作#

  1. mkdir src と入力して,src フォルダを作る.

  2. cd src と入力して src フォルダに移る.

次に,FDMNES ダウンロードを行う.

操作#

  1. Windows で FDMNES の Web ページを開く.

_images/FDMNES_linux.png

FDMNES Download ページ#

  1. fdmnes_Linux_64 を開く.

  2. ダウンロードのところを右クリックして,「リンクをコピー」する.

_images/FDMNES_single.png

FDMNES Download ページ#

  1. Debian に戻り, ``wget --no-check-certificate `` (最後もスペース) と入力してから,Debian の画面で右クリックを押すと,コピーされたリンクが貼り付けられる.その後に Enter キーを入力すると,ダウンロードが始まる.

注釈

ちなみに wget --no-check-certificate--no-check-certificate は SSL 証明書の厳密なチェックを行わないためのオプションである.筆者は安全性については一切保証しないが,フランスの CNRS の Web サイトなので安全性には問題がないはずである.

  1. ダウンロードが終わったら,mv download fdmnes.zip と入力してファイル名を変更しておく.

  2. Windows の FDMNES の Web ページの parallel_FDMNES を開く.

  3. ダウンロードのところを右クリックして,「リンクをコピー」する.

  4. Debian に戻り,wget --no-check-certificate (最後にスペース) と入力してから,Debian の画面で右クリックを押すと,コピーされたリンクが貼り付けられる.その後に Enter キーを入力すると,ダウンロードが始まる.

  5. ダウンロードが終わったら,mv download fdmnes.tar.gz と入力してファイル名を変更しておく.

_images/FDMNES_parallel.png

FDMNES Download ページ#

操作#

  1. unzip fdmnes.zip と入力して実行.

  2. tar zxvf fdmnes.tar.gz と入力して実行.

  3. ls と入力して実行すると,fdmnes_Linux  fdmnes.tar.gz  fdmnes.zip  parallel_fdmnes と表示されるはずである.

  4. mv parallel_fdmnes fdmnes と入力して,並列実行版のフォルダ名を fdmnes に変更する.

  5. mv fdmnes_Linux/* fdmnes と入力して,単一実行版の fdmnes に入っていたファイルを fdmnes に移動する.

  6. rmdir fdmnes_Linux と入力して実行し, fdmnes_Linux フォルダを削除する.

これで,単一実行版と並列実行版の FDMNES がインストールされた.

操作#

  1. cd fdmnes と入力して fdmnes フォルダに移動する.

  2. ./mpirun_fdmnes  -np 4 と入力して実行する.

ここまでの作業が正しければ,Windows 上で行ったのと同じように FDMNES での計算が実行される様子が表示されるはずである.

ここまで説明しなかったが,インストールした Debian というのは,Windows の上で動いている別の Linux という OS(オペレーティングシステム)のディストリビューションの1つである.なお,WSL で扱うファイルには Windows からも簡単にアクセスすることができる.

操作#

  1. エクスプローラーを開いて,アドレスバーに \\wsl$ と入力すると,Debian というのが見えているはずである.

  2. Debian → home → (自分で決めた username) → src → fdmnes と辿っていくと,Windows 上で FDMNES を使っていた時と同じファイルやフォルダ,それ以外にいくつかのファイルやフォルダが見つかるはずである.

_images/WSL2_Debian_Folder.png

FDMNES Download ページ#

ここまでくれば,後は Windows 上と同じように計算できるはずである.ポイントは,

  • ファイルは常に, \\wsl$\Debian\home\asakura\src\fdmnes の中のものを編集すること.基本的には, fdmfile.txtSim の中だけを変更すればいいはずである.

  • 計算の実行は Debian の画面で asakura@SODIUM:~/src/fdmnes となっているときに, ./mpirun_fdmnes  -np 4 を実行すればよい.