以下は、Python プログラム MP_Ewald.py の解析結果をまとめたドキュメントです。

- 目的: Ewald 法による Madelung ポテンシャルの計算
- 対象: CIF ファイルを入力として、実空間・逆空間和を用いた静電エネルギー・ポテンシャルを算出

1) プログラムの動作
- 標準的な流れ
  - コマンドライン引数として CIF ファイルパスと Ewald の α（ew_alpha、alpha）および精度 prec を受け取る。
  - CIF ファイルを tkCIF を用いて読み込み、結晶格子の情報を取得する。
  - lattice_parameters、gij、Rgij、volume、Rlatt、Rvolume などの格子情報を取得。
  - EWALD(...) を呼び出して、以下を計算する
    - 実空間寄与:
      - 実空間の最近傍近傍和を走査して、各サイトについて実空間寄与 UC1_list を計算
      - erf(α r) を用いたクーロン相互作用寄与を積分
    - Reciprocal 空間寄与:
      - 逆空間格子に対して、G2max 以下の格子点について寄与を計算
      - 逆空間の寄与 UC2_list を計算
      - 実空間・逆空間の組み合わせで UC3_list を計算
    - 最終的な MP_list（各サイトの Madelung ポテンシャル）を計算
  - 入力サイトごとに UC1, UC2, UC3, MP を表示・集計
  - 全体の Madelung エネルギーを合計表示
- 実行時の出力
  - 実空間和・逆空間和の計算時間を報告
  - 各サイトのポテンシャル分解（MP, UC1, UC2, UC3）の値を表示
  - 最終的な「Total Madelung energy in unit cell」および Madelung constant の値を表示
- 注意点
  - 入力 CIF に依存して、自治的なラティス・原子種情報を抽出・変換して計算する。
  - 出力は標準出力と同時に、ログファイルにも出力される。
  - グラフ描画はインポートされているものの、コード内でグラフを保存する処理は見当たらないため、描画は行われない想定。

2) 必要な非標準ライブラリとインストール方法
- 非標準ライブラリ/モジュール
  - numpy
  - matplotlib
  - tklib 及び tkcrystal 系統のモジュール（例: tkapplication、tkutils、tkfile、tkcif、tkcrystal、tkatomtypeobject など、内部ライブラリ）
  - tkcrystalbase（本コード内で import される独自モジュール）
- インストール方法の目安
  - NumPy, Matplotlib
    - Python 環境で以下を実行:
      - pip install numpy matplotlib
  - tklib/tkcrystal 系モジュール
    - これらは外部の PyPI パッケージとして公開されていない可能性が高く、コード内の相対パス/パッケージ構成、またはリポジトリとして提供されていることが多い。
    - 入手方法の例:
      - 公式リポジトリがある場合は git clone <リポジトリURL> して、Python パスに追加
      - ローカルのプロジェクトフォルダに含まれている場合は、PYTHONPATH に追加
      - あるいは同梱の setup.py があれば pip install -e . でインストール
  - 注意
    - 本コードは「tkcrystalbase.py」や「tklib.tkcrystal.*」などの独自モジュールに依存しており、これらが手元に無いと実行できません。実行環境には、これらのライブラリを提供するリポジトリ/ディレクトリを含める必要があります。
- 推奨環境
  - Python 3.x
  - 上記の非標準ライブラリ群が同梱またはパスとして認識されていること

3) 必要な入力ファイル
- CIF ファイル
  - ファイル形式: CIF (Crystallographic Information File)
  - 内容: 結晶の格子定数、対称性、原子座標、電荷などの情報を含む
  - 入力ファイルはコマンドライン引数として指定する
- CIF ファイルの例的な用途
  - lattice_parameters、LatticeVectors、AtomTypeList、ExpandedAtomSiteList などのデータを抽出して、実空間・逆空間格子を構築
  - 各サイトの座標 pos、電荷 q、ラベルなどを取得して Madelung ポテンシャル計算に使用

4) 実行後に生成される出力ファイル
- ログファイル
  - ファイル名: infile のディレクトリとファイル名を元に、-out.txt を付加したもの
  - 例: CIF_path が /path/to/file.cif の場合、ログファイルは /path/to/file-out.txt となる（コードの template に基づく出力先設定）
  - ログファイルへ stdout と同等の内容が書き出される
- 標準出力
  - 実空間寄与時間、逆空間寄与時間、総時間
  - 各サイトについて UC1, UC2, UC3, MP の値（単位: eV および J の表示切替あり）
  - 総 Madelung エネルギー（単位: eV）
  - Madelung 定数の計算結果（単位は「単位胞の化学式量に対する」別表現で表示）
- その他
  - 本コード内にはグラフ描画やファイル出力として別ファイル保存の機能は見当たらないため、生成される主出力はログファイルと端末出力のみ

5) コマンドラインでの使用例 (Usage)
- 基本的な使い方
  - python MP_Ewald.py CIF_path alpha prec
  - 例:
    - python MP_Ewald.py my_structure.cif 0.3 1.0e-5
- 引数の説明
  - CIF_path: 入力 CIF ファイルのパス
  - alpha: Ewald α の値（ew_alpha）
  - prec: 計算の精度指標（例: 1.0e-5 など、10^-prec の形式として扱われる）
- usage ブロックの出力例
  - Usage: python MP_Ewald.py CIF_path alpha prec
  - ex: python MP_Ewald.py sample.cif 0.3 1e-5
- 注意事項
  - 入力 CIF が正しく読み込めない場合はエラーメッセージを表示して終了します。
  - tklib/tkcrystal 系のライブラリが正しくセットアップされている