同梱基底関数一覧#
qc-rs は python/qc/basis/ 下に編集可能な Python データファイルとして 229 の名前付き基底を同梱しています。
基底の章 がチュートリアルで、本ページは同梱データの一覧・読み込み・カスタマイズ
のリファレンスです。
利用可能なものの一覧#
名前は qc.basis.baslib_filename(name → module_stem の辞書)にあります:
from qc import basis
len(basis.baslib_filename) # 229
"cc-pvtz" in basis.baslib_filename # True
sorted(n for n in basis.baslib_filename if n.startswith("def2"))
これらの名前はいずれも qc.chk.new(...) の有効な ao=(や rijk=/ric=)の値です。主な系列:
系列 |
例 |
注記 |
|---|---|---|
Pople |
|
原子価分割 |
Dunning cc |
|
相関無矛盾; |
Karlsruhe def2 |
|
重元素(Rb 以降)に組み込み ECP |
補助 |
|
RI フィッティング集合( |
データファイル#
各ファイル(_00* ユーティリティを除く)は基底データファイルで、元素ごとに 1 つのモジュール変数(記号に
ちなむ — H, He, Li, …)を nwchem_format(...) オブジェクトとして定義します:
import importlib
cc_pvdz = importlib.import_module("qc.basis.cc_pvdz")
h = cc_pvdz.H
h.description # "cc-pvdz:H"
h.inpdata # NWChem 形式の軌道殻テキスト
h.ecp # None(または ECP テキスト、*-pp / def2 重元素用)
nwchem_format オブジェクト#
class nwchem_format:
inpdata # str: NWChem 軌道基底テキスト(1 元素)
description # str または None: 人が読めるラベル
ecp # str または None: NWChem ECP テキスト(全電子は None)
inpdata は qc.chk.new(ao=...) 呼び出し時に Rust の qc_mol::nwchem::parse() で解析されます。
NWChem テキスト形式#
SYMBOL SHELL_TYPE
exponent coeff1 coeff2 ...
exponent coeff1 coeff2 ...
SHELL_TYPE:S,P,D,F,G,H,I,K、またはSP(S と P に自動分割)。複数の係数列 → 一般縮約殻。
H S
13.0100000 0.0196850
1.9620000 0.1379770
0.4446000 0.4781480
H S
0.1220000 1.0000000
H P
0.7270000 1.0000000
プリミティブ正規化を手で適用しないでください — qc-mol が生の係数から一度だけ行います。
カスタム基底を使う#
元素ごとにインライン#
nwchem_format オブジェクトを作り、ao= に(辞書の値として)渡します:
from qc.basis import nwchem_format
import qc
myN = nwchem_format("""
N S
242.766 0.0598657
36.485 0.352955
7.814 0.706513
N P
5.425 0.237972
1.149 0.858953
""", description="custom:N")
m = qc.chk.new(atom="N 0 0 0; N 0 0 1.1", ao={"N": myN}, unit="angstrom")
同梱集合の編集・追加#
ファイルは素の Python なので、元素のブロックをその場で編集したり、新しい <name>.py データファイルを追加して
baslib_filename に登録したりできます。編集後は拡張を再ビルド(make install / maturin develop)して
変更を反映させます。完全な編集/追加手順:docs/qc-basis.md。
ECP を持つ基底#
相関無矛盾の -pp 系と def2 系は、有効内殻ポテンシャルをインライン(ecp フィールド)で持ちます。
だから重原子への qc.chk.new(ao="def2-svp") は自動的に価電子のみで走ります — 別途 ecp= 引数なし — PySCF の
basis="def2-svp", ecp="def2-svp" に一致します。def2 の JK-fit 補助は汎用の def2-universal/jkfit です。