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; } } }