Beispiel #1
0
 /// <summary>
 /// Returns the hashcode for this instance.
 /// </summary>
 ///
 /// <returns>A 32-bit signed integer hash code.</returns>
 ///
 public override int GetHashCode( )
 {
     return
         (V00.GetHashCode( ) + V01.GetHashCode( ) + V02.GetHashCode( ) +
          V10.GetHashCode( ) + V11.GetHashCode( ) + V12.GetHashCode( ) +
          V20.GetHashCode( ) + V21.GetHashCode( ) + V22.GetHashCode( ));
 }
        public string IsError()
        {
            if (string.IsNullOrWhiteSpace(GrsName))
            {
                return("Укажите наименование ГРС");
            }
            if (string.IsNullOrWhiteSpace(SubGrsName))
            {
                return("Укажите наименование замерной нитки");
            }
            if (Psantimeter > 0)
            {
                if (V1 + V2 + V3 + V9 + V10 + V11 > 0)
                {
                    CalculateSmallK();
                }
                else
                {
                    K = SmallKConstants.KAll;
                }
            }
            else
            {
                if (V1 != 0 && !V1.CheckIntervalParams(90m, 97.9m))
                {
                    return("V1 параметр \"Объёмная концентрация метана\" несоответсвует");
                }
                if (V2 != 0 && !V2.CheckIntervalParams(0.75m, 4.75m))
                {
                    return("V2 параметр \"Объёмная концентрация этана\" несоответсвует");
                }
                if (V3 != 0 && !V3.CheckIntervalParams(0.30m, 3.5m))
                {
                    return("V3 параметр \"Объёмная концентрация пропана\" несоответсвует");
                }
                if (V4 != 0 && !V4.CheckIntervalParams(0.01m, 0.5m))
                {
                    return("V4 параметр \"Объёмная концентрация i-бутана\" несоответсвует");
                }
                if (!V5.CheckIntervalParams(0m, 0.4m))
                {
                    return("V5 параметр \"Объёмная концентрация n-бутана\" несоответсвует");
                }
                if (!V6.CheckIntervalParams(0m, 0.2m))
                {
                    return("V6 параметр \"Объёмная концентрация  i-пентана\" несоответсвует");
                }
                if (!V7.CheckIntervalParams(0m, 0.15m))
                {
                    return("V7 параметр \"Объёмная концентрация  n-пентана\" несоответсвует");
                }
                if (!V8.CheckIntervalParams(0m, 0.3m))
                {
                    return("V8 параметр \"Объёмная концентрация гексана\" несоответсвует");
                }
                if (V9 != 0 && !V9.CheckIntervalParams(0.1m, 2.5m))
                {
                    return("V9 параметр \"Объёмная концентрация углекислого газа\" несоответсвует");
                }
                if (V10 != 0 && !V10.CheckIntervalParams(0.2m, 1.3m))
                {
                    return("V10 параметр \"Объёмная концентрация азота\" несоответсвует");
                }
                if (!V11.CheckIntervalParams(0m, 0.3m))
                {
                    return("V11 параметр \"Объёмная концентрация кислорода\" несоответсвует");
                }

                if (K == 0)
                {
                    CalculateSmallK();
                }
                else if (!K.CheckIntervalParams(1.24m, 2.1m))
                {
                    return("k параметр \"Объёмный показатель адиабаты\" несоответсвует");
                }
                else
                {
                    this.IsCalculateK = false;
                }
            }

            if (Z == 0)
            {
                this.Z = 0.882m;
            }
            else if (!Z.CheckIntervalParams(0.6m, 0.9999m))
            {
                return("z параметр \"Коэффициент сжимаемости\" несоответсвует");
            }
            if (!Pvxod.CheckIntervalParams(0.01m, 6m))
            {
                return("Pвх параметр \"Давление газа на входе в ДГА\" несоответсвует");
            }
            if (!Pvixod.CheckIntervalParams(0.01m, 4m))
            {
                return("Pвых параметр \"Давление газа на выходе из ДГА\" несоответсвует");
            }
            if (!Q.CheckIntervalParams(100m, 100000000m))
            {
                return("Q параметр \"Расход газа по нитке\" несоответсвует");
            }
            if (!Temperature.CheckIntervalParams(10m, 90m))
            {
                return("t параметр \"Температура\" несоответсвует");
            }
            if ((Nnominal > 0 && EffectProcent == 0) || (Nnominal == 0 && EffectProcent > 0))
            {
                return("Укажите Nnominal и Procent, чтобы узнать эффективность расчета");
            }

            CalculateParams();
            return(string.Empty);
        }
Beispiel #3
0
 public bool Equals(Matrix2x2 other)
 {
     return(V00.Equals(other.V00) && V01.Equals(other.V01) && V10.Equals(other.V10) && V11.Equals(other.V11));
 }
Beispiel #4
0
        public void AssembleModel()
        {
            // Connections
            ProcessWater.AssignConnection(Pipes[1], ProcessWater.Outlet, Pipes[1].Inlet);

            Pipes[1].AssignConnection(V01, Pipes[1].Outlet, V01.Inlet);
            V01.AssignConnection(Pipes[2], V01.Outlet, Pipes[2].Inlet);

            Pipes[2].AssignConnection(Pipes[3], Pipes[2].Outlet, Pipes[3].Inlet);
            Pipes[3].AssignConnection(Pipes[67], Pipes[3].Outlet, Pipes[67].Inlet);

            Pipes[67].AssignConnection(Pipes[4], Pipes[67].Outlet, Pipes[4].Inlet);
            Pipes[67].AssignConnection(Pipes[5], Pipes[67].Outlet, Pipes[5].Inlet);
            Pipes[67].AssignConnection(Pipes[66], Pipes[67].Outlet, Pipes[66].Inlet); // To the heater

            Pipes[3].AssignConnection(V02, Pipes[3].Outlet, V02.Inlet);
            V02.AssignConnection(Hoses[1], V02.Outlet, Hoses[1].Inlet);
            Hoses[1].AssignConnection(Drains[1], Hoses[1].Outlet, Drains[1].Inlet);

            Pipes[4].AssignConnection(V03, Pipes[4].Outlet, V03.Inlet);
            V03.AssignConnection(Hoses[2], V03.Outlet, Hoses[2].Inlet);
            Hoses[2].AssignConnection(Drains[2], Hoses[2].Outlet, Drains[2].Inlet);

            Pipes[5].AssignConnection(V04, Pipes[5].Outlet, V04.Inlet);
            V04.AssignConnection(Hoses[3], V04.Outlet, Hoses[3].Inlet);
            Hoses[3].AssignConnection(Drains[3], Hoses[3].Outlet, Drains[3].Inlet);

            Pipes[2].AssignConnection(Pipes[6], Pipes[2].Outlet, Pipes[6].Inlet);
            Pipes[6].AssignConnection(Pipes[7], Pipes[6].Outlet, Pipes[7].Inlet);
            Pipes[7].AssignConnection(V05, Pipes[7].Outlet, V05.Inlet);
            V05.AssignConnection(Pipes[8], V05.Outlet, Pipes[8].Inlet);
            Pipes[8].AssignConnection(DI1, Pipes[8].Outlet, DI1.Inlet);
            DI1.AssignConnection(Pipes[9], DI1.Outlet, Pipes[9].Inlet);
            Pipes[9].AssignConnection(V11, Pipes[9].Outlet, V11.Inlet);
            V11.AssignConnection(Pipes[12], V11.Outlet, Pipes[12].Inlet);
            Pipes[12].AssignConnection(Pipes[14], Pipes[12].Outlet, Pipes[14].Inlet);

            Pipes[6].AssignConnection(Pipes[10], Pipes[6].Outlet, Pipes[10].Inlet);
            Pipes[10].AssignConnection(V06, Pipes[10].Outlet, V06.Inlet);
            V06.AssignConnection(Pipes[11], V06.Outlet, Pipes[11].Inlet);
            Pipes[11].AssignConnection(Pipes[13], Pipes[11].Outlet, Pipes[13].Inlet);

            Pipes[13].AssignConnection(Pipes[14], Pipes[13].Outlet, Pipes[14].Inlet);

            Pipes[14].AssignConnection(Pipes[15], Pipes[14].Outlet, Pipes[15].Inlet);
            Pipes[15].AssignConnection(V12, Pipes[15].Outlet, V12.Inlet);
            V12.AssignConnection(Hoses[4], V12.Outlet, Hoses[4].Inlet);
            Hoses[4].AssignConnection(Drains[4], Hoses[4].Outlet, Drains[4].Inlet);

            // To the heater and CO2 column
            Pipes[66].AssignConnection(Pipes[65], Pipes[66].Outlet, Pipes[65].Inlet);
            Pipes[65].AssignConnection(Pipes[55], Pipes[65].Outlet, Pipes[55].Inlet);
            Pipes[55].AssignConnection(Pipes[52], Pipes[55].Outlet, Pipes[52].Inlet);

            // To the CO2 column
            Pipes[52].AssignConnection(V07, Pipes[52].Outlet, V07.Inlet);
            V07.AssignConnection(Pipes[53], V07.Outlet, Pipes[53].Inlet);
            Pipes[53].AssignConnection(Pipes[54], Pipes[53].Outlet, Pipes[54].Inlet);
            Pipes[54].AssignConnection(Pipes[171], Pipes[54].Outlet, Pipes[171].Inlet);
            Pipes[171].AssignConnection(C1, Pipes[171].Outlet, C1.Inlet);
            // From the reactor to the CO2 column
            RV1.AssignConnection(Hoses[5], RV1.GasOutlet, Hoses[5].Inlet);
            Hoses[5].AssignConnection(Pipes[29], Hoses[5].Outlet, Pipes[29].Inlet);
            Pipes[29].AssignConnection(V56, Pipes[29].Outlet, V56.Inlet);
            V56.AssignConnection(Pipes[28], V56.Outlet, Pipes[28].Inlet);
            Pipes[28].AssignConnection(Pipes[26], Pipes[28].Outlet, Pipes[26].Inlet);
            Pipes[26].AssignConnection(Pipes[25], Pipes[26].Outlet, Pipes[25].Inlet);
            Pipes[25].AssignConnection(PHE2, Pipes[25].Outlet, PHE2.Inlet);
            PHE2.AssignConnection(Pipes[20], PHE2.Outlet, Pipes[20].Inlet);
            Pipes[20].AssignConnection(Pipes[21], Pipes[20].Outlet, Pipes[21].Inlet);
            Pipes[21].AssignConnection(V57, Pipes[21].Outlet, V57.Inlet);
            V57.AssignConnection(Pipes[61], V57.Outlet, Pipes[61].Inlet);
            Pipes[61].AssignConnection(P3, Pipes[61].Outlet, P3.Inlet);
            P3.AssignConnection(Pipes[62], P3.Outlet, Pipes[62].Outlet);
            Pipes[62].AssignConnection(Pipes[63], Pipes[62].Outlet, Pipes[63].Inlet);
            Pipes[63].AssignConnection(Pipes[64], Pipes[63].Outlet, Pipes[64].Inlet);
            Pipes[64].AssignConnection(C1, Pipes[64].Outlet, C1.GasInlet);

            // CO2 Column - Internal circulation
            C1.AssignConnection(Pipes[68], C1.Outlet, Pipes[68].Inlet);
            Pipes[68].AssignConnection(Pipes[172], Pipes[68].Outlet, Pipes[172].Inlet);
            Pipes[172].AssignConnection(UT19_V01, Pipes[172].Outlet, UT19_V01.Inlet);
            Pipes[172].AssignConnection(Pipes[69], Pipes[172].Inlet, Pipes[69].Inlet);             //Weird! Because of the flow
            UT19_V01.AssignConnection(Pipes[68], UT19_V01.Outlet, Pipes[68].Inlet);
            Pipes[68].AssignConnection(Pipes[69], Pipes[68].Outlet, Pipes[69].Inlet);
            Pipes[69].AssignConnection(UT19_V02, Pipes[69].Outlet, UT19_V02.Inlet);
            UT19_V02.AssignConnection(Pipes[70], UT19_V02.Outlet, Pipes[70].Inlet);
            Pipes[70].AssignConnection(UT19_P1, Pipes[70].Outlet, UT19_P1.Inlet);
            UT19_P1.AssignConnection(Pipes[71], UT19_P1.Outlet, Pipes[71].Inlet);
            Pipes[71].AssignConnection(Pipes[72], Pipes[71].Outlet, Pipes[72].Inlet);
            Pipes[72].AssignConnection(UT19_V04, Pipes[72].Outlet, UT19_V04.Inlet);
            UT19_V04.AssignConnection(Pipes[75], UT19_V04.Outlet, Pipes[75].Inlet);
            Pipes[75].AssignConnection(Pipes[76], Pipes[75].Outlet, Pipes[76].Inlet);
            Pipes[75].AssignConnection(Pipes[164], Pipes[75].Outlet, Pipes[164].Inlet);             // To the sample point
            Pipes[164].AssignConnection(Pipes[165], Pipes[164].Outlet, Pipes[165].Inlet);           // To the sample point
            Pipes[165].AssignConnection(UT19_V05, Pipes[165].Outlet, UT19_V05.Inlet);               // To the sample point
            UT19_V05.AssignConnection(Drains[24], UT19_V05.Outlet, Drains[24].Inlet);               // To the sample point
            Pipes[76].AssignConnection(C1, Pipes[76].Outlet, C1.Inlet2);

            Pipes[72].AssignConnection(Pipes[74], Pipes[72].Outlet, Pipes[74].Inlet);
            Pipes[74].AssignConnection(UT19_V03, Pipes[74].Outlet, UT19_V03.Inlet);
            UT19_V03.AssignConnection(Pipes[73], UT19_V03.Outlet, Pipes[73].Inlet);
            Pipes[73].AssignConnection(C1, Pipes[73].Outlet, C1.Inlet);

            C1.AssignConnection(Pipes[77], C1.GasOutlet, Pipes[77].Inlet);
            Pipes[77].AssignConnection(Pipes[78], Pipes[77].Outlet, Pipes[78].Inlet);
            Pipes[78].AssignConnection(Hoses[9], Pipes[78].Outlet, Hoses[9].Inlet);
            Hoses[9].AssignConnection(Vents[2], Hoses[9].Outlet, Vents[2].Inlet);               // Exhaust

            // Water source to the reactor
            Pipes[14].AssignConnection(Pipes[163], Pipes[14].Outlet, Pipes[163].Inlet);
            Pipes[163].AssignConnection(Pipes[16], Pipes[163].Outlet, Pipes[16].Inlet);
            Pipes[16].AssignConnection(V14, Pipes[16].Outlet, V14.Inlet);
            V14.AssignConnection(Pipes[23], V14.Outlet, Pipes[23].Inlet);
            Pipes[23].AssignConnection(V23, Pipes[23].Outlet, V23.Inlet);
            V23.AssignConnection(Pipes[133], V23.Outlet, Pipes[133].Inlet);
            Pipes[133].AssignConnection(CV34, Pipes[133].Outlet, CV34.Inlet);
            CV34.AssignConnection(SV35, CV34.Outlet, SV35.Inlet);
            SV35.AssignConnection(Pipes[27], SV35.Outlet, Pipes[27].Inlet);
            Pipes[27].AssignConnection(Hoses[6], Pipes[27].Outlet, Hoses[6].Inlet);
            Hoses[6].AssignConnection(RV1, Hoses[6].Outlet, RV1.Inlet);

            // Diversion of water source to the reactor through the heat exchanger
            Pipes[16].AssignConnection(Pipes[17], Pipes[16].Outlet, Pipes[17].Inlet);
            Pipes[17].AssignConnection(V13, Pipes[17].Outlet, V13.Inlet);
            V13.AssignConnection(Pipes[18], V13.Outlet, Pipes[18].Inlet);
            Pipes[18].AssignConnection(Pipes[19], Pipes[18].Outlet, Pipes[19].Inlet);
            Pipes[19].AssignConnection(PHE2, Pipes[19].Outlet, PHE2.Inlet2);
            PHE2.AssignConnection(Pipes[22], PHE2.Outlet2, Pipes[22].Inlet);
            Pipes[22].AssignConnection(V21, Pipes[22].Outlet, V21.Inlet);
            V21.AssignConnection(Pipes[24], V21.Outlet, Pipes[24].Inlet);
            Pipes[24].AssignConnection(Pipes[23], Pipes[24].Outlet, Pipes[23].Inlet);

            // Feeder
        }