Ubuntu12.04 OpenMPIのインストール
共有メモリを使う並列計算ならばOpenMPが便利ですが、ワークステーションやスーパーコンピュータとなってくると分散メモリなのでMPIが必須になってきます。
インテルの提供するIntel MPIはコンパイラと違って有償なので、フリーで配布されているOpenMPIかMPICHを使用することにします。
ワークステーションでジョブを実行する前に、自分のパソコンでテストランしたいので、パソコンにもMPIを使ったプログラムがコンパイルできる環境を作ります。
ネットの評判を見ていると、OpenMPIの方が安定して動作し、性能も高いみたいです。
OpenMPは、実はapt-getで簡単にインストールできます。
$ sudo apt-get install openmpi-bin openmpi-dev
プログラムのコンパイルは
$ mpif90 -o test test.f90
とするとできます。
コンパイルオプションはgfortranと同じです。
ですが、今回はインテルのコンパイラが使いたいのでそっちをインストールします。
インテルのコンパイラのインストール方法は過去の記事をどうぞ。
Ubuntu12.04 Intel® Parallel Studio XE 2011 for Linuxのインストール - cmphysの日記
インストール
OpenMPIのサイトからダウンロードします。
Open MPI: Open Source High Performance Computing
現在のバージョンは1.6です。
ダウンロードしたファイルはホーム・ディレクトリにおいてください。
これを展開します。
$ tar xzvf openmpi-1.6.tar.gz
$ cd openmpi-1.6
インストール前に、インストール先の指定とコンパイラをインテルのものに変更します。
$ ./configure --prefix=/usr/local/openmpi CC=icc CXX=icpc F77=ifort FC=ifort
そしてコンパイル、管理者権限に移ってインストールを実行します。
$ make all
$ sudo su
# source /home/username/.bashrc
# make install
途中でルートに移りますが、インテルのコンパイラを使うので、そのパスが入った.bashrcを読み込む必要があります。
usernameはご自身のユーザー名に変更してください。
環境設定
~/.bashrcを開いて、ファイルの最後に次の文を付け加えます。
MPIROOT=/usr/local/openmpi PATH=$MPIROOT/bin:$PATH LD_LIBRARY_PATH=$MPIROOT/lib:$LD_LIBRARY_PATH MANPATH=$MPIROOT/share/man:$MANPATH export MPIROOT PATH LD_LIBRARY_PATH MANPATH
次に /etc/ld.so.conf.d/ を管理者権限で開いて"openmpi.conf"というファイルを作り、以下の内容を記述します。
/usr/local/openmpi/lib
複数のパソコンをつなげてMPIを使う場合は、ホストの設定が必要です。
ここではこれについては触れませんので、別に調べてください。
Ubuntu12.04 Intel® Parallel Studio XE 2011 for Linuxのインストール
Linux向けの非商用Intel Fortran Compilerのインストール方法です。
FortranとC++の両方のコンパイラを含むIntel® Parallel Studio XE 2011 for Linuxのインストールする手順を紹介しますが、FortranのコンパイラだけのIntel® Fortran Composer XE 2011 for Linuxも同様の手順でインストールできます。
Fortranの場合はifort、C++の場合はiccでコンパイルできます。
準備
まず次のソフトをインストールします。
$ sudo apt-get install build-essential
$ sudo apt-get install gcj-jre
もしかしたらこれらも必要です。
$ sudo apt-get install libstdc++6
$ sudo apt-get install ia32-libs
インストール
Qualify for Free Software | Intel® SoftwareからIntel® Parallel Studio XE 2011 for Linuxをダウンロードします。
ダウンロードの際は、メールアドレスの登録が必要です。
登録したメールアドレスに、シリアル番号とダウンロードファイルのURLが送られてきます。
自分のOSに合わせて32bit版か64bit版をダウンロードしてください。
ダウンロードしたファイルはホーム・フォルダに置いておきます。
まず拾ったファイルを解凍(ファイル名は落としたファイルを見てください)。
$ tar xvzf parallel_studio_xe_2011_sp1_update2_ia32.tgz
そしたらルート権限に変更してインストール実行。
$ cd parallel_studio_xe_2011_sp1_update2_ia32
$ sudo su
# ./install.sh
で、あとは画面の指示に従ってください。
インストールが完了したら、ホーム・フォルダにある .bashrc を開いて、ファイルの最後に以下の行を追加します。
(インストール先のフォルダは自身で確認してください。)
source /opt/intel/composer_xe_2011_sp1.9.293/bin/compilervars.sh ia32
ia32は32bit用のオプションです。64bitの場合は代わりに'intel64'としてください。
これが終わったら、rootから一回ぬけてコマンドラインで再度読み込み
$ source ~/.bashrc
か、もう一回ログインするとOK。
これで毎回コマンドラインから使えるようになります。
$ ifort -v
$ icc -v
でバージョンが表示されたらインストール成功です。
iccでコンパイルできない?
試しにiccで簡単なプログラムをコンパイルしようとしても、うまくコンパイルできないことがあります。
エラーメッセージを見ると、bits/predefs.hがないとか言っています。
このpredefs.h、変なところに潜り込んでいて、
とすれば解決します。
これ、早く改善した方がいいと思うんだけど・・・。
追記 2012/10/02
新しくリリースされた XE 2013 では直ってるみたいです。
MKLのコンパイルオプション
このコンパイラにはIntel特製のMath Kernel Libraryというのがついてきます。
この中にはLAPACK&BLASも含まれています。
MKLを使う際のコンパイルオプションの付け方は
Intel® Math Kernel Library Link Line Advisor | Intel® Software
から調べることができます。
出てきたlink line, Compiler optionsで$(MKLROOT)となっているところは
/opt/intel/composer_xe_2011_sp1.9.293/mkl
などと置き換えます。
(MKLの入っているフォルダは自身で確認してください。)
Wannier90でLCAOの跳び移り積分を計算
PWscfとWannier90というソフトを使って、LACO法(Linear Combination of Atomic Orbitals method)で用いられる跳び移り積分の計算を行う。
LCAO法は強束縛法(Tight-binding method)と等価である。
電子のスピンは無視して考える。
サイトを中心とした軌道の電子のワニエ型波動関数をとする。
このときのハミルトニアンの行列要素は
すなわち、第二量子化の形でハミルトニアンを書くと
ここではサイトにある軌道の電子の生成演算子である。
LCAO法についてはHarrisonのテキストに詳しく、一読の価値がある。
- 作者: Walter A. Harrison
- 出版社/メーカー: Dover Publications
- 発売日: 1989/07/01
- メディア: ペーパーバック
- クリック: 6回
- この商品を含むブログ (1件) を見る
Elementary Electronic Structure
- 作者: Walter A. Harrison
- 出版社/メーカー: World Scientific Pub Co Inc
- 発売日: 2004/03/01
- メディア: ペーパーバック
- クリック: 7回
- この商品を含むブログを見る
Wannier90のインストール
Wannier90を使うにはPWscfが必要なので、先にインストールしてください。
Ubuntu11.10 Quantum ESPRESSOのインストール - cmphysの日記
以下では、上の手順に従ってインストールしたものとします。
また、Intel Fortran CompilerとMKLはすでにインストールされているものとします。
次のサイトから Wannier90-1.2.tar.gz をダウンロードします。
http://www.wannier.org/download.html
ダウンロードしたファイルをホーム・フォルダにあるespresso-5.0の中に入れて展開し、展開したフォルダ名を'wannier90'とでもしておきます。
フォルダ内の'make.sys'というファイルをテキストエディタで開き、下から二行を自分のMKLの入っているフォルダに合わせて変更します。
ちなみに自分の場合は次の様に変更しました。
LIBDIR = /opt/intel/composer_xe_2011_sp1.7.256/mkl LIBS = -L$(LIBDIR) -lmkl_lapack95 -lmkl_intel -lmkl_intel_thread -lmkl_core -openmp -lpthread
できたらmakeしましょう。
端末から
$ cd espresso-5.0/wannier90/
$ make all
でしばらく待つとコンパイルが終わります。
ホーム・フォルダにある.bashrcを開いて
export PATH=$PATH:/home/koudai/espresso-5.0/wannier90/
を付け加えます。
Crの跳び移り積分
ここでは、サンプルプログラムの解説をしてもよいのですが、spin-density waveの代表的な物質であるクロム(元素記号:Cr)の跳び移り積分を求めてみましょう。
最初から作るのは面倒なので、 /espresso-5.0/wannier90/examples/example08/ にある同じ遷移金属である鉄のインプットファイルを流用します。
ここから
iron.scf iron.nscf iron.pw2wan iron.win
をコピーして、適当なフォルダ(ここではexamplesの中に'chromium'という名前のディレクトリを作りましょう)に貼り付けます。
ファイル名はironの部分をchromiumに代えてしまいましょう。
ただし、.winのファイルだけは下に出てくるseednameに合わせます。
これとさらに偽ポテンシャルのデータが必要です。
偽ポテンシャルのファイルはQunatum ESPRESSOのウェブサイトからダウンロードできます。
以下のサイトから'Cr.pw91-sp-van.UPF'を手に入れてchromiumディレクトリに一緒に入れてください。
QUANTUMESPRESSO - QUANTUMESPRESSO
これで、chromiumディレクトリに次の5つのファイルが入っているか確認してください。
chromium.scf chromium.nscf chromium.pw2wan cr.win Cr.pw91-sp-van.UP
以下、各ファイルの設定の説明をします。
詳しい説明はプログラムに添付のマニュアル(~/espresso-5.0/PW/Doc/INPUT_PW.html, ~/espresso-5.0/Wannier90/doc/user_guid/user_guide.tex)などを参照してください。
chromium.scf
電子密度を求めるのに必要なファイルです。
&control calculation='scf' restart_mode='from_scratch', pseudo_dir = './', outdir='./' prefix='cr' /
pseudo_dirは偽ポテンシャルが記述されているファイルのあるディレクトリを指定します。
あとはprefixをcrにしておきます。
&system ibrav = 3, celldm(1) =5.453, nat= 1, ntyp= 1, ecutwfc =120.0, nspin = 1, nbnd= 16, ecutrho=800.0 occupations='smearing', smearing='cold', degauss=0.02 /
ibravはブラベー格子の種類で、体心立方格子の場合は3です。
他の種類についてはマニュアルを参照してください。
celldm(1)は格子定数aです。
ブラベー格子が立方晶系でない場合は、celldm(2)やcelldm(3)も指定する必要があります。
ボーア半径を1とした場合の長さを入れてください。
natは、単位胞(ブラベー格子でない)に含まれる原子の数、ntypは原子の種類の数を指定します。
ecutwfcは波動関数を計算する際の運動エネルギーのカットオフをリュードベリで指定します。
ecutofrhoは電子密度を計算する際のカットオフで、ecutwfcの8〜12倍程度にします。
nspinはスピンがオーダーしているかどうかで、常磁性の場合は1です。
nbndはバンドの数です。多めにとっておきます。
occupationsは電子がどのように局在しているかを指定し、smearingであればガウシアンに分布しています。
このガウシアンの拡がり方には種類があり、smearingで指定します。
coldはMarzari-Vanderbilt cold smearing(PRL 82, 3296 (1999))のものを使います。
ガウシアンの拡がりはdegaussで指定します。
&electrons conv_thr = 1.0e-8 /
conv_thrは自己無撞着に解く際の収束の大きさです。
ATOMIC_SPECIES Cr 51.9961 Cr.pw91-sp-van.UPF ATOMIC_POSITIONS Cr 0.0 0.0 0.0 K_POINTS (automatic) 16 16 16 0 0 0
ATOMIC_SPECIESでは原子量と偽ポテンシャルのファイルを指定し、それに'Cr'というインデックスをつけます。
ATOMIC POSITIONSでは単位胞内での各原子の位置を指定します(今は単体のクロムを考えているので楽ですね)。
chromium.nscf
固有エネルギーを求めます。
calculation='nscf'を除いて、K_POINTS {crystal}より上の部分はchuromium.scfと同じように書き換えます。
それと、&systemにnosym=.true.を追加しないと、うまくバンドが表現できないみたいです。
&system ibrav = 3, celldm(1) =5.453, nat= 1, ntyp= 1, ecutwfc =120.0, nspin = 1, nbnd= 16, ecutrho=800.0 nosym=.true. occupations='smearing', smearing='cold', degauss=0.02 /
chromium.pw2wan
次の様に書き直してください。
&inputpp outdir = './' prefix = 'cr' seedname = 'cr' write_mmn = .true. write_amn = .true. write_unk = .true. /
cr.win
num_bands = 16 num_wann = 9
num_bandsはバンドの数、num_wannは軌道の数です。
今考えているクロムは5つの3d軌道と3つの4p軌道と1つの4s軌道の計9つです。
bands_plot = true hr_plot = true wannier_plot = true fermi_surface_plot = true dis_win_max = 70.0d0 dis_win_min = 0.0d0 dis_froz_max = 25.0d0 dis_num_iter = 1000 dis_mix_ratio = 1.0 dis_conv_tol = 1.0E-10 dis_conv_window = 3 num_iter = 1000 conv_tol = 1.0E-10 conv_window = 3 mp_grid = 8 8 8 guiding_centres = true
ワニエ関数を計算する際の設定です。
多いので詳しくはマニュアルを見てください。
mp_gridは.nscfのファイルに合わせます。
begin atoms_frac Cr 0.000 0.000 0.000 end atoms_frac begin projections Cr:sp3d2;dxy;dxz,dyz end projections Fermi_energy 18.4914
projectionは考えるWannier関数の軌道です。
Fermi energyはPWscfでchromium.nscfを実行した際にできるchromium.scf.outの中に書かれている値を使います。
begin kpoint_path G 0.0000 0.0000 0.0000 H 0.500 -0.5000 -0.5000 H 0.500 -0.5000 -0.5000 P 0.7500 0.2500 -0.2500 P 0.7500 0.2500 -0.2500 N 0.5000 0.0000 -0.5000 N 0.5000 0.0000 -0.5000 G 0.0000 0.0000 0.000 G 0.0000 0.0000 0.000 H 0.5 0.5 0.5 H 0.5 0.5 0.5 N 0.5 0.0 0.0 N 0.5 0.0 0.0 G 0.0 0.0 0.0 G 0.0 0.0 0.0 P 0.75 0.25 -0.25 P 0.75 0.25 -0.25 N 0.5 0.0 0.0 end kpoint_path
バンド図をプロットする際の、k空間の経路です。
begin unit_cell_cart bohr 2.7265 2.7265 2.7265 -2.7265 2.7265 2.7265 -2.7265 -2.7265 2.7265 end unit_cell_cart
begin unit_cell_cartには、ボーア半径を単位として、単位胞の基本並進ベクトルを入れます。
以下はそのままにしておきましょう。
プログラムの実行
$ cd chromium
$ pw.xchromium.scf.out
$ pw.xchromium.nscf.out
$ wannier90.x -pp cr
$ pw2wannier90.xchromium.pw2wan.out
$ wannier90.x cr
pw.xとpw2wannier90.xの実行には時間がかかります。
フェルミ面を見たければ
$ xcrysden --bxsf cr.bxsf
で、XcrySDenが起動します。
Band numberの全部にチェックしてやれば、すべてのバンドのフェルミ面が見えます。
(全部のバンドを同時に見るには、タブにある[Merged Bands]を選んでください。)
バンド構造は、GNUPLOTを使って
とするか
で見ることができます。
飛び移り積分はcr_hr.datに出力されています。
例えば
-6 2 -4 1 1 0.003331 0.000000
であれば、格子点から格子点の飛び移りのベクトルを としたときの への軌道1から軌道1への飛び移り積分の大きさの実部が 0.003331 eV、虚部が 0.000000 eV という意味です。
速習 makefileの作り方
Linuxにはmakeという便利な機能があります。
通常ですとプログラムをコンパイルする時は、コンパイルする度にコマンドラインにコンパイラ名とソースファイル名とコンパイルオプションと・・・と大変めんどうなのです。
さらに、ある一つのソースファイルを書き換えたとき、すべてをもう一回プログラムをすべてコンパイルし直すのは面倒です。
これを"make"のコマンド一発でやってのけてくれます。
makeを使えば、コマンドラインに面倒くさいオプションを書く必要もなし、更新されたファイルだけを選択的に選んでコンパイルしてくれるので、書き直した時のコンパイル時間の短縮にもなります。
このmakefileの作り方は全く難しいものではなく、一度作ってしまえばあとは使い回すことができます。
今回はFortran90のプログラムの場合を考えますが、C言語にも簡単に応用することができます。
復習 ソースコードから実行プログラムになるまで
この項はプログラミングをある程度慣れ親しんでいる方には常識だと思いますので読み飛ばしてください。
プログラムを書いたコードは、機械語に翻訳しないとコンピュータは理解できません。
Fortran90で書いたコードを機械が読めるように翻訳してやる、これがコンパイルです。
コンパイルをするとオブジェクトファイル(拡張子.o)が完成します。
ところで、ソースコードの書かれたファイルは、普通は一つではありません。
先人の作った便利なプログラム群であるライブラリを読み込む必要も出てきます。
すなわち、それぞれのファイルをコンパイルした後、一つにまとめて実行プログラムにする必要があり、これがリンクです。
実行プログラムは、Windowsですと拡張子として.exeがついたりしますが、特に明示する必要はありません。
すなわち、あなたの書いたソースコードは
コンパイル->リンク
の過程を経て、実行プログラムとなります。
以上の過程をまとめてビルドと呼んだりします。
準備
ソースファイルが
main.f90
interface.f90
globals.f90
sub1.f90
sub2.f90
というファイルに分けて書かれているとします。
interface.f90にはインターフェイスモジュールinteface_modが、globals.f90にはグローバル変数モジュールglobalsが書かれているとしましょう。
また、プログラムにはライブラリとしてLAPACK(あるいはIntel MKL)とOpenMPが使われているとします
実行ファイル名は
sample
というにしようと思います。
makefileの準備
ソースコードのあるフォルダに makefile という名前のファイルを作ります。
Linuxのディストリビューションによってはファイル名を make とか Makefile とかにしないといけないものもあるみたいです。
makefileをgeditでもEmacsでもなんでもいいから開いて、次の様に入力します。
TARGET = sample OBJECTS = globals.o interface.o main.o \ sub1.o sub2.o MOD_FILES = globals.mod interface_mod.mod #FC = gfortran FC = ifort FFLAGS = LDFLAGS = # for gfortran ifeq (${FC},gfortran) FFLAGS += -fimplicit-none -fbounds-check LDFLAGS += -fopenmp -llapack -lblas endif # for ifort ifeq (${FC},ifort) MKLROOT = /opt/intel/composer_xe_2011_sp1.7.256/mkl FFLAGS += -I${MKLROOT}/include/ia32 -I${MKLROOT}/include LDFLAGS += -L${MKLROOT}/lib/ia32 ${MKLROOT}/lib/ia32/libmkl_blas95.a LDFLAGS += ${MKLROOT}/lib/ia32/libmkl_lapack95.a LDFLAGS += -lmkl_intel -lmkl_intel_thread -lmkl_core -openmp -lpthread -lm endif .SUFFIXES : .o .f90 .f90.o: ${FC} -c $< ${TARGET} : ${OBJECTS} ${FC} -o $@ ${OBJECTS} ${LDFLAGS} ${FFLAGS} .PHONY: clean clean: ${RM} ${TARGET} ${OBJECTS} ${MOD_FILES}
文頭に空白がある場合は、スペースキーで空白を作るのではなく、Tabキーで作ることに注意してください。
端末を開いてmakefileのあるフォルダに移動し
$ make
で、プログラムがビルドされます。
また
$ ./sample
でプログラムが実行されます。
ソースコード以外のプログラムのコンパイルの途中に生成されるファイルたちをすべて消したいときは
$ make clean
で削除できます。
makefileの解説
順番に解説していきましょう。
TARGET = sample OBJECTS = globals.o interface.o main.o \ sub1.o sub2.o MOD_FILES = globals.mod interface_mod.mod #FC = gfortran FC = ifort FFLAGS = LDFLAGS =
例えば、一番上の TARGET = sample というのは、 TARGET という変数に'sample'という文字列を入れろという意味です。
呼び出す場合は ${TARGET} か $(TARGET) と書きます。
文末にある\マークは改行を意味し、一つの文が長くなりすぎる場合に使います。
また、#はコメント文を表し、その行で#よりも後ろにある文は無視されます。
FCにはコンパイラの種類を入れています。
# for gfortran ifeq (${FC},gfortran) FFLAGS += -fimplicit-none -fbounds-check LDFLAGS += -fopenmp -llapack -lblas endif
gfortranを使う場合です。
FFLAGSにはコンパイル時のオプションやインクルードファイルのパス設定が入ります。
LDFLAGSにはリンク時のオプションやライブラリのパス設定が入ります。
-fimplicit-noneは、ソースコードに出てくる関数にすべてimplicit noneを指定するオプションです。
implicit noneのつけ忘れに効果的です。
また、-fbounds-checkはデバッグ用のオプションで、配列の領域外を参照してないかチェックします。
例えば dimension a(3) で配列aを定義したのに a(4) を使ってないかをチェックします。
デバッグ用のオプションをつけると実行速度がやや落ちるので、実際の計算の際はこのオプションを落としましょう。
デバッグ用のオプションについては以下のページが参考になります。
http://www.rcs.arch.t.u-tokyo.ac.jp/kusuhara/fswiki/wiki.cgi?page=Fortran%A5%C7%A5%D0%A5%C3%A5%B0%CD%D1%A5%AA%A5%D7%A5%B7%A5%E7%A5%F3
# for ifort ifeq (${FC},ifort) MKLROOT = /opt/intel/composer_xe_2011_sp1.7.256/mkl FFLAGS += -I${MKLROOT}/include/ia32 -I${MKLROOT}/include FFLAGS += -lmkl_intel -lmkl_intel_thread -lmkl_core -openmp -lpthread -lm LDFRAGS += -L${MKLROOT}/lib/ia32 ${MKLROOT}/lib/ia32/libmkl_blas95.a LDFLAGS += ${MKLROOT}/lib/ia32/libmkl_lapack95.a LDFLAGS += -lmkl_intel -lmkl_intel_thread -lmkl_core -openmp -lpthread -lm endif
今度はIntel Fortran Compilerを使う場合です。
MKL(Math Kernel Library)の場所は人によって違うので確認しておきましょう。
MKLを使う場合のコンパイルオプションの付け方は、以下のページで質問に答えていけば教えてくれます。
Intel® Math Kernel Library Link Line Advisor | Intel® Software
.SUFFIXES : .o .f90 .f90.o: ${FC} -c $<
一行目でサフィックスルール摘要対象の拡張子を指定します。
サフィックスとは拡張子のことです。
'.SUFFIXES : .o .f90' は、.oを作るときは必ず.f90から作られるよ、という意味です。
三行目がmakeがコマンドラインに代わりに入れてくれる行です。
$<は、前回に.oファイルを作ってから、現在にソースコードが更新されている.f90の拡張子のファイルだけを選択的に選んで挿入してくれる記号です。
${TARGET} : ${OBJECTS} ${FC} -o $@ ${OBJECTS} ${LDFLAGS} ${FFLAGS}
今度は一行目が${OBJECTS}から${TARGET}を作るよ、という意味です。
$@はターゲットファイル名(:の左側のファイル名)が入ります。
最後に、プログラムをビルドする時にできたファイルたちを一掃するマクロを書いておきます。
.PHONY: clean clean: ${RM} ${TARGET} ${OBJECTS} ${MOD_FILES}
こうすると
$ make clean
と入力することで、${TARGET} ${OBJECTS} ${MOD_FILES}のファイルが消えます。
${RM}は定義済みのマクロで、'rm -f'を表します。
Linuxのディストリビューションによっては${RM}が使えない場合もありますので、このときは rm -f に置き換えてください。
参考ページ
Ubuntu11.10 Quantum ESPRESSOのインストール
第一原理計算ソフト、Quantum ESPRESSOの導入方法の解説。
そもそもQuantum ESPRESSOとは何か?と言う場合はググってください。
ちなみにWIEN2kと異なり無料です。
使い方のページもそのうち作れたらなぁ、と思っています。
ちなみに、公式のチュートリアルは以下のページで見ることができます。
Quantum ESPRESSO Tutorial
準備
事前に必要なのは、build-essential, gfortran, fftw3-devの三つです。
これをインストールします。
端末を開いて
$ sudo apt-get install build-essential fftw3-dev gfortran
でインストールします。
実行ファイルはgfortranよりもifortで作った方が早いので、そっちを使いたい場合はgfortranの代わりにifortをインストールしてください。
cmphysの日記
ifortのインストールが終わったら、端末で次の様に入力します。
$ sudo apt-get install liblapack-dev fftw-dev
これで準備は終わりです。
Quantum ESPRESSOのインストール
Quantum ESPRESSOのダウンロードは次のページから行います。
qe-forge.org
以下、"espresso-5.0.tar.gz"をダウンロードしたとして話を進めましょう。
ダウンロードしたファイルをホーム・フォルダにおきます。
そして、端末で次の様に入力し、ファイルを展開します。
$ tar -xzvf espresso-5.0.tar.gz
展開できたら、展開先のフォルダに移動して、インストールします。
configureについてるオプションは、デフォルトではMPIを使用することになっているので、それをOpenMPを使うように変更しています。
MPIを使いたい場合はオプションを外します。
$ cd espresso-5.0
$ ./configure --enable-parallel=no --enable-openmp=yes
$ make all
最後の make all はちょっと時間がかかるので根気よく待ちましょう。
途中で
/usr/include/features.h(324): 致命的なエラー: ソース ファイル "bits/predefs.h" を開けません。
#include
^コンパイルは stack.c で異常終了しました (コード 4)。
と言われる場合があります。
この場合はなんらかの理由で bit/predefs.h がへんなところに行っているので(自分の場合は/usr/include/i386-linux-gnu/に入り込んでた)
とリンクを貼り、
$ make clean
$ make all
でもう一回コンパイルします。
インストールができたら、.bashrcを書き換えます、
ホーム・フォルダにある.bashrcを開きます。
(ちなみに、Linuxでファイルの最初にピリオドがついているのは隠しファイルで、Ctrl+hで表示できます。もう一回、Ctrl+hで再び隠れます)
このファイルの最後の行の下に以下の文を付け加えます。
export PATH=$PATH:/home/username/espresso-5.0/bin/
ただしusernameは、自分のユーザー名に変更してください。
保存できたら、パソコンを再起動するか、端末に戻って次のように入力します。
$ source ~/.bashrc
以上でインストールは終了しました。
ホーム・フォルダにあるespresso-5.0.tar.gzはもういらないので消しても構いません。
PWguiのインストール
GUI環境でQuantum ESPRESSOを使いたい場合は、PWguiをインストールします。
まず、端末を開き直すか、$ cd と入力してホーム・フォルダに戻ってください。
PWguiにはTcl8.5, iwidgets4の二つが必要です。
すでに入っているが最新バージョンではない場合は、アンインストール後、最新バージョンにインストールしなおしてください。
すでに入っている場合、そのバージョンは
$ sudo dpkg --get-selections | grep tcl
$ sudo dpkg --get-selections | grep iwidgets
で取得できます。
入っていない場合は何も表示されません。
最新バージョンではなかった場合、アンインストールは
$ sudo apt-get purge tclx.x
$ sudo apt-get purge iwidgetsx.x
で行います。xはさきほど取得したバージョン番号に置き換えます。
最新版のインストールは
$ sudo apt-get install tcl8.5 iwidgets4
で行います。
できたら、さきほどと同じページか、PWguiのホームページからダウンロードします。
qe-forge.org
http://www-k3.ijs.si/kokalj/pwgui/download.html
以下、"PWgui-5.0.tgz"をダウンロードしたとして話を進めましょう。
ちなみにPWguiのバージョン番号はESPRESSOのバージョン番号と違っててもいいみたいです。
このtgzファイルを「右クリック->ここに展開する」で展開すると"PWgui-5.0"というフォルダができるので、これをさきほどの"espresso-5.0"というフォルダに入れます。
最後に、ホーム・フォルダの.bashrcを開いて
export PATH=$PATH:/home/username/espresso-5.0/PWgui-5.0/
を、さきほど書いたものの次の行に付け加えてください。
再起動するか
$ source ~/.bashrc
を実行したらインストールは終了です。
コマンドラインから
$ pwgui
と入力して、PWguiが起動すれば成功です。
XCrySDen
XCrySDenは結晶構造などを画像で出力するソフトです。
以下のサイトからダウンロードできます。
最新版はVersion 1.5みたいですが、なぜかインストールできなかったのでVersion 1.4を使いました。
XCrySDen - (X-Window) Crystalline Structures and Densities
ダウンロードしたファイル(例えばxc-1.4.1bin-linuxPC-static.tar.gz)を展開して、espresso-5.0フォルダに'xcrysden'などという名前のフォルダを作って入れておきます。
$ cd
$ cd espresso-5.0/xcrysden/
$ ./xcConfigure
として、後は指示に従ってインストールしてください。
今度は.bashrcに自動的に書き込まれるので
$ xcrysden
と入力して起動したら成功です。
追記
$ sudo apt-get install xcrysden
でもインストールできました。
はてなダイアリーで数式を出す方法
Twitterで何気なくつぶやいたら教えてくれました。
ありがとうございます。
数式を出す方法はいたって簡単で、例えば下のようにかいてやります。
(最初の行のdivなんちゃらは、数式を真ん中に表示させてるだけです。)
<div style="text-align:center"> [TeX:{e^{i\pi} = \cos \pi + i \sin \pi \\ \:\:\:\:\:\: =-1}] </div>
一般のブログに数式を出力するには、下のページのような方法があります。
はてなの標準のだと字がそれなりにきたないので、こちらを使ってもいいかもしれません。
ブログで数式を表示させる方法:Online LaTeX Equation Editorを利用 - とね日記
Ubuntu11.10 TeXworksの導入
今更ながらインストールしました。
TeXworksはLatexのエディタで、ボタン一つでPDFに変換してくれます。
- 作者: 奥村晴彦
- 出版社/メーカー: 技術評論社
- 発売日: 2010/07/07
- メディア: 大型本
- 購入: 9人 クリック: 265回
- この商品を含むブログ (31件) を見る
とりあえず入れるだけ入れて、今後改善していきます。
準備
TeXworksを入れる前に、必要なものをインストールします。
本来はUTF-8に対応しているTeXLive2011を入れたかったのですが、インストールをしようとしてもサーバーの接続が切断されてしまうので、普通のTeXLiveを入れました。
$ sudo apt-get install texlive-latex-extra
$ sudo apt-get install latexmk dvipng
$ sudo apt-get install xpdf gs-cjk-resource
$ sudo apt-get install vfdata-morisawa5 dvi2ps-fontdesc-morisawa5
$ sudo apt-get install cmap-adobe-japan1 cmap-adobe-japan2 cmap-adobe-cns1 cmap-adobe-gb1
$ sudo jisftconfig add
それぞれの詳細についてはJapaneseLocalizedDerivative/LaTeXForJapanese - Ubuntu Japanese Wikiなど参照してください。
これでも、あとはpdfglyphlist.txtとglyphlist.txtが足りないので、ネットからダウンロードしてきます。
$ wget http://www.ring.gr.jp/pub/text/TeX/ptex-win32/current/dvipdfm-w32.tar.xz
$ tar Jxvf dvipdfm-w32.tar.xz
$ cd ./share/texmf/fonts/map/agl/
$ sudo cp -v pdfglyphlist.txt glyphlist.txt /etc/texmf/dvipdfmx
TeXworksのインストール
Ubuntuソフトウェアセンターで「TeXworks」と検索してインストールするか、apt-getを使います。
$ sudo apt-get install texworks
これで一応できましたが、実は日本語でTeXを作る場合にはplatexの設定が必要です。
ホームフォルダーに「pdfplatex.sh」を作り、その中に次のように記述します。
#!/bin/sh platex $1 dvipdfmx $1
そしてモード設定をしておきます。
$ chmod u+x pdfplatex.sh
この設定が終わったらTeXworksを起動して、
編集->設定->エディタ->エンコーディング
でEUC-JPを選択します。
さらに
タイプセット->タイプセットの方法
で、+ボタンをクリックし、次のように設定します。
名前: pdfplatex
プログラム: /home/ユーザー名/pdfplatex.sh
引数: $basename
デフォルトを今設定したpdfplatexにしておくとよいでしょう。
引数については、詳しくはTeXworks · GitHubを参考にしてください。
以上で設定が完了です。
使い方は、ホーム画面の左上にある中に三角が描かれた丸い緑のボタンを押せばPDFに変換されます。
Ctrl+tでもPDFに変換できます。
TeXworksについて、以下のページが参考になります。
TeXworks - TeX Wiki
スペルチェック
スペルチェック辞書ファイルを追加すれば、スペルチェックが行えます。
間違った綴りを書くと、下に赤線を引いてくれる便利な機能です。
スペルチェック辞書は標準で搭載していないので、OpenOfficeかThunderbirdのものを流用します(とmanualに書いてあります)。
今回はThunderbirdのものを流用しましょう。
Thunderbirdはインストールされているとします。
次のページから必要な言語のものをダウンロードします。
科学論文用の英語であれば、English(US)です。
スペルチェック辞書と言語パック :: Thunderbird向けアドオン
ダウンロードができたら、Thunderbirdを開いて
ツール->アドオン
でアドオンの画面を開き、右上の「アドオンを検索」の左側にあるスパナとドライバーが交わってX字になっているアイコンをクリックし、「ファイルからアドオンをインストール」を選びます。
そしてさきほどダウンロードしたファイルを選択すれば、インストールが自動的に行われます。
インストールが終わったらホームフォルダーを開いてCtrl+hで隠しファイルを表示します。
English(US)をインストールした場合ですと
~/.thunderbird/hogehoge.default/extensions/en-US@dictionaries.addons.mozilla.org/dictionaries/
の中にen-US.affとen-US.dicという二つのファイルがあるのでこれをコピーします。
(hogehogeの部分は人によって違います)
次に、ウインドウの左側にある「ファイルシステム」をクリックして
/usr/share/myspell/dicts/
をルート権限で開いてください。
ルート権限でディレクトリを開くには「OpenAsRoot」などを使います。
http://ubuntuapps.blog67.fc2.com/blog-entry-241.html
このディレクトリにさきほどの2つのファイルをコピーすれば完了です。
TeXworksをすでに開いている場合は再起動して
編集->スペルチェック->en-US
にチェックを入れたらスペルチェックがオンになります。
※追記(20012/08/22)
usr/share に myspell のフォルダがない場合は
$ sudo apt-get install myspell-en-us
でスペルチェッカを取得できます。
上で述べたThunderbirdとか不要です。