first commit, Readme.html更新して、git管理することにした。

This commit is contained in:
2023-05-26 20:13:05 +09:00
commit ce85e3907f
26 changed files with 158505 additions and 0 deletions
+575
View File
@@ -0,0 +1,575 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">
<head>
<!-- 2023-05-26 金 20:10 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>dump2analysis</title>
<meta name="author" content="大窪 貴洋 (千葉大院工) ohkubo.takahiro@faculty.chiba-u.jp" />
<meta name="generator" content="Org Mode" />
<style>
#content { max-width: 60em; margin: auto; }
.title { text-align: center;
margin-bottom: .2em; }
.subtitle { text-align: center;
font-size: medium;
font-weight: bold;
margin-top:0; }
.todo { font-family: monospace; color: red; }
.done { font-family: monospace; color: green; }
.priority { font-family: monospace; color: orange; }
.tag { background-color: #eee; font-family: monospace;
padding: 2px; font-size: 80%; font-weight: normal; }
.timestamp { color: #bebebe; }
.timestamp-kwd { color: #5f9ea0; }
.org-right { margin-left: auto; margin-right: 0px; text-align: right; }
.org-left { margin-left: 0px; margin-right: auto; text-align: left; }
.org-center { margin-left: auto; margin-right: auto; text-align: center; }
.underline { text-decoration: underline; }
#postamble p, #preamble p { font-size: 90%; margin: .2em; }
p.verse { margin-left: 3%; }
pre {
border: 1px solid #e6e6e6;
border-radius: 3px;
background-color: #f2f2f2;
padding: 8pt;
font-family: monospace;
overflow: auto;
margin: 1.2em;
}
pre.src {
position: relative;
overflow: auto;
}
pre.src:before {
display: none;
position: absolute;
top: -8px;
right: 12px;
padding: 3px;
color: #555;
background-color: #f2f2f299;
}
pre.src:hover:before { display: inline; margin-top: 14px;}
/* Languages per Org manual */
pre.src-asymptote:before { content: 'Asymptote'; }
pre.src-awk:before { content: 'Awk'; }
pre.src-authinfo::before { content: 'Authinfo'; }
pre.src-C:before { content: 'C'; }
/* pre.src-C++ doesn't work in CSS */
pre.src-clojure:before { content: 'Clojure'; }
pre.src-css:before { content: 'CSS'; }
pre.src-D:before { content: 'D'; }
pre.src-ditaa:before { content: 'ditaa'; }
pre.src-dot:before { content: 'Graphviz'; }
pre.src-calc:before { content: 'Emacs Calc'; }
pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
pre.src-fortran:before { content: 'Fortran'; }
pre.src-gnuplot:before { content: 'gnuplot'; }
pre.src-haskell:before { content: 'Haskell'; }
pre.src-hledger:before { content: 'hledger'; }
pre.src-java:before { content: 'Java'; }
pre.src-js:before { content: 'Javascript'; }
pre.src-latex:before { content: 'LaTeX'; }
pre.src-ledger:before { content: 'Ledger'; }
pre.src-lisp:before { content: 'Lisp'; }
pre.src-lilypond:before { content: 'Lilypond'; }
pre.src-lua:before { content: 'Lua'; }
pre.src-matlab:before { content: 'MATLAB'; }
pre.src-mscgen:before { content: 'Mscgen'; }
pre.src-ocaml:before { content: 'Objective Caml'; }
pre.src-octave:before { content: 'Octave'; }
pre.src-org:before { content: 'Org mode'; }
pre.src-oz:before { content: 'OZ'; }
pre.src-plantuml:before { content: 'Plantuml'; }
pre.src-processing:before { content: 'Processing.js'; }
pre.src-python:before { content: 'Python'; }
pre.src-R:before { content: 'R'; }
pre.src-ruby:before { content: 'Ruby'; }
pre.src-sass:before { content: 'Sass'; }
pre.src-scheme:before { content: 'Scheme'; }
pre.src-screen:before { content: 'Gnu Screen'; }
pre.src-sed:before { content: 'Sed'; }
pre.src-sh:before { content: 'shell'; }
pre.src-sql:before { content: 'SQL'; }
pre.src-sqlite:before { content: 'SQLite'; }
/* additional languages in org.el's org-babel-load-languages alist */
pre.src-forth:before { content: 'Forth'; }
pre.src-io:before { content: 'IO'; }
pre.src-J:before { content: 'J'; }
pre.src-makefile:before { content: 'Makefile'; }
pre.src-maxima:before { content: 'Maxima'; }
pre.src-perl:before { content: 'Perl'; }
pre.src-picolisp:before { content: 'Pico Lisp'; }
pre.src-scala:before { content: 'Scala'; }
pre.src-shell:before { content: 'Shell Script'; }
pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
/* additional language identifiers per "defun org-babel-execute"
in ob-*.el */
pre.src-cpp:before { content: 'C++'; }
pre.src-abc:before { content: 'ABC'; }
pre.src-coq:before { content: 'Coq'; }
pre.src-groovy:before { content: 'Groovy'; }
/* additional language identifiers from org-babel-shell-names in
ob-shell.el: ob-shell is the only babel language using a lambda to put
the execution function name together. */
pre.src-bash:before { content: 'bash'; }
pre.src-csh:before { content: 'csh'; }
pre.src-ash:before { content: 'ash'; }
pre.src-dash:before { content: 'dash'; }
pre.src-ksh:before { content: 'ksh'; }
pre.src-mksh:before { content: 'mksh'; }
pre.src-posh:before { content: 'posh'; }
/* Additional Emacs modes also supported by the LaTeX listings package */
pre.src-ada:before { content: 'Ada'; }
pre.src-asm:before { content: 'Assembler'; }
pre.src-caml:before { content: 'Caml'; }
pre.src-delphi:before { content: 'Delphi'; }
pre.src-html:before { content: 'HTML'; }
pre.src-idl:before { content: 'IDL'; }
pre.src-mercury:before { content: 'Mercury'; }
pre.src-metapost:before { content: 'MetaPost'; }
pre.src-modula-2:before { content: 'Modula-2'; }
pre.src-pascal:before { content: 'Pascal'; }
pre.src-ps:before { content: 'PostScript'; }
pre.src-prolog:before { content: 'Prolog'; }
pre.src-simula:before { content: 'Simula'; }
pre.src-tcl:before { content: 'tcl'; }
pre.src-tex:before { content: 'TeX'; }
pre.src-plain-tex:before { content: 'Plain TeX'; }
pre.src-verilog:before { content: 'Verilog'; }
pre.src-vhdl:before { content: 'VHDL'; }
pre.src-xml:before { content: 'XML'; }
pre.src-nxml:before { content: 'XML'; }
/* add a generic configuration mode; LaTeX export needs an additional
(add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
pre.src-conf:before { content: 'Configuration File'; }
table { border-collapse:collapse; }
caption.t-above { caption-side: top; }
caption.t-bottom { caption-side: bottom; }
td, th { vertical-align:top; }
th.org-right { text-align: center; }
th.org-left { text-align: center; }
th.org-center { text-align: center; }
td.org-right { text-align: right; }
td.org-left { text-align: left; }
td.org-center { text-align: center; }
dt { font-weight: bold; }
.footpara { display: inline; }
.footdef { margin-bottom: 1em; }
.figure { padding: 1em; }
.figure p { text-align: center; }
.equation-container {
display: table;
text-align: center;
width: 100%;
}
.equation {
vertical-align: middle;
}
.equation-label {
display: table-cell;
text-align: right;
vertical-align: middle;
}
.inlinetask {
padding: 10px;
border: 2px solid gray;
margin: 10px;
background: #ffffcc;
}
#org-div-home-and-up
{ text-align: right; font-size: 70%; white-space: nowrap; }
textarea { overflow-x: auto; }
.linenr { font-size: smaller }
.code-highlighted { background-color: #ffff00; }
.org-info-js_info-navigation { border-style: none; }
#org-info-js_console-label
{ font-size: 10px; font-weight: bold; white-space: nowrap; }
.org-info-js_search-highlight
{ background-color: #ffff00; color: #000000; font-weight: bold; }
.org-svg { }
</style>
<link rel="stylesheet" type="text/css" href="https://amorphous.tf.chiba-u.jp/org-html-themes/org/lib/css/htmlize.css"/>
<link rel="stylesheet" type="text/css" href="https://amorphous.tf.chiba-u.jp/org-html-themes/org/lib/readtheorg.css"/>
<script src="https://amorphous.tf.chiba-u.jp/org-html-themes/org/lib/jquery.min.js"></script>
<script src="https://amorphous.tf.chiba-u.jp/org-html-themes/org/lib/bootstrap.min.js"></script>
<script type="text/javascript" src="https://amorphous.tf.chiba-u.jp/org-html-themes/org/lib/jquery.stickytableheaders.min.js"></script>
<script type="text/javascript" src="https://amorphous.tf.chiba-u.jp/org-html-themes/org/lib/readtheorg.js"></script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
displayAlign: "center",
displayIndent: "0em",
"HTML-CSS": { scale: 100,
linebreaks: { automatic: "false" },
webFont: "TeX"
},
SVG: {scale: 100,
linebreaks: { automatic: "false" },
font: "TeX"},
NativeMML: {scale: 100},
TeX: { equationNumbers: {autoNumber: "AMS"},
MultLineWidth: "85%",
TagSide: "right",
TagIndent: ".8em"
}
});
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS_HTML"></script>
</head>
<body>
<div id="content" class="content">
<h1 class="title">dump2analysis</h1>
<div id="table-of-contents" role="doc-toc">
<h2>&#30446;&#27425;</h2>
<div id="text-table-of-contents" role="doc-toc">
<ul>
<li><a href="#orgf2c2963">はじめに</a></li>
<li><a href="#org109dfe0">動径分布関数の計算</a></li>
<li><a href="#orga060af0">MSDの計算</a></li>
<li><a href="#orgbc1d0cb">角度分布の計算</a></li>
<li><a href="#org123cbfd">速度相関関数の計算</a>
<ul>
<li><a href="#orgd072999">回転相関関数の計算</a></li>
</ul>
</li>
<li><a href="#org782a9aa">空間分布の計算</a></li>
<li><a href="#org9354bba">有限サイズでの空間分布の計算</a></li>
<li><a href="#orgced6bb5">jumpの計算</a></li>
<li><a href="#orga9934d7">van Hove関数の計算</a>
<ul>
<li><a href="#org577bd52">cube2slice.py</a></li>
</ul>
</li>
</ul>
</div>
</div>
<div id="outline-container-orgf2c2963" class="outline-2">
<h2 id="orgf2c2963">はじめに</h2>
<div class="outline-text-2" id="text-orgf2c2963">
<p>
lammpsのdump commandで生成したtrajectryファイルを解析できます。ただし
以下のdumpコマンドでlammpstrjを出力する必要があります。
</p>
<pre class="example" id="orgfdf2260">
dump 1 all custom 1 hoge.lammpstrj id type element x y z vx vy vz
dump_modify 1 element Ar sort id
</pre>
</div>
</div>
<div id="outline-container-org109dfe0" class="outline-2">
<h2 id="org109dfe0">動径分布関数の計算</h2>
<div class="outline-text-2" id="text-org109dfe0">
<p>
配位数や原子間距離等の局所構造を表す動径分布関数の計算を計算します。動径分布関数\(g(r)\) は平均数密度\(\rho_0\) からのずれとして定義されます。
\[
g(r) = \frac{\left< n(r+\Delta r) \right>}{4\pi r^2 \Delta r}\cdot \frac{1}{\rho_0}
\]
</p>
<p>
「コンピュータシミュレーションによる物質化学」 p.50参照
</p>
<p>
プログラムの実行は、計算modeをgr(-m gr)として行います。計算対象の原子
ペアは、元素記号や原子タイプ、複数のidを指定して行うことができます。id
はlammpstrjの数字です。VMDで原子をピックアップすると0から始まるidが表
示されるので間違えないようしてください。また&#x2013;rcutで指定した距離内の平均結合距離を計算します。
</p>
<p>
ID=0,1,2,3とID=8,9,10,11の(r)を計算する場合(IDは0からスタートすることに注意))
</p>
<pre class="example" id="org00d2ced">
dump2analysis -m gr -a 0,1,2,3 -b 8,9,10,11 -i hoge.lammpstrj -o hoge.gr
</pre>
<p>
PとLiのG(r)を計算する場合
</p>
<pre class="example" id="org278bda1">
dump2analysis -m gr -x P -y Li -i hoge.lammpstrj -o hoge.gr
</pre>
<p>
「コンピュータシミュレーションによる物質化学」 p.47参照
</p>
</div>
</div>
<div id="outline-container-orga060af0" class="outline-2">
<h2 id="orga060af0">MSDの計算</h2>
<div class="outline-text-2" id="text-orga060af0">
<p>
原子の平均二乗変位\(MSD(t)\) の計算をします。
\[
MSD(t) = \left< \left[\vec{r_i(0)} - \vec{r_i(t)}\right]^2 \right>
\]
\(MSD(t)\) は自己拡散係数と以下の関係があります。
\[
D = \frac{1}{6t} MSD(t)
\]
よって\(MSD(t)\) が直線になったところの傾きから\(D\) を求めることができます。
</p>
<p>
「コンピュータシミュレーションによる物質化学」 p.50参照
</p>
<p>
計算対象する原子は、元素名、原子タイプ、IDで選択します。&#x2013;dtで1ステッ
プの時間(fs)を指定する必要があります。またMSDのスタートステップをシフ
トしながら計算させる場合は、&#x2013;tauと&#x2013;tau_shiftを指定します。&#x2013;tau_shiftが
短いと相関が残って結果がおかしくなるので注意が必要です。
</p>
<p>
LiのMSDを1ステップ2fsで計算する場合は以下のとおりです。
</p>
<pre class="example" id="org26ceb88">
dump2analysis -m msd -x Li --dt 2 -i hoge.lammpstrj -o hoge.msd
</pre>
</div>
</div>
<div id="outline-container-orgbc1d0cb" class="outline-2">
<h2 id="orgbc1d0cb">角度分布の計算</h2>
<div class="outline-text-2" id="text-orgbc1d0cb">
<p>
S-P-S結合の角度分布は、以下のように計算します。&#x2013;rcut_abと&#x2013;rcut_bcで
結合の有無を判断する距離を指定する必要があります。結合原子を逐次、検索
するので遅い。結合の組み換えがない場合は、自作した方が良いでしょう。
</p>
<pre class="example" id="org7de011f">
dump2analysis -m angle -x S -y P -z S --rcut 3.0 -i hoge.lammpstrj -o huga.angle
</pre>
</div>
</div>
<div id="outline-container-org123cbfd" class="outline-2">
<h2 id="org123cbfd">速度相関関数の計算</h2>
<div class="outline-text-2" id="text-org123cbfd">
<p>
次の式にしたがって指定した原子の速度関数を計算します。
\[
C(t) = \vec{v(0)}\cdot \vec{v(t')}
\]
また拡散係数と速度相関関数は以下の関係があります。
\[
D = \frac{1}{3}\int_0^\infty C(t) dt
\]
「コンピュータシミュレーションによる物質化学」 p.50参照
</p>
<p>
さらに速度相関関数のフーリエ変換よりIRスペクトルを計算できます。
\[
I(\nu) = \int_0^\infty \exp(-2\pi it ) C(t) dt
\]
</p>
<p>
&#x2013;dtで1ステップの時間(fs)を指定する必要があります。MSDの計算と同様、
&#x2013;tauと&#x2013;shiftで相関関数を計算するステップ数とシフトを指定して統
計を稼ぐことができます。十分に相関関数が減衰するよう&#x2013;tauの指定する
必要があります。
</p>
<p>
1000ステップ分の速度相関関数を100ステップシフトさせながら計算する場
合。
</p>
<pre class="example" id="org3064bbe">
dump2analysis -m vcorr -i hoge.lammpstrj -o hoge.vcorr -x Li --dt 1 --tau 1000 --shift 100
</pre>
</div>
<div id="outline-container-orgd072999" class="outline-3">
<h3 id="orgd072999">回転相関関数の計算</h3>
<div class="outline-text-3" id="text-orgd072999">
<p>
次の式にしたがって指定した水分子の回転相関関数を計算します。
\[
C(t) = \left< \frac{3\cos^2\theta -1 }{2}\right>
\]
\(\cos \theta\) は水の永久双極子モーメントの向きです。
また回転相関関数を時間積分すると^2H NMRの緩和時間と関係する回転相関時間が求まります。
\[
\tau_R = \frac{1}{3}\int_0^\infty C(t) dt
\]
日本化学会編「溶液の分子論的描像」 p.99参照
「分子シミュレーション入門」 p.101参照
</p>
<p>
&#x2013;dtで1ステップの時間(fs)を指定する必要があります。MSDの計算と同様、
&#x2013;tauと&#x2013;shiftで相関関数を計算するステップ数とシフトを指定して統計
&#x2013;を稼ぐことができます。十分に相関関数が減衰するよう&#x2013;tauの指定する
&#x2013;必要があります。
</p>
<p>
1000ステップ分の速度相関関数を100ステップシフトさせながら計算する場
合。
</p>
<pre class="example" id="org6b9af46">
dump2analysis -m vcorr -i hoge.lammpstrj -o hoge.vcorr -x Li --dt 1 --tau 1000 --shift 100
</pre>
</div>
</div>
</div>
<div id="outline-container-org782a9aa" class="outline-2">
<h2 id="org782a9aa">空間分布の計算</h2>
<div class="outline-text-2" id="text-org782a9aa">
<p>
空間をvoxcelで分割し、voxcel毎に指定した原子が存在する存在頻度、速
度、力のいずれかでcubeファイルを作成します。cubeファイルのパラメー
タは、&#x2013;cube_typeで指定します。
</p>
<pre class="example" id="org2c8740c">
--cube_type 1 (指定原子の頻度)
--cube_type 2 (指定原子の速度ノルム)
--cube_type 3 (指定原子の力ノルム)
</pre>
<p>
空間の分割数はa,b,c軸方向の分割数を&#x2013;na, &#x2013;nb, &#x2013;ncで指定します。微
小体積の1辺の長さは、a/na(a軸方向)になるので、以下の式を満たせば
voxcelは、1辺の長さが同じ平行6面体になります。
\[ \frac{a}{na} =
\frac{b}{nb} = \frac{c}{nc}
\]
</p>
<p>
なおcubeファイルの原子位置は全ステップの平均座標になります。VMDで
isosurfaceの表示は、Drawing methodでisosurfaceを選択した後、
isovalueとRangeを調整します。色を変えたい場合は、Coloring methodで
Volumeを選択しTrajectory-&gt;Color Scale Data Rangeを調整します。
</p>
<pre class="example" id="org1b9a78e">
dump2analysis -m cube -x Li --cube_type 1 -i hoge.lammpstrj -o hoge.cube
</pre>
<p>
※VMDのbugかと思いますがisosurfaceの原点が少しずれます。na, nb, nc
が大きいとほとんど問題になりませんが、気になる場合は手動で3行目の
offsetの値(1,2,3列のデータ)を調整してください。
</p>
</div>
</div>
<div id="outline-container-org9354bba" class="outline-2">
<h2 id="org9354bba">有限サイズでの空間分布の計算</h2>
<div class="outline-text-2" id="text-org9354bba">
<p>
空間をvoxcelで分割し、指定した有限サイズの原子が占めるvoxelの密度分
布を求めます。半径は&#x2013;radiusで与えます。radiusのデフォルト値は0.68
&Aring; (Li+のイオン半径)です。各原子と全voxelの中心距離を求めて、指定
した半径より小さい場合、原子が占めるvoxelとしてカウントします。(計
算にかなり時間がかかります)。
</p>
<p>
空間の分割数はa,b,c軸方向の分割数を&#x2013;na, &#x2013;nb, &#x2013;ncで指定します。微
小体積の1辺の長さは、a/na(a軸方向)になるので、以下の式を満たせば
voxcelは、1辺の長さが同じ平行6面体になります。
\[ \frac{a}{na} =
\frac{b}{nb} = \frac{c}{nc}
\]
</p>
<p>
なおcubeファイルの原子位置は全ステップの平均座標になります。VMDで
isosurfaceの表示は、Drawing methodでisosurfaceを選択した後、
isovalueとRangeを調整します。色を変えたい場合は、Coloring methodで
Volumeを選択しTrajectory-&gt;Color Scale Data Rangeを調整します。
</p>
<pre class="example" id="org28ae93f">
dump2analysis -m cube_radius --radius 0.68 -x Li -i hoge.lammpstrj -o hoge.cube
</pre>
<p>
※VMDのbugかと思いますがisosurfaceの原点が少しずれます。na, nb, nc
が大きいとほとんど問題になりませんが、気になる場合は手動で3行目の
offsetの値(1,2,3列のデータ)を調整してください。
</p>
</div>
</div>
<div id="outline-container-orgced6bb5" class="outline-2">
<h2 id="orgced6bb5">jumpの計算</h2>
<div class="outline-text-2" id="text-orgced6bb5">
<p>
空間をvoxcelで分割し、voxcel毎に指定した原子が指定したステップの間
に移動する距離でcubeファイルを作成します。移動する距離は&#x2013;tauで指
定します。他は&#x2013;nx, &#x2013;ny, &#x2013;nzはcubeファイルの計算と同じです。
</p>
<pre class="example" id="orgd123e33">
--tau 1 (jumpの時間ステップ)
</pre>
<pre class="example" id="org01c0523">
dump2analysis -m cube_jump -x Li --tau 1 -i hoge.lammpstrj -o hoge.cube
</pre>
</div>
</div>
<div id="outline-container-orga9934d7" class="outline-2">
<h2 id="orga9934d7">van Hove関数の計算</h2>
<div class="outline-text-2" id="text-orga9934d7">
<p>
\(N\) 粒子の jump時間\(t\) と移動距離の分布であるvan Hove関数を計算します。\(t\) は&#x2013;tauで指定します。&#x2013;shiftで統計を稼ぎくことができます。
\[
G(r,t) = \frac{1}{N}\sum_{i=1}^{N}
\left<
\delta\left(r - |r_i(t) - r_i(0)| \right)
\right>
\]
</p>
<p>
5fsでのvan Hove関数 \(G(r, 500fs)\) を10ステップのシフトで計算する場合。
</p>
<pre class="example" id="org79d9a2d">
dump2analysis -m vanHove -x Li --dt 5 --tau 100 --shift 10 -i hoge.lammpstrj -o hoge.cube
</pre>
</div>
<div id="outline-container-org577bd52" class="outline-3">
<h3 id="org577bd52">cube2slice.py</h3>
<div class="outline-text-3" id="text-org577bd52">
<p>
cubeファイルを任意の面でスライスしてコンタープロットします。
</p>
<pre class="example" id="org2a167a9">
-a スライスする面と垂直の軸を指定 a, b, cのいずれか
-s スライスする面の幅の始まりと終わりを指定する。0から1の範囲
</pre>
</div>
</div>
</div>
</div>
<div id="postamble" class="status">
<p class="author">&#33879;&#32773;: 大窪 貴洋 (千葉大院工) ohkubo.takahiro@faculty.chiba-u.jp</p>
<p class="date">Created: 2023-05-26 金 20:10</p>
<p class="validation"><a href="https://validator.w3.org/check?uri=referer">Validate</a></p>
</div>
</body>
</html>