最新版のマニュアル → https://siesta-project.org/SIESTA_MATERIAL/Docs/Manuals/siesta-4.1.5.pdf
SIESTA-4.1.5 の DOI: www.doi.org/10.1088/0953-8984/14/11/302 (https://iopscience.iop.org/article/10.1088/0953-8984/14/11/302)
4.1-b4のマニュアル → https://departments.icmab.es/leem/SIESTA_MATERIAL/Docs/Manuals/siesta-4.1-b4.pdf
SIESTAは局在基底+擬ポテンシャルを用いる電子状態計算ソフトウェアである(VASPやQUANTUM ESPRESSOなどは平面波基底+(主に)擬ポテンシャルを用いる)。
また、デフォルト設定ではSCF計算と同時にスピン状態が最適化されるため、計算者がスピン多重度を指定する必要は無い(スピン多重度の固定は可能)。
siesta-4.1.5 自体は以下のようにしてローカルにビルドできる(ただしこれはSERIAL版)。Packagesは https://gitlab.com/siesta-project/siesta/-/releases/v4.1.5 からダウンロード可能。まず $HOME 直下に以下のようなディレクトリを作成する(ディレクトリ名は任意)。
mkdir usr/local -p
$HOME/usr/local に siesta-4.1.5.tar.gz をアップロードする。READMEを参照しながら以下のような手順でインストールする。
cd $HOME/usr/local
tar -xvf siesta-4.1.5.tar.gz
cd siesta-4.1.5/Obj/
sh ../Src/obj_setup.sh
cp intel.make arch.make
make -j4
.bashrc に PATH=$PATH:$HOME/usr/local/siesta-4.1.5/Obj などと追記してsourceしておく(.cshrc であれば set path = ( $HOME/SIESTA_materials/siesta-4.1.5/Obj $path ) などとする)。
付属のユーティリティもbuildしておくとよい。$HOME/usr/local/siesta-4.1.5/Util に行って以下のコマンドを実行。
./build_all.sh
【理論研内部向け】ここでは siesta-v4.1-b4 のPARALLEL version(並列計算可能なバージョン)をコンパイルする。手順は以下。
① SIESTA-v4.1-b4 をダウンロードする(Packagesは https://gitlab.com/siesta-project/siesta/-/releases/v4.1-b4 からダウンロード可能)
② tar -xzf siesta-v4.1-b4.tgz
③ cd siesta-v4.1-b4/Obj
④ sh ../Src/obj_setup.sh --enable-mpi --enable-fast
⑤ vi arch.make(以下を作成)
#
# Copyright (C) 1996-2018 The SIESTA group
# This file is distributed under the terms of the
# GNU General Public License: see COPYING in the top directory
# or http://www.gnu.org/copyleft/gpl.txt.
# See Docs/Contributors.txt for a list of contributors.
#
.SUFFIXES:
.SUFFIXES: .f .F .o .a .f90 .F90
SIESTA_ARCH = unknown
FC = mpif90
FC_SERIAL = gfortran
FPP = ${FC} -E -P
FFLAGS =
RANLIB = ranlib
SYS = nag
LDFLAGS =
FCFLAGS_fixed_f =
FCFLAGS_free_f90 =
FPPFLAGS_fixed_F =
FPPFLAGS_free_F90 =
BLAS_LIBS =
LAPACK_LIBS =
BLACS_LIBS = -L$(MKLROOT)/lib/intel64 -lmkl_blacs_intelmpi_lp64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -lm -ldl
SCALAPACK_LIBS = -L$(MKLROOT)/lib/intel64 -lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -lm -ldl
MPI_LIBS =
COMP_LIBS =
NETCDF_ROOT =
NETCDF_INCFLAGS =
NETCDF_LIBS =
MPI_INTERFACE = libmpi_f90.a
MPI_INCLUDE = .
FPPFLAGS = -DMPI -DFC_HAVE_ABORT -DFC_HAVE_FLUSH
LIBS = $(NETCDF_LIBS) $(SCALAPACK_LIBS) $(BLACS_LIBS) $(LAPACK_LIBS) $(MPI_LIBS) $(COMP_LIBS)
FFLAGS_DEBUG = -g
#atom.o: atom.f
# $(FC) -c $(FFLAGS_DEBUG) $<
##electrostatic.o: electrostatic.f
# $(FC) -c $(FFLAGS_DEBUG) $<
#
.F.o:
$(FC) -c $(FFLAGS) $(INCFLAGS) $(FPPFLAGS) $(FPPFLAGS_fixed_F) $<
.F90.o:
$(FC) -c $(FFLAGS) $(INCFLAGS) $(FPPFLAGS) $(FPPFLAGS_free_F90) $<
.f.o:
$(FC) -c $(FFLAGS) $(INCFLAGS) $(FCFLAGS_fixed_f) $<
.f90.o:
$(FC) -c $(FFLAGS) $(INCFLAGS) $(FCFLAGS_free_f90) $<
⑥ make
⑦ vi ~/.cshrc(siestaバイナリのパスを追記して source ~/.cshrc ;例えば以下のような内容となる)
## for siesta
set path = ( 【SIESTAのパス】/siesta-v4.1-b4/Obj $path )
⑧ cd ../Util/
⑨ ./build_all.sh(SIESTAの付属ユーティリティをコンパイルする)
以上により並列版SIESTAプログラムが導入できる。
※ERATO用のマシンで計算する場合は /scr/ に ${USER} と同じの名前のディレクトリが必要になるため、以下のようなシェルスクリプトで作成しておく。
#!/bin/csh
set HOSTshortname=`echo $HOSTNAME | cut -c -2`
set totalNODEnum=`bhosts | grep ${HOSTshortname}[0-9][0-9] -c`
set i=1
while ( $i <= $totalNODEnum )
set tmp_NODEnum=`printf "%02d" ${i}`
if( "`bhosts | grep ${tmp_NODEnum} | grep unavail`" == "" ) then
rsh -l $user ${HOSTshortname}${tmp_NODEnum} "rm -rf /scr/${USER}/*"
# rsh -l $user ${HOSTshortname}${tmp_NODEnum} "cd /scr/ ; mkdir ${USER}/"
endif
echo ${HOSTshortname}${tmp_NODEnum}
@ i = $i + 1
end
@ i = 1
echo "done."
SIESTA ver.4.1以降では擬ポテンシャルとして.psf形式のファイルの他に、新たに.psml形式のファイルが利用可能となった(電子状態計算ソフトウェア「ATOM」で擬ポテンシャル(.psfファイル)を作成する必要がある)。.psml形式の擬ポテンシャルは "PseudoDojo project" のページからダウンロードできる。SIESTAの計算ディレクトリ内に.psfと.psmlのファイルが共存している場合は.psf形式のファイルが優先的に読み込まれるので、inputデータをまとめてWorkノードにコピーしているなどの場合は注意が必要(マニュアル p28)。
GRRMとリンクさせた場合、JOB名が長すぎるとJOBが落ちる(GRRMがsegmentation faultになる)場合がある。現在では修正されていると思われるが念のため注意。
GRRMで計算する場合はコア数を多く割り当てるよりも並列数を稼いだ方が計算効率が良い。(2core*20並列よりも1core*40並列でSCやRePATHをした方が早く終わることが多い)
SIESTAではGrimmeの2体間分散力補正が利用できる。例えば以下のように指定する。
%block MM.Potentials
1 1 Grimme 7.2549 2.684 # O-O
2 1 Grimme 3.2445 2.343 # H-O
2 2 Grimme 1.451 2.002 # H-H
3 1 Grimme 11.471 2.794 # C-O
3 2 Grimme 5.13 2.453 # C-H
3 3 Grimme 18.137 2.904 # C-C
%endblock MM.Potentials
MM.Grimme.D 20.0
MM.Grimme.S6 0.75
元素記号のリストからGrimmeの分散力補正(https://onlinelibrary.wiley.com/doi/full/10.1002/jcc.20495)のパラメータセットを計算して表示する自作プログラムをGitHubで公開しています(高周期元素の一部はパラメータが整備されていない) → https://github.com/h-nabata/utility/blob/main/Python/SIESTA_grimme_parameters.py
【Pseudopotential(擬ポテンシャル)の作成】(SIESTA)
SIESTAで用いる擬ポテンシャルは、「ATOM」という電子状態計算ソフトウェアに対応する擬ポテンシャルを用いる。詳細はATOMユーザーマニュアルを参照のこと。ATOMプログラムのユーティリティである pg.sh(恐らく "pseudopotential generator" の略)というスクリプトを利用し、Abinit用のinputから擬ポテンシャルを生成する。
擬ポテンシャル作成用のinputは "GGA Pseudopotential Database" で公開されているものを利用する。周期表の元素記号をクリックして遷移したページに "Input file for the ATOM program" の項目があるので、ここから X.inp といったinputファイルをダウンロードする。(ATOM programが未インストールの場合は適宜コンパイルする)
例えば、Cu.inp の中身は以下のように修正する。
pe -- file generated from Cu ps file
tm2
Cu pbr
0.000 0.000 0.000 0.000 0.000 0.000
5 4
4 0 1.000 0.000 #4s
4 1 0.000 0.000 #4p
3 2 10.000 0.000 #3d
4 3 0.000 0.000 #4f
2.77000 2.39000 2.16000 2.16000 0.01000 -1.00000 small core charge
#23456789012345678901234567890123456789012345678901234567890 Ruler
Core Correction(部分内殻補正)を擬ポテンシャルに適用するには赤字部分を "pe" とする。適用しない場合(第2周期以下の元素など)は "pg" とする。
2行目は対数導関数の計算に関するパラメータ(特に変更しなくて良い)。
3行目の青字部分で汎関数の種類(+相対論補正の有無)を指定する。指定可能な汎関数の一部を以下に示す。詳細についてはマニュアルを参照のこと。
【指定可能なGGA汎関数の例】
pb: PBE (Perdew, Burke, and Ernzerhof, PRL 77, 3865 (1996)) (recommended GGA)
wp: PW91 (Perdew and Wang, JCP, 100, 1290 (1994))
rp: RPBE (Hammer, Hansen, and Norskov, PRB 59, 7413 (1999))
rv: revPBE (Zhang and Yang, PRL 80, 890 (1998))
ps: PBEsol (Perdew et al, PRL 100, 136406 (2008))
末尾の "r" は "relativistic effect" の略で、これを付けると相対論効果が加味される(第4周期以上の重い元素には適用する)。
inputが準備できたら pg.sh Cu.inp などとして擬ポテンシャル(.psfファイル)を作成する。内殻補正や相対論の有無、汎関数の種類が分かる形式で名前を付けて利用すること。
前田研では以下のようなルールでpsfファイルを作成している。(目安)
第2周期まで: 非相対論・内殻補正(NLCC)なし
第3周期: 非相対論・NLCCあり
第4周期以降: 相対論・NLCCあり
【計算パラメータについて】(SIESTA)
k点メッシュ
系にも依るが、スラブモデルの計算においてk点メッシュを1×1×1から2×2×1に増やして計算すると計算時間は3倍以上になる。cutoff半径が小さすぎなければk点メッシュの細かさによって構造が大きく変わることは少ない。まず粗いLUP計算やRePATH計算などを1×1×1のレベルで実施して様子を見るのが良い。
MeshCutoff
探索の際は 75. Ry 程度で良く、精密なRePATH計算などの場合は 200. Ry などと計算資源的に無理のない範囲で大きくする。
DM.MixingWeight(SCF計算の初期MOを既存のMOから作成する際にどれだけ混ぜ込むかを調節するパラメータ)
スピン二乗値が乱雑に変化していなければ、0.1程度にして計算すると良い。0.01程度(=ほとんどミキシングしない場合)だと0.1のときに比べて計算時間が1.5倍程度になる。SCFの収束性に問題が無ければ0.1程度にして様子を見るのが良い。
【basis setについて】(SIESTA)
※psfファイルによっては基底を増やしても精度が出ない場合もありそう?
PAO基底(擬原子軌道;Pseudo Atomic Orbital)の種類は PAO.BasisType のフラグと引数で指定可能。(デフォルトではsplit)
PAO基底のサイズは PAO.BasisSize のフラグと引数で指定可能。(デフォルトではDZP) ※ PAO ・・・ pseudo-atomic orbital
以下のように %block PAO.BasisSizes のブロックでspecies別に細かく指定することもできる。ここで "H" とか "O" はインプット内のspeciesのラベルである。
%block PAO.BasisSizes
H DZP
O SZP
Si DZ
%endblock PAO.BasisSizes
すべてのspeciesについてDZ基底を指定する場合は以下のように書く。
%block PAO.BasisSizes
H-pgpb DZ
C-pgpb DZ
O-pgpb DZ
Pd-pepbr DZ
%endblock PAO.BasisSizes
あるいは、一括指定の場合は以下のように書いても良い。
PAO.BasisSizes DZ
擬ポテンシャルのspeciesを分けておけば、酸化物表面の酸素原子と基質の酸素原子で割り当てる基底の大きさを変える、といった計算も可能になる。(参考→Basis sets)
(例)O、H、C の元素からなる系で計算する場合を考える。このとき
PAO.BasisSize TZ
とした場合の計算は、SIESTAのインプットにPAO.Basisブロックを追加して
%block PAO.Basis # Define Basis set
O-pgpb 2 # Species label, number of l-shells
n=2 0 3 # n, l, Nzeta
3.937 2.542 2.917
1.000 1.000 1.000
n=2 1 3 # n, l, Nzeta
4.931 2.672 3.223
1.000 1.000 1.000
H-pgpb 1 # Species label, number of l-shells
n=1 0 3 # n, l, Nzeta
6.047 4.053 4.768
1.000 1.000 1.000
C-pgpb 2 # Species label, number of l-shells
n=2 0 3 # n, l, Nzeta
4.994 3.475 3.938
1.000 1.000 1.000
n=2 1 3 # n, l, Nzeta
6.254 3.746 4.407
1.000 1.000 1.000
%endblock PAO.Basis
と書くのと同じことになる。
また、PAO.BasisSizeをTZPとした場合は、Hでは1s軌道に、OとCには2p軌道にそれぞれ分極関数1つが追加される。これは以下のように書いた場合と同様。
%block PAO.Basis # Define Basis set
O-pgpb 2 # Species label, number of l-shells
n=2 0 3 # n, l, Nzeta
3.937 2.542 2.917
1.000 1.000 1.000
n=2 1 3 P 1 # n, l, Nzeta, Polarization, NzetaPol
4.931 2.672 3.223
1.000 1.000 1.000
H-pgpb 1 # Species label, number of l-shells
n=1 0 3 P 1 # n, l, Nzeta, Polarization, NzetaPol
6.047 4.053 4.768
1.000 1.000 1.000
C-pgpb 2 # Species label, number of l-shells
n=2 0 3 # n, l, Nzeta
4.994 3.475 3.938
1.000 1.000 1.000
n=2 1 3 P 1 # n, l, Nzeta, Polarization, NzetaPol
6.254 3.746 4.407
1.000 1.000 1.000
%endblock PAO.Basis
バージョン4.1.5ではTZやTZPも指定可能だが、QZ以上には対応していない 。Siesta-4.1.5の時点で利用可能なbasis-sizeは次の通り。
size_name: Incorrect basis-size option specified, active options are:
SZ or MINIMAL
SZP, SZSP, SZ1P, SZP1
DZ
DZP, DZSP, DZP1, DZ1P or STANDARD
DZDP, DZP2, DZ2P
TZ
TZP, TZSP, TZP1, TZ1P
TZDP, TZP2, TZ2P
TZTP, TZP3, TZ3P
※ triple-ζはdouble-ζに比べて(系が大きな場合は特に)計算が重たくなるので、特に重要な経路や構造に限って高精度で計算することが推奨される。感触としては、もしDZPの計算をグレードアップするとすれば、DZP→TZではなくDZP→TZPの方が(構造の変化が比較的小さくて)良さそうに思われる。
※ 参考: PAO Basis Sets in SIESTA
スピン偏極を考慮した計算(SIESTA)
3.2 では NonCollinearSpin ( https://siesta-project.org/SIESTA_MATERIAL/Docs/Manuals/siesta-3.2-manual.pdf )
4.1.5 では Spin non-colinear ( https://siesta-project.org/SIESTA_MATERIAL/Docs/Manuals/siesta-4.1.5.pdf )
により、角度(up-down and angles)も変数に含めて計算可能。【参考文献: https://iopscience.iop.org/article/10.1088/2515-7639/aae7db 】
※ defaultは 「Spin non-polarized」の設定。
Bader電荷解析の手順(SIESTA)
(Bader chargeについて → 参考PDF)
「Bader analysis with SIESTA : How to Use」のPDFも参考に。
※SIESTAで直方体でないセルでBader電荷解析する手順については不明。直方体でないセルの場合、grid2cubeを用いると ERROR: this progam can only handle orthogonal cells と出て怒られる。➡スラブモデルの場合、電荷分布を見てみたいだけ(エネルギーは議論しない)なら無理やり並進ベクトル(TV)を直角になるように取り直すことも可能(著しい構造変化が無いことの確認&MIN計算によるoptは必要?)。
以下ではorthogonal cellであることを前提とする。gridからcubeファイルに変換するにはSIESTAプログラムのユーティリティである grid2cube を利用する。分子研の場合、パスは /apl/siesta/4.1.5-mpi/Util/Grid/grid2cube 。xxx.inpの中に以下の行を追加する。
DM.UseSaveDM .true.
SaveBaderCharge .true.
SaveRho .true.
例えば testMIN_bader_SiestaJOB という名前のJOBの結果を読み込んでBader電荷解析を行う場合は、bader_calc.input のような分かりやすい名前を付けて以下のような中身のファイルを作成する。1行目は読み込む先のファイル名、2行目はbader電荷解析であることの指定、3行目はセルの原点の座標のシフト(Bohr単位)。4行目は「出力のグリッドポイントの密度を指定する整数」らしい。このとき、
testMIN_bader_SiestaJOB
bader
0.0 0.0 0.0
1
unformatted
/apl/siesta/4.1.5-mpi/Util/Grid/grid2cube < bader_calc.input を実行すると、以下のように出力される。 Cell vectorsはBohr単位(Angstrom単位ではない)で出力され、Grid meshとスピン多重度も一緒に出力される。
Reading grid data from file testMIN_bader_SiestaJOB.BADER
Cell vectors
19.8680026767660 0.000000000000000E+000 0.000000000000000E+000
0.000000000000000E+000 14.4646567887455 0.000000000000000E+000
0.000000000000000E+000 0.000000000000000E+000 47.2431719443589
Grid mesh: 90 x 72 x 216
nspin = 1
Writing CUBE file testMIN_bader_SiestaJOB.BADER.cube
以上によりCube形式のファイル(この例では testMIN_bader_SiestaJOB.BADER.cube というファイル)が生成される。
続いて、このページからBader Charge Analysisのプログラムをダウンロードする(分子研で使う場合はLinux版)。ダウンロードしたtar.gzファイルを解凍すると "bader" という名前の実行ファイルが展開されるので、bader testMIN_bader_SiestaJOB.BADER.cube を実行して解析を行う(適宜パスを通しておくと良い)。
出力は以下のようになる。
GRID BASED BADER ANALYSIS (Version 1.04 02/08/20)
OPEN ... testMIN_bader_
GAUSSIAN-STYLE INPUT FILE
DENSITY-GRID: 90 x 72 x 216
CLOSE ... testMIN_bader_
RUN TIME: 0.21 SECONDS
CALCULATING BADER CHARGE DISTRIBUTION
0 10 25 50 75 100
PERCENT DONE: **********************
REFINING AUTOMATICALLY
ITERATION: 1
EDGE POINTS: 313950
REASSIGNED POINTS: 15547
RUN TIME: 7.14 SECONDS
CALCULATING MINIMUM DISTANCES TO ATOMS
0 10 25 50 75 100
PERCENT DONE: **********************
RUN TIME: 0.44 SECONDS
WRITING BADER ATOMIC CHARGES TO ACF.dat
WRITING BADER VOLUME CHARGES TO BCF.dat
NUMBER OF BADER MAXIMA FOUND: 432455
SIGNIFICANT MAXIMA FOUND: 77
VACUUM CHARGE: 0.0000
NUMBER OF ELECTRONS: 938.00018
WRITING ATOMIC VOLUMES
0 10 25 50 75 100
PERCENT DONE: **********************
RUN TIME: 140.77 SECONDS
ACF.datに原子ごとのBader電荷が書き出される。以上の手順でBader電荷の解析を行う。なお、DENSITY-GRID が粗いと NUMBER OF ELECTRONS が整数値にならないことがあるので、SIESTAの電子状態計算の際にGrid meshを上げておくことが望ましい。
Bader電荷は Bader net atomic charge = ZVAL - Bader population charge printed in ACF.dat の計算式から求める。
参考動画 ☞ https://youtu.be/UxPrN7KcswA?t=843
A grid-based Bader analysis algorithm without lattice bias
SIESTAによるDOS・PDOSの計算(SIESTA)
DOSまたはPDOSを計算する手順を示す。まず、以下のような内容で TiO2_PDOS1_Submit.sh を作成する。
#!/bin/csh -f
set JOBNAME=TiO2_PDOS1
set DATA=/home/nabata/surfaces/TiO2
set WORK=/scr/nabata.${JOBNAME}.$$
setenv submpi mpirun
setenv subsiesta siesta
if ( -d ${WORK} ) rm -rf ${WORK}
mkdir ${WORK}
cd ${WORK}
cp -f ${DATA}/${JOBNAME}.fdf ${WORK}
cp -f ${DATA}/*.psf ${WORK}
cp -f ${DATA}/${JOBNAME}_Machine.txt ${WORK}
${submpi} -np 20 -machinefile ${JOBNAME}_Machine.txt ${subsiesta} < ${JOBNAME}.fdf > ${JOBNAME}.out
cd -
cp -r ${WORK} ${DATA}
rm -rf ${JOBNAME}
SIESTAのインプットを TiO2_PDOS1.fdf という名前で以下のように作成する。以下はギ酸が解離吸着したアナターゼ型TiO2(101)面のインプットの例。
SystemName TiO2_PDOS1 # Descriptive name of the system
SystemLabel TiO2_PDOS1 # Short name for naming files
NumberOfAtoms 77 # Number of atoms
NumberOfSpecies 4 # Number of species
%block Chemical_Species_Label
1 8 O-pgpb
2 22 Ti-pepbr
3 1 H-pgpb
4 6 C-pgpb
%endblock Chemical_Species_Label
# Lattice, coordinates, k-sampling
AtomicCoordinatesFormat Ang
%block AtomicCoordinatesAndAtomicSpecies ## x y z p
3.482909724171 3.220884098750 7.289264251738 3
3.154118176413 3.050665813748 8.307436264966 1
1.258765803145 2.457805738391 7.164922331276 1
1.921831337483 2.632956347313 8.222744021386 4
1.433859572721 2.418475140364 9.208248769471 3
3.551266220693 3.325503385711 5.904490887941 1
-0.818507540014 -0.309269316355 5.875961605951 1
-2.120508074661 3.306577803578 5.884756487592 1
4.774604135038 -0.316576384103 5.896237838075 1
1.899109403680 2.720729171615 5.110914353920 2
0.661270057437 6.362436914249 4.980832267918 2
7.583709365630 2.737592338352 4.994942482741 2
6.284631995101 6.371568022394 4.993743268176 2
2.111693462455 0.725109374811 5.159961278747 1
0.795496961600 4.386612613345 5.174964792282 1
7.707909058157 0.743398790667 5.226490133466 1
6.415868949808 4.369299962482 5.206476418245 1
0.071480256187 2.059291661770 4.439604232446 1
-1.249644311338 5.671561315255 4.462575528687 1
5.677890745811 2.053495612879 4.472628149510 1
4.374606883681 5.681403979860 4.474463554309 1
0.331633853999 0.100834511160 4.417236787180 2
-0.979228772228 3.731185019275 4.429251736014 2
5.930155108828 0.103137000760 4.456187360728 2
4.658657270512 3.735815458989 4.404772380948 2
-1.441020783850 -0.549514682508 3.467460431818 1
-2.734657977016 3.059075492370 3.472212757994 1
4.186386528736 -0.552416486432 3.474733927066 1
2.867191333976 3.064155014619 3.533606331413 1
0.665458828795 0.211137910435 2.359128860985 1
-0.643613767639 3.855906070564 2.362993847504 1
6.279964630137 0.223569653956 2.372209331239 1
4.980110653022 3.850057031924 2.384111497894 1
3.272616362012 3.194882716136 1.588561606983 2
1.996583145681 6.826275095299 1.525167182171 2
8.888013307456 3.217118255787 1.513054691784 2
7.596428681092 6.823088103927 1.511394721905 2
3.518814922895 1.244922052616 1.436137119314 1
2.217556216600 4.866037983133 1.438378252034 1
9.125201660625 1.248059464943 1.413831265076 1
7.827203718114 4.870659004056 1.414413747185 1
1.465171124459 2.552408901302 0.892006062760 1
0.173336490522 6.178751513807 0.873323089992 1
7.065022756691 2.556503473803 0.879781764953 1
5.771089438894 6.172548583167 0.876324514763 1
1.748999954901 0.605714848310 0.772184680208 2
0.446655992785 4.227985065873 0.777029420424 2
7.354446821580 0.606068434549 0.780308582716 2
6.031047375145 4.220645250727 0.752964989518 2
-0.006934924901 -0.054465522600 -0.026221704089 1
-1.304693839292 3.561849104526 -0.024441733812 1
5.604190764005 -0.059133366530 -0.021794775249 1
4.294903072377 3.566779679499 -0.003800589450 1
1.992994786000 0.721182924000 -1.247726185000 1
0.693751386000 4.343801431000 -1.247653946000 1
7.604264387000 0.722309339000 -1.247350844000 1
6.306319260000 4.340974875000 -1.247787149000 1
4.538089973000 3.667287511000 -1.980067442000 2
3.239798478000 7.290560261000 -1.980154937000 2
10.150100380000 3.668245343000 -1.980556269000 2
8.851185836000 7.291363706000 -1.981123510000 2
4.803907985000 1.719582707000 -2.135871695000 1
3.504518150000 5.342468899000 -2.135808601000 1
10.416131220000 1.719590968000 -2.138317415000 1
9.116387964000 5.341739774000 -2.135300080000 1
2.766572053000 3.034208815000 -2.723867626000 1
1.467821058000 6.657480406000 -2.722989489000 1
8.378530724000 3.034344936000 -2.724128131000 1
7.079410316000 6.657063688000 -2.722745165000 1
3.034668277000 1.081974779000 -2.886140455000 2
1.735905508000 4.705211564000 -2.886403392000 2
8.646012124000 1.082145461000 -2.886650657000 2
7.347128145000 4.704784066000 -2.886257435000 2
1.264034217000 0.411301482000 -3.612338140000 1
-0.035599967000 4.036286295000 -3.612145506000 1
6.875079748000 0.412885408000 -3.612063130000 1
5.574711482000 4.038125148000 -3.612306468000 1
%endblock AtomicCoordinatesAndAtomicSpecies
LatticeConstant 1.0 Ang
%block LatticeVectors
11.223509610621 -0.000000000000 0.000000000000
-2.597831888300 7.245641842826 -0.000000000000
-7.793495664900 -2.832442032600 21.503015339751
%endblock LatticeVectors
%block kgrid_Monkhorst_Pack
2 0 0 0.
0 2 0 0.
0 0 1 0.
%endblock kgrid_Monkhorst_Pack
PAO.EnergyShift 50 meV
%block MM.Potentials
1 1 Grimme 7.25 2.684
1 2 Grimme 28.50 2.904
1 3 Grimme 3.24 2.343
1 4 Grimme 11.47 2.794
2 2 Grimme 111.93 3.124
2 3 Grimme 12.74 2.563
2 4 Grimme 45.06 3.014
3 3 Grimme 1.45 2.002
3 4 Grimme 5.130 2.453
4 4 Grimme 18.14 2.904
%endblock MM.Potentials
MM.Grimme.D 20.0
MM.Grimme.S6 0.75
%block ProjectedDensityOfStates # PDOS 計算用のセッティング例
-40.00 20.00 0.100 4000 eV
%endblock ProjectedDensityOfStates
PDOS.kgrid_cutoff 15. Ang
# Spin
SpinPolarized .true.
FixSpin .true.
TotalSpin 0.0
NetCharge 0.0
# DFT, Grid, SCF
XC.functional GGA # Exchange-correlation functional type
XC.authors PBE # Particular parametrization of xc func
MeshCutoff 500. Ry # Equivalent planewave cutoff for the grid
MaxSCFIterations 128 # Maximum number of SCF iterations per step
DM.MixingWeight 0.1 # New DM amount for next SCF cycle
DM.Tolerance 1.d-4 # Tolerance in maximum difference between input and output DM
DM.NumberPulay 10 # Number of SCF steps between pulay mixing
SolutionMethod Diagon # OrderN or Diagon
OccupationFunction FD # The occupation function proposed by Methfessel and Paxton
ElectronicTemperature 300 K # Temp. for Fermi smearing
# Molecular dynamics and relaxations
MD.TypeOfRun CG
MD.NumCGsteps 0
MD.MaxForceTol 0.02 eV/Ang # Tolerance in maximum force (default is 0.04 ev/Ang)
# Output options
WriteCoorInitial
WriteCoorStep
WriteForces .false.
WriteKpoints .false.
WriteEigenvalues .true. # DOS計算の場合は true にする
WriteKbands .true.
WriteBands .true.
WriteMullikenPop 1 # Write Mulliken Population Analysis
WriteCoorXmol .true.
# Options for saving/reading information
DM.UseSaveDM .false. # Use DM Continuation files
MD.UseSaveXV .false. # Use stored positions and velocities
MD.UseSaveCG .false. # Use stored positions and velocities
SaveRho .false. # Write valence pseudocharge at the mesh
SaveDeltaRho .false. # Write RHOscf-RHOatm at the mesh
SaveElectrostaticPotential .false. # Write the total elect. pot. at the mesh
SaveTotalPotential .false. # Write the total pot. at the mesh
WriteSiestaDim .false. # Write minimum dim to siesta.h and stop
WriteDenchar .false. # Write information for DENCHAR
SIESTAを並列で起動したい場合は以下のようなマシンファイルを作成する。ここでは TiO2_PDOS1_Machine.txt という名前で作成している(名前は何でもよいが、これに合わせて Submit.sh の実行コマンドも適宜変更すること)。
ka06.sci.hokudai.ac.jp
ka06.sci.hokudai.ac.jp
ka06.sci.hokudai.ac.jp
ka06.sci.hokudai.ac.jp
ka06.sci.hokudai.ac.jp
ka06.sci.hokudai.ac.jp
ka06.sci.hokudai.ac.jp
ka06.sci.hokudai.ac.jp
ka06.sci.hokudai.ac.jp
ka06.sci.hokudai.ac.jp
ka06.sci.hokudai.ac.jp
ka06.sci.hokudai.ac.jp
ka06.sci.hokudai.ac.jp
ka06.sci.hokudai.ac.jp
ka06.sci.hokudai.ac.jp
ka06.sci.hokudai.ac.jp
ka06.sci.hokudai.ac.jp
ka06.sci.hokudai.ac.jp
ka06.sci.hokudai.ac.jp
ka06.sci.hokudai.ac.jp
以下のコマンドでSIESTAのJOBを投入する。
bsub -n 20 -q "normal" -m "ka06" -R "span[hosts=1]" "/home/nabata/surfaces/TiO2/TiO2_PDOS1_Submit.sh"
計算が終わるとDATAディレクトリに nabata.TiO2_PDOS1.20116 などといったディレクトリがコピーされている。その中に TiO2_PDOS1.DOS というファイルが生成しており、この中にDOSが出力されている。これを適当なExcelファイルなどに貼り付け、グラフを描画すればよい。
TiO2_PDOS1.EIG にはk点ごとの軌道のエネルギーが出力されている。各k点でのα軌道のエネルギーが各行10個ずつ書き出されている。各k点でのβ軌道のエネルギーも続けて書かれている。
0.0000
1033 2 11
1 -28.37915 -26.32784 -25.61418 -25.14968 -24.96183 -24.90974 -24.83858 -24.82466 -24.74538 -24.65304
-24.62772 -24.57744 -24.51649 -24.40739 -24.32549 -24.30842 -24.20667 -24.20093 -24.16058 -24.07162
-24.04087 -24.02083 -24.00265 -23.99625 -23.98733 -23.97287 -23.95439 -23.94926 -23.93995 -23.93604
-23.92278 -23.90896 -23.90090 -23.87684 -23.86592 -23.85090 -23.84517 -23.82400 -23.81790 -23.81028
-23.78990 -23.76116 -23.71364 -23.58568 -23.55530 -23.46706 -22.71900 -22.67874 -22.66781 -22.65425
-16.37944 -13.82965 -13.57265 -13.31022 -12.37268 -12.19958 -12.12931 -12.11014 -12.10517 -12.08619
-12.02256 -12.01768 -11.99200 -11.98355 -11.97366 -11.96410 -11.93327 -11.92206 -11.88447 -11.86293
-11.82716 -11.79307 -11.77922 -11.72770 -11.69187 -11.63379 -11.61595 -11.58290 -11.56150 -11.55607
-11.51642 -11.48465 -11.46764 -11.43994 -11.42970 -11.39932 -11.39478 -11.37758 -11.35640 -11.33635
-11.32364 -11.30057 -11.29669 -11.25675 -11.22876 -11.16896 -11.10707 -11.08162 -11.05926 -11.01737
-10.94435 -10.88998 -10.86844 -10.84414 -10.81375 -10.74076 -10.70031 -10.66853 -10.60252 -10.57638
-10.52920 -10.49725 -10.48619 -10.41433 -10.32443 -10.30007 -10.27976 -10.24273 -10.18861 -10.16770
-10.12668 -10.09293 -10.08170 -10.04464 -10.03251 -9.97521 -9.96383 -9.94663 -9.90555 -9.86563
-9.84880 -9.82259 -9.79772 -9.77133 -9.76954 -9.74716 -9.73578 -9.68227 -9.66828 -9.55504
-9.54281 -9.47700 -9.45927 -9.43423 -9.40343 -9.37639 -9.34734 -9.32852 -9.29282 -9.27790
-9.19885 -9.17010 -9.11606 -9.09770 -9.08355 -9.04317 -9.02739 -9.00032 -8.98223 -8.93585
-8.89559 -8.87726 -8.86320 -8.80032 -8.76789 -8.76160 -8.75438 -8.72585 -8.70702 -8.67250
-8.65401 -8.62981 -8.60315 -8.59286 -8.50261 -8.48998 -8.47999 -8.45798 -8.44169 -8.43274
-8.40461 -8.38406 -8.32007 -8.30702 -8.24058 -8.21508 -8.17493 -8.14412 -8.11858 -8.08206
-8.02048 -7.95753 -7.92225 -7.89308 -7.86755 -7.85604 -7.81551 -7.79628 -7.78690 -7.57424
-7.55839 -5.68486 -5.59310 -5.23478 -5.18292 -5.06146 -5.03721 -5.02902 -5.00005 -4.95051
-4.91843 -4.90623 -4.87912 -4.86866 -4.83636 -4.77477 -4.75422 -4.73901 -4.70901 -4.68805
-4.64971 -4.61136 -4.58923 -4.57723 -4.56068 -4.54023 -4.52700 -4.50099 -4.48512 -4.47542
-4.45841 -4.44418 -4.42651 -4.40999 -4.39655 -4.37040 -4.36150 -4.32686 -4.30526 -4.29898
-4.27303 -4.25268 -4.23287 -4.18886 -4.15449 -4.13420 -4.12973 -4.06169 -4.03850 -4.01727
-4.00545 -3.99805 -3.96477 -3.93201 -3.91073 -3.83571 -3.81902 -3.78111 -3.75640 -3.74092
-3.71251 -3.67437 -3.65281 -3.63050 -3.60869 -3.57542 -3.55491 -3.51603 -3.49320 -3.44636
-3.41023 -3.38970 -3.27319 -3.22967 -3.18104 -3.15118 -3.12399 -3.09246 -3.07067 -3.04885
-3.02052 -2.96576 -2.90970 -2.87632 -2.83590 -2.74116 -2.67675 -2.59383 -2.54724 -2.53367
-2.48898 -2.32788 -2.28142 -2.23466 -2.18333 -2.14892 -2.12818 -2.07586 -2.03825 -1.96952
-1.94037 -1.81445 -1.79371 -1.74778 -1.67629 -1.64548 -1.63719 -1.60997 -1.59216 -1.57349
-1.46856 -1.43630 -1.40847 -1.33199 -1.30664 -1.28157 -1.10946 -1.08155 -0.98326 -0.94742
-0.89433 -0.83917 -0.76314 -0.50860 -0.11644 0.35735 0.61446 1.07473 1.25966 1.27713
1.29699 1.69888 1.93909 2.12882 2.21013 2.69396 2.77137 2.79713 2.83302 2.90890
(以下略)
いま、この系の価電子数は402個(➡ 価電子は O:6、Ti:4、H:1、C:4 であり、系中にはそれぞれ 50、24、2、1 個の原子が存在するので価電子の総和は α が201、β が201の計402個と求められる)であるから、HOMO(201番目のエネルギー準位)とLUMO(202番目のエネルギー準位)のエネルギーが割り出せるので、フェルミ準位は (-7.55839 + (-5.68486)) / 2.0 = -6.621625 として求められる。
SIESTAプログラムのユーティリティの一つである Eig2DOS を利用する。以下のようなコマンドで起動する。
/usr/local/siesta-3.2-pl-4/bin/Eig2DOS TiO2_PDOS1.EIG > TiO2_PDOS1_DOS.dat
このとき TiO2_PDOS1_DOS.dat にはフェルミ準位(# E_F の欄)などのプロパティとともに DOS が書き出される。なお、ここで記載されているフェルミ準位には化学的な意味が無いことに注意。フェルミ準位は上記のようにHOMO-LUMOのエネルギー準位から求める必要がある。
あるいはSIESTAプログラムのユーティリティの一つである fmpdos を利用する。以下のようなコマンドで起動する。
/usr/local/siesta-3.2-pl-4/Util/Contrib/APostnikov/fmpdos
対話形式で入出力ファイル名、DOSを取り出す原子(0 なら全原子)、DOSを描画する軌道(0 なら全軌道)をインプットする。
Input file name (PDOS):
TiO2_PDOS1.PDOS
Output file name :
TiO2_PDOS1_PDOS.dat
Extract data for atom index (enter atom NUMBER, or 0 to select all),
or for all atoms of given species (enter its chemical LABEL):
0
Extract data for n= ... (0 for all n ):
0
上記のインプットの場合は TiO2_PDOS1_test.dat に結果が全原子&全軌道のDOSが出力される。特定の原子・特定の軌道を指定することでPDOSが取得できる。
【以下おまけ】各原子ごとにPDOSを取得する作業を対話形式で行うのは面倒なので、以下のようなシェルスクリプトでまとめて実行すると良い(この場合は TiO2_PDOS1_atom1.dat といったファイルが生成される)。以下のスクリプトをそのまま使用する場合はfmpdosにはパスを通しておくこと。
#!/bin/bash
for i in {0..8}
do
echo -e "TiO2_PDOS1.PDOS\TiO2_PDOS1_atom${i}.dat\n${i}\n0" | fmpdos
done
PDOSのデータは以下のようなPythonスクリプトでExcelブックにまとめることができる。適当にアレンジして使って頂きたい。
import pandas as pd
import os
# 出力先のExcelファイル名
output_filename = 'output.xlsx'
# データが含まれるファイルの名前のリスト
filenames = [f'TiO2_PDOS1_atom{i}.dat' for i in range(1, 9)]
# Excelライターの作成
with pd.ExcelWriter(output_filename, engine='openpyxl') as writer:
for filename in filenames:
# ファイルが存在することを確認
if not os.path.isfile(filename):
print(f'File {filename} does not exist.')
continue
# ファイルを読み込み、コメント行を無視
data = pd.read_csv(filename, comment='#', delim_whitespace=True, header=None, names=['Energy', 'Up Spin PDOS', 'Down Spin PDOS'])
# データを新しいシートに書き込む(シート名をファイル名に対応させる)
data.to_excel(writer, sheet_name=os.path.splitext(filename)[0], index=False)
print(f'Data written to {output_filename}')
PDOSの計算結果を用いて電荷を推定する方法(SIESTA)
PDOSは原子ごとの電子状態を調べる有用な量であるが、化学種の電荷の簡易的な推定にも利用することができる。フェルミ準位以下の(=価電子帯の)PDOSの積分値はそのまま価電子の電子数に対応することが知られている。各原子の価電子に対する有効核電荷は既知(アウトプットファイルに書き出されている)なので、ある原子の価電子数が分かれば有効核電荷との差分から電荷を割り出すことができる。例えば、手頃で自明な系として、以下のようなインプットにより H3O + HCOO の計算をしてみる。この構造はオキソニウムカチオンとギ酸アニオンに分かれてそれぞれ+1と-1の電荷をもつことが予想される。(各原子ごとのPDOSは上記のように取得可能である)
SystemName H3O_HCOO_testPDOS
SystemLabel H3O_HCOO_testPDOS
NumberOfAtoms 8
NumberOfSpecies 3
%block Chemical_Species_Label ##<95>ς<A6><82><E9>
1 8 O-pgpb
2 1 H-pgpb
3 6 C-pgpb
%endblock Chemical_Species_Label
# Lattice, coordinates, k-sampling
AtomicCoordinatesFormat Ang
%block AtomicCoordinatesAndAtomicSpecies
6.784724206509 2.942290081526 5.109454951857 1
7.683518989692 2.994971432759 4.776299413176 2
6.799480853583 2.438538492883 5.951849543917 2
6.418763298834 3.851026036350 5.265562335981 2
2.783786193295 0.794685829688 7.709169829571 1
1.336768167763 2.407430763988 6.980325335122 1
1.735495431820 1.444167097760 7.807405714702 3
0.999486707684 1.282004465255 8.646687796801 2
%endblock AtomicCoordinatesAndAtomicSpecies
LatticeConstant 1.0 Ang
%block LatticeVectors
20.000000000000 0.000000000000 0.000000000000
0.000000000000 20.000000000000 0.000000000000
0.000000000000 0.000000000000 20.000000000000
%endblock LatticeVectors
%block kgrid_Monkhorst_Pack
4 0 0 0.
0 4 0 0.
0 0 4 0.
%endblock kgrid_Monkhorst_Pack
PAO.EnergyShift 50 meV
#%block PAO.Basis
# H_GGA 2 0.0000
# 0 2 P 1 E 6.0000055 0.2924866
# 6.0027460 2.0506972
# 1.00000000000000 1.00000000000000
# 1 1 P 1 E 39.9677761 0.5000000
# 2.0285088
# 1.00000000000000
#%endblock PAO.Basis
%block MM.Potentials
1 1 Grimme 7.2549 2.684 # O-O
2 1 Grimme 3.2445 2.343 # H-O
2 2 Grimme 1.451 2.002 # H-H
3 1 Grimme 11.471 2.794 # C-O
3 2 Grimme 5.13 2.453 # C-H
3 3 Grimme 18.137 2.904 # C-C
%endblock MM.Potentials
MM.Grimme.D 20.0
MM.Grimme.S6 0.75
%block ProjectedDensityOfStates
-30.00 10.00 0.050 2000 eV
%endblock ProjectedDensityOfStates
PDOS.kgrid_cutoff 10. Ang
# Spin
SpinPolarized .true.
FixSpin .true.
TotalSpin 0.0
NetCharge 0.0
# DFT, Grid, SCF
XC.functional GGA
XC.authors PBE
MeshCutoff 500. Ry
MaxSCFIterations 128
DM.MixingWeight 0.1
DM.Tolerance 1.d-4
DM.NumberPulay 10
DM.Normalization.Tolerance 1.d-4
SolutionMethod Diagon
# OccupationFunction MP
ElectronicTemperature 300 K
# Molecular dynamics and relaxations
MD.TypeOfRun CG
MD.NumCGsteps 0
MD.MaxForceTol 0.02 eV/Ang
MD.VariableCell .true.
# Output options
WriteCoorInitial
WriteCoorStep
WriteForces .false.
WriteKpoints .false.
WriteEigenvalues .true.
WriteKbands .true.
WriteBands .true.
WriteMullikenPop 1
WriteCoorXmol .true.
# Options for saving/reading information
DM.UseSaveDM .true.
MD.UseSaveXV .false.
MD.UseSaveCG .false.
SaveBaderCharge .true.
SaveRho .true.
SaveDeltaRho .true.
SaveElectrostaticPotential .false.
SaveTotalPotential .false.
WriteSiestaDim .false.
WriteDenchar .true.
計算したPDOSのデータをH3OとHCOOでそれぞれ統合して価電子帯にわたって積分すると、H3Oでは8.5、HCOOでは17.5という結果を得る。いま、計算で考慮している価電子は H:1、C:4、O:6 であり、有効核電荷も同じ値である。したがって原子核の電荷の和はH3Oで+9、HCOOで+17ということになる。ここから先ほどの積分値を差し引くと、およそ +0.5、-0.5 となり、それぞれの化学種に対応する部分電荷が求められる。DOSの積分値から電子数を求める方法は分子系だけでなく表面系でも適用可能である。
※ 適切な値にならない場合、大抵の原因はDOSの計算範囲が狭すぎる(計算の範囲外(特に下限よりも低い領域)にエネルギー準位が存在する)ことが考えられる。特に初めてDOSを計算する場合は ProjectedDensityOfStates の範囲は広めに取ることが推奨される。例えば上記の例では -30.00 ~ 10.00 eV の範囲でPDOSを求めているが、下限を -20.00 にすると積分値が電子数にならず、適切に解釈できなくなってしまう。SIESTAのインプットで WriteEigenvalues のフラグを .true. にした場合、MOのエネルギー準位(Eigenvalues)が .out ファイルに書き出されるので、これを参照してPDOSの計算範囲を決めるという手段も有効。
もう一つの原因は、積分の方法が悪い場合である。データの性質上、数値的に積分するしかないが、特に上記の例のように系内でスピン分極が発生している場合は非積分関数(PDOS)が適切でないと誤った積分値を得ることがある(e.g. Up spin と Down spin のPDOSの和を積分してしまう ...etc. ➡ PDOSは Up spin と Down spin を分けてそれぞれ積分しなければならない)。他には、PDOSのsmearingのブロードニング係数(ガウス関数の幅)やメッシュの細かさもなども効いてくる可能性がある。数値積分の際はグリッド数(上の例では 2000 の値がこれに相当)を増やすなどして精度を上げた方が良い。
あるいは、根本的にHOMO-LUMOギャップが狭く、DOS積分値が電子数に一致するエネルギー準位が不明瞭になっているケースも考えられる。上の例はSpin分極が発生しておりHOMO-LUMOギャップがかなり狭いので、PDOSのメッシュ数に対して敏感であることに注意。
※フェルミ準位が不明瞭な場合は、系全体のDOSの積分値がちょうど系の全価電子数に一致する領域を調べればよい。例えば上の H3O + HCOO の場合だとDOSの積分値が 26 に近い値に達するエネルギー準位が価電子帯の上限に相当する。
SIESTAプログラムの計算結果を用いた電子密度の可視化の手順(SIESTA)
xxx_Siestaという "SystemLabel" の計算結果(特にSIESTAのDM)が既に存在すると仮定する。RHOファイルが最低限必要なので、もし無い場合は、xxx_Siestaという名前の計算結果があればxxx_Siesta.inpの中に以下の行を追加して1点計算を行ってxxx_Siesta.RHOを用意する(同じSystemLabelで流し直すと既存のDMが読み込まれるので計算時間が短くて済む)。
DM.UseSaveDM .true.
SaveRho .true.
使うユーティリティは分子研の場合、パスは /apl/siesta/4.1.5-mpi/Util/Contrib/APostnikov/rho2xsf となる。
※(注意) JOB名(SystemLabel)が長すぎるとXVファイルを読み込む際にErrorが発生するため、該当する場合は適当な短い名前に書き換えること。
.RHOの存在するディレクトリで /apl/siesta/4.1.5-mpi/Util/Contrib/APostnikov/rho2xsf を起動
以下のように対話型でインプットする。
Specify SystemLabel (or 'siesta' if none): xxx_Siesta
Now define the grid cell for your XCrysDen plot.
Note that it can be arbitrarily chosen with respect to the Siesta simulation cell, and it needs not to be orthogonal. We'll define it by the origin point and three spanning vectors. They can be given in Bohr or Ang.
Would you use Bohr (B) or Ang (A) ? A
Enter origin point in Ang : 0 0 0
Enter 1st spanning vector in Ang : 12.783396000000 0.000000000000 0.000000000000
Enter 2nd spanning vector in Ang : -6.234050000000 10.756717200000 0.000000000000
Enter 3rd spanning vector in Ang : 0.000000000000 0.000000000000 22.550057600000
The box contains 73 atoms.
Now define the grid. If you want it two-dimensional,
give 1 as number of grid points along one spanning vector.
Enter number of grid points along three vectors: 50 50 50
Add grid property (LDOS, RHO, ...; or BYE if none): RHO
Found and opened: xxx_Siesta.RHO
mesh0 = ( 72 72 144 ), nspin= 2
For is=1: max. grid value = 3.76463E-03 at iix,iiy,iiz= 1 2 1
For is=1: min. grid value = 3.76463E-03 at iix,iiy,iiz= 1 1 1
For is=2: max. grid value = 3.76463E-03 at iix,iiy,iiz= 1 2 1
For is=2: min. grid value = 3.76463E-03 at iix,iiy,iiz= 1 1 1
Add grid property (LDOS, RHO, ...; or BYE if none): BYE
A wild guess! There is no file Cu2Om_addH_24up1_forMO1_Siesta.BYE
; close XSF and quit.
xxx_Siesta.XSF が生成しているので、これを xcrysden または VESTA で読み込む。
SIESTAの電子状態計算の並列効率について
詳しくはテストしていないが、系によってはそれなりに並列効率の高い計算が可能。例えばPt(111)面上にプロトンが1個吸着した系のMIN計算では以下のようになった。コア数nに対して √n 程度で効率化できているように見える。