示例#1
0
        private void btnDrawDiagram_Click(object sender, EventArgs e)
        {
            //закрываем и очищаем предыдущие окна рассчетов и рассчеты
            ResetOldCalcFormProcess();
            CalcSpecificForcesOfCylinders.Clear();

            double pk = 0.0;

            try
            {
                pk = double.Parse(textBox_Pk.Text);
            }
            catch
            {
                MessageBox.Show("Неверный формат данных для Pk.");
                return;
            }

            for (int i = 0; i < COUNT_CYLINDER_ENGINE; i++)
            {
                FormDiagramProcessOfCylinder formCreateDiagramProcess;
                try
                {
                    formCreateDiagramProcess = new FormDiagramProcessOfCylinder(pk,
                                                                                double.Parse(this.dataGridView_DataForDiagram.Rows[i].Cells[1].Value.ToString()),
                                                                                double.Parse(this.dataGridView_DataForDiagram.Rows[i].Cells[2].Value.ToString()),
                                                                                double.Parse(dataGridView_DataForDiagram.Rows[i].Cells[3].Value.ToString())
                                                                                );
                }
                catch (Exception ex)
                {
                    MessageBox.Show(this, ex.Message, "Помилка в заданому значенні", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }


                FormsDiagrOfCylinderProcesses.Add(formCreateDiagramProcess);
                formCreateDiagramProcess.Text += " " + (i + 1);
                formCreateDiagramProcess.LabelDataForCreateDiagr.Text += " " + (i + 1) + "-го " + "циліндра.";
                CalcSpecificForcesOfCylinders.Add(formCreateDiagramProcess.CalcSpecificForces);
                formCreateDiagramProcess.Show();
                formCreateDiagramProcess.CalcAndBuildDiagr();
            }

            //  calc data ideal engine
            CalcDataOfIdealEngine();

            this.TopMost = true;
            this.TopMost = false;
        }
示例#2
0
        private void ShowSpecificForcesAndTorqueEngineOnGridView(DataGridView dataGridView)
        {
            // remove records in calculations of data specific forces with first angle == 360, and left next record with 360(left record with pressure expansion)
            CalcSpecificForcesOfCylinders.ForEach(calcSpecForces =>
            {
                int indexRecordWith360Degree = calcSpecForces.DataSpecificForces.Angles.BinarySearch(360);
                if (calcSpecForces.DataSpecificForces.Angles[indexRecordWith360Degree + 1] == 360) // data for 360 degree was remmoved
                {
                    calcSpecForces.DataSpecificForces.Angles.RemoveAt(indexRecordWith360Degree);
                    calcSpecForces.DataSpecificForces.T.RemoveAt(indexRecordWith360Degree);
                }
            });

            //CalcSpecificForcesOfCylinders[FIRST_CYLINDER].
            //reset total torque
            TotalTorqueOfCylinders = new List <double>();
            //create bearing index of T in 6 cylinder for going along T in data specif forces
            int bearingIndexT1 = CalcSpecificForcesOfCylinders[FIRST_CYLINDER].DataSpecificForces.Angles.BinarySearch(START_ANGLE_T1);
            int bearingIndexT2 = CalcSpecificForcesOfCylinders[SECOND_CYLINDER].DataSpecificForces.Angles.BinarySearch(START_ANGLE_T2);
            int bearingIndexT3 = CalcSpecificForcesOfCylinders[THIRD_CYLINDER].DataSpecificForces.Angles.BinarySearch(START_ANGLE_T3);
            int bearingIndexT4 = CalcSpecificForcesOfCylinders[FOURTH_CYLINDER].DataSpecificForces.Angles.BinarySearch(START_ANGLE_T4);
            int bearingIndexT5 = CalcSpecificForcesOfCylinders[FIFTH_CYLINDER].DataSpecificForces.Angles.BinarySearch(START_ANGLE_T5);
            int bearingIndexT6 = CalcSpecificForcesOfCylinders[SIXTH_CYLINDER].DataSpecificForces.Angles.BinarySearch(START_ANGLE_T6);

            int lengthInternalObjectsInDataSpecForces = CalcSpecificForcesOfCylinders[FIRST_CYLINDER].DataSpecificForces.LengthInternalObject;


            for (int iterT = 0; iterT < lengthInternalObjectsInDataSpecForces - 1; iterT++) // go along DataSpecificForces for get T of differentcylinder
            {
                double T1   = CalcSpecificForcesOfCylinders[FIRST_CYLINDER].DataSpecificForces.T[bearingIndexT1];
                double T2   = CalcSpecificForcesOfCylinders[SECOND_CYLINDER].DataSpecificForces.T[bearingIndexT2];
                double T3   = CalcSpecificForcesOfCylinders[THIRD_CYLINDER].DataSpecificForces.T[bearingIndexT3];
                double T4   = CalcSpecificForcesOfCylinders[FOURTH_CYLINDER].DataSpecificForces.T[bearingIndexT4];
                double T5   = CalcSpecificForcesOfCylinders[FIFTH_CYLINDER].DataSpecificForces.T[bearingIndexT5];
                double T6   = CalcSpecificForcesOfCylinders[SIXTH_CYLINDER].DataSpecificForces.T[bearingIndexT6];
                double Tsum = Round(T1 + T2 + T3 + T4 + T5 + T6, 3);
                //Mi = 1000 * TSum * Fn * R
                double totalTorque = Round(1000 * Tsum * FormsDiagrOfCylinderProcesses[FIRST_CYLINDER].CalcPolitrops.Fn * CalcPolitrops.R, 3);
                TotalTorqueOfCylinders.Add(totalTorque);

                //save max totalTorque and min totalTorque
                if (iterT == 0)
                {
                    this.maxTotalTorque = totalTorque;
                    this.minTotalTorque = totalTorque;
                }
                else
                {
                    if (totalTorque > maxTotalTorque)
                    {
                        this.maxTotalTorque = totalTorque;
                    }
                    if (totalTorque < minTotalTorque)
                    {
                        this.minTotalTorque = totalTorque;
                    }
                }

                dataGridView.Rows.Add(CalcSpecificForcesOfCylinders[FIRST_CYLINDER].DataSpecificForces.Angles[iterT], T1, T2, T3, T4, T5, T6, Tsum, totalTorque);
                //increase index
                bearingIndexT1++;
                bearingIndexT2++;
                bearingIndexT3++;
                bearingIndexT4++;
                bearingIndexT5++;
                bearingIndexT6++;
                //lengthInternalObjectsInDataSpecForces-1 cause value in 720 degree is the same as 0 degree
                if (bearingIndexT1 == lengthInternalObjectsInDataSpecForces - 1) //index in end - go from start,
                {
                    bearingIndexT1 = 0;
                }

                if (bearingIndexT2 == lengthInternalObjectsInDataSpecForces - 1) //index in end - go from start
                {
                    bearingIndexT2 = 0;
                }

                if (bearingIndexT3 == lengthInternalObjectsInDataSpecForces - 1) //index in end - go from start
                {
                    bearingIndexT3 = 0;
                }

                if (bearingIndexT4 == lengthInternalObjectsInDataSpecForces - 1) //index in end - go from start
                {
                    bearingIndexT4 = 0;
                }

                if (bearingIndexT5 == lengthInternalObjectsInDataSpecForces - 1) //index in end - go from start
                {
                    bearingIndexT5 = 0;
                }

                if (bearingIndexT6 == lengthInternalObjectsInDataSpecForces - 1) //index in end - go from start
                {
                    bearingIndexT6 = 0;
                }
            }

            //save average total torque
            this.averageTotalTorque = (this.maxTotalTorque + this.minTotalTorque) / 2;
            FormDiagramProcessOfCylinder.AutosizeGridView(dataGridView);
        }