예제 #1
0
 /// <summary>
 /// заполнение выбранного элемента перед сохранением в БД или расчетом
 /// </summary>
 private bool prepareEquipment()
 {
     try
     {
         if (radioButtonCharacteristicCalculate.Checked)
         {
             selectedEquipment.PerformanceCharacteristic = PowerCalculator.CalculatePerformanceCharacteristic(selectedEquipment);
         }
         else if (radioButtonCharacteristicManual.Checked)
         {
             FormPerformanceCharacteristicDialog fpcd = new FormPerformanceCharacteristicDialog(30);
             if (fpcd.ShowDialog(this) == DialogResult.OK)
             {
                 selectedEquipment.PerformanceCharacteristic = fpcd.Result;
             }
             else
             {
                 return(false);
             }
         }
         return(true);
     }
     catch (Exception ex)
     {
         _ = MessageBox.Show(this, $"Произошла ошибка при расчете мощностной характеристики:\r\n{ex.Message}", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
         return(false);
     }
 }
예제 #2
0
        public void PowerTest(double firstValue, double secondValue, double expected)
        {
            var calculator   = new PowerCalculator();
            var actualResult = calculator.Calculate(firstValue, secondValue);

            Assert.AreEqual(expected, actualResult, 0.001);
        }
예제 #3
0
        public void PowerCalculatorTest()
        {
            var    calculator = new PowerCalculator();
            double actual     = calculator.Calculate(2);

            Assert.AreEqual(4, actual);
        }
예제 #4
0
        public void CalculateTest(double valueOne, double valueTwo, double result)
        {
            var calculator = new PowerCalculator();
            var testResult = calculator.Calculate(valueOne, valueTwo);


            Assert.AreEqual(result, testResult);
        }
        /// <summary>
        /// Constructor
        /// </summary>
        public CalculationEngineForecast()
        {
            wfProxy  = new WeatherForecastProxy();
            chfProxy = new CalculateHourlyForecast();
            model    = CalculationEngineModel.Instance;
            powCalc  = new PowerCalculator();
            Thread newThread = new Thread(CalculatePerHour);

            newThread.Start();
        }
예제 #6
0
 public CalculationTests()
 {
     _grid = new Grid {
         SerialNumber = 8
     };
     _calculator = new PowerCalculator( );
     _cell       = new FuelCell {
         X = 3, Y = 5
     };
 }
예제 #7
0
        /// <summary>
        /// отрисовка графиков
        /// </summary>
        private void reloadGraphs()
        {
            //отрисовка графика характеристики
            zedGraphControl.GraphPane.CurveList.Clear();
            GraphPane spane = zedGraphControl.GraphPane;

            spane.Title.Text       = "P(V), кВт";
            spane.XAxis.Title.Text = "V, м/с";
            spane.YAxis.Title.Text = "P(V), кВт";
            if ((selectedEquipment.HasCharacteristic || selectedEquipment.EnoughDataToCalculateCharacteristic) &&
                (radioButtonCharacteristicFromDatabase.Checked || radioButtonCharacteristicCalculate.Checked))
            {
                //получение графика с учетом настроек
                Dictionary <double, double> func;
                string titleSuffix;
                if (selectedEquipment.HasCharacteristic && radioButtonCharacteristicFromDatabase.Checked)
                {
                    if (checkBoxRecalcPerformanceWithAirDensity.Checked)
                    {
                        func        = PowerCalculator.RecalcPerfomanceCharacteristicWithAirDensity(range.AirDensity, selectedEquipment.PerformanceCharacteristic, selectedEquipment);
                        titleSuffix = " (Из БД \"Оборудование\" с учетом плотности воздуха)";
                    }
                    else
                    {
                        func        = selectedEquipment.PerformanceCharacteristic;
                        titleSuffix = " (Из БД \"Оборудование\")";
                    }
                }
                else if (selectedEquipment.EnoughDataToCalculateCharacteristic && radioButtonCharacteristicCalculate.Checked)
                {
                    func        = PowerCalculator.CalculatePerformanceCharacteristic(selectedEquipment);
                    titleSuffix = " (Расчитана на основе Vmin, Vmax, Nном, Vном)";
                }
                else
                {
                    throw new Exception("Что-то совсем не так");
                }

                //вывод графика
                List <double> keys = func.Keys.ToList();
                keys.Sort();
                spane.Title.Text = "P(V), кВт" + titleSuffix;
                spane.GraphObjList.Clear();
                spane.CurveList.Clear();
                PointPairList slist = new PointPairList();
                foreach (double key in keys)
                {
                    slist.Add(key, func[key]);
                }
                _ = spane.AddCurve("P(V)", slist, Color.Red);
            }
            zedGraphControl.AxisChange();
            zedGraphControl.Invalidate();
        }
예제 #8
0
        static void Main(string[] args)
        {
            const int serialNumber = 9435;
            const int size         = 300;
            var       calculator   = new PowerCalculator();

            var grid = new Grid();

            grid.SerialNumber = serialNumber;
            grid.Initialize(size, calculator);

            var highestResultAny = grid.HighestPowerCubeAnySize();

            System.Console.WriteLine($"Result: X:{highestResultAny.result.Cell.X} Y:{highestResultAny.result.Cell.Y} power: {highestResultAny.result.TotalPower} size: {highestResultAny.cubeSize}");
        }
예제 #9
0
        public void PowerSpotChecks(int serialNumber, int expectedX, int expectedY, int expectedPower)
        {
            const int size       = 300;
            var       calculator = new PowerCalculator();

            var grid = new Grid();

            grid.SerialNumber = serialNumber;
            grid.Initialize(size, calculator);

            var highestResult = grid.HighestPowerCube(3);

            Assert.Equal(expectedPower, highestResult.TotalPower);
            Assert.Equal(expectedX, highestResult.Cell.X);
            Assert.Equal(expectedY, highestResult.Cell.Y);
        }
        private async void comboBoxTowerHeights_SelectedValueChanged(object sender, EventArgs e)
        {
            try
            {
                double newH = Convert.ToDouble(comboBoxTowerHeights.SelectedItem);

                result = await PowerCalculator.Calculate(range, equipment, newH, startHeight, ams, needRecalcWithAirDensity).ConfigureAwait(true);

                refreshInterface();
            }
            catch (Exception ex)
            {
                _ = MessageBox.Show(this, $"Произошла ошибка при расчете выработки ВЭУ:\r\n{ex.Message}", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
        }
예제 #11
0
        public void CellSpotChecks(int x, int y, int serialNumber, int expectedPower)
        {
            const int size       = 300;
            var       calculator = new PowerCalculator();

            var grid = new Grid();

            grid.SerialNumber = serialNumber;
            grid.Initialize(size, calculator);

            var xIndex = x - 1;
            var yIndex = y - 1;

            var testCell = grid.Cells[yIndex, xIndex];

            Assert.Equal(expectedPower, testCell.PowerLevel);
        }
        private async void buttonSaveToFile_Click(object sender, EventArgs e)
        {
            try
            {
                SaveFileDialog ofd = new SaveFileDialog();
                ofd.InitialDirectory = Vars.Options.LastDirectory;
                ofd.FileName         = "Расчет выработки для " + equipment.Model.ToFileName();
                ofd.Filter           = "Файл MS Excel *.xlsx | *.xlsx";
                ofd.Filter          += "|Файл *.csv | *.csv";
                ofd.AddExtension     = true;
                ofd.OverwritePrompt  = false;
                if (ofd.ShowDialog() == DialogResult.OK)
                {
                    Vars.Options.LastDirectory = Path.GetDirectoryName(ofd.FileName);
                    List <PowerCalculatorResult> results = new List <PowerCalculatorResult>();
                    foreach (double h in equipment.TowerHeight)
                    {
                        results.Add(await PowerCalculator.Calculate(range, equipment, h, startHeight, ams, needRecalcWithAirDensity).ConfigureAwait(true));
                    }

                    FileProvider fp;
                    switch (Path.GetExtension(ofd.FileName))
                    {
                    case ".xlsx":
                        fp = new ExcelFile();
                        break;

                    case ".csv":
                        fp = new CSVFile();
                        break;

                    default:
                        _ = MessageBox.Show(this, "Нельзя сохранить файл в этом формате", "Сохранение результатов расчета", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }
                    fp.SavePowerCalculatorResults(results, ofd.FileName);
                    _ = Process.Start(ofd.FileName);
                }
            }
            catch (Exception ex)
            {
                _ = MessageBox.Show(this, $"Произошла ошибка при расчете выработки ВЭУ:\r\n{ex.Message}", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
        }
예제 #13
0
        public void Initialize(int size, PowerCalculator calculator)
        {
            _size = size;
            Cells = new FuelCell[size, size];
            for (int rowIndex = 0; rowIndex < size; rowIndex++)
            {
                var currentY = rowIndex + 1;
                for (int columnIndex = 0; columnIndex < size; columnIndex++)
                {
                    var currentX = columnIndex + 1;

                    var cell = new FuelCell {
                        X = currentX, Y = currentY
                    };
                    var power = calculator.PowerLevel(SerialNumber, cell);
                    cell.PowerLevel = power;

                    Cells[rowIndex, columnIndex] = cell;
                }
            }
        }
예제 #14
0
        private ICalculator <float> CreateCalculator(CalculateType calculateType, params float[] values)
        {
            ICalculator <float> ret = null;

            switch (calculateType)
            {
            case CalculateType.Addition:
                ret = new AdditionCalculator <float>(values[0], values[1]);
                break;

            case CalculateType.Subtraction:
                ret = new SubtractionCalculator <float>(values[0], values[1]);
                break;

            case CalculateType.Multiplication:
                ret = new MultiplicationCalculator <float>(values[0], values[1]);
                break;

            case CalculateType.Division:
                ret = new DivisionCalculator <float>(values[0], values[1]);
                break;

            case CalculateType.Power:
                ret = new PowerCalculator <float>(values[0], values[1]);
                break;

            case CalculateType.Sine:
                ret = new SineCalculator <float>(values[0]);
                break;

            case CalculateType.Cosine:
                ret = new CosineCalculator <float>(values[0]);
                break;
            }

            return(ret);
        }
예제 #15
0
파일: PowerFormulas.cs 프로젝트: NVN/WCell
		public static void SetPowerRegenCalculator(PowerType type, PowerCalculator calc)
		{
			PowerRegenCalculators[(int)type] = calc;
		}
예제 #16
0
        public void TestV2(int baseNumber, int exponent, int expectedResult)
        {
            PowerCalculator math = new PowerCalculator();

            math.Calculate(baseNumber, exponent).Should().Be(expectedResult);
        }
예제 #17
0
파일: PowerFormulas.cs 프로젝트: NVN/WCell
		public static void SetBasePowerCalculator(PowerType type, PowerCalculator calc)
		{
			BasePowerForLevelCalculators[(int)type] = calc;
		}
        public void CircuitPower_IntVoltageAndCurrent_ReturnIntPower(int voltage, int current, int expected)
        {
            var actual = PowerCalculator.CircuitPower(voltage, current);

            Assert.Equal(expected, actual);
        }
예제 #19
0
 public PowerCalculationTests()
 {
     _calculator = new PowerCalculator();
 }