fstr_param は global 変数にすべきか

module m_fstr では type fstr_param が定義され、モジュール変数として fstrPR が宣言されています。

  !> GLOBAL VARIABLE INITIALIZED IN FSTR_SETUP
  type( fstr_param ),target :: fstrPR

しかしながら、使われ方は方針がまちまちで混乱があります。

  • サブルーチンの引数に fstrPR を与えている
    • use m_fstr したうえで引数で同じ名前を使っているものもあり、指すものが結局は同じであっても混乱する
  • サブルーチンの引数に与えずにモジュール変数を使っている
  • サブルーチンの引数に fstrPARAM という名前を使っている
    • しかしながら、サブルーチンの中ではモジュール変数の fstrPR を使っているものもある

構造体の意味としては solution_type や nlgeom などをメンバに含むため、プログラムのグローバル変数というよりも解析固有のパラメータを集めたものと考えられます。

提案としては、

  • モジュール m_fstr の変数 fstrPR は廃止する
  • 構造体 fstr_solid などと同様にモジュール m_fstr_main で生成する
  • サブルーチンの引数に明示する

と考えていますが、いかがでしょうか。ご意見をお聞かせください。