hecmwST_matrixのメンバーALU(hecMAT%ALU)の削除提案
概要
hecmwST_matrix 型のメンバー ALU は、現在プロジェクト内で実質的に使用されていないため、削除を提案します。
調査結果
hecmwST_matrix%ALU の参照箇所をプロジェクト全体で検索した結果、以下の7箇所のみが該当しました。
| ファイル | 行 | 操作 |
|---|---|---|
hecmw1/src/common/hecmw_util_f.F90 |
L446 | 型定義(pointer メンバー宣言) |
hecmw1/src/common/hecmw_util_f.F90 |
L817 | nullify |
fistr1/src/lib/m_fstr.f90 |
L916 | allocate |
fistr1/src/lib/m_fstr.f90 |
L928 | ゼロ初期化(= 0.0d0) |
fistr1/src/lib/m_fstr.f90 |
L977-978 | deallocate |
hecmw1/src/solver/matrix/hecmw_matrix_misc.f90 |
L214 | deallocate |
hecmw1/src/solver/matrix/hecmw_matrix_misc.f90 |
L822 | ポインタコピー(dest%ALU => src%ALU) |
すべての参照がメモリ管理(allocate / deallocate / nullify / ポインタコピー)のみであり、計算処理での読み書きは一切行われていません。
注:
hecmw1/src/solver/precond/bilu/配下のプリコンディショナモジュールにもローカル変数ALUが存在しますが、これらはhecmwST_matrix%ALUとは無関係なモジュールローカル変数・サブルーチン引数です。
問題点
-
NDOF*NDOF*Nサイズの配列が確保・ゼロ初期化された後、一度も参照されずに解放されており、メモリの無駄遣いが発生しています。 - 型定義に不要なメンバーが残っていることで、コードの可読性・保守性が低下しています。
提案内容
以下の変更を段階的に行うことを提案します。
-
hecmwST_matrixの型定義からALUメンバーを削除 - 関連するすべての
allocate/deallocate/nullify/ ポインタコピー処理を削除
対象ファイル
hecmw1/src/common/hecmw_util_f.F90fistr1/src/lib/m_fstr.f90hecmw1/src/solver/matrix/hecmw_matrix_misc.f90
備考
- C/C++ 側には
hecmwST_matrixの構造体定義自体が存在せず、影響はありません。 - 外部プラグインやユーザーコードで
hecMAT%ALUを参照している可能性がある場合は、非推奨期間を設けることも検討してください。