Научная статья на тему 'ВИЗУАЛИЗАЦИЯ ГИДРОДИНАМИЧЕСКИХ МОДЕЛЕЙ МЕСТОРОЖДЕНИЙ'

ВИЗУАЛИЗАЦИЯ ГИДРОДИНАМИЧЕСКИХ МОДЕЛЕЙ МЕСТОРОЖДЕНИЙ Текст научной статьи по специальности «Математика»

CC BY
117
22
i Надоели баннеры? Вы всегда можете отключить рекламу.
Журнал
Вестник кибернетики
ВАК
Область наук
Ключевые слова
ГИДРОДИНАМИЧЕСКАЯ МОДЕЛЬ МЕСТОРОЖДЕНИЯ / ВИЗУАЛИЗАЦИЯ / ГЕОМЕТРИЯ УГЛОВОЙ ТОЧКИ / RESERVOIR HYDRODYNAMIC MODEL / VISUALIZATION / CORNER POINT GRID

Аннотация научной статьи по математике, автор научной работы — Гиацинтов А.М., Мамросенко К.А.

В статье рассмотрены методы визуализации гидродинамических моделей месторождений. Основная цель изучения пласта - предсказание его состояния и определение путей увеличения конечной нефтеотдачи. Моделирование разработки нефтяных месторождений позволяет уточнить геологическое строение и фильтрационно-емкостные свойства (ФЕС) нефтяного пласта при воспроизведении истории разработки (history matching), а также выбрать наилучший вариант разработки месторождения при расчетах прогнозных вариантов. Геометрия моделируемого нефтяного пласта представляется в виде конечного числа элементов или клеток (сетка), определяющих размер и объем месторождения. Чем большее количество элементов используется для аппроксимации объемов месторождения, тем выше точность моделирования. Однако повышение точности моделирования резервуара влечет за собой больший объем вычислений и занимаемой памяти, поэтому итоговая геометрия является компромиссом между вычислительной сложностью и соответствием реальности.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по математике , автор научной работы — Гиацинтов А.М., Мамросенко К.А.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

VISUALIZATION OF RESERVOIRS’ HYDRODYNAMIC MODELS

The article describes visualization methods of hydrodynamic models. Main purpose of seam examination is to predict its status and to find ways of increasing final oil recovery. Modeling of the oil reservoir allows increasing accuracy of reservoir properties and geological structure of the seam during history matching, as well as choosing the best strategy of reservoir management. Geometry of the modelled oil seam (called grid) is represented via the finite number of elements or cells that determine size and volume of the oil reservoir. The more elements used for reservoir volume approximation, the more detailed are the simulation results. However, increasing the accuracy of modeling leads to bigger amount of computation and higher memory usage, therefore final geometry is a compromise between computational complexity and accuracy. Geometry elements may be presented in various forms that influence the modeling accuracy. One of the simplest ways is to present cells of the grid as uniform cubes. The article presents a method of creating cell geometry for reservoir hydrodynamic models with the use of “corner points” that allows achieving better accuracy.

Текст научной работы на тему «ВИЗУАЛИЗАЦИЯ ГИДРОДИНАМИЧЕСКИХ МОДЕЛЕЙ МЕСТОРОЖДЕНИЙ»

УДК 004.92:553.98:531.3

ВИЗУАЛИЗАЦИЯ ГИДРОДИНАМИЧЕСКИХ МОДЕЛЕЙ МЕСТОРОЖДЕНИЙ А. М. Гиацинтов, К. А. Мамросенко

Федеральный научный центр Научно-исследовательский институт системных исследований Российской академии наук, algts@inbox.ru, kiriallam@yandex.ru

В статье рассмотрены методы визуализации гидродинамических моделей месторождений. Основная цель изучения пласта - предсказание его состояния и определение путей увеличения конечной нефтеотдачи. Моделирование разработки нефтяных месторождений позволяет уточнить геологическое строение и фильтрационно-емкостные свойства (ФЕС) нефтяного пласта при воспроизведении истории разработки (history matching), а также выбрать наилучший вариант разработки месторождения при расчетах прогнозных вариантов. Геометрия моделируемого нефтяного пласта представляется в виде конечного числа элементов или клеток (сетка), определяющих размер и объем месторождения. Чем большее количество элементов используется для аппроксимации объемов месторождения, тем выше точность моделирования. Однако повышение точности моделирования резервуара влечет за собой больший объем вычислений и занимаемой памяти, поэтому итоговая геометрия является компромиссом между вычислительной сложностью и соответствием реальности.

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

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

VISUALIZATION OF RESERVOIRS' HYDRODYNAMIC MODELS А. M. Giatsintov, K. A. Mamrosenko

System Research Institute, Russian Academy of Sciences, algts@inbox.ru, kiriallam@yandex.ru

The article describes visualization methods of hydrodynamic models. Main purpose of seam examination is to predict its status and to find ways of increasing final oil recovery. Modeling of the oil reservoir allows increasing accuracy of reservoir properties and geological structure of the seam during history matching, as well as choosing the best strategy of reservoir management. Geometry of the modelled oil seam (called grid) is represented via the finite number of elements or cells that determine size and volume of the oil reservoir. The more elements used for reservoir volume approximation, the more detailed are the simulation results. However, increasing the accuracy of modeling leads to bigger amount of computation and higher memory usage, therefore final geometry is a compromise between computational complexity and accuracy.

Geometry elements may be presented in various forms that influence the modeling accuracy. One of the simplest ways is to present cells of the grid as uniform cubes. The article presents a method of creating cell geometry for reservoir hydrodynamic models with the use of "corner points" that allows achieving better accuracy.

Keywords: reservoir hydrodynamic model, visualization, corner point grid.

Введение. Гидродинамическая модель месторождения - это математическая модель, воспроизводящая физические процессы в месторождении нефти или газа при его разработке. Основная цель изучения пласта - предсказание его состояния и определение путей

увеличения конечной нефтеотдачи. В классической теории разработки месторождений рассматривают осредненные объекты (балансная модель), для которых невозможно полностью учесть изменения параметров пласта и флюидов во времени и в пространстве. При моделировании с помощью вычислительных машин можно более детально исследовать пласт путем разбиения его на блоки и применения к каждому из них основных уравнений фильтрации.

Моделирование разработки нефтяных месторождений позволяет уточнить геологическое строение и фильтрационно-емкостные свойства (ФЕС) нефтяного пласта при воспроизведении истории разработки (history matching) а также выбрать наилучший вариант разработки месторождения при расчетах прогнозных вариантов [1].

Как правило, при построении моделей геологического строения и оценке добычных свойств сложнопостроенных объектов проводится большой комплекс различных исследований [2]. Однако полученные результаты в разрозненном состоянии зачастую не отображают всей совокупности необходимых данных. Поэтому обязательным элементом новых подходов должен стать синтез разнообразных накопленных данных в рамках трехмерного геологического моделирования [3].

Современные программные средства трехмерного моделирования позволяют создавать сколь угодно сложные модели залежей. Однако недостаточное внимание, уделяемое изучению особенностей моделируемых резервуаров, и неиспользование при построении трехмерных моделей всего имеющегося объема геолого-геофизических материалов часто приводит к получению «формальных» результатов, неадекватных реальным объектам [4].

На момент написания статьи в индустрии моделирования нефтяных месторождений существует ряд программных пакетов, однако можно выделить два лидирующих программных продукта: это Eclipse от компании Schlumberger и STARS от компании CMG. Каждый продукт сохраняет результаты моделирования в собственный формат хранения данных, зачастую бинарный, несовместимый с конкурирующими форматами. Для обмена данными эти программные продукты также реализуют выгрузку в текстовые форматы хранения данных, например, в формат Eclipse GRID ASCII.

Структура формата файла GRDECL. Формат представляет собой один или несколько текстовых файлов, зачастую с расширением GRDECL, в которых хранится информация, разбитая на несколько секций: размеры и форма нефтяного пласта (GRID); данные о свойствах породы и жидкости (PROPS); данные о начальном состоянии различных параметров, таких как пористость (SOLUTION); данные о местонахождении скважин, истории разработки и изменении параметров с течением времени (SCHEDULE) [5]. Зачастую, из-за больших объемов данных информация о геометрии нефтяного пласта, а также остальных параметрах, таких как нефтенасыщенность, хранится в отдельных файлах, в то время как в основном файле остается общее описание. Во время обработки основного файла данные из остальных файлов присоединяются к основному файлу при помощи команды INCLUDE.

Геометрия моделируемого нефтяного пласта представляется в виде конечного числа элементов или клеток (сетка), определяющих размер и объем месторождения. Чем большее количество элементов используется для аппроксимации объемов месторождения, тем выше точность моделирования. Однако повышение точности моделирования резервуара влечет за собой больший объем вычислений и занимаемой памяти, поэтому итоговая геометрия является компромиссом между вычислительной сложностью и соответствием реальности.

Элементы геометрии могут быть представлены в различных вариантах, влияющих на точность моделирования. Одним из самых простых вариантов является представление элементов в виде одинаковых кубов. В этом случае геометрия нефтяного пласта будет определяться размерами кубов, а также количеством кубов по каждой из осей (X, Y, Z). По стандарту Eclipse, для обозначения индекса элемента используются символы I, J, K,

соответствующие осям X, Y, Z. Порядок изменения индексов можно сравнить с чтением книги: I - изменяется слева направо; J - изменяется сверху вниз; K - изменяется с переходом на следующую страницу. При использовании географических координат I будет изменяться с запада на восток; J - с севера на юг; K - изменяется вниз. Таким образом, простейшая сетка будет состоять из кубов одинакового размера, содержащая NX кубов по оси X, NY кубов по оси Y и NZ кубов по оси Z. Итоговая модель нефтяного резервуара будет представлена NX*NY*NZ количеством кубов.

Из-за того, что настоящие резервуары имеют комплексную структуру, определяемую различными геологическими параметрами, его аппроксимация, основанная на применении клеток, имеющих одинаковые значения по каждой из осей, значительно снижают точность моделирования резервуара. Основной причиной, по которой такие сетки не используются повсеместно, является наличие разломов в нефтяных резервуарах. Разлом характеризует прерывистость пласта и зачастую имеет очень сложную геометрию. Так как одной из основных целей является как можно более подробное моделирование геометрии нефтяного пласта с учетом разломов, то применение сеток, основанных на одинаковых элементах, существенно ограничено из-за невозможности в точности определять границы разломов.

Для повышения точности моделирования для каждой ячейки вводится понятие глубины, уникальное для каждой из вершин многогранника. По терминологии Eclipse такая геометрия ячеек называется «геометрией угловой точки» (Corner Point Grid). Такие геометрические сетки называют структурированными и широко применяются в индустрии.

Еще одним подходом является применение неструктурированных сеток. В этом случае каждая клетка состоит из произвольного числа граней, что позволяет моделировать геометрию любой сложности, в то же время сохраняя количество элементов на уровне, сопоставимом со структурированными сетками. В этой статье рассмотрим структурированные сетки.

Формирование геометрии ячеек. Формирование ячейки при использовании геометрии угловой точки производится в два этапа: определение координатных линий и задание точек на этих координатных линиях [6]. Координатная линия является прямой негоризонтальной линией, определяемая двумя координатами: (X, Y, Z) - верх; (X, Y, Z) -низ (Рис. 1). В большинстве случаев координатная линия является вертикальной. Для построения одной ячейки требуется четыре координатные линии, соответственно количество координатных линий будет равно NX + 1, NY + 1, где N - количество ячеек по осям X и Y соответственно. Каждую линию можно определить по идентификатору (I, J). По стандарту Eclipse координатные линии не могут пересекаться.

Линия (4,1)

Линия "ч

Верх

Линия (4,4)

Низ

Рис. 1. Координатные линии

В файле формата Eclipse ASCII (GRDECL) данные о координатных линиях хранятся в секции GRID и определяются ключевым словом COORD. В большинстве случаев данные о координатных линиях будут представлены следующим образом: в одной строке записаны значения трех координат для верхней точки и значения трех координат для нижней точки линии. В зависимости от программы-экспортера количество элементов в строке может варьироваться, например, в одной строке может быть координаты верхней и нижней точки линии и первые две координаты следующей координатной линии. Секция COORD заканчивается при достижении символа косой черты "/", который также может находиться как на одной строке с данными, так и на следующей строке.

Независимо от способа записи в файл, данные о координатных линиях обрабатываются в следующем порядке:

x(1,1^EPX y(1,1)ВЕРХ z(1,1)EEPX x(1,1)HTO y(1,1 )НИЗ z(1,1)Hffi x(2,1^EPX у(2,1)верх z(2,1^EPX x(2,i)hTO у(2,1)нИ3 z(2,1)HH3

x(NX+ 1,1)ВЕРХ y(NX+ 1,1)ВЕРХ z(NX+1,1 )ВЕРХ,

x(NX+ 1,1)нИЗ y(NX+1,1)НИЗ z(NX+1,1 )НИЗ

x(l,2)ВEPХ у(1,2)ВЕРХ z(1,2^EPX x(1,2)HTO у(1,2)НИЗ z(1,2)Hffi

x(NX+ 1,NY+ 1)ВЕРХ y(NX+ 1,NY+ 1)ВЕРХ z(NX+ 1,NY+1 )ВЕРХ, x(NX+ 1,NY+ 1)нИЗ y(NX+ 1,NY+1 )НИ3 z(NX+1,NY+1)HTO

После определения координатных линий необходимо задать расположение угловых точек для каждой ячейки геометрии. Пересечение между негоризонтальной линией координат и значением глубины является уникальным, что позволяет рассчитать координаты всех точек многогранника. Угловые точки задаются в секции ZCORN. По аналогии с координатными линиями, значения угловых точек могут быть записаны в файл в различном виде, однако порядок обработки значений угловых точек всегда одинаков.

Обработка значений в секции ZCORN во многом схожа с обработкой значений координатных линий и производится в порядке I, J, K, т. е. первыми обрабатываются значения по оси X (I), затем по Y (J), после этого происходит переход на следующий слой по оси Z (K).

Рассмотрим процесс обработки подробнее на примере модели с размерами 3*3*3 (рис. 2). По стандарту ECLIPSE первыми будут обработаны точки с северной стороны ячеек, с запада на восток, т. е. северные верхние точки для ячеек (1, 1, 1)-(3, 1, 1). Далее производится переход на следующий ряд по J, т. е. будут обработаны северные верхние точки для ячеек (1, 2, 1)-(3, 2, 1). После считывания северных верхних точек для всех ячеек по I начинается обработка южных точек, т. е. будут считаны южные верхние точки для ячеек (1, 1, 1)—(3, 1, 1). Затем производится переход на следующий ряд по J и процесс повторяется.

к

Рис. 2. Угловые точки

По окончанию считывания всех верхних значений начинается процесс обработки нижних точек ячеек, аналогичный описанному выше. После обработки всех северных и южных значений для нижних точек ячеек производится переход на следующий слой ^ и весь процесс обработки начинается заново [7].

Формализуем процесс обработки значений угловых точек: г(1,1,1 )ВЕРХ^ г(1,1,1 )ВЕРХ,№ z(2,1,1 )ВЕРХ^ z(2,1,1 )ВЕРХ,№ ... z(NX,1,l)вЕРХ,NE

z(1,1,1)ВЕРХ,SW z(l,1,1)ВЕРХ,SE z(2,1,1)ВЕРХ,SW z(2,1,1 )ВЕРХ, SE... z(NX,1,l)вЕРХ, SE

z(1,2,1)ВЕРХ,NW z(1,2,1)ВЕРХ,NE z(2,2,1)ВЕРХ,NW z(2,2,1)ВЕРХ,NE. z(NX,2,l)вЕРХ,NE

z(1,2,1)ВЕРХ,SW z(l,2,1)ВЕРХ,SE z(2,2,1)ВЕРХ,SW z(2,2,1)ВЕРХ, SE. z(NX,2,l)вЕРХ, SE

z(1,NY,1)ВЕРХ,SW z(1,NY,1)ВЕРХ,SE z(2,NY,1)ВЕРХ,SW z(2,NY,1)ВЕРХ, SE . z(NX,NY,1)ВЕРХ, SE

г(1,1,1 )НИЗ,NW г(1,1,1 )НИЗ,NE z(2,1,1 )НИЗ,NW z(2,1,1 )НИЗ,NE . z(NX,1,1)НИЗ,NE

z(1,NY,1)НИЗ, SW z(1,NY,1)НИЗ, SE z(2,NY,1)НИЗ, SW z(2,NY,1)НИЗ, SE . z(NX,NY,1)НИЗ, SE

z(1,1,2)ВЕРХ,NW z(1,1,2)ВЕРХ,NE z(2,1,2)ВЕРХ,NW z(2,1,2)ВЕРХ,NE. z(NX,1,2)вЕРХ,NE

z(1,NY,NZ)BEPX,NW z(1,NY,NZ)BEPX,NE z(2,NY,NZ)BEPX,NW z(2,NY,NZ)BEPX,NE

... z(NX,NY,NZ)BEPX,NE, где NW - северо-запад; NE - северо-восток; SW - юго-запад; SE - юго-восток.

На основе данных о координатных линиях и угловых точках формируется итоговая геометрия нефтяного пласта.

Одной из основных проблем, связанной с подобным подходом к хранению данных, является получение данных о конкретной вершине определенной ячейки геометрии. Для получения данных о вершинах многоугольника был разработан алгоритм, выполняемый последовательно для каждого многоугольника в геометрической модели.

Рассмотрим геометрическую модель размером 5 * 5 * 5 ячеек. Согласно формату, в такой модели содержится 36 координатных линий COORD и 1 000 значений ZCORN. В разработанном алгоритме данные о координатной линии представляются в виде позиции двух точек, соответственно, данные о 36 координатных линиях обрабатываются как 72 точки.

Предположим, что выполняется определение позиций вершин для первого многоугольника второго ряда по оси Z. В рассматриваемой модели это будет 26-я ячейка. Номер ячейки является основным элементом в формулах определения индексов вершин секций COORD и ZCORN. Значения индексов COORD и ZCORN для этой ячейки приведены

на рис. 3.

COORD ZCORNI

Рис. 3. Значения индексов COORD и ZCORN для определенной ячейки

Обработка вершин производится в следующем порядке: северо-западная верхняя вершина; северо-восточная верхняя; юго-западная верхняя; юго-восточная верхняя; северозападная нижняя; северо-восточная нижняя; юго-западная нижняя; юго-восточная нижняя вершина. Основные расчеты производятся для получения индексов COORD и ZCORN для первой вершины, индексы для остальных вершин рассчитываются при помощи дельты к индексам первой вершины. Для определения индекса COORD для первой вершины многоугольника применяется следующая формула (1):

¡coordi = (Uc -1)*2 + SC00RD) mod ((Vx *VY * 2) - Vx * 2) (1)

где Icoordi - индекс вершины в секции COORD; Ic - индекс обрабатываемой ячейки геометрии; SC00RD - шаг смещения; mod - деление по модулю; Vx - количество вершин в геометрической модели по оси X; Vx - количество вершин в геометрической модели по оси Y.

Необходимо отметить, что из секции COORD берутся только значения для осей X и Y, значения оси Z не учитываются и берутся из секции ZCORN. Так как значения верхней и нижней точки координатных линий совпадают по осям X и Y, то обрабатывается только каждая вторая точка (верхняя точка координатной линии). Количество вершин по осям X и Y согласно стандарту Eclipse всегда больше на единицу количества ячеек по соответствующей оси. Шаг смещения применяется для корректной обработки индексов вершин после обработки последней ячейки первого ряда по оси X. В начале работы алгоритма шаг смещения равен нулю, однако он увеличивается на 2 при переходе на следующий ряд ячеек по оси Y. При переходе на следующий слой по оси Z значение шага смещения обнуляется. Например, для рассматриваемой ячейки шаг смещения будет равен нулю. Для следующей ячейки по оси Y (31-я ячейка) шаг смещения будет равен 2.

Индекс вершины в секции COORD применительно к верхней северо-восточной вершине ячейки рассчитывается по формуле (2):

Icoord2 = Icoordi + 2 (2)

где Icoordi - индекс верхней северо-западной вершины в секции COORD.

Для расчета индексов верхних южных вершин ячейки необходимо учитывать порядок обработки координатных линий в стандарте Eclipse - сначала обрабатываются все точки по оси X. Таким образом, индекс верхней юго-западной вершины является суммой индекса верхней северо-западной вершины и количеством вершин по оси X. Расчет индекса верхней юго-восточной вершины схож с (2) и приведен в формуле (4).

Icoord3 = Icoordi + Vx (3)

IcOORDA = IcOORD3 + 2 (4)

где Vx - количество вершин по оси X в геометрической модели.

Расчет индексов в секции COORD для нижних вершин ячейки полностью аналогичен, таким образом можно повторно использовать уже рассчитанные значения.

Определение индекса вершины в секции ZCORN требует учета большего числа факторов. Например, необходимо учитывать переходы с одного ряда на другой для трех осей X, Y, Z. Для определения количества обработанных рядов по оси X применяется следующая формула:

Rowsx =-mod Dy (5)

Dx

где Ic - индекс обрабатываемой ячейки геометрии; Dx - количество ячеек по оси X; Dy -количество ячеек по оси Y.

Чтобы определить переход на следующий ряд по оси Z применяется формула (6):

Rowsy = (6)

Dx*Dy

Как и в случае с секцией COORD, для корректного определения индекса вершины в секции ZCORN применяется шаг смещения SZC0RN. В зависимости от значения RowsY шаг

смещения рассчитывается по различным формулам. Для случая, когда количество обработанных рядов по оси Y не превышает общее количество рядов в геометрии нефтяного пласта по оси Y, применяется следующая формула (7):

5

ZCORN

= Rowsx * Dx*2

(7)

В случае, когда первый ряд ячеек по осям X и Y полностью обработан, шаг смещения рассчитывается по формуле (8):

Бгсош = Ко№5х * Ох*2 + ((Иожзу * Бх* Бу* О) — (Иожзу * Ох * Оу * 2)). (8) Таким образом, расчет индекса первой вершины ячейки в секции ZCORN можно произвести по следующей формуле (9):

I

ZCORN1

= (IC-1)*2+S:

ZCORN

(9)

Рассмотрим работу этих формул на примере рассматриваемой ранее ячейки геометрии. Для данной ячейки Rowsx будет равен нулю, так как ячейка является первой по оси X и оси Y. RowsY будет равен единице, соответственно, вторая часть формулы будет иметь вид 1*5*5*8 = 200. Фактически это и будет необходимым индексом значения в секции ZCORN. Но так как формула (9) также использует индекс текущей обрабатываемой ячейки геометрии 1С, то для рассматриваемой ячейки рассчитываемый индекс будет равен 250, что некорректно. Последняя часть формулы (8) как раз и предназначена для коррекции итогового рассчитываемого индекса, который для рассматриваемой ячейки должен быть равен 200.

По аналогии с расчетом индексов в секции COORD, расчет индексов остальных вершин в секции ZCORN производится по следующей формуле (10):

IzCORNX = 1ZCORN 1 + d (10)

где Izcornx - индекс второй или последующей вершины в секции ZCORN; Izcorn1 -рассчитанный индекс первой вершины в секции ZCORN; d - дельта, изменяемая в зависимости от текущей обрабатываемой вершины ячейки.

Значения d для второй и последующих вершин ячейки геометрии приведены в табл. 1, где Dx - количество ячеек геометрии по оси X; Dy - количество ячеек геометрии по оси Y.

Значение дельты в зависимости от вершины ячейки геометрии

Таблица 1

Позиция вершины в ячейке Значение d

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Северо-восточная верхняя 1

Юго-западная верхняя Dx * 2

Юго-восточная верхняя (Dx * 2) + 1

Северо-западная нижняя (Dx * 2) * (Dy * 2)

Северо-восточная нижняя (Dx * 2) * (Dv * 2) + 1

Юго-западная нижняя ((Dx * 2) * (Dy * 2)) + Dx * 2

Юго-восточная нижняя ((Dx * 2) * фу * 2)) + Dx * 2 + 1

На основе полученных данных из секций COORD и ZCORN формируются вершины одной ячейки в трехмерном пространстве. Полученные данные о вершинах могут быть загружены в память видеокарты для отображения или же использоваться для дальнейших расчетов, например, нормалей вершин.

Формирование окантовки ячеек. Еще одной задачей было отображение окантовки вокруг геометрии нефтяного пласта для определения границ ячеек, когда несколько ячеек имеют одинаковый или похожий цвет. Окантовка может быть включена и отключена по требованию пользователя [8].

Одним из способов отображения окантовки является создание новой геометрии. Для каждой вершины геометрии вершины нефтяного пласта создается дополнительная вершина, применяемая для окантовки. Создаваемая вершина должна находиться на небольшом

расстоянии от исходной вершины, иначе при движении виртуальной камеры будет наблюдаться эффект мерцания в месте соприкосновения точек, известный как Z-fighting.

Геометрия окантовки может быть прорисована в виде треугольников с использованием каркасного режима прорисовки (Wireframe). Но поскольку сторона ячейки геометрии нефтяного пласта состоит из двух треугольников, то при прорисовке окантовки будет отображен не только каркас вокруг ячейки, но и диагональные линии каждой из сторон ячейки. Данное обстоятельство может быть нежелательным, поэтому для большей гибкости прорисовку окантовки следует производить при помощи линий.

При создании окантовки при помощи линий необходимо задавать начальную и конечную точки для каждой линии. Также существует возможность создания линий при помощи сегментов, когда первые две точки линии являются первым сегментом, а добавление последующих точек позволяет сформировать новый сегмент линии. В нашем случае, создание линий при помощи сегментов потребует перерисовки уже созданных сегментов для окантовки всей ячейки геометрии нефтяного пласта, что может привести к эффекту мерцания (Z-fighting).

Порядок создания линий для окантовки ячейки может быть любым. В результате формируется массив вершин, который может быть загружен в память видеокарты для отображения. С учетом того, что последние версии графических интерфейсов OpenGL и DirectX требуют применения шейдерных программ для отображения графики, прорисовка окантовки производится с помощью разработанного шейдера на языке GLSL.

При прорисовке окантовки может возникнуть проблема позиционирования, когда часть окантовки может оказаться внутри геометрии нефтяного пласта, а другая часть заметно от нее удалена. Это связано с тем, что каждой вершине окантовке присваивается один и тот же коэффициент смещения от геометрии нефтяного пласта. Например, вершина ячейки геометрии расположена в координатах (0, -20, 0). Если брать коэффициент смещения для окантовки равным 0,2, вершина окантовки будет расположена в координатах (0, -20.2, 0), т. е. будет находиться внутри геометрии ячейки нефтяного пласта, в то время как она должна находиться в координатах (0, -19.8, 0). Таким образом, для корректного отображения каждой вершине окантовки необходимо задавать различные коэффициенты смещения.

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

Для расчета коэффициентов смещения окантовки был разработан метод, позволяющий производить расчет коэффициентов во время создания окантовки, а не во время ее прорисовки. Коэффициенты рассчитываются на основе данных о вершинах каждой ячейки геометрии нефтяного пласта для каждой из осей X, Y или Z, а также могут быть настраиваемы пользователем. После расчета для каждой из осей коэффициенты сохраняются в массив для каждой точки окантовки обрабатываемой ячейки геометрии. Большое значение имеет знак сохраняемого коэффициента, при помощи которого определяется направление смещения по каждой из осей.

Реализация метода внедрена в применяемый графический модуль в качестве расширения.

Заключение. Задача моделирования нефтяных месторождений является комплексной и требует решения ряда сопутствующих задач, в частности, задач обработки и визуализации данных. Приведенное описание текстового формата обмена геологическими данными может быть использовано для разработки алгоритмов чтения и обработки данных о месторождениях. Разработанный алгоритм обработки геометрических данных позволяет формировать массив вершин геометрии нефтяного пласта, который может быть использован для визуализации. Разработанный метод создания окантовки геометрии нефтяного пласта позволил осуществлять прорисовку окантовки геометрии с сохранением требуемой производительности подсистемы визуализации. В дальнейшем планируется реализация окантовки геометрии при помощи шейдерной программы, способной прорисовывать грани окантовки напрямую на ячейках геометрии нефтяного пласта без создания дополнительной геометрии в виде линий, что позволит в значительной мере снизить влияние прорисовки окантовки на производительность подсистемы визуализации.

Работа выполнена при поддержке РФФИ, грант № 16-29-15135.

Литература

1. Моделирование нефтяных месторождений. URL: http://neftynik.ru/modelirovanie-oil-fields/ (дата обращения: 13.10.2015).

2. Афанаскин И. В. и др. Изучение свойств нефтяных пластов с помощью гидродинамических исследований скважин методом двух режимов: теория, моделирование и практика // Вестн. кибернетики. 2015. № 3 (19). С. 94-116.

3. Вольпин С. Г., Афанаскин И. В., Кац Р. М. Использование численного термогидродинамического моделирования для обоснования повышения технологической эффективности метода направленной закачки воздуха // Тр. Науч.-исслед. ин-та системных исследований Рос. Академии наук. 2014. Т. 4. № 1. С. 71-79.

4. Трехмерное геологическое моделирование природных резервуаров на основе литолого-фациального анализа (на примере юрских и нижнемеловых отложений Западной Сибири) [Электронный ресурс] // Все о Геологии. URL: http://geo.web.ru/db/msg.html?mid=1181203&uri=part01.html (дата обращения: 13.10.2015).

5. GRDECL format. URL: http://yttrium-v2.innovative-ai.com/portfolio/grdecl-reading-and-visualization/ (дата обращения: 30.01.2018).

6. Андреев А. В. и др. Методы обработки и визуализации данных геолого-технологической модели в имитационных системах // Информ. технологии в проектировании и производстве. 2017. № 3. С. 29-33.

7. Pettersen 0. Basics of Reservoir Simulation With the Eclipse Reservoir Simulator. Bergen : Univ. of Bergen, 2006. 114 р.

8. Полевой Н. М., Гиацинтов А. М. Требования к компоненту визуализации виртуального окружения в имитационных системах // Автоматика и программная инженерия. 2016. № 3. С. 34-39.

i Надоели баннеры? Вы всегда можете отключить рекламу.