Fortran 77 コードを C++ に変換していますが、Fortran 77 は共通ブロックを使用しています。共通ブロックを構造体に置き換えようとしています。構造体に関数からの値を入力し、メインで使用するために両方を呼び出します。現時点では、私のコードは次のようになります。
#include <iostream>
#include <cmath>
using namespace std;
// data_list
struct data_list {
double g, dw, Vel, M, dt, N;
int Ioutp1, Ioutp2;
} values;
void data (data_list& val) {
val.g = 9.80665;
val.dw = 0.05;
val.Vel = 20.0;
val.M = 128;
val.dt = 0.05;
val.N = 4000;
val.Ioutp1 = 1;
val.Ioutp2 = 1;
}
void Pierson_Moskowitz(data_list& val) {
/*
* Calculation of properties of Pierson_Moskowitz Spectrum
*/
double Ug, Hs, A, B, Std;
cout << values.Vel << "\t\t" << values.g;
Ug = values.Vel/values.g;
cout << Ug << endl;
}
int main() {
data(values);
//float dw = values.dw = 0.05;
cout << values.dw << endl;
}
現時点では、私のメインは値を出力する以外は何もしていないため、これは単なるテストです。私が欲しいのは、data
関数で値が与えられた変数をコード全体で使用できるようにすることです。現時点で迷っているのは以下の2点です。
1) 私のPierson-Moskowitz
関数は Ug に対して何も出力しません。なぜだかわかりませんか?2)その機能が必要かどうかさえわかりませんdata
。基本的に、私が翻訳している Fortran コードはサブルーチンを使用して、共通ブロック内の変数に値を割り当てます。構造体と関数を使用して値を入力することで、同様のことをしようとしています。
このコードは非常に短いので、すべてを 1 つのファイルにまとめる予定です。どんな助けでも本当に感謝しています!!