Exemplo n.º 1
0
        ///<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);
            }
        }
Exemplo n.º 2
0
        /// <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);
        }
Exemplo n.º 3
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);
            }
        }