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 のフォルダに移動.

_images/Run_Powershell.png

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

_images/Windows_terminal.png

PowerShell

_images/Windows_terminal2.png

PowerShell 上でデスクトップの fdmnes のフォルダに移動

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

_images/Windows_terminal3.png

fdmnes を実行

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<xanes> の列が現れる.FDMNES には GUI は無いので,このデータを Excel で開いてプロットしてみる.

_images/FDMNES_Cu_results.png

Cu の計算結果のファイル

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 以下の行は無視されたことになる.

次に,今回計算された入力ファイルは, Sim/Test_stand/in/Cu_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 を実行してみると,計算には 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 の機能の有効化または無効化」と検索して出てくる以下のツールを起動する.

_images/Windows_function.png

Windows の機能の有効化または無効化

  1. 「Hyper-V」および「Linux 用 Windows サブシステム」にチェックを入れて,OK ボタンを押す.これらの機能が有効化され,再起動が促されるので,PC を再起動する.

操作

  1. Windows キーを押しながら,X キーを押し,ターミナルを起動する.

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

注釈

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

_images/WSL2_Debian.png

Debian GNU/Linux のインストール

操作

Debian のインストールが完了すると,自動的に起動され,アカウントの作成画面になる.

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

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

_images/Debian_account.png

Debian でのアカウント作成

  1. アカウントが作成できれば,以下のように表示されるはずである.

_images/Debian_first.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. cd と入力して,Enter キーを押す.

  2. mkdir src と入力して,Enter キーを押して,src フォルダを作る.

  3. cd src と入力して,Enter キーを押して,src フォルダに移る.

_images/Debian_src.png

src フォルダ(ディレクトリ)の作成

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

操作

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

_images/FDMNES_linux.png

FDMNES Download ページ

  1. fdmnes_Linux を開く.

  2. fdmnes_Linux_2025_07_15.zip をダウンロードする.

_images/FDMNES_single.png

FDMNES Download ページ

  1. Explorer (ファイルを開くやつ) を起動し,左側の欄に Linux をクリックする.

_images/Explorer_Debian.png

FDMNES Download ページ

  1. Debian/home/asakura/src/ の順に開いて,ダウンロードした fdmnes_Linux_2025_07_15.zip を Debian/home/asakura/src/ に移動する.

注釈

もちろん,asakura というのは各自のアカウント名に読み替えてほしい.

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

_images/FDMNES_linux2.png

FDMNES Download ページ

  1. parallel_fdmnes_2025_07_15.tar.gz をダウンロードする.

  2. ダウンロードした parallel_fdmnes_2025_07_15.tar.gz を Debian/home/asakura/src/ に移動する.

_images/FDMNES_parallel.png

ファイルがダウンロードおよびコピーできた状態

操作

  1. Debian のターミナルに戻って, unzip fdmnes_Linux_2025_07_15.zip と入力して実行.

  2. さらに, tar zxvf parallel_fdmnes_2025_07_15.tar.gz と入力して実行.

  3. ls と入力して実行すると,以下のように表示されるはずである.

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
  1. mv parallel_fdmnes fdmnes と入力して,並列実行版のフォルダ名を fdmnes に変更する.

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

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

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

操作

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

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

注釈

ここで, -np の後の数字は,PC の論理コアの数に合わせるとよい.Ctrl キーと Shift キーを押しながら,Esc キーを押すと,タスクマネージャーが起動される.例えば,以下のように表示された時の「論理プロセッサ数」の数に合わせるのがよい.

_images/taskmanager.png

ファイルがダウンロードできた状態

ここまでの作業が正しければ,Windows 上で行ったのと同じように FDMNES での計算が実行され,先ほどよりも少し早く完了したはずである.今実行したのは,先ほどの Cu metal の例でクラスターサイズも小さいので,ふつうの PC でも数十秒で完了する.

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

操作

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

_images/FDMNES_parallel_results.png

ファイルがダウンロードできた状態

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

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

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