/// <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); }
/// <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; }
/// <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; }
/// <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; }
/// <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) { }