質問

.fファイルには、これを行うコードがあります:

real Bob, avar
...
avar = Bob( 8.3 )
...

Bobは関数のように見えますが、ファイルの先頭で実数として宣言されています。

次に、ボブへの参照を持つ.dファイルがあります。また、avarは、補間されるように見える値を保持することを知っています。問題は、補間が常に正しいとは限らないことです。

Bob    John      35
-17.     -16.     -15.     -14.     -13.     -12.     -11.     -10.     -9.      -8.  
-7.      -6.      -5.      -4.      -3.      -2.      -1.       0.       1.       2.5  
 3.       4.       5.       6.5      7.       8.       9.       10.      11.      12.  
 13.      14.      15.      16.      17.  
 0.001    0.001    0.041    0.098    0.155    0.213    0.27     0.327    0.384    0.441   
 0.499    0.556    0.613    0.670    0.728    0.785    0.844    0.904    0.965    1.058   
 1.089    1.152    1.216    1.314    1.347    1.413    1.479    1.543    1.609    1.670   
 1.733    1.799    1.860    1.925    1.937 

これはすべてレガシーコードです。私はそれを書きませんでした。私はそれを修正しようとしています。私の質問は次のもので構成されています。

  

これは何をしているのですか? .dファイルとは何ですか?

補間しようとしていると思いますが、FORTRAN 77で(この方法で)これを実行できるとは思いませんでした。

役に立ちましたか?

解決 3

混乱をおかけして申し訳ありません。その答えは、システムが補間を行うFORTRANプログラムに独自のマクロcを使用していることです。これはメイクファイルで発生します。私はいくつかのあいまいなドキュメントを見て見つけました。ご意見をお寄せいただきありがとうございます。それの簡潔さのために再びすみません。私は難しくなろうとしていませんでした。私も見たもので私を混乱させました。別の会社から購入した30年前のレガシーコードを扱うのは難しい場合があります。私はFORTRANが初めてなので、見慣れない言語機能のように見えるはずの何かを見ていなかったと思いました。愚かだ。深く掘り下げることになりました。学んだ教訓。

他のヒント

ボブは関数であり、実際の値8.3が渡され、avarに格納されている実数を返すように見えます。ただし、投稿したコードから収集できるのはそれだけです。

.dファイルには、ほぼ線形のデータが含まれているように見えます。実験データのように見えます。 35はあなたが持っているポイントの数であり、x、yの順になります。

ボブとジョンは、ある種の文字列マーカー、または識別子のようです。それらはおそらくコードのどこかで使用され、データをどう処理するか、またはそれらが表すデータの種類を決定します。

Bobは関数のようです。関数を宣言するには2つの方法があることに注意してください。

real function foo(a)
    implicit none
    real, intent(in) :: a
    foo = 3.0+a
end function

program test
   implicit none
   real foo, bar, a, b
   bar(b) = b+5.0

   a=foo(5.3)
   print *, a, bar(2.3)
end program

1つは明示的なケース(foo)で、関数自体として指定された変数に代入することにより値を返します。 もう1つのケースは、「暗黙的」です。 (正式名称はわかりません)、バーを参照してください。それを" array"として宣言しますそして、その振る舞いを表現します。めったに見られませんが、非常にコンパクトな文章です。

.dファイルは、おそらく.datを短縮するためのいくつかのドープ方法です。彼は余計に2人の余分な文字を入力するのが面倒でした。昔のプログラマーはそうでした。

「ボブ」というグラフに簡単な補間関数があるようです。は-17から+17にまたがるX軸で、「John」はは、ボブポイントに対応するY方向の値のセットです。 (32ポイントしか表示されないため、35が何であるかわかりません。)

コードは、X軸の値8.3に対して、Y方向の補間値を求めています。線形形式では、1.413と1.479の差の0.3倍を返します。高次の補間器でもかまいませんが、コードは表示されないため、最も単純なものと想定しています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top