6章 再び要素モデルの作成
6.3 上位要素モデルからの受信データの取り扱いに関する補足事項
(3)
KinematicWave河道要素モデルを 横からの入力も受信できるように改造する例
これまで作成してきたKinematicWave河道要素モデルは 上流端からの入力だけに対応していました。 そこで、本ページでは当河道要素モデルに対して、2種類の横からの入力が可能なように 改修します。
演習用の要素モデル作成プロジェクト「MyExerciseModel」に対して、これまでと同様の方法で、要素モデル「MyKinematicLateralModel」と 演算データ「MyKinematicLateralCalInfo」を追加し、スタブを作成します。 要素のモデル内処理の実装のために、すでに製作済みの「MyKinematicWaveModel」と「MyKinematicWaveCalInfo」の内容をそのままコピーしておきます(名称のみ変更)。 こうすることで、横入力処理追加のためには、何を改修すべきかを明確にすることができます。
以降、新しく作成した要素モデル「MyKinematicLateralModel」と 演算データ「MyKinematicLateralCalInfo」を元にして、それに対する改修部分について説明する事にします。 ディファインファイルクラス(MyExerciseModelDefine)内に 新しい要素モデルの 種別と名称を定義しておきます。
///
<summary>演習:KinematicWaveモデル種別</summary> public static readonly HySObjectKind MY_KINEMATIC_LATERAL_MODEL_KIND = new HySObjectKind("MyKinematicLateralWaveModel"); /// <summary>演習:KinematicWaveモデル名称</summary> public static readonly HySString MY_KINEMATIC_LATERAL_MODEL_NAME = new HySString("演習:横入力有りKinematicWave河道モデル"); |
///
<summary>ポイント入力横入力端入力</summary> public static readonly HySID IN_PATTERN_D0_LATERAL = new HySID("LateralDim0In"); |
横入力1用 : D0Sample01SideIn.xml <?xml version="1.0" encoding="UTF-8"?> <CellIDMngFile> <CellManageTable Kind="McModelCellCorrespondenceInf" FileName="ParameterData\D0Sample01SideIn.xml"> <TranCell IdxD1="0"> <UpperModelCell IdxD1="0" /> <LowerModelCell IdxD1="5" /> </TranCell> </CellManageTable> </CellIDMngFile> 横入力2用 : D0Sample02SideIn.xml <?xml version="1.0" encoding="UTF-8"?> <CellIDMngFile> <CellManageTable Kind="McModelCellCorrespondenceInf" FileName="ParameterData\D0Sample02SideIn.xml"> <TranCell IdxD1="0"> <UpperModelCell IdxD1="0" /> <LowerModelCell IdxD1="24" /> </TranCell> </CellManageTable> </CellIDMngFile> 横入力3用 : D0Sample03SideIn.xml <?xml version="1.0" encoding="UTF-8"?> <CellIDMngFile> <CellManageTable Kind="McModelCellCorrespondenceInf" FileName="ParameterData\D0Sample03SideIn.xml"> <TranCell IdxD1="0"> <UpperModelCell IdxD1="0" /> <LowerModelCell IdxD1="42" /> </TranCell> </CellManageTable> </CellIDMngFile> |
public class MyKinematicLateralModel :
McForecastModelBase
McModelCellCorrespondenceInf csCellMng = null; //
上下要素モデル対応表
//
ポイント時系列であるため接続セルは1個である。 またこのモデルは1次元で受けるので2,3次元は不要 for
(long lLp = 0; lLp < lInputDataNum;
lLp++) if
(MyExerciseModelDefine.IN_PATTERN_D0_LATERAL.Equals(csRcvPttnID)
==
true)
dLateralQin[Dim0InLowerDim1[lLp]] +=
csCell.m_dData[lReadIdxQ]; // Dim0InLowerDim1[lLp]には対応すべき 下位のセル番号が入っている public override bool
SetProperty(McCellModelPropertyIF
csCellMdlPropertyInfo) //
プロパティ設定 |
///
<summary>2次元入力横入力端入力</summary> public static readonly HySID IN_PATTERN_D2_LATERAL = new HySID("Dim2_Lateral_In"); |
<?xml version="1.0"
encoding="UTF-8"?> <CellIDMngFile> <CellManageTable Kind="McModelCellCorrespondenceInf" FileName="ParameterData\D2SampleSideIn.xml"> <TranCell IdxD1="0"> <UpperModelCell IdxD1="3" IdxD2="2" /> <LowerModelCell IdxD1="5" /> </TranCell> <TranCell IdxD1="1"> <UpperModelCell IdxD1="5" IdxD2="8" /> <LowerModelCell IdxD1="12" /> </TranCell> <TranCell IdxD1="2"> <UpperModelCell IdxD1="10" IdxD2="14" /> <LowerModelCell IdxD1="24" /> </TranCell> <TranCell IdxD1="3"> <UpperModelCell IdxD1="14" IdxD2="18" /> <LowerModelCell IdxD1="28" /> </TranCell> <TranCell IdxD1="4"> <UpperModelCell IdxD1="22" IdxD2="21" /> <LowerModelCell IdxD1="33" /> </TranCell> <TranCell IdxD1="5"> <UpperModelCell IdxD1="27" IdxD2="25" /> <LowerModelCell IdxD1="38" /> </TranCell> <TranCell IdxD1="6"> <UpperModelCell IdxD1="32" IdxD2="27" /> <LowerModelCell IdxD1="43" /> </TranCell> </CellManageTable> </CellIDMngFile> |
public class MyKinematicLateralModel :
McForecastModelBase
McModelCellCorrespondenceInf csCellMng = null; //
上下要素モデル対応表
for
(long lLp = 0; lLp < lInputDataNum;
lLp++) if
(MyExerciseModelDefine.IN_PATTERN_D0_LATERAL.Equals(csRcvPttnID)
==
true)
dLateralQin[Dim0InLowerDim1[lLp]] +=
csCell.m_dData[lReadIdxQ]; // Dim0InLowerDim1[lLp]には対応すべき 下位のセル番号が入っている public override bool
SetProperty(McCellModelPropertyIF
csCellMdlPropertyInfo) //
プロパティ設定 |
ここで作成した要素モデル開発プロジェクト(Ex18_CommonMP.lzh)
ダウンロードしたら解凍して生成されたフォルダー「MyExerciseModel」を \CommonMP\Source\HYMCO\OptionImpl\ 下に置きます。
解凍して生成されたプロジェクト:MyExerciseModel.csproj を ディバッグ用ソリューションに追加し、スタートアッププロジェクト(TestModelDeveloperMainExp)の依存関係に追加します。 また、 解凍して生成された、「MyExerciseStep1」フォルダーを \CommonMP\CommonMPData\ 下に置きます。
初版:2013/09/12 |