|
namespace Yw.Hydro
|
{
|
/// <summary>
|
/// 解析辅助类
|
/// </summary>
|
public class ParseHelper
|
{
|
/// <summary>
|
///
|
/// </summary>
|
public static NetWork ToNetWork(Yw.Model.HydroModelInfo model)
|
{
|
if (model == null)
|
{
|
return default;
|
}
|
var netWork = new NetWork();
|
|
//连接节点
|
if (model.Junctions != null && model.Junctions.Count > 0)
|
{
|
foreach (var junction in model.Junctions)
|
{
|
var junctionModel = new JunctionModel();
|
junctionModel.ID = junction.Code;
|
junctionModel.Name = junction.Name;
|
junctionModel.Elev = (float)junction.Elev;
|
junctionModel.Demand = junction.Demand.HasValue ? (float)junction.Demand.Value : 0;
|
junctionModel.PatternID = junction.DemandPattern;
|
junctionModel.X = (float)junction.Position2d.X;
|
junctionModel.Y = (float)junction.Position2d.Y;
|
netWork.Nodes.Add(junctionModel);
|
}
|
}
|
|
//水库
|
if (model.Reservoirs != null && model.Reservoirs.Count > 0)
|
{
|
foreach (var reservoir in model.Reservoirs)
|
{
|
var reservoirModel = new ReservoisModel();
|
reservoirModel.ID = reservoir.Code;
|
reservoirModel.Name = reservoir.Name;
|
reservoirModel.Head = (float)reservoir.Head;
|
reservoirModel.PatternID = reservoir.HeadPattern;
|
reservoirModel.X = (float)reservoir.Position2d.X;
|
reservoirModel.Y = (float)reservoir.Position2d.Y;
|
netWork.Nodes.Add(reservoirModel);
|
}
|
}
|
|
//水池
|
if (model.Tanks != null && model.Tanks.Count > 0)
|
{
|
foreach (var tank in model.Tanks)
|
{
|
var tankModel = new TankModel();
|
tankModel.ID = tank.Code;
|
tankModel.Name = tank.Name;
|
tankModel.Elev = (float)tank.PoolElev;
|
tankModel.InitLevel = (float)tank.InitLevel;
|
tankModel.MaxLevel = (float)tank.MaxLevel;
|
tankModel.MinLevel = (float)tank.MinLevel;
|
tankModel.MinVol = (float)tank.MinVol;
|
tankModel.VolCurve = tank.VolCurve;
|
tankModel.Diameter = (float)tank.Diameter;
|
tankModel.X = (float)tank.Position2d.X;
|
tankModel.Y = (float)tank.Position2d.Y;
|
netWork.Nodes.Add(tankModel);
|
}
|
}
|
|
//管道
|
if (model.Pipes != null && model.Pipes.Count > 0)
|
{
|
foreach (var pipe in model.Pipes)
|
{
|
var pipeModel = new PipeModel();
|
pipeModel.ID = pipe.Code;
|
pipeModel.Name = pipe.Name;
|
pipeModel.Node1 = pipe.StartCode;
|
pipeModel.Node2 = pipe.EndCode;
|
pipeModel.Length = (float)pipe.Length;
|
pipeModel.Diameter = (float)pipe.Diameter;
|
pipeModel.Roughness = (float)pipe.Roughness;
|
pipeModel.MinorLoss = (float)pipe.MinorLoss;
|
netWork.Links.Add(pipeModel);
|
}
|
}
|
|
//水泵
|
if (model.Pumps != null && model.Pumps.Count > 0)
|
{
|
foreach (var pump in model.Pumps)
|
{
|
var pumpModel = new PumpModel();
|
pumpModel.ID = pump.Code;
|
pumpModel.Name = pump.Name;
|
pumpModel.Node1 = pump.StartCode;
|
pumpModel.Node2 = pump.EndCode;
|
pumpModel.RatedPower = pump.RatedPower;
|
pumpModel.FlowCurveID = pump.CurveQH;
|
// pumpModel.Status = HyCore.ObjectEnum.StatusType.OPEN;
|
netWork.Links.Add(pumpModel);
|
}
|
}
|
|
return netWork;
|
}
|
|
|
|
|
}
|
}
|