6章 再び要素モデルの作成
6.2 色々な要素モデル
(堰モデル)
堰の流量の公式(JIS B 8302-1990)を用いて、流入量:Qin
がある時の越流水位:hを求める要素モデルを作成します。
Qin =
Qout ・・・・・・・・・・・・・・@
Qout = K*b*h^(3/2)
・・・・・・・A
ここに、K = 107.1 + (0.177/h) + 14.2*(h/D) -
25.7*((B-b)*h/(D*B))^(1/2) +
2.04*(B/D)^(1/2)
堰が蓄える水量は比較的小さく 20分以内(要素モデルの儺を1200
秒)に 流入量と流出量が同じになるとします。
ここで制作する要素モデルは この時の 越流水位:h の値を求めます。
要素モデルは、流入量に対して、定常状態となった時の越流水位を求めるので、現況計算型(McStateCalModelBase)を用います。
また、上記の@、Aを解くために、ニュートン法を用います。
これまで要素モデルを作成したと同様に堰モデルの種別と名称のディファイン値をMyExerciseModelDefineクラス内に定義します。
public class
MyExerciseModelDefine |
<スタブ作成>
(1)型紙(MyHydrologicalModel、MyHydrologicalCalInfo)をコピーして要素モデルクラスと演算データクラスファイルを作成します。
(2)コピーして作成した2つのファイルを プロジェクトに追加します。
(3)追加した2つのファイルを開き namespace 名称を DLLの namespace 名に一致させます。
(4)要素モデルクラスと演算データクラスの名称を変更します。
(5)ファクトリークラスの下記メソッドに 新しい要素モデルに関連するクラスのインスタンス生成処理を追加します。
@CreateCalModel メソッド
ACreateCalInfo メソッド
BCreateModelProperty メソッド
CCreateModelInitialInfo メソッド
DGetCalModelInfoList メソッド
<演算データクラス内メソッドの実装>
(6)メンバー変数追加
(7)CopyInfo メソッド実装
<要素モデルクラス内メソッドの実装>
(8)プロパティ設定、チェックメソッドの実装
@SetProperty メソッド
AReceiveConnectionCheck、SendConnectionCheck メソッド
(9)初期化(Initialize) メソッドの実装
(10)計算に必要なメソッド実装
@Calculate メソッド
ADataFusion メソッド
となります。
新しく作成するクラスは型紙クラスをコピーして作成します。
MyHydraulicsModel.cs
→ MyTankModel.cs
MyHydraulicsCalInfo.cs → MyTankCalInfo.cs
作成したソースをプロジェクトに追加し、ネームスペースとクラス名を変更します。
namespace CommonMP.HYMCO.OptionImpl.MyExerciseModelLIB { public class MySluiceModel : McStateCalModelBase { |
namespace CommonMP.HYMCO.OptionImpl.MyExerciseModelLIB { public class MySluiceCalInfo : McCalInfo { |
public class MyExerciseModelFactory :
McBasicModelFactoryBase m_csCalModelInforList.AddLast(csModelInfo); // 演算モデル情報の追加 |
[Serializable] public double m_dB=5.0; //
堰の幅 。。。。。。 |
public class MySluiceModel :
McStateCalModelBase
csInDt.GetInfo("dh", ref
m_csMyInf.m_dH); //
プロパティ設定
csPrptyInfo.GetInfo("N", ref
m_csMyInf.m_lNum); for
(long lLp = 0; lLp < lInputDataNum;
lLp++)
//
セル内の0番目の情報を取得します
double dQf =
0.0; if
(iLp < m_csMyInf.m_lNum -
1) |
ここで作成した要素モデル開発プロジェクト(Ex15_CommonMP.lzh)
ダウンロードしたら解凍して生成されたフォルダー「MyExerciseModel」を \CommonMP\Source\HYMCO\OptionImpl\ 下に置きます。
解凍して生成されたプロジェクト:MyExerciseModel.csproj を ディバッグ用ソリューションに追加し、スタートアッププロジェクト(TestModelDeveloperMainExp)の依存関係に追加します。
また、 解凍して生成された、「MyExerciseStep1」フォルダーを \CommonMP\CommonMPData\ 下に置きます。
初版:2013/08/18 |