BGSPの入力データの作成
BGSPでは入力データについて前処理プログラムを実行し、簡単な記号処理を用いてシステム状態方程式の関数表現を導出し、Fortran77言語で記述されたシミュレーションプログラムを作成します。なお、この項の記述は、おおむね[5]に従っています。
入力データは次の6種類から構成されています。
- プログラムPREに対する処理手順
- ボンドグラフ構造
- シミュレーション出力項
- ボンドグラフ素子の特性関数
- 時間パラメータ
- 積分変数初期値
[5]では細かに解説していますが、ここでは入力データの第1行を常に次のようにすると約束します。
BOND SYMBOL EXPR OUT DEFIN PARM INIT
- ボンドグラフ構造入力
- ボンドの総数:最大200個
- SE-素子、SF-素子、C-素子、I-素子、 R-素子、TF-素子、GY-素子、0-接点、1-接点、 各最大40個
- DE-素子、DF-素子 各最大40個
- シミュレーション出力項
- [出力項の名前定義]
- [出力項定義に必要なボンド特性値の指定]
- [出力項定義で変更可能なパラメータ値の指定]
- [出力項定義で用いる共通変数の指定]
- [出力項関数のフォートラン形式での定義]
- [出力項関数定義終了
- 出力項の名前は、"OP: "に続いて5文字以内の名前で指定します。入力形式は次のとおりです。ただし、コメント(50文字以内)は補足ですから、必ずしも入力する必要はありません。
- 出力項の関数定義に必要なボンドグラフ特性値は、"FB: "の後に"X"で始まる6文字以内の変数名を指定した後で、その変数が表す関数定義に必要なボンド特性値を記述します。ボンド特性値は前項と同様にボンド特性値を表すキーワードとボンド名から成ります。また、関数定義式の表現では、必要なボンド特性値を"X"で始まる変数名で表現します。入力形式は次のとおりです。コメント(50文字以内)は前項と同じく、ボンド特性値あるいは変数に対する補足説明であって、必ずしもつける必要はありません。
- パラメータ変数は、値を変えてシミュレーションを実行したパラメータを意味します。"PA: "に続いて"P"で始まる6文字以内の変数名(PAは除きます。)で、出力項の定義式中で用いたいパラメータ変数として指定した後、その設定値をD15.8の形式で入力します。出力関数定義式表現では、"P"で始まる変数名を用います。入力形式はつぎのとおりです。ここでコメント(45文字以内)はパラメータに対する補足説明であり、必ずしもつける必要はありません。
- 共通変数とは,他の出力項定義あるいは特性関数定義で得られるある変数の値を参照したり、引用したいときにその値を引渡すために用いる変数をいいます。"RV: "に引き続いて"XX"で始まる6文字以内の変数名で定義します。関数定義式の表現では、指定した"XX"で始まる変数名で表現します。入力形式は次のとおりです。コメント(50文字以内)は前項と同じく、ボンド特性値あるいは変数に対する補足説明であって、必ずしもつける必要はありません。
- 出力項の関数定義式はFortran77の文法に従い、記述します。ただし、以下の点に注意する必要があります。
- 1行72桁のカードイメージに従い、固定形式のフォーマットで書きます。すなわち、、最初の1桁にCを挿入するとコメント行を意味し、2〜5桁は行番号を表します。6桁目に文字をいれると継続行を意味し、7〜72桁が実行文を表します。
- 行番号をもいいる場合は1000以上の番号にしてください。
- 配列や文字型変数は使用できません。実数型変数を用いる場合には、変数名が"A"で始まる変数を用いてください。他の変数名を用いた場合には、必ずしも精度は保証されません。
- 出力関数の値は"OP="の形で、変数OPに最終的な出力値を代入します。
- 時間を表す変数は"T"で表現します。
- 出力項の定義完了を示すため、、"EOD"と書きます。
- ボンドグラフ特性関数
- [ボンドグラフ素子名]
- [素子特性関数定義に必要なボンド特性値の指定]
- [素子特性関数定義で変更可能なパラメータ値の指定]
- [素子特性関数定義で用いる共通変数の指定]
- [素子特性関数のFortran77による表現]
- [素子特性関数定義終了]
- 素子特性関数のFortran77による表現では、各素子毎にその素子の因果関係に従って、変数Zの関数として次の表に示す代入文で特性値を与えなければなりません。
表1特性関数定義式の形式 素子 代入文 左辺変数の意味 変数Zの意味 SE E= エフォート (無意味) SF F= フロー (無意味) R R= エフォート フロー フロー エフォート C C= エフォート ディスプレースメント I L= フロー モーメンタム TF TF= 変換比 (無意味) GY GY= 変換比 (無意味) 表2 ボンドグラフの特性関数 素子 特性関数 SE-素子 (1) SF-素子 (2) R-素子 (3)(4) C-素子 (4) I-素子 (5) TF-素子 (7)(8) GY-素子 (9)(10) - 素子特性関数定義終了を示すために、"EOD"を新しい行の先頭に書きます。 すべての特性関数の定義終了時には、データの入力終了を示す"/"を新たな行に挿入します。
- 時間パラメータ
- 積分変数初期値
ボンドグラフ構造は、ボンドグラフ素子とそれに接続するボンドの関係で表現します。入力形式はつぎのとおりです。
[素子名] [接続ボンド1] ・・・[接続ボンドN]
1・・・・・・8・・・・・14・・・・20・・・・・26・・・・
ここで、下側の"・・・i・・・"の表記は、上側の対応するデータを書き始める先頭カラムの位置がiカラム目であることを示します。カラム指定は非常に厳格ですので、間違えるとエラーになります。コード作成には"秀丸"、"サクラエディタ"などのカラム位置が明示されるテキストエディターが便利です。
ボンドグラフ素子名は素子の種類を表すキーワード(2文字)と各素子の固有名である識別子(4文字以内)からなり、ボンドは各ボンドを識別するボンド名(4文字以内)で表されます。キーワードとそれが表すボンド素子は、つぎのとおりです。
SE エフォート源(圧力源や電圧源)
SF フロー源(流量源)
RE レジスタンス(損失や漏れ)
CI キャパシタンス(タンクや圧縮性)
II イナータンス(慣性や質量)
TF トランスフォーマー(シリンダーによる変換)
GY ジャイレータ(モータによる変換源)
ZJ 0-接点(管路の分岐)
OJ 1-接点(慣性部分での釣合)
前処理においてボンドのエフォートとフローの関数表現が導出できない場合には、ボンドグラフを分割しなければなりません。(これはBGSPにおける解法の特性上、ありうる事象になります。なお、例示をご覧ください。)この場合には、二つの仮想源素子:
DE 仮想エフォート源
DF 仮想フロー源
を付加して、ボンドグラフを部分ボンドグラフに分割します。なお、対となる組合せとなるDEとDFに対しては同じ識別子を付加しなければなりません。
各素子に対する接続ボンドの数とその表現する意味は、つぎのとおりです。
SE、SF、RE、CI、II、DE、DF:N=1
接続ボンド1:接続するボンド名
TF、GY:N=2
接続ボンド1:素子への入力ボンド名
接続ボンド2:素子からの出力ボンド名
ZJ、OJ:N=接続するボンドの数(≤10)
接続ボンドI:
-(接続ボンド名)I、もし入力であれば
(接続ボンド名)I、もし出力であれば
ボンドグラフ素子表現と入力データ記述の対応は次の表をご覧ください。
素子名 | 記号 | 入力データ |
---|---|---|
SE素子 | SEi j | |
SF素子 | SFi j | |
R素子 | REi j | |
C素子 | CIi j | |
I素子 | IIi j | |
TF素子 | TFi j k | |
GY素子 | GYi j k | |
0素子 | ZJ -i1 ・・・ -ik ik+1 ・・・im | |
1素子 | OJ -j1 ・・・ -j1 ・・・ -jk jk+1 ・・・jn | |
DE素子 | DEi j | |
DF素子 | DFi j | |
ボンドグラフ構造の入力終了時には、入力データの終了を示す"/"を新しい行の最初に挿入します。
入力可能なボンド数や素子の数はつぎのとおりです。
シミュレーションの計算結果として出力したい特性値を指定します。指定方法には2種類あり、(ボンド特性値)による場合と、(ユーザーが定義した特性値)による場合があります。
ボンド特性値はボンドの基本的特性値を表すキーワード(2文字)とボンドを識別するボンド名(4文字以内)で表現されます。キーワードとそれが表すボンド特性値は次のとおり6種類です。
EF エフォート(圧力、力など)
FL フロー(流量など)
PW パワー(エフォートとフローの積)
MN モーメンタム(エフォートの時間積分値)
DP ディスプレートメント(フローの積分値)
EN エネルギー(パワーの時間積分値)
ボンド名はボンドグラフ構造の定義で用いたボンド名を指定しなければなりません。
入力形式はつぎのとおりです。
BC: [出力項名] [ボンド特性値] (コメント)
1・・・5・・・・・11・・・・・・・・・21・・・・・
ここで、出力項名はシミュレーション結果を表示するときの項目名です。コメント(50文字以内)は出力項名に関する補足説明であり、必ずしもつける必要はありません。
ユーザーが新たに定義する出力項の場合は、つぎの関数定義形式に従って指定します。
OP: [出力項名] (コメント)
1・・・5・・・・・11・・・・・・
FB: [X変数名] [ボンド特性値] (コメント)
1・・・5・・・・・・12・・・・・・・・ 23・・・・
PA: [P変数名] [パラメータ値] (コメント)
1・・・5・・・・・・12・・・・・・・・ 28・・・・
RV: [XX変数名] (コメント)
1・・・5・・・・・・12・・・・・・・
出力項として指定できる個数は、ボンド特性値とユーザが定義した特性値をあわせて最大100とします。
なお、出力項や特性関数の定義で用いることのできる積分特性値(モーメンタム、ディスプレー素面と、エネルギーなど)は状態変数を含めて最大130個です。パラメータ変数として指定できる変数の数は最大300個で、共通変数として指定できる変数の数は最大100個です。
ボンドグラフ素子の特性関数の定義式も、前述のユーザ定義の特性値と同様に指定します。すなわち、関数定義の形式は次のようになります。
1のボンドグラフ素子名は、素子の種類を表すキーワード(2文字)と素子に固有な識別子(4文字)から成ります。ボンドグラフ構造定義で用いたボンド素子名です。入力形式は次のとおりです。
[ボンドグラフ素子名]
1・・・・
関数定義に必要な2.ボンド特性値、3.パラメータ値及び4.共通変数の指定方法は出力項関数定義の場合と同様になります。
シミュレーション計算実行に必要な時間パラメータであり、計算開始初期時刻、計算終了時刻、計算時間刻み幅、計算結果出力点数からなります。入力形式は3D15.8とI5であり、つぎのように1行に指定します。
[開始時刻] [終了時刻] [時間刻み] [出力点数]
1・・・・・・・・・19・・・・・・・37・・・・・・・・・55・・・・
ボンドグラフで表されるシステムの状態変数や時間積分値であるモーメンタム、ディスプレースメントやエネルギーの計算初期時刻における初期値を設定します。1変数ごとに1行ずつボンド特性値に続いて初期値をD15.8の形式で入力します。
[ボンド特性値] [初期値]
1・・・・・・・・8・・・・・・・・・・・
なお、全く指定しなければ、自動的にすべてのエネルギー変数や状態変数の初期値は0に設定されます。データ入力が完了すれば、最後に"/"を付けます。