```markdown
# BondingEnergy-NoRelax.pl Documentation

## 1. 主な機能や目的
このPerlスクリプトは、結晶構造ファイル（CIFファイル）を読み込み、原子間の結合エネルギーを計算するためのものです。特に、酸素（O）原子と他の金属原子（In、Ga、Zn）との間の結合エネルギーを最適化し、観測された形成エネルギーと計算された結合エネルギーの差を最小化することを目的としています。

## 2. 他のプログラムからのimport方法
このスクリプトはPerlのスクリプトであり、モジュールとしてimportすることを意図していません。スクリプトとして直接実行することを前提としています。

## 3. 必要な非標準ライブラリとインストールコマンドとインストール方法
このスクリプトは以下の非標準ライブラリを使用しています：
- `Utils`
- `JFile`
- `Crystal::CIF`
- `Crystal::Crystal`
- `Sci::Optimize`

これらのライブラリはCPANからインストールできる可能性がありますが、カスタムライブラリである可能性もあります。CPANからインストールする場合のコマンドは以下の通りです：

```bash
cpan install Utils
cpan install JFile
cpan install Crystal::CIF
cpan install Crystal::Crystal
cpan install Sci::Optimize
```

ただし、これらのモジュールがCPANに存在しない場合、ソースコードから手動でインストールする必要があります。

## 4. importできる変数と関数

### 変数
このスクリプトはモジュールとしてのimportを意図していないため、外部から直接アクセス可能な変数はありません。

### 関数

#### `CalBondEnergy`
- **動作**: 原子間距離に基づいて結合エネルギーを計算します。
- **引数**:
  - `$d`: 原子間距離
  - `$e0`: 結合エネルギーの定数項
  - `$e1`: 結合エネルギーの一次項の係数
  - `$e2`: 結合エネルギーの二次項の係数
- **戻り値**: 計算された結合エネルギー

#### `CalS2`
- **動作**: 現在のパラメータセットに基づいて、観測された形成エネルギーと計算された結合エネルギーの差の二乗和を計算します。
- **引数**:
  - `$pVars`: 最適化パラメータの配列リファレンス
  - `$iPrintLevel`: 出力の詳細レベル
- **戻り値**: 差の二乗和

## 5. main scriptとして実行したときの動作
このスクリプトをmain scriptとして実行すると、以下の処理が行われます：

1. CIFファイルを読み込み、結晶構造を取得します。
2. 結晶内の原子間の距離を計算し、特定の距離以下の原子ペアをリスト化します。
3. 観測された形成エネルギーを読み込みます。
4. 結合エネルギーの最適化を行い、最適化されたパラメータを用いて結合エネルギーを計算します。
5. 観測された形成エネルギーと計算された結合エネルギーの差を出力し、結果をCSVファイルに保存します。
6. 各原子種に対する平均結合距離と結合エネルギーを出力します。
7. 最終的な差の二乗和とその平方根を出力します。
```