===========================
Windows での FDMNES の実行
===========================
インストールとデモデータの計算
------------------------------
Windows 11 上で FDMNES をダウンロードし,とにかくデモデータについて計算を行ってみる.
操作
~~~~
1. `FDMNES Web サイト `_ の Download から fdmnes_Windows_64 を選択してダウンロードする.
2. fdmnes_Win64_2025_07_15.zip (頻繁に更新されるため,日付は異なる) の中の fdmnes_Win64 フォルダをデスクトップに展開する.
3. コマンドプロンプトを起動し,\ ``cd C:\Users\Asakura\Desktop\fdmnes_Win64`` などと入力して,Enter キーを押して fdmnes のフォルダに移動.
.. figure:: _static/Run_Powershell.png
スタートメニューから PowerShell の起動
.. figure:: _static/Windows_terminal.png
PowerShell
.. figure:: _static/Windows_terminal2.png
PowerShell 上でデスクトップの fdmnes のフォルダに移動
4. ``fdmnes_win64.exe`` と入力して,fdmnes を実行.
.. figure:: _static/Windows_terminal3.png
fdmnes を実行
.. code::
FDMNES program, Revision 15th of July 2025
Date = 08 08 2025
Time = 13 h 42 mn 55 s
などの文字列が表示される.
いきなり計算を実行してみたが,計算結果が出力されていれば実行はできている.
遅くとも1分以内に計算は終了するはずである.
結果の確認
----------
操作
~~~~
1. ``fdmnes_Win64`` フォルダの中の ``Sim\Test_stand\`` にある **Cu** から始まる計算結果のファイルのうち, ``Cu_conv.txt`` を開くと, **Energy** と **** の列が現れる.FDMNES には GUI は無いので,このデータを Excel で開いてプロットしてみる.
.. figure:: _static/FDMNES_Cu_results.png
Cu の計算結果のファイル
.. figure:: _static/Cu.png
:alt: Cu の例
FDMNES に含まれるテスト用入力ファイルによる Cu K-edge の計算例
このようにプロットされていれば正しく計算ができている.
デモデータの説明
----------------
多くの理論計算プログラムと同じく,計算内容を指示した入力ファイルを元にいくつかの出力ファイルが得られる.
操作
~~~~
1. ``fdmfile.txt`` を開くと以下のようになっている.
.. code::
! 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`` 以下の行は無視されたことになる.
次に,今回計算された入力ファイルは, ``Sim/Test_stand/in/Cu_inp.txt`` であるので,この **Cu_inp.txt** をメモ帳で開くと以下の通りである.
.. code::
! 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.txt`` や ``Sim/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
結晶構造における格子定数と各原子位置を示す.以下の書式を見れば理解できるであろう.
.. code::
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** をメモ帳などのテキストエディタで開いて,
.. code::
! 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`` を実行してみると,計算には 5 分程度かかったはずである.
今回は,Cu 金属というとても簡単なモデルについて計算したため,計算時間はほとんどかからなかった.仮に,\ **3.0** の時にかかった時間を 10 秒,\ **7.0** の時にかかった時間を 300 秒とすると,30倍の計算時間がかかったことになる.仮に非常に小さなサイズでも1時間かかる計算であれば,十分なサイズで計算するには30時間かかることになる.
ところで,最近の PC に搭載されている CPU は複数のコアからなる.ここまで Windows 上で実行したプログラムは並列化されているバージョンではない.Linux 上で実行可能な並列化バージョンも配布されている.但し,Windows 11 であれば,Windows 上で Linux 環境を利用できる WSL (Windows Subsystem for Linux) をつかって,並列化された FDMNES を実行することができる.
以下にその方法について説明する.
============================================
並列化された FDMNES のインストール (Windows)
============================================
手順
----
操作
~~~~
1. `WSL を使用して Windows に Linux をインストールする方法 `_ にしたがって,Debian GNU/Linux (Linux の一種だと思えばよい) をインストールする.途中で再起動を求められたら再起動すること.
2. Windows キーを押してから,「Windows の機能の有効化または無効化」と検索して出てくる以下のツールを起動する.
.. figure:: _static/Windows_function.png
Windows の機能の有効化または無効化
3. 「Hyper-V」および「Linux 用 Windows サブシステム」にチェックを入れて,OK ボタンを押す.これらの機能が有効化され,再起動が促されるので,PC を再起動する.
操作
~~~~
1. Windows キーを押しながら,X キーを押し,ターミナルを起動する.
2. ``wsl --install -d Debian`` と入力して実行(Enter キーを押す)
.. note::
Linux の経験がない場合は,WSL でデフォルトに設定されている Ubuntu を選択 (``wsl --install`` とだけ実行) してもよい.Debian と Ubuntu はよく似ているので利用には全く問題がない.以下で Ubuntu と読み替えて進めること.
.. figure:: _static/WSL2_Debian.png
Debian GNU/Linux のインストール
操作
~~~~
Debian のインストールが完了すると,自動的に起動され,アカウントの作成画面になる.
1. ``Enter new UNIX username`` に対して,英数字のユーザー名を入れる.例えば,\ **asakura**.以下,自分のユーザー名と置き換えること.
2. ``Enter new UNIX password`` に対して,英数字・記号のパスワードを入れる.簡単なものでよい.\ **キーボードを打っても画面に表示されないので注意**\ すること.表示されていなくても問題なく入力されている.\ ``Retype new UNIX password`` と言われるのでもう一度入力する.
.. figure:: _static/Debian_account.png
Debian でのアカウント作成
3. アカウントが作成できれば,以下のように表示されるはずである.
.. figure:: _static/Debian_first.png
Debian にログインした状態
操作
~~~~
1. Debian 上で,\ ``sudo -s`` と入力して,スーパーユーザー (root, Windows の管理者にあたる)になる.パスワードを聞かれるので,上で決めた自分のパスワードを入力する.
2. ``apt update`` と入力して終わったら,\ ``apt upgrade`` と入力して,\ **Y** を入力する.いろいろと表示されるがあまり気にしなくていい.(Windows アップデートを実行しているのと同じ.)
3. ``apt install unzip`` と入力して終わったら,\ ``exit`` と入力してもとの状態(自分のユーザ)に戻る.
.. figure:: _static/Debian_install_unzip.png
unzip のインストール
操作
~~~~
1. ``cd`` と入力して,Enter キーを押す.
2. ``mkdir src`` と入力して,Enter キーを押して,\ ``src`` フォルダを作る.
3. ``cd src`` と入力して,Enter キーを押して,\ ``src`` フォルダに移る.
.. figure:: _static/Debian_src.png
src フォルダ(ディレクトリ)の作成
次に,FDMNES ダウンロードを行う.
操作
~~~~
1. Windows で FDMNES の Web ページを開く.
.. figure:: _static/FDMNES_linux.png
FDMNES Download ページ
2. fdmnes_Linux を開く.
3. fdmnes_Linux_2025_07_15.zip をダウンロードする.
.. figure:: _static/FDMNES_single.png
FDMNES Download ページ
4. Explorer (ファイルを開くやつ) を起動し,左側の欄に Linux をクリックする.
.. figure:: _static/Explorer_Debian.png
FDMNES Download ページ
5. ``Debian/home/asakura/src/`` の順に開いて,ダウンロードした fdmnes_Linux_2025_07_15.zip を ``Debian/home/asakura/src/`` に移動する.
.. note::
もちろん,asakura というのは各自のアカウント名に読み替えてほしい.
6. Windows の FDMNES の Web ページの parallel_FDMNES を開く.
.. figure:: _static/FDMNES_linux2.png
FDMNES Download ページ
7. parallel_fdmnes_2025_07_15.tar.gz をダウンロードする.
8. ダウンロードした parallel_fdmnes_2025_07_15.tar.gz を ``Debian/home/asakura/src/`` に移動する.
.. figure:: _static/FDMNES_parallel.png
ファイルがダウンロードおよびコピーできた状態
操作
~~~~
1. Debian のターミナルに戻って, ``unzip fdmnes_Linux_2025_07_15.zip`` と入力して実行.
2. さらに, ``tar zxvf parallel_fdmnes_2025_07_15.tar.gz`` と入力して実行.
3. ``ls`` と入力して実行すると,以下のように表示されるはずである.
.. code::
fdmnes_Linux
fdmnes_Linux_2025_07_15.zip
fdmnes_Linux_2025_07_15.zip:Zone.Identifier
parallel_fdmnes
parallel_fdmnes_2025_07_15.tar.gz
parallel_fdmnes_2025_07_15.tar.gz:Zone.Identifier
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 12`` と入力して実行する.
.. note::
ここで, ``-np`` の後の数字は,PC の論理コアの数に合わせるとよい.Ctrl キーと Shift キーを押しながら,Esc キーを押すと,タスクマネージャーが起動される.例えば,以下のように表示された時の「論理プロセッサ数」の数に合わせるのがよい.
.. figure:: _static/taskmanager.png
ファイルがダウンロードできた状態
ここまでの作業が正しければ,Windows 上で行ったのと同じように FDMNES での計算が実行され,先ほどよりも少し早く完了したはずである.今実行したのは,先ほどの Cu metal の例でクラスターサイズも小さいので,ふつうの PC でも数十秒で完了する.
ここまで説明しなかったが,インストールした Debian というのは,Windows の上で動いている別の Linux という OS(オペレーティングシステム)のディストリビューションの1つである.なお,先ほど fdmnes の実行ファイルをコピーした時のように,WSL で扱うファイルには Windows からも簡単にアクセスすることができる.
操作
~~~~
1. Debian → home → (自分で決めた username) → src → fdmnes と辿っていくと,Windows 上で FDMNES を使っていた時と同じファイルやフォルダ,それ以外にいくつかのファイルやフォルダが見つかるはずである.
.. figure:: _static/FDMNES_parallel_results.png
ファイルがダウンロードできた状態
ここまでくれば,後は Windows 上と同じように計算できるはずである.ポイントは,
* ファイルは常に, ``Debian\home\asakura\src\fdmnes`` の中のものを編集すること.基本的には, ``fdmfile.txt`` と ``Sim`` の中だけを変更すればいいはずである.
* 計算の実行は Debian の画面で ``asakura@PEAR:~/src/fdmnes`` などとなっているときに, ``./mpirun_fdmnes -np 12`` を実行すればよい.