プログラム `tb_harrison.py` の解析結果を以下に示します。

---

### 1) プログラムの動作

このPythonプログラムは、**Slater–Kosterタイトバインディング (Tight-Binding: TB) 法**を用いて、有限の原子クラスター（分子）の電子構造を計算します。特に、s、p、d軌道間の相互作用を扱い、ハミルトニアン行列を構築します。結合距離に応じたタイトバインディングパラメータの「ハリソン・スケーリング」をサポートしている点が特徴です。

プログラムの主な動作は以下の通りです。

1.  **SlaterKosterTB クラスの初期化**:
    *   `s`, `p`, `d` 軌道の種類と名称を定義します。
    *   原子リスト (`self.atoms`) とハミルトニアン行列 (`self.hamiltonian`) を初期化します。

2.  **原子の追加**:
    *   `add_atom` メソッドを使って、原子シンボル、軌道タイプ（`s`, `p`, `d`）、および3D座標を指定してクラスターに原子を追加します。

3.  **ハミルトニアンの構築**:
    *   `build_hamiltonian` メソッドが、追加された原子、定義されたSlater-Kosterパラメータ、およびオンサイトエネルギーを用いてハミルトニアン行列 `H` を構築します。
    *   **オンサイト項**: 各原子の軌道タイプに応じたオンサイトエネルギーがハミルトニアンの対角要素に設定されます。
    *   **オフサイト項 (ホッピング積分)**: 異なる原子間の相互作用（ホッピング積分）が非対角要素に設定されます。ホッピング積分は、原子間の距離と軌道の向き、およびSlater-Kosterパラメータ (`ss_sigma`, `sp_sigma` など) に基づいて計算されます。
    *   **ハリソン・スケーリング**: ホッピング積分を計算する際、`sk_params` 辞書に `harrison` キーが存在する場合、指定された `d0` (基準距離) と `power` (距離依存性指数) に基づいて、結合距離 `d` に応じてパラメータがスケーリングされます（例: `V * (d0/d)**power`）。`power` は、キーごとに上書きすることも可能です。
    *   現在、d-d軌道間のホッピング積分は実装されておらず、試みると `NotImplementedError` を発生させます。

4.  **固有値問題の解決**:
    *   構築されたハミルトニアン行列 `H` に対して、`scipy.linalg.eigh` 関数を用いて固有値問題 (`Hψ = Eψ`) を解きます。これにより、システムのエネルギー準位 (固有値) と、対応する軌道 (固有ベクトル) が得られます。

5.  **結果の出力**:
    *   計算されたエネルギー準位（固有値）を昇順にソートして表示します。
    *   各エネルギー準位について、その固有ベクトル（軌道）を構成する各原子の軌道成分（係数）を詳細に表示します。これにより、特定のエネルギー準位がどの原子のどの軌道に主に由来するかがわかります。

プログラムの `main` 関数では、具体的な例として、Ba原子（d軌道）を中心とし、その周囲に5つのN原子（p軌道）を配置したクラスターが設定され、電子構造が計算・表示されます。

### 2) 必要な非標準ライブラリとインストール方法

このプログラムは以下の非標準ライブラリを使用しています。

*   **`numpy`**: 数値計算（特に配列操作、線形代数演算）
*   **`scipy`**: 科学技術計算（特に `scipy.linalg.eigh` で固有値問題を解くために使用）

これらのライブラリは `pip` コマンドでインストールできます。

```bash
pip install numpy scipy
```

### 3) 必要な入力ファイル

このプログラムは、外部ファイルからのデータ入力を**必要としません**。
原子の配置（座標、原子種、軌道タイプ）、Slater-Kosterパラメータ、およびオンサイトエネルギーはすべて、Pythonスクリプト内の `main` 関数でハードコードされています。

### 4) 実行後に生成される出力ファイル

このプログラムは、実行後に**いかなるファイルも生成しません**。
計算結果（エネルギー準位と軌道成分）はすべて標準出力（コンソール）に表示されます。

### 5) コマンドラインでの使用例 (Usage)

プログラムはコマンドライン引数を取らず、直接実行するだけで動作します。

```bash
python tb_harrison.py
```