using IStation.Epanet.Enums;
namespace IStation.Epanet.Network.Structures
{
///Control statement
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;
}
}
}
///Control grade.
public double Grade { get; set; }
///Assigned link reference.
public Link Link { get; set; }
///Assigned node reference.
public Node Node { get; set; }
///New link setting.
public double Setting { get; set; }
///New link status.
public StatusType Status { get; set; }
///Control time (in seconds).
public TimeSpan Time { get; set; }
///Control type
public ControlType Type { get; set; }
}
}