namespace CommonMP.HYMCO.Ocean.McOceanSampleModels
{
// ファクトリークラス
public class MzOceanSmplFactory :
McBasicModelFactoryBase
{
//
●演算モデル生成
public override
McCalModel CreateCalModel( HySObjectKind csModelKind
)
{
McCalModel csCalModel =
null;
if( csModelKind == ………
………
else if (csModelKind == MzOceanBaseDefine.DETRITUS_KIND)
{ //
デトリタス
csCalModel = new
MzOceanDetritus();
}
………
return cCalModel;
}
//
●要素内演算中データクラス生成
public
override McCalInfo CreateCalInfo( HySObjectKind csModelKind
)
{
McCalInfo csCalInfoData =
null;
if( csModelKind == ………
………
else if (csModelKind == MzOceanBaseDefine.DETRITUS_KIND)
{ //
デトリタス
csCalInfoData = new
MzOceanDetritusCalInfo();
}
………
return csCalInfoData ;
}
//
●要素モデルに対する変数値、入出力データの設定等のプロパティ情報生成
public override McCellModelPropertyIF CreateModelProperty(HySID
csLibraryID, HySObjectKind
csModelKind)
{
McCellModelPropertyInfo csRtnCellPrptyDt = new
McCellModelPropertyInfo(csLibraryID, csModelKind);
if(
csModelKind == ………
………
else if (csModelKind == MzOceanBaseDefine.DETRITUS_KIND)
{ //
デトリタス
……… 各種プロパティ情報の設定
……
csRtnCellPrptyDt.AddInfoType("m_AggregationRatio10", "凝集率(<10μm)",
McDefine.ValKind.DOUBLE);
csRtnCellPrptyDt.SetInfo("m_AggregationRatio10",
0.05);
……… 各種プロパティ情報の設定
……
// 受信可能なパターンを設定
{
// 排泄 or 死
McTranInfoPattern csTrnPtn = MzFlowObjBaseFactory.CreateFlow(MzOceanBaseDefine.EXCRETION_DEATH,
csModelKind);
csRtnCellPrptyDt.AddReceivePattern(csTrnPtn);
//
送信可能パターンの追加
}
// 送信パターンの設定
{
//
被捕食
McTranInfoPattern csTrnPtn = MzFlowObjBaseFactory.CreateFlow(MzOceanBaseDefine.PREDATION,
csModelKind);
csRtnCellPrptyDt.AddSendPattern(csTrnPtn);
//
送信可能パターンの追加
//
腐敗・分解(細菌がデトリタスを分解する)
csTrnPtn = MzFlowObjBaseFactory.CreateFlow(MzOceanBaseDefine.DECOMPOSE,
csModelKind);
csRtnCellPrptyDt.AddSendPattern(csTrnPtn);
//
受信可能パターンの追加
}
}
………
return csRtnCellPrptyDt ;
}
//
● 要素モデル初期値データ生成
public
override McPropertyInfoRoot CreateModelInitialInfo(HySID csLibraryID,
HySObjectKind csModelKind)
{
McInitialInfo csRtnDt = new McInitialInfo(csLibraryID,
csModelKind);
if( csModelKind == ………
………
else if (csModelKind == MzOceanBaseDefine.DETRITUS_KIND)
{
//
デトリタス
this.SetInitMass(ref csRtnDt, 1E-6, 1E-9, 1E-9, 0, 0, 0,
0);
csRtnDt.AddInfoType("m_dDtrtsSize", "デトリタスサイズ[mm]",
McDefine.ValKind.DOUBLE);
csRtnDt.SetInfo("m_dDtrtsSize",
30.0E-3);
csRtnDt.AddInfoType("m_dDcty", "密度",
McDefine.ValKind.DOUBLE);
csRtnDt.SetInfo("m_dDcty",
1.2);
}
………
return csRtnDt ;
}
//
● 作成した要素モデルをライブラリ管理画面に表示するための情報を生成する。
public override HySDataLinkedList
GetCalModelInfoList()
{
McModelInfo csModelInfo =
null;
…………
//--
デトリタス
csModelInfo = new McModelInfo
(
(HySID)this.GetFactoryID(),
McModelLibraryDefine.DIVISION_CALCULATION_MODEL, // <--
演算モデルは、必ずこの値にして下さい(LibraryCategoryXML.xmlに記述されている)
new HySObjectKind("CAL_OCEAN_MODELS"), // LibraryCategoryXML.xmlに記述されている
<Category>タグ内のIDに対応します。
MzOceanBaseDefine.DETRITUS_KIND, //
モデルの識別子
MzOceanBaseDefine.DETRITUS_NAME //
モデルの名称
);
csModelInfo.SetVersionInf("Ver1.0
");
csModelInfo.SetSummaryInf("デトリタス(Detritus) 死骸、糞等
");
csModelInfo.SetCreatorInf("S.H.");
csModelInfo.SetIconName(@"Ocean\Detritus02");
csModelInfo.SetManualFileName(@".\Ocean\SampleModelExplanation.pdf"); //
<-- モデル解説書
m_csCalModelInforList.AddLast(csModelInfo);
//--
return
m_csCalModelInforList;
}
} // end of
class
} |