いくつかのシミュレーション コードを結合する作業を行っています。現在は 3 つのコードがありますが、将来的にはさらに増える可能性があります。次の図で情報交換を考えることができます。
sim1 <====> sim_main <=====> sim2
情報交換は、両側の限られたインターフェースを介して行われます。
私は最近、sim1 の共通ブロックが sim2 のサブルーチンと同じ名前を持ち、セグメンテーション違反を引き起こしている問題を診断しました。簡単な解決策は、sim1 の共通ブロックの名前を変更することですが、それは理想的ではありません。なぜなら、sim1 の開発者が sim1-2.0 を発表した場合、その共通ブロックの名前を掘り下げて再度変更する必要があるからです。インターフェイスは比較的限られているため、より良い解決策は単純なモジュールを作成することではないかと考えています。
module sim2_mod
contains
include "sim2.f90"
end
これにより、sim2 のすべてのルーチンが sim2_mod 名前空間に配置さuse
れ、制限付きで使用できるようになります。これは良い考えですか?悪い考えですか?これが機能しない状況はありますか? sim2 で使用される一般的なブロックにはまだグローバル スコープがありますか?