その他

このライブラリがブラックボックス化しないようにいくつかのクラス,関数などを解説する

pfp_calculatorについて

pfp_calculatorはAtomsオブジェクトにcalculatorを設定する際に用いる.
使用方法は次の通り
from ase.build import molecule
from matlanticgrrm.atomslist import pfp_calculator
atoms = molecule('H2O')
atoms.calc = pfp_calculator()

pfp_calculatorのソースコードは次の通り

from pfp_api_client.pfp.calculators.ase_calculator import ASECalculator
from pfp_api_client.pfp.estimator import Estimator, EstimatorCalcMode

def pfp_calculator():
    estimator = Estimator(calc_mode=EstimatorCalcMode.CRYSTAL_PLUS_D3)
    calc = ASECalculator(estimator)
    return calc
これでAtomsオブジェクトにcalculatorを設定できる理由は一目瞭然である.
DFT-D3を使用していることもわかる.

set_calculatorについて

set_calculatorはAtomsリストの全ての要素にcalculatorを設定する関数である.

 from matlanticgrrm.atomslist import pfp_calculator,set_calculator
 from matlanticgrrm.grrmdata import log2atoms
 atoms_list = log2atoms('*_EQ_list.log')
 set_calculator(atoms_list, pfp_calculator)
第二引数はpfp_calculator()のように()を付けない事に気を付ける
ソースコードは以下の通り
def set_calculator(atoms_list,func):
    for atoms in atoms_list:
        if atoms:
            atoms.calc = func()
単純にfor文で各要素にcalculatorを設定している. atoms_listの要素にはNoneを含んでる可能性があるのでif文用いる.
pfp_calculatorに()を付けて関数をコールしてはいけない理由が分かる.