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; }
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; }