[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#menu(LABO/MenuBar)
* LABO/namelessの入力 [#o685c29b]
#contents
** 一行メモ [#tddab570]
- (四則演算で数値を指定する場合の注意) 平方根の場合は 2...
- ↓単位変換の桁数見直す、基本物理定数見直す -- &new{2024...
#comment
#katex
//-------------------------------------------------------...
* いくつかの単位変換 [#q24c7703]
$ E_0 = \sqrt{ I_\mathrm{[W/cm^2]} \: } \!\times\! 10...
#レーザー強度→光電場の大きさ
$ E_0 = 51.422 \!\times\! {E_0}_\mathrm{[V/\AA]} ~\ma...
#電場[V/Å]→電場[au]
$ \omega = \frac{45.546}{\lambda_\mathrm{[nm]}} ~~\ma...
#波長→角振動数
$ \lambda = 1239.84 \!\times\! {E_{h\nu}}_\mathrm{[eV...
#光子エネルギー→波長
$ t = 0.0241888432 \!\times\! t_\mathrm{[a.u.(s)]} ~~...
#時間[au]→時間[fs]、原子単位としては $\mathrm{\hbar/E_...
$ \ell = 0.52917721 \!\times\! \ell_{\mathrm{[bohr]}}...
#長さ[au]→長さ[Å]
エネルギー(略)
#原子単位としては hartree や $\mathrm{E_h}$ がよく使わ...
//-------------------------------------------------------...
* namelessの入力 [#j36e05e1]
** 入力の書式 [#b262eb14]
sampleinpディレクトリに namelessの入力サンプル(.inp)がい...
この中に載っていないキーワードもある(これについては過去...
入力は「キーワード = 値」の並びで指定する。
これは標準入力として読み込まれる(.inpはヒアドキュメント...
値はキーワードの種類によって、数値、予約文字列(引用符" "...
文字列(引用符" "でくくられていても、いなくてもよい)、
中括弧{ }でくくられた複数行からなるブロック値のいずれかを...
入力されなかったキーワードは、デフォルト値が利用される。
複数の「キーワード = 値」は、セミコロン、カンマ、空白、改...
区切って並べて指定する。キーワードの入力順には意味は無い。
同じキーワードが入力された場合は、最後に指定されている値...
また、C言語と同じく、/* */ と // によりコメントを記載す...
入力された値や利用されたデフォルト値は、ログファイル(標...
.out)に出力される。
キーワードに与えられる数値は、整数(C言語のint型)か、実...
いずれかであり、これらを組み合わせた四則演算などでも指定...
(四則演算以外に利用できる演算は過去の卒論参照)。
整数と実数の演算結果は実数になる。
予約文字列としては YES, NO, FIXED, W_FEM などがある(各キ...
ブロック値は、wp_a, wp_b, atom などのキーワードがこの種類...
{ }内の書式はそれらのキーワードの説明を参照のこと。
キーワードはその意味により7種類に分類され、.inpに記載さ...
この分類には意味は無く、入力の作り易さなどの利便性を与え...
7種類の分類は次の通りである。
- 系のサイズ
- 系を解く条件
- 1電子波動関数の初期値
- 原子核の初期座標
- 外場ポテンシャル
- シミュレーションの長さ
- 電荷から電位を求める解法
なお、femキーワードの値が FDMであるか、FDM以外であるかに...
入力されたキーワードの値(やデフォルト値)は、他のキーワ...
得られるものが設定される(ひととおりキーワード値が読み込...
系のサイズに関するキーワードの一部がこれ該当する。詳細は...
** 実行時の入力エラーの見方 [#h6621b73]
59: syntax error:
};
^
exit from yyerror()
というエラーは、ジョブスクリプト(.inp)の cat << end_of_in...
その前に文法エラーがあることを意味している。
//-------------------------------------------------------...
* namelessの主要なキーワード [#k042b955]
** 系のサイズ [#g9685793]
波動関数を解く空間の領域(計算領域)を指定することに関係...
: sysdim |
計算領域の次元を指定する。1, 2, 3のいずれかの数値を与える...
(例) sysdim = 3
: xmin, ymin, zmin, xmax, ymax, zmax |
計算領域の x, y, z座標の範囲を数値で与える。単位は bohr(a...
計算領域の次元が1次元の時は ymin=zmin=ymax=zmax の数値を...
次元が2次元の時は zmin=zmax の数値を与える。
: xng, yng, zng |
fem=FDM以外のときに使用される。
計算領域を x, y, z方向に分割する数(グリッド数)を与える。
sysdim=1の時は yng=zng=1 とし、sysdim=2の時は zng=1 とす...
x方向のグリッド間隔は dx = ( xmax - xmin ) / xng となる...
xmin~xmaxの範囲が xngで分割されるので、計算領域の境界を...
なお、プログラムでは xminからさらに小さい方向にもう1グリ...
x=xmin-dx)、実際に使われているグリッドの数は xng+2 とな...
y, z方向についても同様である。
このキーワードは、fem=FDMのときには、値が次のように上書...
fem=FDMのとき
- xmin,xmax,xb1,xb2,xng0,dx_max,dx_diff,sigmoid_xgain か...
- ymin,ymax,yb1,yb2,yng0,dy_max,dy_diff,sigmoid_ygain か...
- zmin,zmax,zb1,zb2,zng0,dz_max,dz_diff,sigmoid_zgain か...
: xb1,xb2,xng0, yb1,yb2,yng0, zb1,zb2,zng0 |
fem=FDMで使用される。x,y,z方向について、内側等間隔領域[b1...
fem=FDM以外のときは、値は次のように上書き設定される。~
fem=FDM以外のとき
xmin,xman,xng の値 -> xb1,xb2,xng0 の値として上書き設定...
ymin,yman,yng の値 -> yb1,yb2,yng0 〃
zmin,zman,zng の値 -> zb1,zb2,zng0 〃
: dx_max, dy_max, dz_max |
x,y,z方向について、外側等間隔領域のグリッド間隔を指定する。
: dx_diff, xinc, sigmoid_xgain, dy_diff, yinc, sigmoid_yg...
中間領域の作成パラメータであり、x,y,z方向についてそれぞれ...
dx_diffは内側から外側等間隔領域に向けて、グリッド間隔が1...
xincには中間領域のグリッド間隔の分布の仕方として、LINEAR...
LINEARは、グリッド間隔が dx_diff毎に増える(正確にはグリ...
SIGMOIDは、シグモイド関数によってグリッド間隔が増えるよう...
中間領域の幅とグリッド数は dx_diffを使用したLINEARの場合...
sigmoid_xgainは xinc=SIGMOIDの場合に使用され、シグモイド...
ゲインの値を与える(4.0が良さげである)。
yとz方向についても同様である。~
~
グリッド間隔の増加率を表わすのに使われている
シグモイド関数( 1/(1+exp[±ax]), 定義域[-1,+1], aはゲイン...
中間領域にちょうど合うように拡大縮小されて利用される仕様...
グリッド間隔が (xb2-xb1)/xng0から dx_max(正確には下記の...
中間領域であるが、
dx_maxに至らず計算領域の境界になっている場合でも、この途...
拡大縮小される(拡大縮小しないように仕様変更することは困...
このような途中で切れた中間領域を用いた計算条件で計算する...
~
SIGMOIDの場合は中間領域と外側等間隔領域の接続部分に、グ...
→ x方向についてのバグは取った(2023/12/17)、y,z方向もバグ...
~
(補足情報)
(1) { dx_max-(xb2-xb1)/xng0 } / dx_diff が整数になってい...
グリッド間隔の増加率(f' ここで x=f(n), x:座標, n:グリッ...
このような計算条件は避けた方がよい。y, z方向についても同...
(2) (xb3-xmin) / dx_max が整数になっていない場合(xb3はプ...
計算領域の境界でグリッド間隔が 0と dx_maxの間の値をとりう...
ゼロに近いとき極端に小さくなる)。
このような計算条件も避けた方がよい。xb4についても同様。y,...
~
~
(接続部分をスムーズにする処方箋)
各領域と計算領域の境界をスムーズにつなげる(中間領域と外...
dx_max, xb2, xb1, xng0, dx_diffをうまく設定する必要がある...
以下、x軸方向で xb1-xb2-xb4-xmaxの部分を考える。xmin側や ...
うまく設定する方法として、たとえば次のようにするとよい...
内側等間隔領域のグリッド間隔 (xb2-xb1)/xng0~
外側等間隔領域のグリッド間隔 dx_max~
計算領域の境界 xmax~
を決める。そして、~
中間領域の幅 L (入力にはなし)~
の候補を決める。ただし、外側等間隔領域と計算領域の境界を...
L&sub{候補};は Mを正の整数として、~
xb2 + L&sub{候補}; + M * dx_max = xmax~
を満たすようにする。次に、~
中間領域のグリッド数 N(入力にはなし)~
の候補を次のように決める。÷2 の部分は目安であり N&sub{候...
N&sub{候補}; = L / { (xb2-xb1)/xng0 } ÷2~
なお、右辺の L/{(xb2-xb1)/xng0} の部分は xmax, dx_max, xb...
このN&sub{候補};のとき、中間領域と外側等間隔領域をスムー...
dx_max = (xb2-xb1)/xng0 + dx_diff&sub{候補}; * N&sub{...
から~
dx_diff&sub{候補}; = { dx_max - (xb2-xb1)/xng0 } / N&...
となるので、内側等間隔領域のグリッド間隔 (xb2-xb1)/xng0 ...
場合によっては、 N&sub{候補};を増減させて変更したり、L&su...
このように決めた dx_diff&sub{候補};が入力する dx_diffにな...
以上は、xinc=LINEARで考えたが SIGMOIDのときも同じくして...
両側で密になるように変わる形であるため)。~
~
(メモ)NとLの関係式~
L = Integrate_{N,0}{ dx_diff * k + (xb2-xb1)/xng0 }dk~
={ dx_max - (xb2-xb1)/xng0 }/N * 1/2*N^2 + (xb2-xb1...
= { dx_max + (xb2-xb1)/xng0 }/N~
//-------------------------------------------------------...
** 系を解く条件 [#e5500c98]
計算領域内の波動関数をどのように解くのかを指定をするキー...
: xbc, ybc, zbc |
x, y, z方向のそれぞれの境界の取り扱いを指定する。
予約文字列として FIXED(固定端境界条件)か PERIODIC(周期...
xbcが FIXEDの場合、x≦xmin と x≦xmax で波動関数の値がゼロ...
箱の中に閉じ込められた波動関数を解く形になる。
PERIODICの場合、x=xmin~xmax の領域が x軸方向に無限に並ん...
xmin~xmax の領域で右に進む波束があった場合には、右の境界...
入って来るような扱いになる。
なお、x=xmin と x=xmax の位置で波動関数の値は同じである。
ybc, zbcについても同様である。~
他に、TW_PERIODIC(ねじれた周期境界条件)などもある。
波動関数の計算に必要なポアソン方程式の解法や、Eum法につい...
利用している。現在、ポアソン方程式は FIXEDのみで解かれて...
境界はしかるべき値が設定される
(ハートリーポテンシャルを解く場合、境界はゼロのまま)。
: fem |
波動関数の時間発展を計算する方法を指定する。
通常、予約文字列として W_FEM(watanabeによる有限要素法)...
また、T_FEM と C_FEM (廃止予定)、
CFEM1, CFEM2, CFEM3, CFEM4, CFEM5, CFEM6, CFEM7, CFEM8(C...
開発中)も指定できる。
: sfdecomp |
時間発展演算子のsuzukiによるフラクタル分解の次数を与える。
通常 2 を指定する。他に 4 が利用できる。
: sfdtype |
時間発展演算子の分解順序を与える。予約文字列 KVK または V...
: xc_dname |
擬ポテンシャルと擬原子軌道を含むディレクトリ(OpenMXのデ...
文字列で与える。
擬ポテンシャルを利用した時間発展計算のときに利用される。
: spin_polarization |
時間発展計算をする系が、非スピン分極のときに予約文字列 NO...
すべての空間軌道でα電子とβ電子が対になって軌道を占有して...
非スピン分極の系である。それ以外はスピン分極の系である。
: xc_type |
密度汎関数法における交換ポテンシャルと相関ポテンシャルを...
通常 "GGA_X_PBE GGA_C_PBE" を指定する。交換ポテンシャル名...
空白で区切って文字列として与える。相関ポテンシャルは省略...
相関ポテンシャルは無いとされる。
1電子系の場合、原理上両方のポテンシャルの和はゼロなので...
空文字列 "" を指定してもよい(両方のポテンシャルが無いと...
実行時間を削減できる)。
//-------------------------------------------------------...
** 波動関数の初期値 [#gf1ae700]
時間発展させる波動関数の初期値を準備するキーワードである。
: psiopt |
以下の wp_a, wp_b で与えた関数をハミルトニアンの固有関数...
固有関数を求める場合、Eum法を用いた共役勾配法による最小化...
なお、実の波動関数のみが最小化可能である。
予約文字列 NOを与えた場合は最小化はせず、wp_a, wp_b で与...
最小化させる場合、通常 PRPM を指定する。
他に PRP, FR, AMB の指定もできる。これらは、最小化の際の...
: wp_a, wp_b |
1電子波動関数(分子軌道)を指定する。
psiopt=NOのときはこの関数から作られたスレーター行列式がそ...
psiopt!=NOのときは、このスレーター行列式が共役勾配法の初...
収束した(求めた)波動関数が最初の時刻の波動関数になる。
wp_a, wp_bはそれぞれα電子とβ電子の空間軌道を電子の数だけ...
spin_polarization=NOのときは wp_bの値は使われない。α電子...
空間軌道が使われる。~
{ }内の一行がひとつの空間軌道を与えており、
最初の文字列につづいて、それに関連するパラメータをいくつ...
最初の文字列は関数の種類を意味しており、
GAUSS, PLANEWAVE, H1S, H2S, H2Px, H2Py, H2Pz, NVext, ZERO...
次のような指定ができる。
なお、sysdim=1 や 2 のときには、それぞれ yとz や z 成分は...
1次元でしか利用できないものもある(利用できない場合、プロ...
:: GAUSS x0 y0 z0 w px py pz |
ガウス型波束、波束の中心座標と幅(x0,y0,z0,w)と運動量(px,p...
:: PLANEWAVE nx ny nz |
平面波、x,y,z方向のノード数(nx,ny,nz)も入力する。
:: H1S x0 y0 z0 Z |
水素原子1s関数、関数の中心座標と原子核電荷(x0,y0,z0,Z)も...
Z=1 以外は水素様原子の1s関数となる。
H2S, H2Px, H2Py, H2Pz も同様である。
:: NVext a chg x0 |
$-\frac{1}{2} {\bf\nabla}^2 -\frac{1}{|x|+1}$の固有関数(...
$\sqrt{\frac{2}{5}} e^{-|x|} (1+|x|)$を与える。
a, chg, x0は未使用の入力パラメータである。
:: ZERO |
ゼロを与える(テスト用)。
共役勾配法に関するパラメータを与えるキーワード
: psiopt_convthreshold |
収束閾値を与える。通常 1e-6 を指定。
: psiopt_resetdirection |
探索方向のリセット間隔を与える。通常 50 を指定。この繰り...
: psiopt_maxiteration |
共役勾配法の繰り返し最大回数を与える。この回数繰り返して...
その旨がログファイルに出力され、途中まで最小化された関数...
通常 500 を指定。
共役勾配法で使われる直線探索に関するパラメータを与えるキ...
(直線探索には、囲い込み法と、黄金分割法が使われている)
: psiopt_alpha |
囲い込み法で使う最初の $\alpha$ 。通常 5e-3 を指定。
最初は直線探索の初期点 $x_0$ と $x_0 + \alpha {\bf{d}}$ ...
${\bf{d}}$は探索方向である。
: psiopt_abandonthreshold |
黄金分割法での収束閾値。通常 1e-6 を指定。
Eum法に関するパラメータを与えるキーワード
: psiopt_lambda |
Eum法のη。通常 10.0 を指定。単位は hartree (a.u.) である。
ηは占有軌道エネルギーよりも大きい値を与える。
//-------------------------------------------------------...
** 原子核の初期座標 [#z214de9d]
最初の時刻の原子核座標と速度、および使用する場合は、擬ポ...
: atom |
{ }内の一行がひとつの原子核に関する入力であり、
元素記号、原子の質量 m、原子核電荷、擬ポテンシャルの種類、
原子核の座標 x, y, z (bohr) と、速度 vx, vy, vz (a.u.) か...
元素記号と擬ポテンシャルの種類は文字列として与える。
擬ポテンシャルを使用しない場合は、省略するか空文字列を指...
現在、原子核は動くようにはなっていないため、m, vx, vy, vz...
//-------------------------------------------------------...
** 外場ポテンシャル [#cc8f1b88]
外から加えられるレーザー電場などの外場ポテンシャルを指定...
電磁波(レーザー)と電子の相互作用は、半古典近似のもとで...
表式を用いている。
: vext, vext_phase (廃止予定) |
いくつか準備されている外場ポテンシャルであり、
vextは予約文字列 CASE0, CASE1, CASE2などのいずれかを指定...
CASE0は外場ポテンシャルを加えない。
CASE1は -1/(1+|x|) の電子が感じるポテンシャルを加える(x ...
CASE2は E0=1/64 a.u., ω=0.375 a.u. として、- E0 sin(ω t +...
電子が感じるポテンシャルを加える(電場としては E0 sin(ω t...
zは bohr単位の z座標、tは a.u.単位の時刻である。
位相θ(rad)は vext_phaseで与える。
: vext_rectangle, vext_linear, vext_t_sin など |
一般的に、外場ポテンシャルを指定できるキーワードである。...
//-------------------------------------------------------...
** シミュレーションの長さ [#o34f4918]
波動関数を時間発展させるシミュレーションの時間や、リスタ...
: step0 |
最初の時刻のステップ番号を指定する。通常 0を指定。
リスタート計算の場合、リスタート前と同じものを与える。
: t0 |
最初の時刻(a.u.)を指定する。通常 0.0を指定。
リスタート計算の場合、リスタート前と同じものを与える。
: dt |
シミュレーションの1ステップの時間間隔(a.u.)を入力する。
sfdtype=KVKのときは dt/dx^2≒0.66 、VKVのときは dt/dx^2≒1....
dtが安定なシミュレーションを与えるために、望ましい。
ここでdxはグリッド間隔(bohr)である。
: maxstep |
時間発展計算をするステップ数を指定。
: prtevery |
時間発展計算において、期待値を出力するステップ間隔を指定。
0以下は出力しないことを意味する。
: trjevery |
時間発展計算において、トラジェクトリーを出力するステップ...
0以下は出力しないことを意味する。
出力された各時刻のトラジェクトリー(波動関数など)をフレ...
: outformat |
trj, rstファイルの出力形式を予約文字列 BINARYか TEXTかで...
: outfname_trj |
出力するトラジェクトリーファイル(.trj)のパス名を文字列で...
各時刻の空間軌道などのデータが書き出される。
: outfname_sup |
出力する付録ファイル(.sup)のパス名を文字列で指定。
ログファイル(.out)に出力されている期待値の部分が書き出さ...
gnuplotでほぼそのままプロットできる書式になっている。
: outfname_rst |
出力するリスタート用ファイル(.rst)のパス名を文字列で指定。
リスタート計算(継続計算)に利用される。
このrstファイルを用いて続きの計算を行うことができる。
: outfname_nuc |
出力するリスタート用の原子核座標ファイル(.nuc)のパス名を...
未使用。現在利用しないため /dev/null を指定するとよい。
: restart |
リスタート計算をするか否かなどを予約文字列 NO, YES, MO の...
なお、リスタート計算の場合、wp_a, wp_b, psioptの値は使わ...
リスタート前と同じものを与えておく(wp_aとwp_b電子数(行...
:: NO |
リスタート計算をしない。すなわち、wp_a, wp_bで指定された...
psioptに従って最小化した関数のいずれかから時間発展計算を...
:: YES |
リスタート計算をする。
rstファイルはキーワードinpfname_rst, inpfname_nucで指定さ...
:: MO |
rstファイルに含まれる空間軌道のみを利用してリスタート計算...
別のプログラムによる電子状態計算の結果を rst形式で保存し...
その空間軌道からリスタートできる。
: inpfname_rst |
入力されるリスタートファイルのパス名を文字列で指定。
: inpfname_nuc |
入力されるリスタート時の原子核座標ファイルのパス名を文字...
未使用。現在利用しないため /dev/null を指定するとよい。
//-------------------------------------------------------...
** 電荷から電位を求める解法 [#t8fd1f09]
全電子又は原子核の電荷密度から電子が感じる電位(ポテンシ...
ポアソン方程式から求めるための解法とパラメータ値を指定す...
: method_poisson |
解法を指定。
通常、予約文字列 FDM_SOR を指定する。もしくは FDM_ICCGを...
NOSOLVE は解かない(最初の初期値がそのまま使われる)。
FDM_SCB_SOR は計算領域の境界の電位も計算する(動作未確認...
FDM_ICCG(差分法においてICCG法により求める)に関するパラ...
: method_poisson_iccg_threshold |
ICCG法の収束閾値。通常 1e-6 を指定する。
FDM_SOR(差分法においてSOR法により求める)に関するパラメ...
: method_poisson_sor_omega |
SOR法の加速パラメータω。通常 1.6 を指定する。一般的にSOR...
: method_poisson_sor_threshold |
SOR法の収束閾値。通常 1e-6 を指定する。
: method_poisson_sor_maxiter |
SOR法の繰り返し最大回数。通常 50000 を指定する。
FDM_SCB_SOR(FDM_SORに加えて、計算領域の境界をSCB法により...
: method_poisson_scb_threshold |
SCB法の収束閾値。通常 1e-3 を指定する。
: method_poisson_scb_maxiter |
SCB法の繰り返し最大回数。通常 10 を指定する。
原子核の電荷密度から電位を求めるときには次のキーワードが...
プログラムコード上、原子核電荷は周囲のグリッドに電荷密度...
: method_poisson_nuclear_pppm |
通常、予約文字列 NOを指定。
YESの場合には、原子核電荷を、ガウス型の電荷密度分布と、そ...
分けて電位を求める(PPPMスキーム)。
: method_poisson_nuclear_guess |
通常、予約文字列 YESを指定。電位を求める解法の初期値とし...
NOの場合はゼロを使う。
核電荷による電位を求めるとき、計算領域の境界の電位はここ...
(そうでないときはゼロが使われる)。
: method_poisson_nuclear_frozen |
通常、予約文字列 YESを指定する。NOの場合は時間発展計算の...
原子核電荷からの電位を計算する。
現在、時間が進んでも原子核位置は変わらないため各ステップ...
//-------------------------------------------------------...
終了行:
#menu(LABO/MenuBar)
* LABO/namelessの入力 [#o685c29b]
#contents
** 一行メモ [#tddab570]
- (四則演算で数値を指定する場合の注意) 平方根の場合は 2...
- ↓単位変換の桁数見直す、基本物理定数見直す -- &new{2024...
#comment
#katex
//-------------------------------------------------------...
* いくつかの単位変換 [#q24c7703]
$ E_0 = \sqrt{ I_\mathrm{[W/cm^2]} \: } \!\times\! 10...
#レーザー強度→光電場の大きさ
$ E_0 = 51.422 \!\times\! {E_0}_\mathrm{[V/\AA]} ~\ma...
#電場[V/Å]→電場[au]
$ \omega = \frac{45.546}{\lambda_\mathrm{[nm]}} ~~\ma...
#波長→角振動数
$ \lambda = 1239.84 \!\times\! {E_{h\nu}}_\mathrm{[eV...
#光子エネルギー→波長
$ t = 0.0241888432 \!\times\! t_\mathrm{[a.u.(s)]} ~~...
#時間[au]→時間[fs]、原子単位としては $\mathrm{\hbar/E_...
$ \ell = 0.52917721 \!\times\! \ell_{\mathrm{[bohr]}}...
#長さ[au]→長さ[Å]
エネルギー(略)
#原子単位としては hartree や $\mathrm{E_h}$ がよく使わ...
//-------------------------------------------------------...
* namelessの入力 [#j36e05e1]
** 入力の書式 [#b262eb14]
sampleinpディレクトリに namelessの入力サンプル(.inp)がい...
この中に載っていないキーワードもある(これについては過去...
入力は「キーワード = 値」の並びで指定する。
これは標準入力として読み込まれる(.inpはヒアドキュメント...
値はキーワードの種類によって、数値、予約文字列(引用符" "...
文字列(引用符" "でくくられていても、いなくてもよい)、
中括弧{ }でくくられた複数行からなるブロック値のいずれかを...
入力されなかったキーワードは、デフォルト値が利用される。
複数の「キーワード = 値」は、セミコロン、カンマ、空白、改...
区切って並べて指定する。キーワードの入力順には意味は無い。
同じキーワードが入力された場合は、最後に指定されている値...
また、C言語と同じく、/* */ と // によりコメントを記載す...
入力された値や利用されたデフォルト値は、ログファイル(標...
.out)に出力される。
キーワードに与えられる数値は、整数(C言語のint型)か、実...
いずれかであり、これらを組み合わせた四則演算などでも指定...
(四則演算以外に利用できる演算は過去の卒論参照)。
整数と実数の演算結果は実数になる。
予約文字列としては YES, NO, FIXED, W_FEM などがある(各キ...
ブロック値は、wp_a, wp_b, atom などのキーワードがこの種類...
{ }内の書式はそれらのキーワードの説明を参照のこと。
キーワードはその意味により7種類に分類され、.inpに記載さ...
この分類には意味は無く、入力の作り易さなどの利便性を与え...
7種類の分類は次の通りである。
- 系のサイズ
- 系を解く条件
- 1電子波動関数の初期値
- 原子核の初期座標
- 外場ポテンシャル
- シミュレーションの長さ
- 電荷から電位を求める解法
なお、femキーワードの値が FDMであるか、FDM以外であるかに...
入力されたキーワードの値(やデフォルト値)は、他のキーワ...
得られるものが設定される(ひととおりキーワード値が読み込...
系のサイズに関するキーワードの一部がこれ該当する。詳細は...
** 実行時の入力エラーの見方 [#h6621b73]
59: syntax error:
};
^
exit from yyerror()
というエラーは、ジョブスクリプト(.inp)の cat << end_of_in...
その前に文法エラーがあることを意味している。
//-------------------------------------------------------...
* namelessの主要なキーワード [#k042b955]
** 系のサイズ [#g9685793]
波動関数を解く空間の領域(計算領域)を指定することに関係...
: sysdim |
計算領域の次元を指定する。1, 2, 3のいずれかの数値を与える...
(例) sysdim = 3
: xmin, ymin, zmin, xmax, ymax, zmax |
計算領域の x, y, z座標の範囲を数値で与える。単位は bohr(a...
計算領域の次元が1次元の時は ymin=zmin=ymax=zmax の数値を...
次元が2次元の時は zmin=zmax の数値を与える。
: xng, yng, zng |
fem=FDM以外のときに使用される。
計算領域を x, y, z方向に分割する数(グリッド数)を与える。
sysdim=1の時は yng=zng=1 とし、sysdim=2の時は zng=1 とす...
x方向のグリッド間隔は dx = ( xmax - xmin ) / xng となる...
xmin~xmaxの範囲が xngで分割されるので、計算領域の境界を...
なお、プログラムでは xminからさらに小さい方向にもう1グリ...
x=xmin-dx)、実際に使われているグリッドの数は xng+2 とな...
y, z方向についても同様である。
このキーワードは、fem=FDMのときには、値が次のように上書...
fem=FDMのとき
- xmin,xmax,xb1,xb2,xng0,dx_max,dx_diff,sigmoid_xgain か...
- ymin,ymax,yb1,yb2,yng0,dy_max,dy_diff,sigmoid_ygain か...
- zmin,zmax,zb1,zb2,zng0,dz_max,dz_diff,sigmoid_zgain か...
: xb1,xb2,xng0, yb1,yb2,yng0, zb1,zb2,zng0 |
fem=FDMで使用される。x,y,z方向について、内側等間隔領域[b1...
fem=FDM以外のときは、値は次のように上書き設定される。~
fem=FDM以外のとき
xmin,xman,xng の値 -> xb1,xb2,xng0 の値として上書き設定...
ymin,yman,yng の値 -> yb1,yb2,yng0 〃
zmin,zman,zng の値 -> zb1,zb2,zng0 〃
: dx_max, dy_max, dz_max |
x,y,z方向について、外側等間隔領域のグリッド間隔を指定する。
: dx_diff, xinc, sigmoid_xgain, dy_diff, yinc, sigmoid_yg...
中間領域の作成パラメータであり、x,y,z方向についてそれぞれ...
dx_diffは内側から外側等間隔領域に向けて、グリッド間隔が1...
xincには中間領域のグリッド間隔の分布の仕方として、LINEAR...
LINEARは、グリッド間隔が dx_diff毎に増える(正確にはグリ...
SIGMOIDは、シグモイド関数によってグリッド間隔が増えるよう...
中間領域の幅とグリッド数は dx_diffを使用したLINEARの場合...
sigmoid_xgainは xinc=SIGMOIDの場合に使用され、シグモイド...
ゲインの値を与える(4.0が良さげである)。
yとz方向についても同様である。~
~
グリッド間隔の増加率を表わすのに使われている
シグモイド関数( 1/(1+exp[±ax]), 定義域[-1,+1], aはゲイン...
中間領域にちょうど合うように拡大縮小されて利用される仕様...
グリッド間隔が (xb2-xb1)/xng0から dx_max(正確には下記の...
中間領域であるが、
dx_maxに至らず計算領域の境界になっている場合でも、この途...
拡大縮小される(拡大縮小しないように仕様変更することは困...
このような途中で切れた中間領域を用いた計算条件で計算する...
~
SIGMOIDの場合は中間領域と外側等間隔領域の接続部分に、グ...
→ x方向についてのバグは取った(2023/12/17)、y,z方向もバグ...
~
(補足情報)
(1) { dx_max-(xb2-xb1)/xng0 } / dx_diff が整数になってい...
グリッド間隔の増加率(f' ここで x=f(n), x:座標, n:グリッ...
このような計算条件は避けた方がよい。y, z方向についても同...
(2) (xb3-xmin) / dx_max が整数になっていない場合(xb3はプ...
計算領域の境界でグリッド間隔が 0と dx_maxの間の値をとりう...
ゼロに近いとき極端に小さくなる)。
このような計算条件も避けた方がよい。xb4についても同様。y,...
~
~
(接続部分をスムーズにする処方箋)
各領域と計算領域の境界をスムーズにつなげる(中間領域と外...
dx_max, xb2, xb1, xng0, dx_diffをうまく設定する必要がある...
以下、x軸方向で xb1-xb2-xb4-xmaxの部分を考える。xmin側や ...
うまく設定する方法として、たとえば次のようにするとよい...
内側等間隔領域のグリッド間隔 (xb2-xb1)/xng0~
外側等間隔領域のグリッド間隔 dx_max~
計算領域の境界 xmax~
を決める。そして、~
中間領域の幅 L (入力にはなし)~
の候補を決める。ただし、外側等間隔領域と計算領域の境界を...
L&sub{候補};は Mを正の整数として、~
xb2 + L&sub{候補}; + M * dx_max = xmax~
を満たすようにする。次に、~
中間領域のグリッド数 N(入力にはなし)~
の候補を次のように決める。÷2 の部分は目安であり N&sub{候...
N&sub{候補}; = L / { (xb2-xb1)/xng0 } ÷2~
なお、右辺の L/{(xb2-xb1)/xng0} の部分は xmax, dx_max, xb...
このN&sub{候補};のとき、中間領域と外側等間隔領域をスムー...
dx_max = (xb2-xb1)/xng0 + dx_diff&sub{候補}; * N&sub{...
から~
dx_diff&sub{候補}; = { dx_max - (xb2-xb1)/xng0 } / N&...
となるので、内側等間隔領域のグリッド間隔 (xb2-xb1)/xng0 ...
場合によっては、 N&sub{候補};を増減させて変更したり、L&su...
このように決めた dx_diff&sub{候補};が入力する dx_diffにな...
以上は、xinc=LINEARで考えたが SIGMOIDのときも同じくして...
両側で密になるように変わる形であるため)。~
~
(メモ)NとLの関係式~
L = Integrate_{N,0}{ dx_diff * k + (xb2-xb1)/xng0 }dk~
={ dx_max - (xb2-xb1)/xng0 }/N * 1/2*N^2 + (xb2-xb1...
= { dx_max + (xb2-xb1)/xng0 }/N~
//-------------------------------------------------------...
** 系を解く条件 [#e5500c98]
計算領域内の波動関数をどのように解くのかを指定をするキー...
: xbc, ybc, zbc |
x, y, z方向のそれぞれの境界の取り扱いを指定する。
予約文字列として FIXED(固定端境界条件)か PERIODIC(周期...
xbcが FIXEDの場合、x≦xmin と x≦xmax で波動関数の値がゼロ...
箱の中に閉じ込められた波動関数を解く形になる。
PERIODICの場合、x=xmin~xmax の領域が x軸方向に無限に並ん...
xmin~xmax の領域で右に進む波束があった場合には、右の境界...
入って来るような扱いになる。
なお、x=xmin と x=xmax の位置で波動関数の値は同じである。
ybc, zbcについても同様である。~
他に、TW_PERIODIC(ねじれた周期境界条件)などもある。
波動関数の計算に必要なポアソン方程式の解法や、Eum法につい...
利用している。現在、ポアソン方程式は FIXEDのみで解かれて...
境界はしかるべき値が設定される
(ハートリーポテンシャルを解く場合、境界はゼロのまま)。
: fem |
波動関数の時間発展を計算する方法を指定する。
通常、予約文字列として W_FEM(watanabeによる有限要素法)...
また、T_FEM と C_FEM (廃止予定)、
CFEM1, CFEM2, CFEM3, CFEM4, CFEM5, CFEM6, CFEM7, CFEM8(C...
開発中)も指定できる。
: sfdecomp |
時間発展演算子のsuzukiによるフラクタル分解の次数を与える。
通常 2 を指定する。他に 4 が利用できる。
: sfdtype |
時間発展演算子の分解順序を与える。予約文字列 KVK または V...
: xc_dname |
擬ポテンシャルと擬原子軌道を含むディレクトリ(OpenMXのデ...
文字列で与える。
擬ポテンシャルを利用した時間発展計算のときに利用される。
: spin_polarization |
時間発展計算をする系が、非スピン分極のときに予約文字列 NO...
すべての空間軌道でα電子とβ電子が対になって軌道を占有して...
非スピン分極の系である。それ以外はスピン分極の系である。
: xc_type |
密度汎関数法における交換ポテンシャルと相関ポテンシャルを...
通常 "GGA_X_PBE GGA_C_PBE" を指定する。交換ポテンシャル名...
空白で区切って文字列として与える。相関ポテンシャルは省略...
相関ポテンシャルは無いとされる。
1電子系の場合、原理上両方のポテンシャルの和はゼロなので...
空文字列 "" を指定してもよい(両方のポテンシャルが無いと...
実行時間を削減できる)。
//-------------------------------------------------------...
** 波動関数の初期値 [#gf1ae700]
時間発展させる波動関数の初期値を準備するキーワードである。
: psiopt |
以下の wp_a, wp_b で与えた関数をハミルトニアンの固有関数...
固有関数を求める場合、Eum法を用いた共役勾配法による最小化...
なお、実の波動関数のみが最小化可能である。
予約文字列 NOを与えた場合は最小化はせず、wp_a, wp_b で与...
最小化させる場合、通常 PRPM を指定する。
他に PRP, FR, AMB の指定もできる。これらは、最小化の際の...
: wp_a, wp_b |
1電子波動関数(分子軌道)を指定する。
psiopt=NOのときはこの関数から作られたスレーター行列式がそ...
psiopt!=NOのときは、このスレーター行列式が共役勾配法の初...
収束した(求めた)波動関数が最初の時刻の波動関数になる。
wp_a, wp_bはそれぞれα電子とβ電子の空間軌道を電子の数だけ...
spin_polarization=NOのときは wp_bの値は使われない。α電子...
空間軌道が使われる。~
{ }内の一行がひとつの空間軌道を与えており、
最初の文字列につづいて、それに関連するパラメータをいくつ...
最初の文字列は関数の種類を意味しており、
GAUSS, PLANEWAVE, H1S, H2S, H2Px, H2Py, H2Pz, NVext, ZERO...
次のような指定ができる。
なお、sysdim=1 や 2 のときには、それぞれ yとz や z 成分は...
1次元でしか利用できないものもある(利用できない場合、プロ...
:: GAUSS x0 y0 z0 w px py pz |
ガウス型波束、波束の中心座標と幅(x0,y0,z0,w)と運動量(px,p...
:: PLANEWAVE nx ny nz |
平面波、x,y,z方向のノード数(nx,ny,nz)も入力する。
:: H1S x0 y0 z0 Z |
水素原子1s関数、関数の中心座標と原子核電荷(x0,y0,z0,Z)も...
Z=1 以外は水素様原子の1s関数となる。
H2S, H2Px, H2Py, H2Pz も同様である。
:: NVext a chg x0 |
$-\frac{1}{2} {\bf\nabla}^2 -\frac{1}{|x|+1}$の固有関数(...
$\sqrt{\frac{2}{5}} e^{-|x|} (1+|x|)$を与える。
a, chg, x0は未使用の入力パラメータである。
:: ZERO |
ゼロを与える(テスト用)。
共役勾配法に関するパラメータを与えるキーワード
: psiopt_convthreshold |
収束閾値を与える。通常 1e-6 を指定。
: psiopt_resetdirection |
探索方向のリセット間隔を与える。通常 50 を指定。この繰り...
: psiopt_maxiteration |
共役勾配法の繰り返し最大回数を与える。この回数繰り返して...
その旨がログファイルに出力され、途中まで最小化された関数...
通常 500 を指定。
共役勾配法で使われる直線探索に関するパラメータを与えるキ...
(直線探索には、囲い込み法と、黄金分割法が使われている)
: psiopt_alpha |
囲い込み法で使う最初の $\alpha$ 。通常 5e-3 を指定。
最初は直線探索の初期点 $x_0$ と $x_0 + \alpha {\bf{d}}$ ...
${\bf{d}}$は探索方向である。
: psiopt_abandonthreshold |
黄金分割法での収束閾値。通常 1e-6 を指定。
Eum法に関するパラメータを与えるキーワード
: psiopt_lambda |
Eum法のη。通常 10.0 を指定。単位は hartree (a.u.) である。
ηは占有軌道エネルギーよりも大きい値を与える。
//-------------------------------------------------------...
** 原子核の初期座標 [#z214de9d]
最初の時刻の原子核座標と速度、および使用する場合は、擬ポ...
: atom |
{ }内の一行がひとつの原子核に関する入力であり、
元素記号、原子の質量 m、原子核電荷、擬ポテンシャルの種類、
原子核の座標 x, y, z (bohr) と、速度 vx, vy, vz (a.u.) か...
元素記号と擬ポテンシャルの種類は文字列として与える。
擬ポテンシャルを使用しない場合は、省略するか空文字列を指...
現在、原子核は動くようにはなっていないため、m, vx, vy, vz...
//-------------------------------------------------------...
** 外場ポテンシャル [#cc8f1b88]
外から加えられるレーザー電場などの外場ポテンシャルを指定...
電磁波(レーザー)と電子の相互作用は、半古典近似のもとで...
表式を用いている。
: vext, vext_phase (廃止予定) |
いくつか準備されている外場ポテンシャルであり、
vextは予約文字列 CASE0, CASE1, CASE2などのいずれかを指定...
CASE0は外場ポテンシャルを加えない。
CASE1は -1/(1+|x|) の電子が感じるポテンシャルを加える(x ...
CASE2は E0=1/64 a.u., ω=0.375 a.u. として、- E0 sin(ω t +...
電子が感じるポテンシャルを加える(電場としては E0 sin(ω t...
zは bohr単位の z座標、tは a.u.単位の時刻である。
位相θ(rad)は vext_phaseで与える。
: vext_rectangle, vext_linear, vext_t_sin など |
一般的に、外場ポテンシャルを指定できるキーワードである。...
//-------------------------------------------------------...
** シミュレーションの長さ [#o34f4918]
波動関数を時間発展させるシミュレーションの時間や、リスタ...
: step0 |
最初の時刻のステップ番号を指定する。通常 0を指定。
リスタート計算の場合、リスタート前と同じものを与える。
: t0 |
最初の時刻(a.u.)を指定する。通常 0.0を指定。
リスタート計算の場合、リスタート前と同じものを与える。
: dt |
シミュレーションの1ステップの時間間隔(a.u.)を入力する。
sfdtype=KVKのときは dt/dx^2≒0.66 、VKVのときは dt/dx^2≒1....
dtが安定なシミュレーションを与えるために、望ましい。
ここでdxはグリッド間隔(bohr)である。
: maxstep |
時間発展計算をするステップ数を指定。
: prtevery |
時間発展計算において、期待値を出力するステップ間隔を指定。
0以下は出力しないことを意味する。
: trjevery |
時間発展計算において、トラジェクトリーを出力するステップ...
0以下は出力しないことを意味する。
出力された各時刻のトラジェクトリー(波動関数など)をフレ...
: outformat |
trj, rstファイルの出力形式を予約文字列 BINARYか TEXTかで...
: outfname_trj |
出力するトラジェクトリーファイル(.trj)のパス名を文字列で...
各時刻の空間軌道などのデータが書き出される。
: outfname_sup |
出力する付録ファイル(.sup)のパス名を文字列で指定。
ログファイル(.out)に出力されている期待値の部分が書き出さ...
gnuplotでほぼそのままプロットできる書式になっている。
: outfname_rst |
出力するリスタート用ファイル(.rst)のパス名を文字列で指定。
リスタート計算(継続計算)に利用される。
このrstファイルを用いて続きの計算を行うことができる。
: outfname_nuc |
出力するリスタート用の原子核座標ファイル(.nuc)のパス名を...
未使用。現在利用しないため /dev/null を指定するとよい。
: restart |
リスタート計算をするか否かなどを予約文字列 NO, YES, MO の...
なお、リスタート計算の場合、wp_a, wp_b, psioptの値は使わ...
リスタート前と同じものを与えておく(wp_aとwp_b電子数(行...
:: NO |
リスタート計算をしない。すなわち、wp_a, wp_bで指定された...
psioptに従って最小化した関数のいずれかから時間発展計算を...
:: YES |
リスタート計算をする。
rstファイルはキーワードinpfname_rst, inpfname_nucで指定さ...
:: MO |
rstファイルに含まれる空間軌道のみを利用してリスタート計算...
別のプログラムによる電子状態計算の結果を rst形式で保存し...
その空間軌道からリスタートできる。
: inpfname_rst |
入力されるリスタートファイルのパス名を文字列で指定。
: inpfname_nuc |
入力されるリスタート時の原子核座標ファイルのパス名を文字...
未使用。現在利用しないため /dev/null を指定するとよい。
//-------------------------------------------------------...
** 電荷から電位を求める解法 [#t8fd1f09]
全電子又は原子核の電荷密度から電子が感じる電位(ポテンシ...
ポアソン方程式から求めるための解法とパラメータ値を指定す...
: method_poisson |
解法を指定。
通常、予約文字列 FDM_SOR を指定する。もしくは FDM_ICCGを...
NOSOLVE は解かない(最初の初期値がそのまま使われる)。
FDM_SCB_SOR は計算領域の境界の電位も計算する(動作未確認...
FDM_ICCG(差分法においてICCG法により求める)に関するパラ...
: method_poisson_iccg_threshold |
ICCG法の収束閾値。通常 1e-6 を指定する。
FDM_SOR(差分法においてSOR法により求める)に関するパラメ...
: method_poisson_sor_omega |
SOR法の加速パラメータω。通常 1.6 を指定する。一般的にSOR...
: method_poisson_sor_threshold |
SOR法の収束閾値。通常 1e-6 を指定する。
: method_poisson_sor_maxiter |
SOR法の繰り返し最大回数。通常 50000 を指定する。
FDM_SCB_SOR(FDM_SORに加えて、計算領域の境界をSCB法により...
: method_poisson_scb_threshold |
SCB法の収束閾値。通常 1e-3 を指定する。
: method_poisson_scb_maxiter |
SCB法の繰り返し最大回数。通常 10 を指定する。
原子核の電荷密度から電位を求めるときには次のキーワードが...
プログラムコード上、原子核電荷は周囲のグリッドに電荷密度...
: method_poisson_nuclear_pppm |
通常、予約文字列 NOを指定。
YESの場合には、原子核電荷を、ガウス型の電荷密度分布と、そ...
分けて電位を求める(PPPMスキーム)。
: method_poisson_nuclear_guess |
通常、予約文字列 YESを指定。電位を求める解法の初期値とし...
NOの場合はゼロを使う。
核電荷による電位を求めるとき、計算領域の境界の電位はここ...
(そうでないときはゼロが使われる)。
: method_poisson_nuclear_frozen |
通常、予約文字列 YESを指定する。NOの場合は時間発展計算の...
原子核電荷からの電位を計算する。
現在、時間が進んでも原子核位置は変わらないため各ステップ...
//-------------------------------------------------------...
ページ名: