まず、共通のブロックを使用することは、Fortran(および一般的なプログラミング)では悪い考えであることを私は知っています。しかし、私は他の誰かのコードを更新しているので、動作することがわかっているものを台無しにしたくありません。
第二に、私はこれよりも具体的な何かを投稿する必要があることを知っています。これを小さなものに減らす方法を知っていれば、私はそうするでしょう。ただし、2500行のコードを理解しているとは思わないので、具体的な例を投稿することはできません。
それを念頭に置いて、私は自分の問題を説明することはできません。
他の人のFortranコードを更新しています。その男は、いくつかの共通ブロックを使用してグローバル変数を設定しました。どういうわけか、そのようなブロックを使用する関数を呼び出すと、その値はすべて0になります。以前に誰かがそれに遭遇したことがありますか?なぜこれが起こるのか誰かが知っていますか?これを再現する方法は?これを確認するための開始点があれば役立ちます。
その価値のために、前述の共通ブロックは次のように宣言されます
common /set/ block,x,y,z,llx,lly,llz,ilx,ily,ilz,third,third2
block
4D配列です。x
、、y
およびz
は1D配列です。llx
、、、lly
およびllz
はdouble precision
タイプです。残りはinteger
タイプです。
共通ブロックは、関数が呼び出される前にメインプログラムで宣言および初期化されます。