示例#1
0
        public Logger FFind_repr_logger(EFavorTest efavor, WaterNetwork waternetwork)
        {
            GenListWaterNetworkNode(waternetwork);
            Logger closest = GenListofLogers(efavor).OrderBy(item => Math.Abs(FNodeAverageElevation - item.elevation)).First();

            return(closest);
        }
示例#2
0
        public List <Logger> GenListofLogers(EFavorTest DataEfavor)
        {
            List <Logger> F_list_of_logger = new List <Logger> {
            };

            F_list_of_logger = DataEfavor.list_of_loggers;
            foreach (var item in F_list_of_logger)
            {
                LoggerSumOfElevation = LoggerSumOfElevation + item.elevation;
            }
            LoggerAverageElevation = LoggerSumOfElevation / F_list_of_logger.Count();
            return(F_list_of_logger);
        }
示例#3
0
        public int GenFAVADOutput(WaterNetwork waternetwork_tk, EFavorTest efavor, BurstCoeffs burstCoeffs)
        {
            try
            {
                Favad                    favad2         = new Favad();
                double                   demand         = favad2.Get_minDemand(waternetwork_tk);
                Logger                   representative = favad2.FFind_repr_logger(efavor, waternetwork_tk);
                List <FlowMeter>         inlets         = favad2.FInlet(efavor);
                List <pair_values_favad> records        = new List <pair_values_favad>();
                for (int n = 0; n < representative.measured_pressure.Count(); n++)
                {
                    pair_values_favad pair = new pair_values_favad();
                    pair.flow     = inlets[0].measured_flow[n];
                    pair.pressure = representative.measured_pressure[n];
                    records.Add(pair);
                }
                //calibration process
                var    last     = records.Last();
                var    previous = records.AsEnumerable().Reverse().Skip(1).FirstOrDefault();
                double anzp0    = previous.pressure;
                double anzp1    = last.pressure;
                double L0       = previous.flow;;
                double L1       = last.flow;

                N1 = (Math.Log(L1 / L0)) / (Math.Log(anzp1 / anzp0));
                var B = ((L0 - demand) / Math.Pow(anzp0, 0.5) - (L1 - demand) / Math.Pow(anzp1, 0.5)) / (anzp0 - anzp1);
                var A = ((L0 - demand) / Math.Pow(anzp0, 0.5)) - B * anzp0;
                favadcoeff.A = A;
                favadcoeff.B = B;
                var text = String.Format("N1 Coefficient: {0}", N1.ToString());
                //MessageBox.Show(text);
                LeakEstimation(N1, records, demand, waternetwork_tk, burstCoeffs, favadcoeff);
                return(0);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return(-1);

                throw;
            }
        }
示例#4
0
        public List <FlowMeter> FInlet(EFavorTest Fefavor)
        {
            List <FlowMeter> List_of_inlets_flow = Fefavor.list_of_inlet_flowmeters;

            return(List_of_inlets_flow);
        }