/// <summary>
        /// Вычисление давления в самом низу сегмента (можно сказать "забой" сегмента) НКТ по барометрической формуле.
        /// Гриценко стр. 117, 113, 140 (для обводненной скважины).
        /// </summary>
        /// <param name="gasFlow">Газовый поток сегмента трубы</param>
        /// <param name="liquidFlow">Жидкостной поток сегмента трубы</param>
        /// <param name="btmTemperature">Температура внизу сегмента (К)</param>
        /// <returns>Давление на забое НКТ (МПа)</returns>
        public double CalcBottomPressure(GasFlow gasFlow, LiquidFlow liquidFlow, double btmTemperature)
        {
            double mixtureQ = Tubing.CalcMixtureRate(gasFlow, liquidFlow);
            double Ptop     = gasFlow.TopPressure;

            gasFlow.BottomParametersDefinition(Ptop, btmTemperature);

            double orientirS0   = CalcS0Coeff(gasFlow, liquidFlow);
            double orientirTeta = CalcTetaCoeff(gasFlow, liquidFlow, orientirS0);
            double orientirP    = Math.Sqrt(Ptop * Ptop * Math.Exp(2 * orientirS0) + orientirTeta * mixtureQ * mixtureQ);

            gasFlow.BottomParametersDefinition(orientirP, btmTemperature);

            double Pbtm = 0;

            for (int i = 0; i < 3; i++)
            {
                double s0   = CalcS0Coeff(gasFlow, liquidFlow);
                double Teta = CalcTetaCoeff(gasFlow, liquidFlow, s0);
                Pbtm = Math.Sqrt(Ptop * Ptop * Math.Exp(2 * s0) + Teta * mixtureQ * mixtureQ);
                gasFlow.BottomParametersDefinition(Pbtm, btmTemperature);
            }

            return(gasFlow.BottomPressure);
        }
Beispiel #2
0
        /// <summary>
        /// Вычисление давления в самом низу сегмента (можно сказать "забой" сегмента) НКТ
        /// остановленной скважины по барометрической формуле.
        /// Гриценко стр. 117 и 113 (для сухой скважины).
        /// </summary>
        /// <param name="gasFlow">Поток сегмента НКТ</param>
        /// <param name="bottomTemperature">Температура внизу сегмента (К)</param>
        /// <returns>Давление на забое НКТ (МПа)</returns>
        public void CalcStaticBottomPressure(GasFlow gasFlow, double bottomTemperature)
        {
            double Ptop = gasFlow.TopPressure;

            gasFlow.BottomParametersDefinition(Ptop, bottomTemperature);

            double orientirS = CalcSCoeff(gasFlow);
            double orientirP = Ptop * Math.Exp(orientirS);

            gasFlow.BottomParametersDefinition(orientirP, bottomTemperature);

            double Pbtm = 0;

            for (int i = 0; i < 3; i++)
            {
                double s = CalcSCoeff(gasFlow);
                Pbtm = Ptop * Math.Exp(s);
                gasFlow.BottomParametersDefinition(Pbtm, bottomTemperature);
            }
        }
Beispiel #3
0
        /// <summary>
        /// Вычисление давления в самом низу сегмента (можно сказать "забой" сегмента) НКТ по барометрической формуле.
        /// Гриценко стр. 117 и 113 (для сухой скважины).
        /// </summary>
        /// <param name="gasFlow">Поток сегмента НКТ</param>
        /// <param name="btmTemperature">Температура внизу сегмента (К)</param>
        /// <returns>Давление на забое НКТ (МПа)</returns>
        public void CalcPipePressure(GasFlow gasFlow, double btmTemperature)
        {
            double Q    = gasFlow.RateAtStandardConditions;
            double Ptop = gasFlow.TopPressure;

            gasFlow.BottomParametersDefinition(Ptop, btmTemperature);

            double orientirS    = CalcSCoeff(gasFlow);
            double orientirTeta = CalcTetaCoeff(gasFlow, orientirS);
            double orientirP    = Math.Sqrt(Ptop * Ptop * Math.Exp(2 * orientirS) + orientirTeta * Q * Q);

            gasFlow.BottomParametersDefinition(orientirP, btmTemperature);

            double Pbtm = 0;

            for (int i = 0; i < 3; i++)
            {
                double s    = CalcSCoeff(gasFlow);
                double Teta = CalcTetaCoeff(gasFlow, s);
                Pbtm = Math.Sqrt(Ptop * Ptop * Math.Exp(2 * s) + Teta * Q * Q);
                gasFlow.BottomParametersDefinition(Pbtm, btmTemperature);
            }
        }