///<summary>Load hydraulic simulation data to the water quality structures.</summary> private void LoadHydValues(AwareStep step) { int count = 0; foreach (QualityNode qN in _nodes) { qN.Demand = step.GetNodeDemand(count++, qN.Node, null); } count = 0; foreach (QualityLink qL in _links) { qL.Flow = step.GetLinkFlow(count++, qL.Link, null); } }
/// <summary> /// Retrieves hydraulic solution and time step for next hydraulic event from a hydraulics file. /// </summary> private ErrorCodeType GetHydVars() { AwareStep step = _tk2.GetStep((int)_msx.Htime); int n = _msx.Nobjects[(int)ObjectTypes.NODE]; for (int i = 0; i < n; i++) { _msx.D[i + 1] = (float)step.GetNodeDemand(i, null, null); } for (int i = 0; i < n; i++) { _msx.H[i + 1] = (float)step.GetNodeHead(i, null, null); } n = _msx.Nobjects[(int)ObjectTypes.LINK]; for (int i = 0; i < n; i++) { _msx.Q[i + 1] = (float)step.GetLinkFlow(i, null, null); } // update elapsed time until next hydraulic event _msx.Htime = step.Time + step.Step; // Initialize pipe segments (at time 0) or else re-orient segments to accommodate any flow reversals if (_msx.Qtime < _msx.Dur) { if (_msx.Qtime == 0) { InitSegs(); } else { ReorientSegs(); } } return(0); }
private static double GetLinkValue( LinkVariableType type, FormType formType, FieldsMap fmap, AwareStep step, Link link, int index) { switch (type) { case LinkVariableType.LENGHT: return(fmap.RevertUnit((FieldType)type, link.Lenght)); case LinkVariableType.DIAMETER: return(fmap.RevertUnit((FieldType)type, link.Diameter)); case LinkVariableType.ROUGHNESS: return(link.Type == LinkType.PIPE && formType == FormType.DW ? fmap.RevertUnit(FieldType.DIAM, link.Kc) : link.Kc); case LinkVariableType.FLOW: return(step != null?Math.Abs(step.GetLinkFlow(index, link, fmap)) : 0); case LinkVariableType.VELOCITY: return(step != null?Math.Abs(step.GetLinkVelocity(index, link, fmap)) : 0); case LinkVariableType.UNITHEADLOSS: return(step != null?step.GetLinkHeadLoss(index, link, fmap) : 0); case LinkVariableType.FRICTIONFACTOR: return(step != null?step.GetLinkFriction(index, link, fmap) : 0); case LinkVariableType.QUALITY: return(step != null?fmap.RevertUnit((FieldType)type, step.GetLinkAvrQuality(index)) : 0); default: return(0.0); } }