ecaljのgetsyml.py

ecaljには、バンド分散を描画するときの対称性のよいパスを自動的に生成してくれる getsyml.py というpythonスクリプトが ~/ecalj/GetSyml/ にあります。そのディレクトリの README に、以下のようなインストール方法が書いてあるのですが、どういう訳か私の環境では上手く行きませんでした。どうやら私のubuntuのpython環境に何かかの問題があるようでした。

===========================
Requirement and Install:

1.seekpath
>git clone https://github.com/giovannipizzi/seekpath/
>python setup.py install

2.matplotlib for 3D plot
> python -m pip install --update pip #pip update
> pip install matplotlib

3.spglib for crystal structure symmetry
>git clone https://github.com/atztogo/spglib.git
>python setup.py install --user
--user install it locally.


そこでAnaconda で Python 環境をインストールするを参考にして、わたしのubuntuにPython 2.7をインストールしたところ getsyml.py が使えるようになりました。


Anaconda の Python 2.7 のセットアップ


まずAnaconda の Python 2.7 をインストールします(3.xではありません)。Anacondaのダウンロードページから、インストールスクリプトをダウンロードし、実行します。

cd ~
wget https://repo.continuum.io/archive/Anaconda2-5.0.1-Linux-x86_64.sh
bash Anaconda2-5.0.1-Linux-x86_64.sh


すると端末上に、対話型のインストーラーが表示されるので、言われるがままに進めます。最後にAnacondaのpythonをPATHに加えるか聞かれるので yes と答えます。
この段階だと、単純に .bashrc に追記しただけなので source コマンドで .bashrc を再読み込みさせた後 python のバージョンを確認します。

source ~/.bashrc
python --version


以下のように Ananaconda でインストールされたものが表示されていれば成功です。

Python 2.7.14 :: Anaconda, Inc.


seekpath のセットアップ


Python 2.7 のセットアップが完了したら、次に seekpath のセットアップをします。
以下のコマンドを順番に端末に入力します。

cd ~
git clone https://github.com/giovannipizzi/seekpath/
cd seekpath/
python setup.py install


matplotlib のセットアップ


私の環境では特に何もしなくても大丈夫でした。Anacondaではデフォルトでmatplotlibが入ってる?

spglib のセットアップ


以下のコマンドを順番に端末に入力します。

cd ~
git clone https://github.com/atztogo/spglib.git
cd spglib/python/
python setup.py install --user


getsyml.pyの場所をパスに追加


私は ~/ecalj/GetSyml/ をパスに追加しました。
~/.bashrc に以下を追記します。

export PATH="$HOME/ecalj/GetSyml:$PATH"


テスト計算


CIFからecalj入力の作成CIFからecalj入力の作成 その2のセットアップが完了しているという前提で、シリコンのCIFファイルからバンド計算まで一気にやってみます。適当なディレクトリ、例えば ~/ecalj/project/Si-GetSyml/ で以下の順に実行します。

cp ~/cif2cell-1.2.10/cifs/Si.cif si.cif
cif2ctrl.sh si
getsyml.py si
lmfa si
mpirun -np 2 lmf-MPIK si
job_band si -np 2


getsyml.py si を実行すると以下のようなグラフィカルなウインドウが立ち上がります。

Screenshot from 2017-11-15 003A553A41

Fig.1: getsyml.py で得られるブリルアンゾーンの図


最後に job_band si -np 2を実行するとバンド分散の図が得られます。

Screenshot from 2017-11-15 003A583A51

Fig.2: シリコンのバンド構造


ecaljでシリコンのバンド構造(LDA計算)で得られたものと同じバンド分散結果が得られていることが分かります。

関連エントリ




参考URL




フィードバック



にほんブログ村 その他趣味ブログ 電子工作へ

 ↑ 電子工作ブログランキング参加中です。1クリックお願いします。


コメント・トラックバックも歓迎です。 ↓      


 ↓ この記事が面白かった方は「拍手」をお願いします。

tag: ecalj 分散関係 

ecaljのアップデート

ecaljは、現在も活発に開発が進められている第一原理計算パッケージです。ecaljのインストール(Ubuntu + gfortran)では ecalj を Ubuntu に gfortran を使ってインストールする方法を書きましたが、ちょくちょくアップデートをするほうがよいです。

アップデートするには、端末に以下のように入力します。

cd ~/ecalj/
git pull origin master:master
./CleanAll.gfortran
./InstallAll.gfortran



また、最新版へのアップデートとは逆に古いバージョンに戻すには以下のようにします。

cd ~/ecalj/
git checkout b4db4044
./CleanAll.gfortran
./InstallAll.gfortran


ここで b4db4044 がバージョン番号です。戻したい番号を指定します。

ちなみに、アップデートは上記のような方法ではなく、乱暴にバックアップをとってからの再インストールでも良いみたいです。

cd ~
cp ~/ecalj/ ~/ecalj-BK/
git clone https://github.com/tkotani/ecalj.git
cd ~/ecalj/
./InstallAll.gfortran


関連エントリ




参考URL




フィードバック



にほんブログ村 その他趣味ブログ 電子工作へ

 ↑ 電子工作ブログランキング参加中です。1クリックお願いします。


コメント・トラックバックも歓迎です。 ↓      


 ↓ この記事が面白かった方は「拍手」をお願いします。

tag: ecalj 

CIFからecalj入力の作成 その2

CIFからecalj入力の作成では、結晶構造を表す標準的なファイル形式であるCIFから半自動的にecaljの結晶構造ファイル ctrls を作成する方法を書きました。しかしながら cif2cellのオプションが長すぎて明らかに暗記できないので、CIFからctrlsファイルを作成するシェルスクリプト(cif2ctrls_sh.txt)を書きました。

#!/bin/csh -f

set PREFIX=$1
cif2cell ${PREFIX}.cif -p vasp --vasp-cartesian --vasp-format=5
vasp2ctrl POSCAR
cp ctrls.POSCAR.vasp2ctrl ctrls.${PREFIX}


更に制御ファイル ctrl まで一気に作ってしまうなら、以下のようなシェルスクリプト(cif2ctrl_sh.txt)を使います。ただし ctrlgenM1.py にオプションを渡すことは出来ないので強磁性体の計算をしたい場合などは、上のスクリプトを利用してください。

#!/bin/csh -f

set PREFIX=$1
cif2cell ${PREFIX}.cif -p vasp --vasp-cartesian --vasp-format=5
vasp2ctrl POSCAR
cp ctrls.POSCAR.vasp2ctrl ctrls.${PREFIX}

ctrlgenM1.py ${PREFIX}
cp ctrlgenM1.ctrl.${PREFIX} ctrl.${PREFIX}



使い方


前提条件としてCIFからecalj入力の作成に従って cif2cell のインストールが成功していて、パスも通っている必要があります。

cif2ctrls_sh.txtcif2ctrl_sh.txtをパスの通った場所(例えば ~/bin/ など)に置いて実行権限を与えておきます。

wget -O ~/bin/cif2ctrls.sh https://blog-imgs-116.fc2.com/g/o/m/gomisai/cif2ctrls_sh.txt
wget -O ~/bin/cif2ctrl.sh https://blog-imgs-116.fc2.com/g/o/m/gomisai/cif2ctrl_sh.txt
chmod +x ~/bin/cif2ctrl.sh ~/bin/cif2ctrls.sh


シリコンのCIFファイルから制御ファイルを作って見ます。cif2cell の cifs/ ディレクトリにはいくつかのCIFが保存されています。
まず、計算を実行するフォルダに移動します。どこでも構いませんが、以下の例では ~/ecalj/project/Si-cif2ctrls/ とします。
つぎにcif2cellのディレクトリから CIF をコピーします。このときにファイル名を ecalj で使う拡張子と同じになるようにしておきます(参考: ecaljのファイル命名規則)。

cd ~/ecalj/project/Si-cif2ctrls/
cp ~/cif2cell-1.2.10/cifs/Si.cif si.cif


結晶構造ファイル ctrls を作成するには以下のようにします。
cif2ctrls.sh si


制御ファイル ctrl まで一気に作ってしまう場合は、以下のようにします。
cif2ctrl.sh si


作成された結晶構造ファイルや制御ファイルを用いて、通常通りにLDA計算やQSGW計算を行うことが出来ます。(参考: ecaljの実行手順(LDA計算), ecaljの実行手順(GW近似))

関連エントリ




参考URL




付録


このエントリで使用したファイルを添付します。ファイル名末尾の".txt"を削除して、"_"を"."に変更すれば使えるはずです。(参考:ねがてぃぶろぐの付録)


フィードバック



にほんブログ村 その他趣味ブログ 電子工作へ

 ↑ 電子工作ブログランキング参加中です。1クリックお願いします。


コメント・トラックバックも歓迎です。 ↓      


 ↓ この記事が面白かった方は「拍手」をお願いします。

tag: ecalj CIF 

ecaljでシリコンの電荷密度

ecaljではポスト処理として電荷密度の計算が可能です。プロットにはecaljで銅のフェルミ面で用いたxcrysdenの他にVESTAも利用できます。

2017y09m25d_222734424.png

Fig.1: シリコンの電荷密度



ecaljでシリコンのバンド構造(LDA計算)で作成したシリコンの入力ファイルを利用して、セルフコンシステント計算を行ってから、ポスト処理として以下のコマンドを実行します。

mpirun -np 2 lmf-MPIK si --density


上記のコマンドを実行すると smrho.xsf というファイルが作成されます。ecaljで銅のフェルミ面と同様にxcrysdenがインストールされていれば、以下のコマンドでxcrysdenが起動します。

xcrysden --xsf smrho.xsf


[Tool] → [Data Grid] → [OK] として Isovalue にとりあえず 0.08 を入力して [Submit] すると、シリコン原子間に異方性の強い共有結合が見えるようになります。

ecaljで銅のフェルミ面で書いたとおりxcrysdenはwindowsと相性が良くなさそうです。幸いにしてxsf形式の電荷密度はVESTAでも読み込むことが出来ます。VESTAで読み込んだ場合は、最初から等電荷密度面が表示されています。[Object] → [Properties] → [Isosurfaces...] から設定を変更することが出来ます。

関連エントリ




参考URL




フィードバック



にほんブログ村 その他趣味ブログ 電子工作へ

 ↑ 電子工作ブログランキング参加中です。1クリックお願いします。


コメント・トラックバックも歓迎です。 ↓      


 ↓ この記事が面白かった方は「拍手」をお願いします。

tag: ecalj 電荷密度 xcrysden VESTA 

ecaljで銅のフェルミ面

ecaljでは、ポスト処理としてフェルミ面の描画が可能です。より具体的に言うと、xcrysdenのbxsf形式でフェルミ面のデータファイルの出力が可能です。どちらかというとecaljでフェルミ面のデータを出力するよりもxcrysdenを使うほうが面倒なのですが、今回はそのあたりについて書きます。

Screenshot from 2017-09-22 193A253A51
Fig.1: 銅のフェルミ面



Ubuntuへのxcrysdenのインストール


Ubuntuへxcrysdenをインストールするのは簡単です。apt-getからインストールできます。

sudo apt-get install xcrysden


銅のフェルミ面の計算


ecaljでフェルミ面の計算をするのは極めて簡単で、通常のLDA計算を行った後、ポスト処理として job_fermisurfaceを実行します。今回はテスト計算ということで面心立方構造の銅のフェルミ面を描いて見ます。コントロールファイル ctrl.cu~/ecalj/MATERIAL/CuMLWF からコピーしてきました。LDA計算を含めて全部書くと以下のようになります。

cp ~/ecalj/MATERIAL/CuMLWF/ctrl.cu .
lmfa cu
mpirun -np 2 lmf-MPIK cu
job_fermisurface cu -np 2 10 10 10


最後の行がフェルミ面のデータを出力するポスト処理です。最後の 10 10 10 は計算するk点メッシュの分割数です。今回はテスト計算なので小さめの値にしていますが、実際にはもっと大きな数にしたほうがよいでしょう。
fermiup.bxsf というファイルが出来ているはずです。これがフェルミ面のデータが保存されたファイルです。

xcrysdenを用いたフェルミ面の描画


bxsf形式のファイルをxcrysdenで表示する前に注意点があります。それはUbuntuサーバー上で実行したxcrysdenをsshのX転送を使ってWindows上で表示しようとするとxcrysdenが落ちる点です。とりあえず私はクライアントマシンとしてWindows上のVirtualBoxにインストールしたUbuntuの上でxcrysdenを使うことにしました。

以下のコマンドでxcrysdenにフェルミ面のデータを読み込ませることが出来ます。

xcrysden --bxsf fermiup.bxsf


コマンドを打ち込むとxcrysdenのロゴとともに"Specify the Fermi Energy:"というダイアログが表示されます。値はあとから変更できるので、そのままOKをクリックします。

Screenshot from 2017-09-22 193A243A06

Screenshot from 2017-09-22 193A243A46
Fig.2-3: xcrysdenのロゴとフェルミエネルギー指定ダイアログ。値は気にせずOKをクリックする。


次にBARGraphとSelect bandsのウインドウが表示されます。BARGraphウインドウでは、1番から7番のバンドがどのエネルギー幅を持っているのかを示しています。水平な赤の破線で示されているのがフェルミエネルギー(E=0)です。フェルミエネルギーを横切っているバンドは6番だけです。従ってSelect bandsのBand number:6にだけチェックを入れてSelectedをクリックします。(フェルミエネルギーを横切るバンドが複数ある場合は、複数チェックを入れます。)

Screenshot from 2017-09-22 193A253A21

Screenshot from 2017-09-22 193A253A07
Fig.4-5: 1~7番の各バンドのエネルギー範囲と表示するバンドを選択するダイアログ。今回はフェルミエネルギーを横切っているのが6番だけなので6番だけを選択する。


するとフェルミ面が描画されます。Degree of Interpolationの値を大きくしてsubmitをクリックするとフェルミ面の表面が多少滑らかになります。

右下の薄ピンクの背景の部分に-0.026と書かれています。これが現在プロットされているフェルミエネルギーの値です。本来ゼロですが、若干ずれています。この値を変更することによって、フェルミエネルギー以外のエネルギーに対する波数空間での等エネルギー面をプロットすることが出来ます。

関連エントリ




参考URL




フィードバック



にほんブログ村 その他趣味ブログ 電子工作へ

 ↑ 電子工作ブログランキング参加中です。1クリックお願いします。


コメント・トラックバックも歓迎です。 ↓      


 ↓ この記事が面白かった方は「拍手」をお願いします。

tag: ecalj フェルミ面 xcrysden 

FC2カウンター
カテゴリ
ユーザータグ

LTspiceAkaiKKRmachikaneyamaScilabKKRPSoC強磁性CPAPICOPアンプecalj常微分方程式モンテカルロ解析状態密度トランジスタodeDOSインターフェース定電流スイッチング回路PDS5022半導体シェルスクリプト分散関係レベルシフト乱数HP6632AR6452A可変抵抗トランジスタ技術温度解析ブレッドボードI2C反強磁性確率論数値積分セミナーバンドギャップバンド構造偏微分方程式非線形方程式ソルバ熱設計絶縁ISO-I2Cカオス三端子レギュレータLM358GW近似マフィンティン半径A/DコンバータフォトカプラシュミットトリガLEDPC817C発振回路数値微分直流動作点解析サーボカレントミラーTL431アナログスイッチUSB74HC4053bzqltyVESTA補間電子負荷アセンブライジング模型BSch量子力学単振り子2ちゃんねるチョッパアンプLDA開発環境基本並進ベクトルFFT標準ロジックブラべ格子パラメトリック解析抵抗SMPMaxima失敗談ラプラス方程式繰り返し位相図スイッチト・キャパシタ熱伝導状態方程式キュリー温度gfortranコバルトTLP621不規則合金Quantum_ESPRESSO六方最密充填構造ランダムウォーク相対論ewidthスピン軌道相互作用FETQSGWVCAcygwinスレーターポーリング曲線GGA仮想結晶近似PWscfシュレディンガー方程式LM555ハーフメタル固有値問題NE555最小値ガイガー管QNAPUPS自動計測ダイヤモンドマントルTLP552格子比熱最適化MCU井戸型ポテンシャル最大値xcrysdenCIF条件分岐詰め回路フェルミ面差し込みグラフスーパーセルfsolveブラウン運動awk過渡解析起電力三角波第一原理計算FXA-7020ZRWriter509Ubuntuテスタ熱力学データロガーTLP521OpenMPubuntu平均場近似MAS830LトランスCK1026PIC16F785PGA2SC1815EAGLEノコギリ波負帰還安定性ナイキスト線図MBEOPA2277P-10フィルタCapSenseAACircuitLMC662文字列固定スピンモーメントFSMTeX結晶磁気異方性全エネルギーc/a合金multiplotgnuplot非線型方程式ソルバL10構造正規分布等高線ジバニャン方程式初期値interp1fcc面心立方構造ウィグナーザイツ胞半金属デバイ模型電荷密度重積分SIC二相共存磁気モーメント不純物問題PWgui擬ポテンシャルゼーベック係数ZnOウルツ鉱構造edeltquantumESPRESSOフォノンリジッドバンド模型スワップ領域BaO岩塩構造ルチル構造ヒストグラム確率論マテリアルデザインフラクタルマンデルブロ集合キーボードRealforceクーロン散乱三次元疎行列縮退化学反応関数フィッティング最小二乗法Excel直流解析PCTS-110TS-112日本語パラメータ・モデル等価回路モデルcif2cell入出力陰解法熱拡散方程式HiLAPW両対数グラフCrank-Nicolson法連立一次方程式specx.fifort境界条件片対数グラフグラフの分割円周率ヒストグラム不規則局所モーメントGimpシンボル軸ラベル凡例線種トラックボール

最新コメント
リンク

にほんブログ村 その他趣味ブログ 電子工作へ