同梱基底関数一覧#

qc-rs は python/qc/basis/ 下に編集可能な Python データファイルとして 229 の名前付き基底を同梱しています。 基底の章 がチュートリアルで、本ページは同梱データの一覧・読み込み・カスタマイズ のリファレンスです。

利用可能なものの一覧#

名前は qc.basis.baslib_filenamename 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

3-21g, 6-31g, 6-31g*, 6-31+g**, 6-311g**, 6-311++g**

原子価分割

Dunning cc

cc-pvdz, cc-pvtz, cc-pvqz, aug-cc-pvdz, cc-pvdz-pp

相関無矛盾;-pp は ECP を持つ

Karlsruhe def2

def2-svp, def2-tzvp, def2-qzvp, def2-tzvpd

重元素(Rb 以降)に組み込み ECP

補助

cc-pvdz-jkfit, cc-pvdz-ri/mp2fit, def2-universal/jkfit

RI フィッティング集合(rijk=/ric=

データファイル#

各ファイル(_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)

inpdataqc.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 です。