SlideShare a Scribd company logo
1 of 47
Download to read offline
feramと

強誘電体②	
東北大学金属材料研究所 西松毅
t-nissie@imr.tohoku.ac.jp
IMR
【配信講義】 CMSI計算科学技術特論C (2015) 第10回
2015年12月03日 	
1
feramを1枚のスライドで紹介(再掲):

誘電体のマルチスケールシミュレーション

http://loto.sourceforge.net/feram/	
第一原理計算による有効ハミルトニアンHeffの構築
	
[T. Hashimoto, T. Nishimatsu et al.: Jpn. J. Appl. Phys. 43, 6785 (2004)] 	
feramによる分子動力学計算
ペロフスカイト型化合物を
双極子相互作用のある擬スピン系としてHeffを
時間発展させ,その有限温度の性質をシミュレート
大規模(> 100 nm), 長時間 (> 100 ns) の計算が可能
ペロブスカイト型
酸化合物ABO3	
-100
-80
-60
-40
-20
0
20
40
60
80
100
200 300 400 500 600 700 800 900 1000
-40
-32
-24
-16
-8
0
8
16
24
32
40
∆Traw[K]
∆Tcorrected[K]
T [K]
0→400 kV/cm
0→200 kV/cm
0→0 kV/cm
200→0 kV/cm
400→0 kV/cm
相転移や
ドメイン構造,
ヒステリシスループ,
電気/弾性熱量効果
などのシミュレーション	
PRL 99, 077601 (2007),
PRB 78, 104104 (2008),
PRB 82, 134106 (2010),
JPSJ 84, 024716 (2015), …	
BaTiO3の相転移	
電気/弾性熱量効果	
ヒステリ
シスループ	
1つの擬スピンが
ABO3の1ユニットセルに対応	
2
電気熱量効果 vs 弾性熱量効果	
tensile stress
Cool!
dipoles
固体冷却素子としての
応用が期待されている
feramでシミュレートできないかと
• 米国アイオワ州立大学 (DoE?)
• ドイツ http://www.ferroiccooling.de
から問い合わせ(4〜5年前)
3
}  強誘電体BaTiO3やPbTiO3を第一原理計算で調べて
有効ハミルトニアン(25個のパラメータを持つ)を構築
◦  ABINITを改造して利用 http://www.abinit.org/
–  平面波展開: Ecut=60 Hartree, on 8x8x8 k-points
–  Rappeのノルム保存擬ポテンシャル http://opium.sf.net/
–  GGA (Wu and Cohen), LDAやGGA (PBE) ではダメ
◦  絶対0度の物性しかわからない
}  その有効ハミルトニアンを分子動力学法を使って

いろいろな条件下で時間発展して物性を予測
◦  独自開発したferamを利用 http://loto.sf.net/feram/
◦  大規模(32x32x512ユニット・セル、〜100nm)な系の

長時間(〜1000ns)のシミュレーションが可能
◦  温度、圧力、ひずみ、バルクか薄膜か、外部電場
4
}  実際のペロブスカイト型ABO3: 15N+6 自由度
◦  単位胞中5個の原子
◦  各原子はx, y, zの3方向に動く
◦  スーパーセル中N個の単位胞
◦  歪みの6成分
}  粗視化したモデル: 6N+6 自由度
◦  単位胞に1つの双極子ベクトルZ*u(R)
◦  単位胞に1つの「音響変位」ベクトルw(R)
◦  計 6 自由度/単位胞	
5
すなわち、双極子を
たくさんならべた
スーパーセル(周期
的境界条件)で計算
BaTiO3用パラメータ [Takeshi Nishimatsu et al.: PRB 82, 134106 (2010)]	 6
さらなる自由度 (DoF) の減量: 「音響変位」
ベクトルw(R) はu(R) に対して「最適化」	
}  イオンの描像: 5x3=15/unit cell
↓ 粗視化
}  ベクトルの描像: u(R) と w(R): 2x3=6/unit cell
↓
↓ w(R) を Velas,inho({w})+Vcoup,inho({u},{w})
↓ を最小化するように「最適化」で決定
↓
}  u(R) のみMD、w(R)はMDしない:
                   1x3=3/unit cell
7
}  BaTiO3, 96×96×96ユニットセルのスーパーセル
}  有限の外部電場Ez下でカノニカル・アンサンブル計算

(定温の熱浴と接触)
}  その後Ez=0として

ミクロ・カノニカル・

アンサンブル計算

(系外とは断熱,

全エネルギは一定)
}  外部電場Ez=0〜500 kV/cm
}  実験値の比熱 Cvは使わない→比熱を過小評価

→|ΔT|を過大評価→補正
直接的な電気熱量効果の

分子動力学シミュレーションの計算条件	
8
【直接的】電気熱量効果の計算結果その1	
スーパーセルのサイズが
小さいと,ΔTのゆらぎが
大きくなってしまう.
BaTiO3	
x 2/5
correction	
x 1/5
correction	
9
-50
-40
-30
-20
-10
0
10
20
0 100 200 300 400 500 600 700 800 900
-10
-8
-6
-4
-2
0
2
4∆T[K]
∆Tcorrected[K]
T [K]
BaTiO3 300→0 kV/cm
[001]
[110]
[111]
【直接的】電気熱量効果の計算結果その2

Anisotropic effect of E	
10
【直接的】電気熱量効果の計算結果その3	
BaTiO3	
-12
-10
-8
-6
-4
-2
0
300 400 500 600 700 800 900
-60
-50
-40
-30
-20
-10
0
∆Tcorrected[K]
∆T[K]
T [K]
5→0 kV/cm
50→0 kV/cm
100→0 kV/cm
200→0 kV/cm
300→0 kV/cm
400→0 kV/cm
500→0 kV/cm
Effective temperature
rang is narrower for
smaller E field.	
11
Direct MD simulations of electrocaloric effects	
PbTiO3	
-100
-80
-60
-40
-20
0
20
40
60
80
100
200 300 400 500 600 700 800 900 1000
-40
-32
-24
-16
-8
0
8
16
24
32
40
∆Traw[K]
∆Tcorrected[K]
T [K]
0→400 kV/cm
0→200 kV/cm
0→0 kV/cm
200→0 kV/cm
200→0 kV/cm
12
}  PbTiO3 64×64×64ユニットセルのスーパーセル
}  一軸応力下でT一定のカノニカルアンサンブルでMD
}  その後、外部応力を切って、エネルギー一定のミクロ
カノニカルアンサンブルでMD、温度変化を見積る
}  外部応力:

0.0〜-2.0 GPa
}  粗視化 →

比熱 Cv の過小評価

→ 温度変化ΔT の

過大評価 → 補正
弾性熱量効果の直接的MDシミュレーション
の計算条件	
MD step
stress
magnitude
thermalize: T=const.
50,000 MD steps
equilibrate: E=const.
40,000 MD steps
average
10,000
MD steps
13
−110
−100
−90
−80
−70
−60
−50
−40
−30
−20
−10
0
10
300 400 500 600 700 800 900 1000
−44
−40
−36
−32
−28
−24
−20
−16
−12
−8
−4
0
4
∆Traw[K]
∆Tcorrected[K]
T [K]
(a)
0.0 GPa
−0.2 GPa
−0.4 GPa
−0.6 GPa
−0.8 GPa
−1.0 GPa
−1.2 GPa
−1.4 GPa
−1.6 GPa
−1.8 GPa
−2.0 GPa
(long) −0.8 GPa
弾性熱量効果による冷却	
PbTiO3	
14
0
20
40
60
80
100
300 400 500 600 700 800 900 1000
Pz[µCcm−2
]
(b)
T1
max|∆T|
T2
−1.6 GPa
release
0
20
40
60
80
100
300 400 500 600 700 800 900 1000
Pz[µCcm−2
]
(c)
−0.8 GPa
release
(long) release
0
20
40
60
80
100
300 400 500 600 700 800 900 1000
Pz[µCcm−2
]
(d)
−0.4 GPa
release
0
20
40
60
80
100
300 400 500 600 700 800 900 1000
Pz[µCcm−2
]
T [K]
(e)
0.0 GPa
release
引っぱり
応力を
スイッチオフ
するときの
PbTiO3の
状態の遷移	
15
−10
0
10
20
30
40
50
60
70
80
90
100
110
120
130
140
150
160
300 400 500 600 700 800 900 1000
−4
0
4
8
12
16
20
24
28
32
36
40
44
48
52
56
60
64
∆Traw[K]
∆Tcorrected[K]
T [K]
0.0 GPa
−0.2 GPa
−0.4 GPa
−0.8 GPa
−1.2 GPa
−1.6 GPa
PbTiO3:
弾性熱量
効果による
加熱
MD step
stress
magnitude
thermalize: T=const.
50,000 MD steps
equilibrate: E=const.
40,000 MD steps
average 10,000
MD steps
外部応力
のスイッチ
オン	
16
T>TCで常誘電状態から引っぱり応力を
突然かけると180°ドメイン構造ができる	
z
ycross section and slice	
17
}  ペロブスカイト型強誘電体ABO3のための

第一原理有効ハミルトニアンに基づく高速
な分子動力学計算コードferam
}  電気熱量効果と弾性熱量効果とを

    velocity scaling → leapfrog

          で直接MDシミュレーション
tensile stress
Cool!
dipoles
18
}  2つ目の入力ファイル elasto770K.2lf.feram
には continue = .true. と書いてあり、1つ前
の入力ファイルの終状態からMDが継続する。
}  feramの実行方法と入出力ファイルの特徴
◦  独自入力ファイル
◦  feram 392K.feram 393K.feram 394K.feram
◦  ログは 392K.log 393K.log 394K.log へ
◦  その他の出力ファイルも「basename+拡張子」
◦  特に注意を要するエラーや警告は標準エラー出力へ
◦  標準出力は使わない。標準出力をバッファをしないシステム
で遅くなるので。
弾性熱量効果のMDの実行方法	
19	
$ feram elasto770K.1vs.feram elasto770K.2lf.feram
}  実行時引数で指定(poptを使うと簡単に割とうまくいく)

./xtalgrowth -c 1 --diameter=0.03
}  ファイルで順番に指定(論外: 機能を追加すると破綻)

393 # Temperature in Kelvin

'md' # Method
}  ファイルで名前と値を指定(feramは独自パーサで)

Kelvin = 393

method = 'md'
}  FortranのNamelistの利用
}  XMLの利用
}  DSL(Domain Specific Language)の利用
}         →次ページからそれぞれの利点欠点を解説
入力ファイルをどうする?	
20
}  実行時引数の順番に意味を持たせるのは論外

./rongai 1 0.03
}  超便利なコマンド・ライン・オプション・パース・ライブラリ
popt http://rpm5.org/files/popt/ を使うと簡単に
割とうまくいく。2次元結晶成長デモxtalgrowthで採用。
入力ファイルをどうする?

実行時引数で指定	
$ ./xtalgrowth --help # 自動生成されるHELP
Usage: xtalgrowth [OPTION...]
-d, --diameter=0.nnn Diameter of a ball, d/width
-h, --height=1.nnn Height of the system, h/width
-c, --criterion=n Criterion, 1=<n=<3
-v, --velocity=0.000n Falling velocity par step
-g, --guest='String' Name of the guest
-H, --help Print Usage
$ ./xtalgrowth -c 1 --diameter=0.03
# コマンドラインオプションが簡単に実装できる
21
}  利点
◦ 可読性が高い
◦ 分数 1/3 や 単位(例: Bohr or Angstrom)を

 指定できる(ABINITが採用)
◦ コメントを #(ハッシュ)から書くことにしておけば

1行目にシバン 「#!./feram」を書くことで

「入力ファイル」を実行属性をもつスクリプトにできる
}  欠点
◦ 独自パーサを書くのが面倒
◦ パラメータを振るためのループの実装とか

凝りだすとキリがない
入力ファイルをどうする?

独自ファイル+独自パーサ	
22
}  利点
◦  機械可読性が高い
◦  要素と属性を使い分けることができる
◦  入れ子構造にできる
◦  Fortran用のFoXライブラリというのもある
}  欠点
◦  人間可読性が低い
◦  スペルミスを検出しにくい

(カウンタを導入して参照されなかったタグを見つける?)
◦  何を要素にして何を属性にするか迷う
入力ファイルをどうする?

XMLの利用	
23
}  利点
◦ どんなFortranコンパイラにも実装されている

}  欠点
◦ 古い
◦ 可読性が低い
◦ エラーメッセージが不親切
入力ファイルをどうする?

FortranのNamelistの利用	
24
}  DSLの定義は曖昧かもしれないが、例えば
◦  Ruby版のmake(1)であるrakeを使えば、入力ファイル間の依
存関係を記述できるかも、並列処理もできるかも (pwrake)
◦  PythonのAtomistic Simulation Environment (ASE) なら
多彩な機能がすぐ使える
}  利点
◦  スクリプト言語のループ機能をそのまま使ってパラメータを振る
◦  「入力ファイル」に実行属性を与えられる
}  欠点
◦  CやFortranとのインターフェイスを書くのが面倒
入力ファイルをどうする?

DSL (Domain Specific Language) の利用	
25	
“Programming is a process of designing
your own DSL” --Dave Thomas
}  欠点: ①独自パーサ、②マニュアル(英
語・日本語)、に加えて③GUI までバー
ジョンアップ(パラメーターの増加や変
更)に対応させるのは大変
}  この3つを自動生成できるような仕組み
が必要か?
◦ GUI以外はpoptが参考になるかもしれない
GUI (Graphical User Interface) は
使えるか?	
26
}  入力が 393K.feram なら 393K.log が出力ファイル
}  verbose値(饒舌値)による出力量の制御が可能
}  ファイル名と行番号が書き出されるので、デバッグ時
などに、どこで何をやっているかが一目瞭然。Emacs
エディタ上で実行すれば、クリックや next-error で
ソースコードの該当部分に飛んで行ける。__FILE__, __LINE__を利用。	
出力ログファイルのくふう	
Emacsエディタで393K.feramを実行してログファイル
393K.logの冒頭部分をハイライト表示している様子	
make && OMP_NUM_THREADS=2 ./feram 393K.feram && cat 393K.log
make: Nothing to be done for 'all'.
feram_common.F:45: BEGIN: feram by Takeshi NISHIMATSU 0.25.01unstable
feram_common.F:47: HOSTNAME: portlandite.imr.tohoku.ac.jp
feram_common.F:51: DATE_AND_TIME: 2015-10-31T21:34:12.732+0900
feram_common.F:54: N_THREADS: 2
feram_common.F:59: FFTW_WISDOM: Successfully imported FFTW wisdom in current directory.
param_module.F:124: BEGIN: read_Param().
param_module.F:126: INPUT_FILENAME: 393K.feram
verbose = 2
#--- Method, Temperature, and mass ---------------
method = 'md'
kelvin = 393
mass_amu = 38.24
Q_Nose = 0.05
:
:
27
}  feram 393K.feram と実行されたとき、スナップ
ショットが 393K.0000040000.coord に記録される
}  それをEPSに可視化するツールをパッケージに同梱
◦  feram_cross_section_q.sh (断面図。分極を矢印で。)
◦  feram_slicer.rb (スライス。分極を□か■で。), etc...
}  アニメーションはそれをImageMagick(1)の
convert(1)でGIFに変換して、gifsicle(1)でパラパラ
マンガに(ファイルサイズが大きくなるのが欠点)
}  gifアニメーションの作成はshellでくふう↓
feramの可視化機能	
28	
$ for y in `seq 0 1 31`

do feram_cross_section_q.sh 393K.0000060000.coord 4.0 $y y 0.73;

mv 393K.0000060000-q-y.eps 393K.0000060000-q-y-`printf "%0.2d" $y`.eps; done
$ for e in 393K.0000060000-q-y-*.eps
do convert -flatten -density 400 $e -resize 25% `basename $e .eps`.gif; done
$ gifsicle --colors=256 --delay=40 --loop 393K.0000060000-q-y-??.gif 
> 393K.0000060000-q-y-animation.gif
$ gifview 393K.0000060000-q-y-animation.gif
}  このように ./configure && make && make install
でコンパイル/インストールができるソースパッケージ
の構築を自動化してくれるのがAutotoolsです
}  feramはautoconfとautomakeとを使っています
}         今回の後半はこのAutotoolsを紹介します
feramのコンパイルの手順	
29	
$ tar xf feram-X.YY.ZZ.tar.xz
$ mkdir feram-X.YY.ZZ/build-with-gfortran
$ cd $_
$ ../configure --help
$ ../configure
$ make -j4
$ make check # テストの実行
$ sudo make install
}  テストとパッケージングの自動
化をしてくれるフリーソフトウェア
}  autoconf+automake
◦  m4で書かれているが知識は不要
◦  コメント行はdnlで始める
}  基本的に3つのファイルを用意
◦  configure.ac
◦  Makefile.am
◦  src/Makefile.am
}  autoreconfだけ☆簡単☆
}  さらに詳しい日本語の解説:
http://loto.sourceforge.net/
feram/Autotools-memo.ja.html
Autotoolsとは	
30	
図
Autotools(autoconf と automake)による作業の
流れ。実際はautoreconfが自動でやってくれる。
https://commons.wikimedia.org/wiki/
File:Autoconf-automake-process.svg
より CC-BY-SA-3.0 で頒布されているもの。	
自分で書く	
自分で書く	
autoreconf
}  Autotoolsは開発者用のツール。パッケージの
ユーザは そのマシンにAutotoolsをインストールす
る必要はないし、Autotoolsについて知っている必
要もない
}  ソースファイルは伝統的にsrc/以下に置く
}  AutotoolsはFortranのプロジェクトにも使える
◦  AC_LANG(Fortran), AC_PROG_FC(gfortran ifort)
◦  関係する変数はFC, FCFLAGS, FCLIBS, CPPFLAGS
◦  Fortranでもcpp(Cプリプロセッサ)を使うと便利
◦  AC_FC_FREEFORM()で自由形式のオプションがわかる	
◦  C言語のプロジェクトの場合はファイル間の依存関係を自
動的に調べてくれるが、 Fortranの場合はMakefile.am
に依存関係を書いておくことがまだ必要	
Autotoolsについての注意	
31
}  新たにconfigure.ac, Makefile.am,

src/Makefile.amを書き変えたら☆からやり直す。
Autotoolsを使ってみる	
$ svn checkout https://svn.code.sf.net/p/loto/code/feram/trunk ft
$ cd ft/
$ autoreconf -v
$ automake --add-missing # 初回にautoreconfで実行を要求されたら	
$ autoreconf -v # ☆
$ ./configure --help # ヘルプメッセージも自動で作ってくれる
$ ./configure
$ make # ソースの編集など開発を進め、最後にmake
$ make check # 自動テスト
$ make clean # コンパイルでできるファイルを消去	
$ make distclean # Makefileなどをきれいさっぱり消す	
$ ./configure
$ make dist # 配布用パッケージを作成(ulmul, netpbm, libjpegも必要)
$ make distcheck # 配布用パッケージを厳格にテストしてから作成
# (オプションは DISTCHECK_CONFIGURE_FLAGS で指定できる)	
32
}  implicit none を使いましょう	
}  module を common の代わりに使うのは
やめましょう。そもそもいいかげん大域変数
(的なもの)を使うのはやめましょう	
}  自由形式 (free form) で書きましょう	
}  構造体 (type) を使いましょう	
}  配列の範囲が自由です a(1:N), a(0:N-1),
a(-N+1:N), a(3,0:N-1,0:N-1) とか	
}  配列やベクトルの演算が楽→matmul()とか	
}  module, interface を使えばsubroutone
の引数の不整合によるバグが避けられる	
Fortranのススメ (1)	
33
}  オブジェクト指向プログラミングしましょう	
}  複素数がはじめから使える	
}  数学関数が豊富	
}  拡張子を .F にしておけばCプリプロセッサが
使える	
}  make(1)とAutotoolsにはFCとかFCFLAGS
とかFortran用の機能があります	
}  LAPACKとかFFTWとかライブラリが豊富	
}  ポインタも使えるが積極的に使う理由はとく
にない。基本、参照渡しだから。	
Fortranのススメ (2)	
34
}  動的にallocateした配列はsubroutineの

最後で解放される
}  解放されたくないものは構造体の中に置く	
}  read/write/他 でテキスト処理も	
}  OpenMPで並列化できる	
}  command_argument_count() と
get_command_argument() とで

コマンドライン引数も扱える
}  浮動小数点数の精度はどう指定する?

1.2d0と書くのはヤダ→コンパイルオプションを使う?
Fortranのススメ (3)	
35
}  GCC 6のgfortranからMATMUL()内部関数
をインライン展開する最適化が利用可能に
-finline-matmul-limit=n
}  -fexternal-blas というのもある
}  積極的にMATMUL() を使って美しいコードを
書きましょう	
GNU Fortran (gfortran) の
MATMUL()内部関数の最新動向	
36
}  技巧に走って使いすぎないこと!デバッグが困難に
}  定数を1つのファイルにまとめる
◦  物理定数
◦  ファイルのユニット番号
◦  別解としては Fortran の module を使う手もある
}  Autotools (autoconf+automake) との連携
}  __FILE__, __LINE__の利用
}  規格外のサブルーチン名の差異を吸収(次頁に例)
}  コンパイラの差異を吸収
}  ライブラリの差異を吸収
}  Cプリプロセッサで処理される *.F と

処理されない *.f とを使い分ける
FortranでもCプリプロセッサを使う	
37
}  Fortranでホスト名の文字列を入手するための

内部サブルーチンはまだ規格化されていない
◦ GNU Fortran (gfortran): hostnm(str)
◦ Intel Fortran (ifort): hostnm(str)
◦ IBM XLF Fortran (xlf): hostnm_(str)
}  autoconf と Cプリプロセッサ でこの違いを吸収:

configure.ac で xlfが選択されたとき

AC_DEFINE([hostnm], [hostnm_], [説明文])
}  feram_common.F:47: HOSTNAME: app26

 とログファイルに記録されるようにした	
例: 新バージョンでログファイルに実行した

ホスト名が記録されるようにした	
38
}  とりあえずREADMEさえ読めばferamは使える
◦ README.en (英語版)
◦ README.ja (日本語版)
◦ INSTALL(コンパイル方法)
◦ parameter/parameter.txt(パラメータの決
定方法)
}  数式の書ける独自のマークアップ言語ULMUL
}  HTMLに変換してそのままWebページ
◦ make distで自動変換されてパッケージにも同梱
◦ 手間暇の削減
◦ ドキュメントの散逸の防止
ドキュメントとWebページの共通化	
39
}  ドキュメントはHTMLに変換しやすいマークアップ
言語で書くのが吉
}  ULMUL
◦ 西松独自: ulmul2html5, ulmul2mathjax
◦ 数式が書けて、MathMLかMathJaxに変換できる
◦ GFMに比べて余計な空白行が入らない。
}  GFM (GitHub Flavored Markdown)
◦ GitHub標準。GitHubではREADME.mdがHTMLに
変換されて表示される。
◦ 美しい表が書ける。
◦ gfm2html.rbとかで手元でもHTMLに変換できる
マークアップ言語のススメ	
40
}  src/Makefile.am に TESTS=foo.sh bar baz

とテスト用のスクリプトを用意する
}  単体テストや結合テストなどを用意し、テストに失敗した
ら非ゼロを返すようにしておく
}  make check で src/ の中でそれらが実行される
◦  テストはカラフルなレポートとともに進む

PASS: rgb_check

FAIL: wave_check
◦  テストのログがfoo.sh.logとbar.logとbaz.logとに
◦  テストの結果がfoo.sh.trsとbar.trsとbaz.trsとに
◦  テスト全体のまとめがtest-suite.logに保存される
}  一部のテストだけを選択的に行いたい場合は

$ make check TESTS=‘foo.sh bar’

と TESTS 変数で指定する	
make check でテストの自動化	
41
}  Autotools (autoconf+automake) の強力な
パッケージング機能
}  make distcheckでビルドディレクトリでチェックが
進み、問題がなければ自動的にパッケージが完成
}  オプションは configure.ac の中に指定

AM_INIT_AUTOMAKE([1.14.1 no-dist-gzip dist-xz tar-pax])
◦  automakeのバージョン1.14.1以上を使用	
◦  パッケージをtar.gzでなくtar.xzで作る	
配布用パッケージの make	
$ make distcheck
:
make check-TESTS
:
=======================================================
feram-0.25.02unstable archives ready for distribution:
feram-0.25.02unstable.tar.xz
=======================================================
$ 42
改良版のAutotoolsを目指していくつかの
パッケージングツール/ビルドツールが

開発されている。 CMakeとSConsでは
Fortranのプロジェクトもサポートされている。
◦ CMake http://www.cmake.org/
– ALPSが採用
◦ SCons http://www.scons.org/
◦ Ninja https://github.com/martine/ninja
– スピードに重点を置いて開発されているらしい
Autotoolsの代わり	
43
}  GPLv3のフリーソフトウェアとしてSourceForge.net

から手軽にダウンロードできるようにしている
}  feramを使ってよい論文を書いて出版する
◦  論文の出版直後にダウンロード数は急増
}  ドキュメントの充実
◦  チュートリアル
}  メーリングリストの質問には質問者のプロファイリング
をしてから答える(Debianのムトウ神の教え)
}  利用者講習会
◦  なかなか本当のユーザになってもらうのは難しい
◦  follow up supportが必要?
}  Search Engine Optimization (SEO)
アプリケーション普及のために	
44
}  Nightly buildができるようにする
◦  自動 svn checkout
◦  自動 configure && make && make check
◦  自動ベンチマーク
◦  以上の結果のメールによるレポート
}  ToDoリストを(SourceForge.netの)チケット
システムで管理
}  Debianの公式パッケージにする
}  物理: リラクサーのシミュレーション

    →来春の仙台の物理学会で発表予定
これからやりたいこと	
45
}  データ構造をはじめにしっかり設計する
(後から変えるのは大変)	
}  ファイル名、サブルーチン名、変数名を
はじめにしっかり設計する(後から変え
るのは大変)	
}  ぐずぐず言ってないでプログラムを書き
始める。書き換え始める。公開する。(問
題が出てきたら後から変えればよい)	
「こうしておけばよかった」と思う事	
46
}  ペロブスカイト型強誘電体ABO3のための第一原理
有効ハミルトニアンに基づく高速な分子動力学計算
コードferamを開発。フリーソフトウェアとして公開。
}  電気熱量効果と弾性熱量効果のシミュレーションが
可能 feram elasto770K.1vs.feram elasto770K.2lf.feram
}  入出力ファイルのくふう: 393K.feram→393K.log
}  ビルドツールAutotoolsでパッケージングの自動化

      →リリースの作業がとても楽!
}  Fortranを使う上での注意点
}  ドキュメンテーションのくふう
まとめ	
47

More Related Content

What's hot

イベント区間検出統合型 BLSTM-HMMハイブリッドモデルによる 多重音響イベント検出
イベント区間検出統合型 BLSTM-HMMハイブリッドモデルによる 多重音響イベント検出イベント区間検出統合型 BLSTM-HMMハイブリッドモデルによる 多重音響イベント検出
イベント区間検出統合型 BLSTM-HMMハイブリッドモデルによる 多重音響イベント検出Tomoki Hayashi
 
Open dronemapハンズオン
Open dronemapハンズオンOpen dronemapハンズオン
Open dronemapハンズオンMizutani Takayuki
 
電子動力学アプリケーションの最適化2
電子動力学アプリケーションの最適化2電子動力学アプリケーションの最適化2
電子動力学アプリケーションの最適化2RCCSRENKEI
 
プロトコル変換ゲートウェイPTGWの 実証実験と評価
プロトコル変換ゲートウェイPTGWの実証実験と評価プロトコル変換ゲートウェイPTGWの実証実験と評価
プロトコル変換ゲートウェイPTGWの 実証実験と評価Takashi Kishida
 
TRYmovie京都スタジオのご案内
TRYmovie京都スタジオのご案内TRYmovie京都スタジオのご案内
TRYmovie京都スタジオのご案内yamato-c
 
2章推薦を行う(後編)
2章推薦を行う(後編)2章推薦を行う(後編)
2章推薦を行う(後編)Tanaka Hidenori
 
2章推薦を行う(後編)
2章推薦を行う(後編)2章推薦を行う(後編)
2章推薦を行う(後編)Tanaka Hidenori
 
20120810 eiscat yogawa_v2
20120810 eiscat yogawa_v220120810 eiscat yogawa_v2
20120810 eiscat yogawa_v2Iugo Net
 
20120810 eiscat yogawa_v2
20120810 eiscat yogawa_v220120810 eiscat yogawa_v2
20120810 eiscat yogawa_v2Iugo Net
 
20120810 eiscat yogawa_v2
20120810 eiscat yogawa_v220120810 eiscat yogawa_v2
20120810 eiscat yogawa_v2Iugo Net
 
DEEP LEARNING、トレーニング・インファレンスのGPUによる高速化
DEEP LEARNING、トレーニング・インファレンスのGPUによる高速化DEEP LEARNING、トレーニング・インファレンスのGPUによる高速化
DEEP LEARNING、トレーニング・インファレンスのGPUによる高速化RCCSRENKEI
 
200625material naruse
200625material naruse200625material naruse
200625material naruseRCCSRENKEI
 
2章推薦を行う(後編)
2章推薦を行う(後編)2章推薦を行う(後編)
2章推薦を行う(後編)Tanaka Hidenori
 
200514material minami
200514material minami200514material minami
200514material minamiRCCSRENKEI
 
イベント継続長を明示的に制御したBLSTM-HSMMハイブリッドモデルによる多重音響イベント検出
イベント継続長を明示的に制御したBLSTM-HSMMハイブリッドモデルによる多重音響イベント検出イベント継続長を明示的に制御したBLSTM-HSMMハイブリッドモデルによる多重音響イベント検出
イベント継続長を明示的に制御したBLSTM-HSMMハイブリッドモデルによる多重音響イベント検出Tomoki Hayashi
 
円形アレイを用いた水平面3次元音場の収録と再現
円形アレイを用いた水平面3次元音場の収録と再現円形アレイを用いた水平面3次元音場の収録と再現
円形アレイを用いた水平面3次元音場の収録と再現Takuma_OKAMOTO
 
Rish mwr analysis_tutorial_shinbori_20120810
Rish mwr analysis_tutorial_shinbori_20120810Rish mwr analysis_tutorial_shinbori_20120810
Rish mwr analysis_tutorial_shinbori_20120810Atsuki Shinbori
 
200730material fujita
200730material fujita200730material fujita
200730material fujitaRCCSRENKEI
 
[招待講演] スピーカアレイを用いた空間フーリエ変換に基づく局所再生
[招待講演] スピーカアレイを用いた空間フーリエ変換に基づく局所再生[招待講演] スピーカアレイを用いた空間フーリエ変換に基づく局所再生
[招待講演] スピーカアレイを用いた空間フーリエ変換に基づく局所再生Takuma_OKAMOTO
 
200521material takahashi
200521material takahashi200521material takahashi
200521material takahashiRCCSRENKEI
 

What's hot (20)

イベント区間検出統合型 BLSTM-HMMハイブリッドモデルによる 多重音響イベント検出
イベント区間検出統合型 BLSTM-HMMハイブリッドモデルによる 多重音響イベント検出イベント区間検出統合型 BLSTM-HMMハイブリッドモデルによる 多重音響イベント検出
イベント区間検出統合型 BLSTM-HMMハイブリッドモデルによる 多重音響イベント検出
 
Open dronemapハンズオン
Open dronemapハンズオンOpen dronemapハンズオン
Open dronemapハンズオン
 
電子動力学アプリケーションの最適化2
電子動力学アプリケーションの最適化2電子動力学アプリケーションの最適化2
電子動力学アプリケーションの最適化2
 
プロトコル変換ゲートウェイPTGWの 実証実験と評価
プロトコル変換ゲートウェイPTGWの実証実験と評価プロトコル変換ゲートウェイPTGWの実証実験と評価
プロトコル変換ゲートウェイPTGWの 実証実験と評価
 
TRYmovie京都スタジオのご案内
TRYmovie京都スタジオのご案内TRYmovie京都スタジオのご案内
TRYmovie京都スタジオのご案内
 
2章推薦を行う(後編)
2章推薦を行う(後編)2章推薦を行う(後編)
2章推薦を行う(後編)
 
2章推薦を行う(後編)
2章推薦を行う(後編)2章推薦を行う(後編)
2章推薦を行う(後編)
 
20120810 eiscat yogawa_v2
20120810 eiscat yogawa_v220120810 eiscat yogawa_v2
20120810 eiscat yogawa_v2
 
20120810 eiscat yogawa_v2
20120810 eiscat yogawa_v220120810 eiscat yogawa_v2
20120810 eiscat yogawa_v2
 
20120810 eiscat yogawa_v2
20120810 eiscat yogawa_v220120810 eiscat yogawa_v2
20120810 eiscat yogawa_v2
 
DEEP LEARNING、トレーニング・インファレンスのGPUによる高速化
DEEP LEARNING、トレーニング・インファレンスのGPUによる高速化DEEP LEARNING、トレーニング・インファレンスのGPUによる高速化
DEEP LEARNING、トレーニング・インファレンスのGPUによる高速化
 
200625material naruse
200625material naruse200625material naruse
200625material naruse
 
2章推薦を行う(後編)
2章推薦を行う(後編)2章推薦を行う(後編)
2章推薦を行う(後編)
 
200514material minami
200514material minami200514material minami
200514material minami
 
イベント継続長を明示的に制御したBLSTM-HSMMハイブリッドモデルによる多重音響イベント検出
イベント継続長を明示的に制御したBLSTM-HSMMハイブリッドモデルによる多重音響イベント検出イベント継続長を明示的に制御したBLSTM-HSMMハイブリッドモデルによる多重音響イベント検出
イベント継続長を明示的に制御したBLSTM-HSMMハイブリッドモデルによる多重音響イベント検出
 
円形アレイを用いた水平面3次元音場の収録と再現
円形アレイを用いた水平面3次元音場の収録と再現円形アレイを用いた水平面3次元音場の収録と再現
円形アレイを用いた水平面3次元音場の収録と再現
 
Rish mwr analysis_tutorial_shinbori_20120810
Rish mwr analysis_tutorial_shinbori_20120810Rish mwr analysis_tutorial_shinbori_20120810
Rish mwr analysis_tutorial_shinbori_20120810
 
200730material fujita
200730material fujita200730material fujita
200730material fujita
 
[招待講演] スピーカアレイを用いた空間フーリエ変換に基づく局所再生
[招待講演] スピーカアレイを用いた空間フーリエ変換に基づく局所再生[招待講演] スピーカアレイを用いた空間フーリエ変換に基づく局所再生
[招待講演] スピーカアレイを用いた空間フーリエ変換に基づく局所再生
 
200521material takahashi
200521material takahashi200521material takahashi
200521material takahashi
 

Viewers also liked

高精度擬ポテンシャル法の開発と表面系への応用
高精度擬ポテンシャル法の開発と表面系への応用高精度擬ポテンシャル法の開発と表面系への応用
高精度擬ポテンシャル法の開発と表面系への応用dc1394
 
CMSI計算科学技術特論C (2015) xTAPP をはじめとしたDFT コードと
CMSI計算科学技術特論C (2015) xTAPP をはじめとしたDFT コードとCMSI計算科学技術特論C (2015) xTAPP をはじめとしたDFT コードと
CMSI計算科学技術特論C (2015) xTAPP をはじめとしたDFT コードとComputational Materials Science Initiative
 
密度汎関数法, Density Fuctional Theory (DFT)の基礎第5回
密度汎関数法, Density Fuctional Theory (DFT)の基礎第5回密度汎関数法, Density Fuctional Theory (DFT)の基礎第5回
密度汎関数法, Density Fuctional Theory (DFT)の基礎第5回SATOH daisuke, Ph.D.
 
第一原理計算と密度汎関数理論
第一原理計算と密度汎関数理論第一原理計算と密度汎関数理論
第一原理計算と密度汎関数理論dc1394
 
2015-09-02 @ 大型実験施設とスーパーコンピュータとの連携利用シンポジウム
2015-09-02 @ 大型実験施設とスーパーコンピュータとの連携利用シンポジウム2015-09-02 @ 大型実験施設とスーパーコンピュータとの連携利用シンポジウム
2015-09-02 @ 大型実験施設とスーパーコンピュータとの連携利用シンポジウムComputational Materials Science Initiative
 
量子化学計算外伝 すごいよ!! FMO
量子化学計算外伝 すごいよ!! FMO量子化学計算外伝 すごいよ!! FMO
量子化学計算外伝 すごいよ!! FMOKazufumi Ohkawa
 
技術者が知るべき Gröbner 基底
技術者が知るべき Gröbner 基底技術者が知るべき Gröbner 基底
技術者が知るべき Gröbner 基底Hiromi Ishii
 

Viewers also liked (9)

高精度擬ポテンシャル法の開発と表面系への応用
高精度擬ポテンシャル法の開発と表面系への応用高精度擬ポテンシャル法の開発と表面系への応用
高精度擬ポテンシャル法の開発と表面系への応用
 
CMSI計算科学技術特論C (2015) xTAPP をはじめとしたDFT コードと
CMSI計算科学技術特論C (2015) xTAPP をはじめとしたDFT コードとCMSI計算科学技術特論C (2015) xTAPP をはじめとしたDFT コードと
CMSI計算科学技術特論C (2015) xTAPP をはじめとしたDFT コードと
 
密度汎関数法, Density Fuctional Theory (DFT)の基礎第5回
密度汎関数法, Density Fuctional Theory (DFT)の基礎第5回密度汎関数法, Density Fuctional Theory (DFT)の基礎第5回
密度汎関数法, Density Fuctional Theory (DFT)の基礎第5回
 
第一原理計算と密度汎関数理論
第一原理計算と密度汎関数理論第一原理計算と密度汎関数理論
第一原理計算と密度汎関数理論
 
2015-09-02 @ 大型実験施設とスーパーコンピュータとの連携利用シンポジウム
2015-09-02 @ 大型実験施設とスーパーコンピュータとの連携利用シンポジウム2015-09-02 @ 大型実験施設とスーパーコンピュータとの連携利用シンポジウム
2015-09-02 @ 大型実験施設とスーパーコンピュータとの連携利用シンポジウム
 
2015-07-28 @ 材料構造の解析に役立つ計算科学研究会
2015-07-28 @ 材料構造の解析に役立つ計算科学研究会2015-07-28 @ 材料構造の解析に役立つ計算科学研究会
2015-07-28 @ 材料構造の解析に役立つ計算科学研究会
 
CMSI計算科学技術特論C (2015) OpenMX とDFT①
CMSI計算科学技術特論C (2015) OpenMX とDFT①CMSI計算科学技術特論C (2015) OpenMX とDFT①
CMSI計算科学技術特論C (2015) OpenMX とDFT①
 
量子化学計算外伝 すごいよ!! FMO
量子化学計算外伝 すごいよ!! FMO量子化学計算外伝 すごいよ!! FMO
量子化学計算外伝 すごいよ!! FMO
 
技術者が知るべき Gröbner 基底
技術者が知るべき Gröbner 基底技術者が知るべき Gröbner 基底
技術者が知るべき Gröbner 基底
 

Similar to CMSI計算科学技術特論C (2015) feram と強誘電体②

Fftw誰得ガイド
Fftw誰得ガイドFftw誰得ガイド
Fftw誰得ガイドchunjp
 
光発振器ネットワークで組合せ最適化問題を解くコヒーレントイジングマシン
光発振器ネットワークで組合せ最適化問題を解くコヒーレントイジングマシン光発振器ネットワークで組合せ最適化問題を解くコヒーレントイジングマシン
光発振器ネットワークで組合せ最適化問題を解くコヒーレントイジングマシンUtsunomiya Shoko
 
Chainerの使い方と自然言語処理への応用
Chainerの使い方と自然言語処理への応用Chainerの使い方と自然言語処理への応用
Chainerの使い方と自然言語処理への応用Seiya Tokui
 
Rish mwr analysis_tutorial_shinbori_20120810
Rish mwr analysis_tutorial_shinbori_20120810Rish mwr analysis_tutorial_shinbori_20120810
Rish mwr analysis_tutorial_shinbori_20120810Iugo Net
 
2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境
2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境
2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境智啓 出川
 
Iugonet 20120810-nipr-sato
Iugonet 20120810-nipr-satoIugonet 20120810-nipr-sato
Iugonet 20120810-nipr-satoIugo Net
 
機械学習 / Deep Learning 大全 (4) GPU編
機械学習 / Deep Learning 大全 (4) GPU編機械学習 / Deep Learning 大全 (4) GPU編
機械学習 / Deep Learning 大全 (4) GPU編Daiyu Hatakeyama
 
X tapp lecture_20140226
X tapp lecture_20140226X tapp lecture_20140226
X tapp lecture_20140226xTAPP
 
lispmeetup#63 Common Lispでゼロから作るDeep Learning
lispmeetup#63 Common Lispでゼロから作るDeep Learninglispmeetup#63 Common Lispでゼロから作るDeep Learning
lispmeetup#63 Common Lispでゼロから作るDeep LearningSatoshi imai
 
文献紹介:An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale
文献紹介:An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale文献紹介:An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale
文献紹介:An Image is Worth 16x16 Words: Transformers for Image Recognition at ScaleToru Tamaki
 
El text.tokuron a(2019).ishimura190725
El text.tokuron a(2019).ishimura190725El text.tokuron a(2019).ishimura190725
El text.tokuron a(2019).ishimura190725RCCSRENKEI
 
研究内容 カタログマイニング
研究内容 カタログマイニング研究内容 カタログマイニング
研究内容 カタログマイニングShogo Tabata
 

Similar to CMSI計算科学技術特論C (2015) feram と強誘電体② (20)

feram-0.24.00 is released!
feram-0.24.00 is released!feram-0.24.00 is released!
feram-0.24.00 is released!
 
Fftw誰得ガイド
Fftw誰得ガイドFftw誰得ガイド
Fftw誰得ガイド
 
More modern gpu
More modern gpuMore modern gpu
More modern gpu
 
光発振器ネットワークで組合せ最適化問題を解くコヒーレントイジングマシン
光発振器ネットワークで組合せ最適化問題を解くコヒーレントイジングマシン光発振器ネットワークで組合せ最適化問題を解くコヒーレントイジングマシン
光発振器ネットワークで組合せ最適化問題を解くコヒーレントイジングマシン
 
Chainerの使い方と自然言語処理への応用
Chainerの使い方と自然言語処理への応用Chainerの使い方と自然言語処理への応用
Chainerの使い方と自然言語処理への応用
 
Prosym2012
Prosym2012Prosym2012
Prosym2012
 
Rish mwr analysis_tutorial_shinbori_20120810
Rish mwr analysis_tutorial_shinbori_20120810Rish mwr analysis_tutorial_shinbori_20120810
Rish mwr analysis_tutorial_shinbori_20120810
 
CMSI計算科学技術特論A(14) 量子化学計算の大規模化1
CMSI計算科学技術特論A(14) 量子化学計算の大規模化1CMSI計算科学技術特論A(14) 量子化学計算の大規模化1
CMSI計算科学技術特論A(14) 量子化学計算の大規模化1
 
20180728 halide-study
20180728 halide-study20180728 halide-study
20180728 halide-study
 
Rを用いたGIS
Rを用いたGISRを用いたGIS
Rを用いたGIS
 
2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境
2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境
2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境
 
Iugonet 20120810-nipr-sato
Iugonet 20120810-nipr-satoIugonet 20120810-nipr-sato
Iugonet 20120810-nipr-sato
 
機械学習 / Deep Learning 大全 (4) GPU編
機械学習 / Deep Learning 大全 (4) GPU編機械学習 / Deep Learning 大全 (4) GPU編
機械学習 / Deep Learning 大全 (4) GPU編
 
X tapp lecture_20140226
X tapp lecture_20140226X tapp lecture_20140226
X tapp lecture_20140226
 
yamagata m
yamagata myamagata m
yamagata m
 
lispmeetup#63 Common Lispでゼロから作るDeep Learning
lispmeetup#63 Common Lispでゼロから作るDeep Learninglispmeetup#63 Common Lispでゼロから作るDeep Learning
lispmeetup#63 Common Lispでゼロから作るDeep Learning
 
文献紹介:An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale
文献紹介:An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale文献紹介:An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale
文献紹介:An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale
 
pg_bigmを用いた全文検索のしくみ(前編)
pg_bigmを用いた全文検索のしくみ(前編)pg_bigmを用いた全文検索のしくみ(前編)
pg_bigmを用いた全文検索のしくみ(前編)
 
El text.tokuron a(2019).ishimura190725
El text.tokuron a(2019).ishimura190725El text.tokuron a(2019).ishimura190725
El text.tokuron a(2019).ishimura190725
 
研究内容 カタログマイニング
研究内容 カタログマイニング研究内容 カタログマイニング
研究内容 カタログマイニング
 

More from Computational Materials Science Initiative

More from Computational Materials Science Initiative (20)

MateriApps LIVE! の設定
MateriApps LIVE! の設定MateriApps LIVE! の設定
MateriApps LIVE! の設定
 
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
 
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
 
MateriApps LIVE!の設定
MateriApps LIVE!の設定MateriApps LIVE!の設定
MateriApps LIVE!の設定
 
MateriApps LIVE! の設定
MateriApps LIVE! の設定MateriApps LIVE! の設定
MateriApps LIVE! の設定
 
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
 
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
 
MateriApps LIVE! の設定
MateriApps LIVE! の設定MateriApps LIVE! の設定
MateriApps LIVE! の設定
 
MateriApps LIVE! の設定
MateriApps LIVE! の設定MateriApps LIVE! の設定
MateriApps LIVE! の設定
 
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
 
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
 
MateriApps LIVE! の設定
MateriApps LIVE! の設定MateriApps LIVE! の設定
MateriApps LIVE! の設定
 
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
 
MateriApps LIVE!の設定
MateriApps LIVE!の設定MateriApps LIVE!の設定
MateriApps LIVE!の設定
 
ALPSチュートリアル
ALPSチュートリアルALPSチュートリアル
ALPSチュートリアル
 
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
 
MateriApps LIVE!の設定
MateriApps LIVE!の設定MateriApps LIVE!の設定
MateriApps LIVE!の設定
 
MateriApps: OpenMXを利用した第一原理計算の簡単な実習
MateriApps: OpenMXを利用した第一原理計算の簡単な実習MateriApps: OpenMXを利用した第一原理計算の簡単な実習
MateriApps: OpenMXを利用した第一原理計算の簡単な実習
 
CMSI計算科学技術特論C (2015) ALPS と量子多体問題②
CMSI計算科学技術特論C (2015) ALPS と量子多体問題②CMSI計算科学技術特論C (2015) ALPS と量子多体問題②
CMSI計算科学技術特論C (2015) ALPS と量子多体問題②
 
CMSI計算科学技術特論C (2015) ALPS と量子多体問題①
CMSI計算科学技術特論C (2015) ALPS と量子多体問題①CMSI計算科学技術特論C (2015) ALPS と量子多体問題①
CMSI計算科学技術特論C (2015) ALPS と量子多体問題①
 

CMSI計算科学技術特論C (2015) feram と強誘電体②