УДК 622.276:532.575.5:004.432

Дуркин С. М.
Сравнительный тест языков программирования С++ и С# при разработке численного гидродинамического симулятора для прогнозирования показателей разработки нефтяных и газовых месторождений

Сравнительный тест языков программирования С++ и С# при разработке численного гидродинамического симулятора для прогнозирования показателей разработки нефтяных и газовых месторождений

A comparative test of the programming languages C++ and C# when developing a numerical simulator for predicting the performance of oil and gas fields

С. М. Дуркин

S. M. Durkin

Ухтинский государственный технический университет,
г. Ухта

Ukhta state technical University,
Ukhta

В настоящей работе рассмотрены два наиболее современных и распространённых языка программирования С++ и С#, входящие в состав программного комплекса Visual Studio. С помощью них реализована трёхмерная математическая модель фильтрации в декартовых координатах.

In this paper we consider two of the most modern and widely used programming language C++ and C# that are included with the software complex Visual Studio. They implemented three-dimensional mathematical model of filtration in Cartesian coordinates.

Ключевые слова: гидродинамический симулятор, показатели, языки программирования.

Keywords: hydrodynamic simulator, indicators, programming languages.

В принципе разработка месторождений – дисциплина сложная. Нефть и газ залегают глубоко под землёй, мы не можем увидеть пласт или потрогать его. Инженер по разработке месторождений должен понять и спрогнозировать то, чего он не видит и не может коснуться. Необходимы косвенные методы и методики измерений. В этом отношении гидродинамическая модель – великолепный помощник. Она позволяет количественно оценить влияние различных процессов на результаты добычи. С её помощью можно проводить расчёты для самых сложных геометрий, которые трудно, если вообще возможно, анализировать с помощью аналитических уравнений.

Хотя гидродинамическая модель и позволяет решать сложные проблемы, это пассивный инструмент. Он может сделать расчёт исходя из входных параметров, но не в состоянии определить, какие входные параметры нужно было ввести [1].

Для реализации численных математических моделей фильтрации, как правило, используют различные языки программирования. Язык программирования С++ – это компилируемый статически типизированный язык программирования общего назначения. Широко используется для разработки программного обеспечения, являясь одним из самых популярных языков программирования. Область его применения включает создание операционных систем, разнообразных прикладных программ, драйверов устройств, приложений для встраиваемых систем, высокопроизводительных серверов, а также развлекательных приложений (игр) [2].

Язык программирования C# – это объектно-ориентированный язык программирования. Разработан в 1998–2001 годах группой инженеров под руководством Андерса Хейлсберга в компании Microsoft как язык разработки приложений для платформы Microsoft.NET Framework. C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к С++ и Java. Язык имеет статическую типизацию, поддерживает полиморфизм, перегрузку операторов (в том числе операторов явного и неявного приведения типа), делегаты, атрибуты, события, свойства, обобщённые типы и методы. Переняв многое от своих предшественников – языков C++, Pascal, Модула, Smalltalk и, в особенности, Java – С#, опираясь на практику их использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем, например, С# в отличие от С++ не поддерживает множественное наследование классов [3].

Для реализации компьютерной программы необходимо представить расчётные уравнения, используемые в модели. Для вывода соотношений представим одномерный элемент пласта (рис. 1).


Рисунок 1. Схематичное представление элемента пласта

    (1)

где     – масса флюида, перетёкшего из i – 1 ячейки в i ячейку, кг;
– масса флюида, перетёкшего из i + 1 ячейки в i ячейку, кг;
– накопленная масса в i-ой ячейке, кг;
Qi – источник или сток, кг.

Масса компонента выражается следующим соотношением:

M = ρ · v · S · t,    (2)

где    ρ – плотность флюида, кг/м3;
v – скорость фильтрации флюида, м/с;
S – площадь сечения фильтрации, м2;
t – время, с.

Аналогично для каждой фазы получим:

Mα = ρα · vα · S · t,    (3)

где    α – фаза (нефть, газ и вода).

Накопленная масса в ячейке будет равна (изменение массы с течением времени):

    (4)

где     – объем пласта, м3; m – пористость; ρ – плотность, кг/м3; n, n+1 – предыдущий и следующий временной шаг.

В случае многофазной фильтрации:

.    (5)

Итак, закон Дарси для многофазной фильтрации имеет вид:

    (6)

где    kα – фазовая проницаемость, мкм2;
μα – вязкость фазы (нефть, газ, вода), Па·с;
pα – давление в фазе (нефть, газ, вода), Па.

kα = k · k,    (7)

где    k – абсолютная проницаемость, мкм2;
k – относительная фазовая проницаемость.

Для проведения необходимых расчётов и математических экспериментов разработаны и реализованы в виде программного комплекса следующие численные методики:

  • фильтрационная модель скважины, дренирующей трещиновато-пористый коллектор, основанная на совместном решении уравнений неустановившейся фильтрации. Схема решения полностью неявная;
  • решение системы алгебраических уравнений на каждом временном шаге осуществляется методом Ньютона, а на каждой ньютоновской итерации решение системы линейных уравнений – методом неполного гауссова исключения и красно-чёрного разбиения с применением процедуры ORTHOMIN [5].

Для сравнения вычислительной эффективности (скорости расчёта) рассмотрим следующий численный эксперимент. Моделируемый объект имеет следующие характеристики (табл. 1).

Таблица 1. Исходные данные для расчёта

Параметр

Единицы измерения

Значение

Длина элемента пласта

м

1100

Ширина элемента пласта

м

1100

Высота элемента пласта

м

30

Коэффициент пористости

 %

30

Коэффициент проницаемости

мкм2

250

Начальное давление в пласте

МПа

15

Шаг по времени

сут.

30

Период эксплуатации

лет

10

Элемент пласта с заданными характеристиками выглядит следующим образом (рис. 2). В центре элемента пласта расположена добывающая скважина, эксплуатируемая с постоянным расходом Q = 100 т/сут.


Рисунок 2. Элемент пласта

Физические свойства фильтруемой среды в зависимости от давления изображены на рис. 3.


Рисунок 3. Зависимость физических свойств от давления

Как правило, при решении систем нелинейных уравнений применяются приближенные методы, основанные на дискретизации рассматриваемой области определения значений функций [4]. Для проведения тестовых расчётов рассмотрим следующие варианты дискретизации элемента пласта (табл. 2).

Таблица 2. Варианты расчёта

1 вариант

2 вариант

3 вариант

Количество ячеек по x

11

21

51

Количество ячеек по y

11

21

51

Количество ячеек по z

1

1

1

Общее количество ячеек

121

441

2601

Разработанный гидродинамический симулятор реализован на двух языках программирования С++ и С#. Программный код абсолютно идентичен. Исходные данные на вход подаются с помощью текстового файла, имеющего ключевые слова, которым соответствуют те или значения входных параметров. Фрагмент входного файла представлен на рис. 4.

Результаты расчёта представлены в таблице 3.

Таблица 3. Результаты тестовых численных экспериментов

Время расчёта модели

1 вариант

2 вариант

3 вариант

C++

24 сек

46 сек

1 час 54 мин 19 сек

C#

31 сек

1 мин 28 сек

6 час 37 мин 10 сек

Рисунок 4. Фрагмент текстового файла

Опираясь на полученные результаты необходимо сделать вывод, что модель, реализованная с помощью языка программирования С++, по скорости расчёта существенно опережает идентичный алгоритм на языке программирования С#. Таким образом дальнейшее совершенствование и реализация расчётных методик будет основано на использовании языка программирования С++.

При выполнении исследований, содержащихся в настоящей работе, также получены следующие результаты:

  • создана трёхмерная математическая модель элемента пласта, позволяющая прогнозировать технологические показатели разработки. Оформлено свидетельство о государственной регистрации программы для ЭВМ;
  • универсальность собственного разработанного программного кода и возможность его изменения позволяет учитывать дополнительные механизмы фильтрации, присущие конкретному месторождению углеводородов;
  • реализованная математическая модель основана на современных численных методиках.

 

Статья поступила в редакцию: 04.05.2016

Список литературы

1. Карлсон М. Р. Практическое моделирование нефтегазовых пластов. М.-Ижевск : Институт компьютерных исследований, 2012. 944 с.

2. Бьёрн Страуструп. Дизайн и эволюция C++ = The Design and Evolution of C++. СПб. : Питер, 2007. 445 с.

3. Джон Скит. C# для профессионалов: тонкости программирования. 3-е издание, новый перевод = C# in Depth, 3rd ed. М. : «Вильямс», 2014. 608 с.

4. Эртекин Т., Абу-Кассем Дж., Кинг Г. Основы прикладного моделирования пластов. М.-Ижевск : Институт компьютерных исследований, 2012. 1060 с.

5. Азиз Х., Сеттари Э. Математическое моделирование пластовых систем. М. : Недра, 1982. 406 с.

List of references

1. Carlson, M. R., Practical modeling of oil and gas reservoirs, Moscow-Izhevsk: Institute of computer science, 2012, 944 p.

2. Bjarne Stroustrup, The Design and Evolution of C++, SPb.: Peter, 2007, 445 p.

3. Jon Skeet, C# in Depth, 3rd ed. Moscow: Williams, 2014, 608 p.

4. Ertekin, T., Abou-Kassem, J., King principles of applied reservoir simulation, Moscow-Izhevsk: Institute of computer science, 2012, 1060 p.

5. Aziz, H., Sattari, E., Mathematical modeling of reservoir systems, Moscow: Nedra, 1982, 406 p.

VN:F [1.9.17_1161]
Rating: 10.0/10 (1 vote cast)
VN:F [1.9.17_1161]
Rating: 0 (from 0 votes)
VN:F [1.9.17_1161]
Стиль изложения
Информативность
Сложность вопроса
Научная новизна
Коммерциализуемость
Rating: 4.2/5 (1 vote cast)
Сравнительный тест языков программирования С++ и С# при разработке численного гидродинамического симулятора для прогнозирования показателей разработки нефтяных и газовых месторождений, 10.0 out of 10 based on 1 rating