Exemplo n.º 1
0
        private async void CalculatEngineNoiseMenuItem_Click()
        {
            dataGridView1.Scroll -= Grid_Scroll;
            dataGridView2.Scroll -= Grid_Scroll;
            dataGridView3.Scroll -= Grid_Scroll;
            var CalculateArgs = new CalculateEngineNoiseEventArgs();
            await Task.Run(() => CalculateEngineNoise(CalculateArgs));

            dataGridView4.Rows[0].Cells[1].Value = FormatConvert.ToString(CalculateArgs.FlowSoundParameters.MechanicalPower * 1E-6);
            dataGridView4.Rows[1].Cells[1].Value = FormatConvert.ToString(CalculateArgs.FlowSoundParameters.SoundPower * 1E-6);
            dataGridView4.Rows[2].Cells[1].Value = FormatConvert.ToString(CalculateArgs.FlowSoundParameters.SoundPowerRatio);
            dataGridView4.Rows[3].Cells[1].Value = FormatConvert.ToString(CalculateArgs.FlowSoundParameters.SoundMaximalPowerConeHalfAngle);
            dataGridView4.Rows[4].Cells[1].Value = FormatConvert.ToString(CalculateArgs.FlowSoundParameters.UndisturbedSupersonicFlowLength);
            dataGridView4.Rows[5].Cells[1].Value = FormatConvert.ToString(CalculateArgs.FlowSoundParameters.DistanceToPointOfMaximalSoundLevel);
            dataGridView4.Rows[6].Cells[1].Value = FormatConvert.ToString(CalculateArgs.FlowSoundParameters.SupersonicFlowLength);
            dataGridView4.Rows[7].Cells[1].Value = FormatConvert.ToString(CalculateArgs.FlowSoundParameters._98ProzentSoundPowerRadiatingFlowLength);
            dataGridView4.Rows[8].Cells[1].Value = FormatConvert.ToString(CalculateArgs.FlowSoundParameters.DistanceToPointOfFlowDestruction);
            EngineFrequencyGrid.Rows.Clear();
            EngineFrequencyGrid.Rows.Add(CalculateArgs.FrequencyCharacteristik.Keys.Count);
            int i = 0;

            foreach (var FrequencyCharacteristik in CalculateArgs.FrequencyCharacteristik)
            {
                EngineFrequencyGrid.Rows[i].Cells[0].Value = FormatConvert.ToString(FrequencyCharacteristik.Key);
                EngineFrequencyGrid.Rows[i].Cells[1].Value = FormatConvert.ToString(FrequencyCharacteristik.Value);
                i++;
            }
            EngineFrequencyGraphPane.CurveList.Clear();
            EngineFrequencyGraphPane.AddCurve(
                "",
                CalculateArgs.FrequencyCharacteristik.Select(x => x.Key).ToArray(),
                CalculateArgs.FrequencyCharacteristik.Select(x => x.Value).ToArray(),
                Color.Black,
                SymbolType.None);
            EngineFrequencyGraphPane.AxisChange();
            zedGraphControl3.Invalidate();
            RadiationPatternGrid.Rows.Clear();
            RadiationPatternGrid.Rows.Add(CalculateArgs.RadiationPattern.Keys.Count);
            i = 0;
            foreach (var RadiationPattern in CalculateArgs.RadiationPattern)
            {
                RadiationPatternGrid.Rows[i].Cells[0].Value = FormatConvert.ToString(RadiationPattern.Key);
                RadiationPatternGrid.Rows[i].Cells[1].Value = FormatConvert.ToString(RadiationPattern.Value);
                i++;
            }
            RadiationPatternGraphPane.CurveList.Clear();
            RadiationPatternGraphPane.AddCurve(
                "",
                CalculateArgs.RadiationPattern.Select(x => x.Key).ToArray(),
                CalculateArgs.RadiationPattern.Select(x => x.Value).ToArray(),
                Color.Black,
                SymbolType.None);
            RadiationPatternGraphPane.AxisChange();
            zedGraphControl4.Invalidate();
            EngineAcousticsLoadGrid.Rows.Clear();
            EngineAcousticsLoadGrid.Rows.Add(CalculateArgs.EngineAcousticsLoadAtFrequency.Keys.Count);
            i = 0;
            foreach (var EngineAcousticsLoad in CalculateArgs.EngineAcousticsLoadAtFrequency)
            {
                EngineAcousticsLoadGrid.Rows[i].Cells[0].Value = FormatConvert.ToString(EngineAcousticsLoad.Key);
                EngineAcousticsLoadGrid.Rows[i].Cells[1].Value = FormatConvert.ToString(EngineAcousticsLoad.Value);
                i++;
            }
            textBox32.Text    = FormatConvert.ToString(CalculateArgs.EngineAcousticsLoadSummary);
            pictureBox1.Image = CalculateArgs.EngineSoundContour.Contour;
            Contour           = new DoubleInterpolation(CalculateArgs.EngineSoundContour.X, CalculateArgs.EngineSoundContour.Y, CalculateArgs.EngineSoundContour.SoundLevels);
            dataGridView2.Columns.Clear();
            dataGridView3.Columns.Clear();
            for (int j = 0; j < CalculateArgs.EngineSoundContour.Y.Length; j++)
            {
                dataGridView2.Columns.Add("", "");
                dataGridView3.Columns.Add("", "");
            }
            foreach (var column in dataGridView2.Columns.Cast <DataGridViewColumn>())
            {
                column.SortMode = DataGridViewColumnSortMode.NotSortable;
            }
            foreach (var column in dataGridView3.Columns.Cast <DataGridViewColumn>())
            {
                column.SortMode = DataGridViewColumnSortMode.NotSortable;
            }
            dataGridView2.Rows.Add();
            for (int j = 0; j < CalculateArgs.EngineSoundContour.Y.Length; j++)
            {
                dataGridView2.Rows[0].Cells[j].Value = FormatConvert.ToString(CalculateArgs.EngineSoundContour.Y[j]);
            }
            dataGridView1.Rows.Clear();
            dataGridView1.Rows.Add(CalculateArgs.EngineSoundContour.X.Length);
            for (i = 0; i < CalculateArgs.EngineSoundContour.X.Length; i++)
            {
                dataGridView1.Rows[i].Cells[0].Value = FormatConvert.ToString(CalculateArgs.EngineSoundContour.X[i]);
                dataGridView3.Rows.Add();
                for (int j = 0; j < CalculateArgs.EngineSoundContour.Y.Length; j++)
                {
                    dataGridView3.Rows[i].Cells[j].Value = FormatConvert.ToString(CalculateArgs.EngineSoundContour.SoundLevels[i, j]);
                }
            }
            dataGridView1.Scroll += Grid_Scroll;
            dataGridView2.Scroll += Grid_Scroll;
            dataGridView3.Scroll += Grid_Scroll;
        }
Exemplo n.º 2
0
        void MainView_CalculateEngineNoise(CalculateEngineNoiseEventArgs e)
        {
            var summary = new EngineAcousticsLoadSummary(
                engineNoiseCalculation.FlowSoundParameters,
                engineNoiseCalculation.FrequencyCharacteristik,
                engineNoiseCalculation.RadiationPattern,
                engineNoiseCalculation.EngineAcousticsLoadAtFrequency,
                engineNoiseCalculation.EngineAcousticsLoadSummary);
            EngineSoundContour EngineSoundContour        = engineNoiseCalculation.EngineSoundContour;
            Func <bool>        ContourCoordinatesNotNull = () =>
                                                           engineNoiseCalculation.ContourAreaHeight *
                                                           engineNoiseCalculation.ContourAreaWidth *
                                                           engineNoiseCalculation.NozzleCoordinate *
                                                           engineNoiseCalculation.MinSoundLevel *
                                                           engineNoiseCalculation.MaxSoundLevel != 0;

            if (engineNoiseCalculation.InputDataChanged)
            {
                Model.CalculateEngineAcousticsLoadSummary(
                    engineNoiseCalculation.Thrust,
                    engineNoiseCalculation.FlowParameters,
                    out summary);
                if (ContourCoordinatesNotNull())
                {
                    Model.CalculateEngineSoundContour(
                        engineNoiseCalculation.Thrust,
                        engineNoiseCalculation.FlowParameters,
                        new EngineSoundContourParameters(
                            engineNoiseCalculation.ContourAreaWidth,
                            engineNoiseCalculation.ContourAreaHeight,
                            engineNoiseCalculation.NozzleCoordinate,
                            engineNoiseCalculation.MinSoundLevel,
                            engineNoiseCalculation.MaxSoundLevel),
                        out EngineSoundContour);
                }
            }
            else if (engineNoiseCalculation.ContourCoordinatesChanged)
            {
                if (ContourCoordinatesNotNull())
                {
                    Model.CalculateEngineSoundContour(
                        engineNoiseCalculation.Thrust,
                        engineNoiseCalculation.FlowParameters,
                        new EngineSoundContourParameters(
                            engineNoiseCalculation.ContourAreaWidth,
                            engineNoiseCalculation.ContourAreaHeight,
                            engineNoiseCalculation.NozzleCoordinate,
                            engineNoiseCalculation.MinSoundLevel,
                            engineNoiseCalculation.MaxSoundLevel),
                        out EngineSoundContour);
                }
            }
            else if (engineNoiseCalculation.ContourColorsChanged)
            {
                if (ContourCoordinatesNotNull())
                {
                    Model.ModifyEngineSoundContour(engineNoiseCalculation.MinSoundLevel, engineNoiseCalculation.MaxSoundLevel, ref EngineSoundContour);
                }
            }
            engineNoiseCalculation.FlowSoundParameters            = summary.FlowSoundParameters;
            engineNoiseCalculation.FrequencyCharacteristik        = summary.FrequencyCharacteristik;
            engineNoiseCalculation.RadiationPattern               = summary.RadiationPattern;
            engineNoiseCalculation.EngineAcousticsLoadAtFrequency = summary.EngineAcousticsLoadAtFrequency;
            engineNoiseCalculation.EngineAcousticsLoadSummary     = summary.SummaryLoad;
            engineNoiseCalculation.EngineSoundContour             = EngineSoundContour;
            e.FlowSoundParameters                            = summary.FlowSoundParameters;
            e.FrequencyCharacteristik                        = summary.FrequencyCharacteristik;
            e.RadiationPattern                               = summary.RadiationPattern;
            e.EngineAcousticsLoadAtFrequency                 = summary.EngineAcousticsLoadAtFrequency;
            e.EngineAcousticsLoadSummary                     = summary.SummaryLoad;
            e.EngineSoundContour                             = EngineSoundContour;
            engineNoiseCalculation.InputDataChanged          = false;
            engineNoiseCalculation.ContourCoordinatesChanged = false;
            engineNoiseCalculation.ContourColorsChanged      = false;
        }