3章 CommonMPの要素モデルを作成する
3.5 計算結果を 他の要素モデルへ送る
3.5.4 情報送信に必要なメソッド等
要素モデルの情報送信に関連する処理は以下の通りです。
@送信パターンの設定
Factoryクラス: モデルプロパティ情報設定メソッド( CreateModelProperty )
A送信接続チェック
要素モデルクラス: 出力側の接続情報チェックメソッド( SendConnectionCheck )
B要素モデル演算結果を外部のエレメントに対して公開する
要素モデルクラス: 出力メソッド( DataFusion )
@「送信パターンの設定」については既に前頁に示しました。
A「送信接続チェック」は、要素モデルの接続線のチェックを行う機能です。
例えば、次のようなチェックを行います。
・要素モデルが出力する送信パターンと接続線に設定されている伝送情報の型式が一致しているか等を調べて、エラーや警告を出す。
・要素モデルに1本も接続線が存在しない時に エラーや警告を出す。
B要素モデルの演算結果の出力
送信パターンに従って、演算結果を伝送接続線に設定します。
A、Bの処理で使用するメソッドや方法を以下に纏めてみます。
●接続線のインスタンスは、 メソッドの引数で与えられます。
protected
override bool SendConnectionCheck(ref McStructErrorInfo csErrorInf, long lOutputDataNum, McSendCellDataIF[]
csOutputCellData)
protected override long DataFusion(long lOutputDataNum, ref McSendCellDataIF[] csOutputCellData)
long
lOutputDataNum : 要素モデルに接続されている 出力側の接続線の数
McSendCellDataIF[]
csOutputCellData : 出力側の接続線のインスタンス配列
(注意)
ここで、csOutputCellData を 「接続線のインスタンス」と呼んでいますが、本当はデータクラスです。 しかしながら、説明としては、接続線として扱ったほうが解りやすいので、敢えて「接続線」として説明します。
●接続線に設定されている「送信パターン」を知る方法
接続線に設定されている送信パターンIDを取得します。HySID
クラスで取得されます。
long lIdx=0; // 調べる接続線 HySID csOutPtnID = csOutputCellData[lIdx].GetSendPatternID(); |
long lIdx=0; // 調べる接続線 HySObjectKind csCellType = csOutputCellData[lIdx].GetTranInfoKind(); |
McTranInfoDefine.SINGLE_CELL_SERIAL
McTranInfoDefine.D1_CELL_SERIAL
McTranInfoDefine.D2_CELL_SERIAL
McTranInfoDefine.D3_CELL_SERIAL
等になります。
●1レコード内に配置されるセルの配列情報とセル内のデータの数を取得する方法
セル配列数と、セル内データ数を取得します。
long lDimNum = 0; //データの次元数 |
セル型データによる伝送仕様規定の限界
データをセルに入れることで、伝送情報を規定することが可能で 且つ、自由度をもたせる事が可能である事を示しました。 しかし、セル型のデータ伝送にも限界があります。 例えば、次の様な例を考えてみます。
送信側も受信側もセル内には、「流量:Q」、「水位:H」の情報が入り、セルは1次元配列であると共通の認識を持っています。
しかし、送信側は セル配列に対して 河道の上流側から情報を格納していますが、 受信側では、 下流側から情報が格納されていると認識しています。
現在のCommonMPでは セルへの格納順序までは、規定していません。 また、配列の格納順序の違いを吸収する機能も持っていません。
おそらく、何らかの規格が必要になるものと思われます。
例えば、2次元配列を使用する場合には 以下の順でループのネストを行う
★
for( 幅方向)
{
for( 長さ方向)
{
}
}
★
for( 高さ方向 )
{
for( 長さ方向 )
{
}
}
★
for( 高さ方向 )
{
for( 幅方向 )
{
}
}
例えば3次元の配列を使用する場合には 以下の順でループのネストを行う
for( 高さ方向 )
{
for( 幅方向 )
{
for( 長さ方向 )
{
}
}}
}
次の頁から 先に作成した要素モデル「MyDynamicWaveModel」の計算結果を 外部に出力できるようにします。
初版:2013/06/23 |