示例#1
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);
        }