using IStation.Epanet.Enums;
|
|
namespace IStation.Epanet.Network.Structures
|
{
|
|
///<summary>Control statement</summary>
|
public class Control
|
{
|
|
public void ConvertUnits(Network net)
|
{
|
FieldsMap fMap = net.FieldsMap;
|
|
if (Link == null)
|
return;
|
|
if (Node != null)
|
{
|
Grade = Node.NodeType == NodeType.Junction
|
? Node.Elevation + Grade / fMap.GetUnits(FieldType.PRESSURE)
|
: Node.Elevation + Grade / fMap.GetUnits(FieldType.ELEV);
|
}
|
|
if (!double.IsNaN(Setting) && Link.LinkType == LinkType.VALVE)
|
{
|
switch (((Valve)Link).ValveType)
|
{
|
case ValveType.PRV:
|
case ValveType.PSV:
|
case ValveType.PBV:
|
Setting /= fMap.GetUnits(FieldType.PRESSURE);
|
break;
|
case ValveType.FCV:
|
Setting /= fMap.GetUnits(FieldType.FLOW);
|
break;
|
}
|
}
|
|
}
|
|
///<summary>Control grade.</summary>
|
public double Grade { get; set; }
|
|
///<summary>Assigned link reference.</summary>
|
public Link Link { get; set; }
|
|
///<summary>Assigned node reference.</summary>
|
public Node Node { get; set; }
|
|
///<summary>New link setting.</summary>
|
public double Setting { get; set; }
|
|
///<summary>New link status.</summary>
|
public StatusType Status { get; set; }
|
|
///<summary>Control time (in seconds).</summary>
|
public TimeSpan Time { get; set; }
|
|
///<summary>Control type</summary>
|
public ControlType Type { get; set; }
|
}
|
|
}
|