import os
import math
import yaml
from pymatgen.analysis.bond_valence import MODULE_DIR
from pymatgen.analysis.bond_valence import BV_PARAMS
from pymatgen.core import Element


# 1) パラメータファイルのパス
param_file = os.path.join(MODULE_DIR, "bvparam_1991.yaml")
print("Parameter file:", param_file)

# 2) YAML を読み込む
with open(param_file, encoding="utf-8") as f:
    data = yaml.safe_load(f)

# 3) Zn のエントリをチェック
if "Zn" in data:
    print("Zn のみ:", list(data["Zn"].keys()))
else:
    print("→ Zn のエントリは見つかりません。")


# 登録されている全元素シンボルを確認
elements = [el.symbol for el in BV_PARAMS.keys()]
print(elements)


zn = BV_PARAMS[Element("Zn")]
o  = BV_PARAMS[Element("O")]

print("Zn のパラメータ:", zn)  # {'r': ..., 'c': ...}
print("O  のパラメータ:",  o)  # {'r': ..., 'c': ...}

# Zn と O の r,c から、O’Keefe & Brese (1991) のr0を計算（Bは定数 0.31)
B = 0.31

r_zn = zn['r']
c_zn = zn['c']
r_o = o['r']
c_o = o['c']

R_zn_o = (
    r_zn + r_o
    - (r_zn * r_o * (math.sqrt(c_zn) - math.sqrt(c_o))**2)
      / (c_zn * r_zn + c_o * r_o)
)

print(f"Zn–O の r0 = {R_zn_o:.3f} Å, B = {B:.2f} Å")
