Example #1
0
        /// <summary>
        /// Задание компонентов сухой скважины
        /// </summary>
        /// <param name="wellheadPressure">Давление на устье (МПа)</param>
        /// <param name="wellheadTemperature">Температура на устье (К)</param>
        /// <param name="bottomholeTemperature">Температура на забое (К)</param>
        /// <param name="nglDensity">Плотность газового конденсата (кг/м3)</param>
        public void InitWell(double wellheadPressure, double wellheadTemperature,
                             double bottomholeTemperature, double nglDensity)
        {
            if (wellheadPressure < PhysicalConstants.AtmosphericPressure || wellheadPressure > 100)
            {
                throw new ArgumentException("Устьевое давление должно быть меньше 100 МПа и больше атмосферного!");
            }
            WellheadPressure = wellheadPressure;

            if (wellheadTemperature < 220 || wellheadTemperature > 400)
            {
                throw new ArgumentException("Устьевая температура должна быть меньше 400 К и больше 220 К !");
            }
            WellheadTemperature = wellheadTemperature;

            if (bottomholeTemperature < 220 || bottomholeTemperature > 400)
            {
                throw new ArgumentException("Забойная температура должна быть меньше 400 К и больше 220 К !");
            }
            BottomholeTemperature = bottomholeTemperature;

            Tubing   = TubingBuilder.One.BuildTubing();
            GasFluid = GasFluid.GetFluid();
            Layer    = LayerBuilder.One.BuildLayer();
            NglFluid = new NaturalGasLiquidsFluid(nglDensity);
        }
Example #2
0
        /// <summary>
        /// Газовый поток для вычисления устьевого давления снизу вверх
        /// </summary>
        /// <param name="fluid">Газовый флюид</param>
        /// <param name="gasRate">Расход газа в стандартных условиях (тыс.м3/сут)</param>
        /// <param name="bottomPressure">Давление на забое (МПа)</param>
        /// <param name="bottomTemperature">Температура на забое (МПа)</param>
        /// <param name="fromBottomToUp">Флаг для отличия от конструктора GasFlow, вычисляющего забойное давление</param>
        public GasFlow(GasFluid fluid, double gasRate, double bottomPressure, double bottomTemperature, bool fromBottomToUp)
        {
            if (!fromBottomToUp)
            {
                return;
            }
            if (gasRate < 0)
            {
                throw new ArgumentOutOfRangeException("Дебит газа меньше нуля при инициализации GasFlow");
            }
            RateAtStandardConditions = gasRate;
            Fluid = fluid;

            if (bottomPressure < 0)
            {
                throw new ArgumentOutOfRangeException("Давление на забое потока меньше нуля при инициализации GasFlow");
            }
            if (bottomTemperature < 0)
            {
                throw new ArgumentOutOfRangeException("Температура на забое потока меньше нуля при инициализации GasFlow");
            }
            ;

            BottomPressure    = bottomPressure;
            BottomTemperature = bottomTemperature;
        }
Example #3
0
 /// <summary>
 /// Конструктор копирования DryWell
 /// </summary>
 /// <param name="dryWell"></param>
 public DryWell(DryWell dryWell)
 {
     Layer                 = dryWell.Layer;
     GasFluid              = dryWell.GasFluid;
     Tubing                = new Tubing(dryWell.Tubing);
     WellheadPressure      = dryWell.WellheadPressure;
     WellheadTemperature   = dryWell.WellheadTemperature;
     BottomholeTemperature = dryWell.BottomholeTemperature;
     NglFluid              = dryWell.NglFluid;
 }
Example #4
0
 /// <summary>
 /// Сухая скважина
 /// </summary>
 /// <param name="layer">Пласт</param>
 /// <param name="gasFluid">Газовый флюид</param>
 /// <param name="tubing">Обсадная колонна и НКТ</param>
 /// <param name="wellheadPressure">Устьевое давление (МПа)</param>
 /// <param name="wellheadTemperature">Устьевая температура (К)</param>
 /// <param name="bottomholeTemperature">Забойная температура (К)</param>
 /// <param name="nglFluid">Флюид конденсата</param>
 public DryWell(Layer layer, GasFluid gasFluid,
                Tubing tubing, double wellheadPressure,
                double wellheadTemperature, double bottomholeTemperature,
                NaturalGasLiquidsFluid nglFluid)
 {
     Layer                 = layer;
     GasFluid              = gasFluid;
     Tubing                = tubing;
     WellheadPressure      = wellheadPressure;
     WellheadTemperature   = wellheadTemperature;
     BottomholeTemperature = bottomholeTemperature;
     NglFluid              = nglFluid;
 }
Example #5
0
        /// <summary>
        /// Газовый поток для вычисления забойного давления сверху вниз
        /// </summary>
        /// <param name="fluid">Газовый флюид</param>
        /// <param name="gasRate">Расход газа в стандартных условиях (тыс.м3/сут)</param>
        /// <param name="topPressure">Давление на устье (МПа)</param>
        /// <param name="topTemperature">Температура на устье (МПа)</param>
        public GasFlow(GasFluid fluid, double gasRate, double topPressure, double topTemperature)
        {
            if (gasRate < 0)
            {
                throw new ArgumentOutOfRangeException("Дебит газа меньше нуля при инициализации GasFlow");
            }
            RateAtStandardConditions = gasRate;
            Fluid = fluid;

            if (topPressure < 0)
            {
                throw new ArgumentOutOfRangeException("Давление на устье потока меньше нуля при инициализации GasFlow");
            }
            if (topTemperature < 0)
            {
                throw new ArgumentOutOfRangeException("Температура на устье потока меньше нуля при инициализации GasFlow");
            }
            ;

            TopPressure    = topPressure;
            TopTemperature = topTemperature;
        }
 /// <summary>
 /// Обводненная скважина
 /// </summary>
 /// <param name="layer">Пласт</param>
 /// <param name="gasFluid">Газовый флюид</param>
 /// <param name="tubing">Обсадная колонна и НКТ</param>
 /// <param name="wellheadPressure">Давление на устье (МПа)</param>
 /// <param name="wellheadTemperature">Температура на устье (К)</param>
 /// <param name="bottomholeTemperature">Температура на забое (К)</param>
 /// <param name="nglFluid">Флиюд газового конденсата</param>
 public WateredWell(Layer layer, GasFluid gasFluid, Tubing tubing, double wellheadPressure, double wellheadTemperature, double bottomholeTemperature,
                    NaturalGasLiquidsFluid nglFluid) : base(layer, gasFluid, tubing, wellheadPressure, wellheadTemperature, bottomholeTemperature, nglFluid)
 {
 }