mathjax-yard 1.0.1 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +45 -11
- data/Rakefile +26 -3
- data/doc/MathJaxYard.html +3 -3
- data/doc/MathJaxYard/Command.html +214 -128
- data/doc/_index.html +15 -3
- data/doc/file.Home.html +96 -2
- data/doc/file.README.html +45 -9
- data/doc/file.README_ja.html +28 -10
- data/doc/file.Why_mathjax-yard.html +176 -0
- data/doc/file.Why_mathjax-yard.mjx.html +176 -0
- data/doc/file.atom.html +29 -122
- data/doc/file.atom.mjx.html +112 -0
- data/doc/file.potential.html +97 -0
- data/doc/file.potential.mjx.html +96 -0
- data/doc/file_list.html +14 -2
- data/doc/index.html +45 -9
- data/doc/method_list.html +12 -6
- data/doc/top-level-namespace.html +1 -1
- data/docs/README_ja.hiki +91 -0
- data/docs/Why_mathjax-yard.hiki +49 -0
- data/docs/atom.hiki +30 -0
- data/docs/potential.hiki +10 -0
- data/lib/mathjax-yard.rb +41 -51
- data/lib/mathjax-yard/init.rb +34 -0
- data/lib/mathjax-yard/version.rb +1 -1
- data/mathjax.yml +13 -17
- metadata +12 -3
- data/doc/file.potential2.html +0 -196
@@ -0,0 +1,49 @@
|
|
1
|
+
! 導入の経緯
|
2
|
+
!!概要
|
3
|
+
mathjaxとmark downの周辺状況から,なぜmathjax-yardが必要になったかをまとめておきます.
|
4
|
+
|
5
|
+
!!状況
|
6
|
+
数値計算や物理シミュレーションにおいては,解説に数式が不可欠です.
|
7
|
+
記法としては$LaTeX$形式がありますが,これをhtmlで表示するには工夫が必要です.
|
8
|
+
gemなどを作るとき,yardでdocumentationを自動化することが可能です.
|
9
|
+
しかし,そこに数式を組み込んでも,うまく表示されません.
|
10
|
+
|
11
|
+
!!!MathML or mathjax
|
12
|
+
||MathML||mathjax
|
13
|
+
||firefoxのみ||なんでも
|
14
|
+
|
15
|
+
!!mark down with mathjax extension
|
16
|
+
* Githubのwikiはmark down 記法を取っているが,math拡張が切られた.
|
17
|
+
* Qiitaなどは独自拡張しているが,ない.
|
18
|
+
* yard
|
19
|
+
**mathjaxの拡張ができる
|
20
|
+
**optionsに,組み込まれてはいない.
|
21
|
+
* atom
|
22
|
+
**mathjax-wrapper とmarkdown_preview_plusでlive変換・表示できる.
|
23
|
+
**htmlへの変換はあるが,あまりきれいでない.
|
24
|
+
* pandoc
|
25
|
+
** mathjaxを組み込んでhtmlに変換できる
|
26
|
+
** cssなどに汎用性がなく,体裁をいじるのは難しい.
|
27
|
+
|
28
|
+
!!つまり
|
29
|
+
個別にmathjaxの入ったmd文書をhtmlに変換することができたとしても,
|
30
|
+
yardで自動生成される体裁の整った文書としては得ることが難しいというのが現状です.
|
31
|
+
|
32
|
+
!!解決法
|
33
|
+
そこで,yardのpre, postコマンドとして動作するmathjax-yardを開発しました.
|
34
|
+
* yardで変換される,*/*.md中の数式をMATHJAXタグに付け替え.
|
35
|
+
* yardでmd->html変換
|
36
|
+
* できたdoc/file.*.htmlのMATHJAXタグを数式に戻す
|
37
|
+
という操作をしています.
|
38
|
+
|
39
|
+
!!やり残し
|
40
|
+
* default動作以外のyard変換への対応
|
41
|
+
** 特に*.rbへの対応
|
42
|
+
* hikiへの対応
|
43
|
+
* yardへのpull request
|
44
|
+
* $を記述しようとしてもだめ.
|
45
|
+
** \$で逃げている(16/6/23対応断念).
|
46
|
+
* 最小一致を使った記述の単純化(16/6/23対応).
|
47
|
+
* Rakefileでのコマンド一発での変換
|
48
|
+
** 一つ所に書くと,systemコマンドなどがmultitaskで走ってしまう.
|
49
|
+
** taskを分割してそれぞれを終了させた(16/6/23対応).
|
data/docs/atom.hiki
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
# 概要
|
2
|
+
# EAM
|
3
|
+
EAM\(Embedded atom method\)は1980年代に盛んに使われるようになった経験的原子間ポテンシャルである.
|
4
|
+
|
5
|
+
## エネルギー表記
|
6
|
+
EAMは原子$i$のエネルギーを
|
7
|
+
$$
|
8
|
+
E_i = \sum _ j\phi \left( r_j \right) + f(\rho)
|
9
|
+
$$
|
10
|
+
と表記する.右辺第1項は単なる2体間の相互作用を表わす.
|
11
|
+
右辺第2項が多体項と呼ばれるEAMに特徴的な項である.
|
12
|
+
$r_j$はこの場合原子$j$との距離を意味しており,
|
13
|
+
$E_i$は原子$i$の周りの原子との和によって求まる.
|
14
|
+
多体項は,一般的に
|
15
|
+
$$
|
16
|
+
f(\rho) =\sqrt{\rho}=\sqrt {\sum_j h^2 \left( r_j \right) }
|
17
|
+
$$
|
18
|
+
によって求められる.$\rho$は強結合(tight binding)の2次モーメント近似から,
|
19
|
+
電子密度を表わすとされている.
|
20
|
+
これによって原子空孔を初め多くの金属物性を
|
21
|
+
うまく表現することが可能となった.詳しくは西谷・赤本参照.
|
22
|
+
|
23
|
+
## 具体例
|
24
|
+
EAM potentialにおいて単原子空孔の生成エネルギEvは
|
25
|
+
|
26
|
+
$$
|
27
|
+
E_v = -\frac{E_c}{2}\frac{2-poq}{1-poq}
|
28
|
+
$$
|
29
|
+
|
30
|
+
の関係がある.したがって,
|
data/docs/potential.hiki
ADDED
data/lib/mathjax-yard.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require "mathjax-yard/version"
|
2
2
|
require "mathjax-yard/script"
|
3
|
+
require "mathjax-yard/init"
|
3
4
|
require 'optparse'
|
4
5
|
require 'yaml'
|
5
6
|
require 'fileutils'
|
@@ -15,7 +16,6 @@ module MathJaxYard
|
|
15
16
|
@argv = argv
|
16
17
|
@eq_data=Hash.new
|
17
18
|
@eq_number =0
|
18
|
-
@revert = false
|
19
19
|
end
|
20
20
|
|
21
21
|
def execute
|
@@ -26,54 +26,37 @@ module MathJaxYard
|
|
26
26
|
exit
|
27
27
|
}
|
28
28
|
opt.on('-r', '--revert','revert mjx file to orig file.') {
|
29
|
-
directory = @argv[0]==nil ? 'lib
|
29
|
+
directory = @argv[0]==nil ? 'lib/../*' : @argv[0]
|
30
30
|
revert(directory)
|
31
31
|
exit
|
32
32
|
}
|
33
|
-
opt.on('-p', '--
|
33
|
+
opt.on('-p', '--pre','pre operation.') {
|
34
|
+
directory = @argv[0]==nil ? 'lib/../*' : @argv[0]
|
35
|
+
convert(directory)
|
36
|
+
exit
|
37
|
+
}
|
38
|
+
opt.on('--post','post operation.') {
|
34
39
|
post_operation
|
35
|
-
directory = @argv[0]==nil ? 'lib
|
40
|
+
directory = @argv[0]==nil ? 'lib/../*' : @argv[0]
|
36
41
|
revert(directory)
|
37
42
|
exit
|
38
43
|
}
|
39
|
-
opt.on('-i', '--init','
|
44
|
+
opt.on('-i', '--init','init for mathjax on yard layout.') {
|
40
45
|
init_yard()
|
41
46
|
exit
|
42
47
|
}
|
43
48
|
end
|
44
|
-
command_parser.banner =
|
49
|
+
command_parser.banner = <<EOF
|
50
|
+
Usage: mathjax-yard [options] [DIRECTORY]
|
51
|
+
with no extention: mathjax-yard -p lib/../*/*.md
|
52
|
+
|
53
|
+
EOF
|
45
54
|
command_parser.parse!(@argv)
|
46
|
-
directory = @argv[0]==nil ? 'lib
|
55
|
+
directory = @argv[0]==nil ? 'lib/../*' : @argv[0]
|
47
56
|
convert(directory)
|
48
57
|
exit
|
49
58
|
end
|
50
59
|
|
51
|
-
def init_yard()
|
52
|
-
target_dir=get_yard_layout_dir()
|
53
|
-
FileUtils.cd(target_dir){
|
54
|
-
tmp_dir='mathjax' # 'math2'
|
55
|
-
FileUtils.cp_r('default',tmp_dir)
|
56
|
-
modify_layout("#{tmp_dir}/layout/html/layout.erb")
|
57
|
-
modify_layout("#{tmp_dir}/onefile/html/layout.erb")
|
58
|
-
}
|
59
|
-
end
|
60
|
-
|
61
|
-
def get_yard_layout_dir()
|
62
|
-
status, stdout, stderr = systemu('gem env | grep INSTALLATION ')
|
63
|
-
p inst_dir= stdout.split("\n")[0].split(': ')[1]
|
64
|
-
status, stdout, stderr = systemu('yard -v')
|
65
|
-
p yard_num= stdout.split(' ')[0]+'-'+stdout.split(' ')[1]
|
66
|
-
p target_dir = File.join(inst_dir,'gems',yard_num,"templates")
|
67
|
-
return target_dir
|
68
|
-
end
|
69
|
-
|
70
|
-
def modify_layout(file_name)
|
71
|
-
p file_name
|
72
|
-
src=Ffile.read(file_name)
|
73
|
-
src.gsub!(ORIGINAL,MATH_SCRIPT+ORIGINAL)
|
74
|
-
File.write(file_name,src)
|
75
|
-
end
|
76
|
-
|
77
60
|
def post_operation
|
78
61
|
src = File.read("./mathjax.yml")
|
79
62
|
p data = YAML.load(src)
|
@@ -83,41 +66,46 @@ module MathJaxYard
|
|
83
66
|
target = "./doc/file.#{basename}.html"
|
84
67
|
src = File.read(target)
|
85
68
|
tags.each_pair{|tag,eq|
|
86
|
-
src.gsub!(tag,eq)
|
69
|
+
src.gsub!(tag){eq} # fail (tag,eq) at '/////n'
|
87
70
|
}
|
88
71
|
File.write(target,src)
|
89
72
|
}
|
90
73
|
end
|
91
74
|
|
75
|
+
MJX_FILE_EXT ='*.mjx.md'
|
92
76
|
def revert(directory)
|
93
|
-
files = Dir.glob(directory)
|
94
|
-
files.each{|
|
95
|
-
|
96
|
-
file.scan(/(.+).back$/)
|
97
|
-
p t_file = $1
|
98
|
-
FileUtils.mv(b_file,t_file)
|
77
|
+
files = Dir.glob(File.join(directory,MJX_FILE_EXT))
|
78
|
+
files.each{|m_file|
|
79
|
+
FileUtils.rm(m_file)
|
99
80
|
}
|
100
81
|
end
|
101
82
|
|
102
83
|
def convert(directory)
|
103
|
-
files = Dir.glob(directory)
|
104
|
-
files.each{|
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
84
|
+
files = Dir.glob(File.join(directory,'*.md'))
|
85
|
+
files.each{|base_file|
|
86
|
+
m_file = mk_mjx_file_name(base_file)
|
87
|
+
@eq_data[m_file] = Hash.new
|
88
|
+
lines = File.readlines(base_file)
|
89
|
+
output = mk_tags(lines,m_file)
|
90
|
+
if @eq_data[m_file].size ==0
|
91
|
+
@eq_data.delete(m_file)
|
110
92
|
else
|
111
|
-
write_output_on_target(
|
93
|
+
write_output_on_target(base_file,output)
|
112
94
|
end
|
113
95
|
}
|
114
96
|
File.write("mathjax.yml",YAML.dump(@eq_data))
|
115
97
|
end
|
116
98
|
|
99
|
+
def mk_mjx_file_name(file)
|
100
|
+
dir=File.dirname(file)
|
101
|
+
File.basename(file).scan(/(.*).md/)
|
102
|
+
basename=$1
|
103
|
+
return File.join(dir,"#{basename}.mjx.md")
|
104
|
+
end
|
105
|
+
|
117
106
|
def write_output_on_target(file,output)
|
118
|
-
|
119
|
-
|
120
|
-
File.write(file,output)
|
107
|
+
m_file = mk_mjx_file_name(file)
|
108
|
+
File.write(m_file,output)
|
121
109
|
end
|
122
110
|
|
123
111
|
def mk_tags(lines,file_name)
|
@@ -136,8 +124,10 @@ module MathJaxYard
|
|
136
124
|
else #outside eq block
|
137
125
|
case line
|
138
126
|
when /\\\$(.*?)\\\$/
|
127
|
+
p line
|
139
128
|
output << line # tryed to change $$ but failed.
|
140
129
|
when /\$(.+?)\$/
|
130
|
+
p line
|
141
131
|
line.gsub!(/\$(.+?)\$/){|equation|
|
142
132
|
store_eq_data(equation,file_name)
|
143
133
|
}
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module MathJaxYard
|
2
|
+
class Command
|
3
|
+
def init_yard()
|
4
|
+
target_dir=get_yard_layout_dir()
|
5
|
+
FileUtils.cd(target_dir){
|
6
|
+
tmp_dir='mathjax' # 'math2'
|
7
|
+
full_path="#{target_dir}/#{tmp_dir}/layout/html/layout.erb"
|
8
|
+
if File.exist?("#{tmp_dir}/layout/html/layout.erb")
|
9
|
+
print("file #{full_path} exists.\nDelete them first.\n")
|
10
|
+
exit
|
11
|
+
end
|
12
|
+
FileUtils.cp_r('default',tmp_dir)
|
13
|
+
modify_layout("#{tmp_dir}/layout/html/layout.erb")
|
14
|
+
modify_layout("#{tmp_dir}/onefile/html/layout.erb")
|
15
|
+
}
|
16
|
+
end
|
17
|
+
|
18
|
+
def get_yard_layout_dir()
|
19
|
+
status, stdout, stderr = systemu('gem env | grep INSTALLATION ')
|
20
|
+
p inst_dir= stdout.split("\n")[0].split(': ')[1]
|
21
|
+
status, stdout, stderr = systemu('yard -v')
|
22
|
+
p yard_num= stdout.split(' ')[0]+'-'+stdout.split(' ')[1]
|
23
|
+
p target_dir = File.join(inst_dir,'gems',yard_num,"templates")
|
24
|
+
return target_dir
|
25
|
+
end
|
26
|
+
|
27
|
+
def modify_layout(file_name)
|
28
|
+
p file_name
|
29
|
+
src=File.read(file_name)
|
30
|
+
src.gsub!(ORIGINAL,MATH_SCRIPT+ORIGINAL)
|
31
|
+
File.write(file_name,src)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
data/lib/mathjax-yard/version.rb
CHANGED
data/mathjax.yml
CHANGED
@@ -1,30 +1,26 @@
|
|
1
1
|
---
|
2
|
-
lib/../mathjax-yard.wiki/atom.md:
|
2
|
+
lib/../mathjax-yard.wiki/atom.mjx.md:
|
3
3
|
"$MATHJAX1$": "$i$"
|
4
4
|
"$MATHJAX2$": |-
|
5
|
-
$$E_i = \
|
5
|
+
$$E_i = \sum _ j\phi \left( r_j \right) + f(\rho)
|
6
6
|
$$
|
7
7
|
"$MATHJAX3$": "$r_j$"
|
8
8
|
"$MATHJAX4$": "$j$"
|
9
9
|
"$MATHJAX5$": "$E_i$"
|
10
10
|
"$MATHJAX6$": "$i$"
|
11
11
|
"$MATHJAX7$": |-
|
12
|
-
$$f(\rho) =\sqrt{\rho}=\sqrt{\sum_j h^2 \left( r_j \right) }
|
12
|
+
$$f(\rho) =\sqrt{\rho}=\sqrt {\sum_j h^2 \left( r_j \right) }
|
13
13
|
$$
|
14
14
|
"$MATHJAX8$": "$\\rho$"
|
15
|
-
"$MATHJAX9$":
|
16
|
-
|
17
|
-
"$MATHJAX11$": "$T=0.1$"
|
18
|
-
"$MATHJAX12$": "$E_v$"
|
19
|
-
"$MATHJAX13$": |-
|
20
|
-
$$E_v = -\frac{E_c}{2} \frac{2-poq}{1-poq}
|
15
|
+
"$MATHJAX9$": |-
|
16
|
+
$$E_v = -\frac{E_c}{2}\frac{2-poq}{1-poq}
|
21
17
|
$$
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
\frac{ d_0 \left( r_1^{-n}m- r_1^{-m} n \right) }{ -n + m }
|
18
|
+
lib/../mathjax-yard.wiki/potential.mjx.md:
|
19
|
+
"$MATHJAX10$": |-
|
20
|
+
$$\begin{align*}
|
21
|
+
dedr=-\frac{ n m d_0 \left(rh^{n}- rh^{m}\right) }{ \left(n-m \right) rr } \\
|
22
|
+
E=\frac{ d_0 \left( r_0/rr^{n}m- r_0/rr^{m} n \right) }{ -n + m }
|
23
|
+
\end{align*}
|
30
24
|
$$
|
25
|
+
lib/../mathjax-yard.wiki/Why_mathjax-yard.mjx.md:
|
26
|
+
"$MATHJAX11$": "$LaTeX$"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mathjax-yard
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shigeto R. Nishitani
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-06-
|
11
|
+
date: 2016-06-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -109,8 +109,12 @@ files:
|
|
109
109
|
- doc/file.Home.html
|
110
110
|
- doc/file.README.html
|
111
111
|
- doc/file.README_ja.html
|
112
|
+
- doc/file.Why_mathjax-yard.html
|
113
|
+
- doc/file.Why_mathjax-yard.mjx.html
|
112
114
|
- doc/file.atom.html
|
113
|
-
- doc/file.
|
115
|
+
- doc/file.atom.mjx.html
|
116
|
+
- doc/file.potential.html
|
117
|
+
- doc/file.potential.mjx.html
|
114
118
|
- doc/file_list.html
|
115
119
|
- doc/frames.html
|
116
120
|
- doc/index.html
|
@@ -119,8 +123,13 @@ files:
|
|
119
123
|
- doc/js/jquery.js
|
120
124
|
- doc/method_list.html
|
121
125
|
- doc/top-level-namespace.html
|
126
|
+
- docs/README_ja.hiki
|
127
|
+
- docs/Why_mathjax-yard.hiki
|
128
|
+
- docs/atom.hiki
|
129
|
+
- docs/potential.hiki
|
122
130
|
- exe/mathjax-yard
|
123
131
|
- lib/mathjax-yard.rb
|
132
|
+
- lib/mathjax-yard/init.rb
|
124
133
|
- lib/mathjax-yard/script.rb
|
125
134
|
- lib/mathjax-yard/version.rb
|
126
135
|
- mathjax-yard.gemspec
|
data/doc/file.potential2.html
DELETED
@@ -1,196 +0,0 @@
|
|
1
|
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
2
|
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
-
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
4
|
-
<head>
|
5
|
-
<script type="text/x-mathjax-config">
|
6
|
-
MathJax.Hub.Config({
|
7
|
-
tex2jax:{
|
8
|
-
inlineMath: [ ['$','$'], ["\(","\)"] ],
|
9
|
-
displayMath: [ ['$$','$$'], ["\[","\]"] ]
|
10
|
-
}
|
11
|
-
});
|
12
|
-
</script>
|
13
|
-
<script type="text/javascript"
|
14
|
-
src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML">
|
15
|
-
</script>
|
16
|
-
<meta http-equiv="X-UA-Compatible" CONTENT="IE=EmulateIE7" />
|
17
|
-
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
18
|
-
<title>
|
19
|
-
File: potential2
|
20
|
-
|
21
|
-
— Documentation by YARD 0.8.7.6
|
22
|
-
|
23
|
-
</title>
|
24
|
-
|
25
|
-
<link rel="stylesheet" href="css/style.css" type="text/css" charset="utf-8" />
|
26
|
-
|
27
|
-
<link rel="stylesheet" href="css/common.css" type="text/css" charset="utf-8" />
|
28
|
-
|
29
|
-
<script type="text/javascript" charset="utf-8">
|
30
|
-
hasFrames = window.top.frames.main ? true : false;
|
31
|
-
relpath = '';
|
32
|
-
framesUrl = "frames.html#!file.potential2.html";
|
33
|
-
</script>
|
34
|
-
|
35
|
-
|
36
|
-
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
|
37
|
-
|
38
|
-
<script type="text/javascript" charset="utf-8" src="js/app.js"></script>
|
39
|
-
|
40
|
-
|
41
|
-
</head>
|
42
|
-
<body>
|
43
|
-
<div id="header">
|
44
|
-
<div id="menu">
|
45
|
-
|
46
|
-
<a href="_index.html">Index</a> »
|
47
|
-
<span class="title">File: potential2</span>
|
48
|
-
|
49
|
-
|
50
|
-
<div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
|
51
|
-
</div>
|
52
|
-
|
53
|
-
<div id="search">
|
54
|
-
|
55
|
-
<a class="full_list_link" id="class_list_link"
|
56
|
-
href="class_list.html">
|
57
|
-
Class List
|
58
|
-
</a>
|
59
|
-
|
60
|
-
<a class="full_list_link" id="method_list_link"
|
61
|
-
href="method_list.html">
|
62
|
-
Method List
|
63
|
-
</a>
|
64
|
-
|
65
|
-
<a class="full_list_link" id="file_list_link"
|
66
|
-
href="file_list.html">
|
67
|
-
File List
|
68
|
-
</a>
|
69
|
-
|
70
|
-
</div>
|
71
|
-
<div class="clear"></div>
|
72
|
-
</div>
|
73
|
-
|
74
|
-
<iframe id="search_frame"></iframe>
|
75
|
-
|
76
|
-
<div id="content"><div id='filecontents'><h1>lj0</h1>
|
77
|
-
|
78
|
-
<p>標準的なLennard-Jonesポテンシャルの表式</p>
|
79
|
-
|
80
|
-
<p>$$ F(s)=\int_{0}^{\infty}f(t)e^{-st}dt $$</p>
|
81
|
-
|
82
|
-
<pre class="code ruby"><code class="ruby">bob% cat POTCAR
|
83
|
-
---
|
84
|
-
:type: lj0
|
85
|
-
:element: Al
|
86
|
-
:a0: 1.587401051*0.7071067812/2.857701314;
|
87
|
-
:e0: -1*4.0/12.0;
|
88
|
-
:a: 18.19007708
|
89
|
-
:b: 89.22765864
|
90
|
-
:p: 3.0
|
91
|
-
:q: 5.0
|
92
|
-
:cut_off: 4.0*0.8
|
93
|
-
:energy: -a*(1/r**p)+b*(1/r**q)
|
94
|
-
:dedr: (p*a/r**(p+1.0))-(q*b/r**(q+1.0))
|
95
|
-
</code></pre>
|
96
|
-
|
97
|
-
<h1>lj_jindo</h1>
|
98
|
-
|
99
|
-
<p>神藤先生あるいはVu Van Huangが使っていたLennard-Jonesポテンシャルの表式.</p>
|
100
|
-
|
101
|
-
<pre class="code ruby"><code class="ruby">bob% cat POTCAR_jindo_Cu
|
102
|
-
---
|
103
|
-
:type: lj_jindo
|
104
|
-
:element: Cu
|
105
|
-
:d0: 4125.70
|
106
|
-
:n: 9.00
|
107
|
-
:m: 5.50
|
108
|
-
:r0: 2.5487e-8
|
109
|
-
:alat: 3.6153e-8
|
110
|
-
:atom_mass: 63.5460/6.023e23
|
111
|
-
:energy: d0*((r/r0)^(-n)*m-(r/r0)^(-m)*n)/(m-n)
|
112
|
-
:dedr: d0*m*n*((r/r0)^(-m)-(r/r0)^(-n))/(r*(m-n))
|
113
|
-
</code></pre>
|
114
|
-
|
115
|
-
<pre class="code ruby"><code class="ruby">Cu
|
116
|
-
d0 := 4125.70;
|
117
|
-
vn := 9.00;
|
118
|
-
vm := 5.50;
|
119
|
-
r0 := 2.5487e-8;
|
120
|
-
rh:=r0/rr;
|
121
|
-
dedr:=unapply(-d0*vm*vn / ((vn-vm)*rr) * (rh**vn - rh**vm),rr);
|
122
|
-
eq1:=int(dedr(r),r);
|
123
|
-
func:=unapply(eq1,rr);
|
124
|
-
r1:=2.5487*10^(-8)*0.8;
|
125
|
-
r2:=2.5487*10^(-8)*1.5;
|
126
|
-
plot(8.617385e-05*func(r),r=r1..r2);
|
127
|
-
</code></pre>
|
128
|
-
|
129
|
-
<pre class="code ruby"><code class="ruby"> dedr:=unapply(-d0*vm*vn / ((vn-vm)*rr) * (rh**vn - rh**vm),rr);
|
130
|
-
eq1:=int(dedr(r),r);
|
131
|
-
-{ 1.821482757\times 10^{-38}} r{-5.5}+
|
132
|
-
{ 2.942122564\times 10^{-65}} r^{-9}
|
133
|
-
</code></pre>
|
134
|
-
|
135
|
-
<pre class="code ruby"><code class="ruby">rh:=r0/rr;
|
136
|
-
dedr:=normal(expand(d0*vm*vn / ((vn-vm)*rr) * (rh**vn - rh**vm)));
|
137
|
-
eq1:=simplify(int(dedr,rr));
|
138
|
-
</code></pre>
|
139
|
-
|
140
|
-
<p>$$
|
141
|
-
r_1=r/r_0
|
142
|
-
|
143
|
-
\frac{ d_0 \left( r_1^{-n}m- r_1^{-m} n \right) }{ -n + m }
|
144
|
-
$$</p>
|
145
|
-
|
146
|
-
<h1>ポテンシャル選択機構</h1>
|
147
|
-
|
148
|
-
<p>module LJに記述</p>
|
149
|
-
|
150
|
-
<pre class="code ruby"><code class="ruby"> <span class='kw'>def</span> <span class='id identifier rubyid_select'>select</span><span class='lparen'>(</span><span class='id identifier rubyid_file'>file</span><span class='op'>=</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>POTCAR</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
151
|
-
<span class='comment'># p src = YAML.load_file(ARGV[0])
|
152
|
-
</span> <span class='id identifier rubyid_p'>p</span> <span class='id identifier rubyid_src'>src</span> <span class='op'>=</span> <span class='const'>YAML</span><span class='period'>.</span><span class='id identifier rubyid_load_file'>load_file</span><span class='lparen'>(</span><span class='id identifier rubyid_file'>file</span><span class='rparen'>)</span>
|
153
|
-
<span class='cvar'>@@potential</span><span class='op'>=</span><span class='kw'>case</span> <span class='id identifier rubyid_src'>src</span><span class='lbracket'>[</span><span class='symbol'>:type</span><span class='rbracket'>]</span>
|
154
|
-
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>lj0</span><span class='tstring_end'>'</span></span>
|
155
|
-
<span class='const'>LJ0</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_src'>src</span><span class='rparen'>)</span>
|
156
|
-
<span class='kw'>when</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>lj_jindo</span><span class='tstring_end'>'</span></span>
|
157
|
-
<span class='const'>LJ_Jindo</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_src'>src</span><span class='rparen'>)</span>
|
158
|
-
<span class='kw'>end</span>
|
159
|
-
<span class='kw'>end</span>
|
160
|
-
</code></pre>
|
161
|
-
|
162
|
-
<ul>
|
163
|
-
<li>委譲による選択
|
164
|
-
|
165
|
-
<ul>
|
166
|
-
<li>pseudovasp.rbにLJ.select('POTCAR')がある.</li>
|
167
|
-
<li>LJ0あるいはLJ_Jindoをclassとして用意.</li>
|
168
|
-
</ul></li>
|
169
|
-
<li>POTCARへのYAMLでの記述</li>
|
170
|
-
<li>クラス変数によるクラス共通の変数定義</li>
|
171
|
-
</ul>
|
172
|
-
|
173
|
-
<p>EAMとの統一を考えたが,energy, forceのmethodの選択を
|
174
|
-
どっかでしないとダメで,その綺麗なやり方が思いつかず,
|
175
|
-
そのままにした.</p>
|
176
|
-
|
177
|
-
<pre class="code ruby"><code class="ruby"><span class='kw'>class</span> <span class='const'>EAMAtom</span> <span class='op'><</span> <span class='const'>Atom</span>
|
178
|
-
<span class='id identifier rubyid_include'>include</span> <span class='const'>EAM</span>
|
179
|
-
<span class='kw'>end</span>
|
180
|
-
|
181
|
-
<span class='kw'>class</span> <span class='const'>LJAtom</span> <span class='op'><</span> <span class='const'>Atom</span>
|
182
|
-
<span class='id identifier rubyid_include'>include</span> <span class='const'>LJ</span>
|
183
|
-
<span class='kw'>end</span>
|
184
|
-
</code></pre>
|
185
|
-
|
186
|
-
<p>となっており,ほぼ元どおり.</p>
|
187
|
-
</div></div>
|
188
|
-
|
189
|
-
<div id="footer">
|
190
|
-
Generated on Thu Jun 23 14:03:52 2016 by
|
191
|
-
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
192
|
-
0.8.7.6 (ruby-2.2.2).
|
193
|
-
</div>
|
194
|
-
|
195
|
-
</body>
|
196
|
-
</html>
|