Закревский К. Е.
Практикум по геологическому 3D моделированию. Построение тестовой модели в Petrel 2009
К. Е. Закревс...
54 downloads
1289 Views
31MB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
Закревский К. Е.
Практикум по геологическому 3D моделированию. Построение тестовой модели в Petrel 2009
К. Е. Закревский
ПР А КТИК У М по геологическому 3D моделированию Построение тестовой модели в Petrel 2009
Москва 2010
УДК 553.9:551.252 ББК 26.343 З20
Консультанты – А.В. Пузин, О.Ю. Зайцев, С.А. Тятюшкин (Schlumberger).
Закревский К.Е. Практикум по геологическому 3D моделированию. Построение тестовой модели в З20 Petrel 2009. – М., 2010. – 110 с. ISBN 978-5-98422-099-6 На примере тестового проекта, подготовленного на основе геолого-геофизической информации типичного российского месторождения, рассмотрены вопросы технологии построения трехмерных компьютерных геологических моделей продуктивных пластов в программном комплексе Petrel 2009 (Schlumberger). В процессе работы рассматриваются наиболее распространенные методики построения моделей и использования программного комплекса, позволяющие познакомиться со спектром возможностей программы по анализу, визуализации и использованию геологогеофизической информации. Для молодых специалистов проектных и сервисных организаций, занимающихся построением геологических моделей нефтяных и нефтегазовых месторождений, а также для студентов и выпускников высших учебных заведений нефтегазовых и геологических специальностей. УДК 553.9:551.252 ББК 26.343
ISBN 978-5-98422-099-6 © К.Е. Закревский, 2010
Содержание 1. Загрузка и подготовка данных
1-1
2. Корреляция
2-1
3. Геометризация залежей
3-1
4. Построение каркаса и ВНК
4-1
5. Осреднение скважинных данных на сетку
5-1
6. Построение куба литологии
6-1
7. Построение куба пористости
7-1
8. Построение куба нефтенасыщенности
8-1
9. Подсчет запасов
9-1
10. Менеджер задач
10-1
11. Двумерное картопостроение
11-1
12. Картооформление
12-1
1. Загрузка и подготовка данных Загрузку
данных
начнем с импорта исходных файлов из папки INPUT. Для этого необходимо выполнить команду
Импорт
(рис.1.1.).
Все
файлов исходные
данные лежат в подпапках папки INPUT. Вначале зайдем в папку Заголовок скважины (Well Head) и загрузим текстовый файл
описания
устьев
скважин «new well head» (рис.1.2.), указав тип файла «Well heads». Укажем колонок
номера
(рис.1.3.):
скважины
–
1,
имя символ
скважины – 2, координаты устья - 3 и 4, альтитуда – 5, глубина забоя – 6. Они соответствуют номерам столбцов в файле описания устьев скважин. После закладке
загрузки
исходных
в
данных
Input должна появиться папка скважин
(рис.1.3.),
где
разведочные скважины имеют одинаковые символы. Также одинаковые
символы
эксплуатационных
у
скважин
одного куста.
1-1
Для
загрузки
данных инклинометрии зайдем в папку INCL и выберем
сразу
все
скважины,
указав
тип
файла
«well
path/deviation». Программа
(рис.1.4.),
выдаст
таблицу
соответствия
имен
скважин и имен файлов инклинометрии. Просмотрев всю таблицу, можно убедиться в их идентичности. При необходимости можно поменять соответствие файлов, если в названии скважин или файлов инклинометрии допущены ошибки. Хотя в файлах инклинометрии содержатся, в том числе, и данные по углам и азимутам с уже введенным магнитным склонением, предпочтительнее грузить инклинометрию через позиционный каротаж (MD, X, Y, Z). Это позволяет избежать расхождений в траекториях стволов скважин, вызванных различиями в алгоритмах расчета траекторий в используемой программе и, например, в программе, применяемой маркшейдерской службой. Укажем номера колонок: измеренная глубина MD – 1, X – 2, Y - 3, Z – 4. Для
загрузки
стратиграфических разбивок (рис.1.5.) по разведочным скважинам, откроем в папке Well Tops R файл «Well tops», указав тип файла «Petrel well tops». Укажем номера колонок: имя скважины (well) – 1, тип отбивки (type) – 2,
1-2
имя кровли пласта (surface) – 3, X – 4, Y - 5, Z – 6, измеренная глубина MD – 7. Остальные колонки справа от седьмой, если необходимо, просто выделим и удалим. Укажем число строк заголовка файла – 1. Затем, когда программа сообщит (рис.1.6.), что она привяжет разбивки согласно измеренной глубине и инклинометрии, согласимся и получим (рис.1.5.) в исходных данных папку Well tops.
Если бы измеренной глубины у нас не было, то программа рассчитала бы ее для каждой разбивки, определив для нее ближайшую точку на траектории скважины. Следующим шагом загрузим каротажи из папки LAS, указав тип файла «well logs (ASCII)». Проверив соответствие имен скважин и файлов, сначала на примере первой скважины укажем программе, какие данные мы загружаем с помощью опции «Specify logs to be loaded» (рис.1.7). Для этого в раскрывшейся таблице определим для каждого каротажа тип измерений, который в Petrel задается шаблоном (Template). Список шаблонов отсортирован в алфавитном порядке, поэтому для быстрого поиска удобно нажимать на клавиатуре первую букву искомого шаблона. Кривую глубины
1-3
DEPT привяжем к шаблону измеренных глубин Measured depth, кривую бокового каротажа BK – к шаблону сопротивления Resistivity, кривую гамма-каротажа GK – к шаблону гамма излучения Gamma ray, кривую индукционного каротажа IK – к шаблону проводимости Conductivity, кривую нейтронного каротажа NKT – к шаблону нейтронного излучения Neutron, кривую ПС (PS) – к шаблону потенциалов собственной поляризации Spontaneous potential, кривую нефтенасыщенности Soil – к шаблону Oil saturation, кривую пористости Kpor – к шаблону Porosity. Это все были непрерывные
кривые.
Привяжем
также
дискретные
кривые:
кривую
коллектор/неколлектор Kod_coll – к шаблону литологии Lithologies, кривую характера насыщения Kod_fluid – к шаблону флюида Fluids. После того как для каждого каротажа определен подходящий шаблон, нажимаем OK. В открывшемся во второй раз диалоговом окне на этот раз оставим включенной опцию самораспознавания (Autodetect logs) кривых и осуществим загрузку всех остальных фалов: OK for all. Такое выполнение загрузки в два этапа удобно, когда на первой скважине представлено большинство каротажей. Задав шаблоны только для одной скважины, мы разрешаем программе подобрать их для остальных скважин автоматически. Если автоматически присвоенный шаблон не устраивает, то после загрузки его можно изменить на закладке Info, зайдя в Настроки (Settings) каротажа, лежащего в папке Global well logs (рис.1.8). Но если каротаж был загружен как непрерывный, то Petrel не даст возможности привязать его к дискретному шаблону (и наоборот). Это связано с принципиальными отличиями в программе этих двух типов данных. Поэтому, если все-таки возникла необходимость поменять тип каротажа, можно в калькуляторе для глобальных каротажей создать копию каротажа с новым шаблоном. Лишнюю кривую глубины удалим из проекта (рис.1.9).
Наконец завершим загрузку исходных данных комментариями (comments) – результатами испытаний пластов для загруженных ранее вместе с кривыми ГИС 1-4
интервалами перфорации (кривая Perf). Загрузим результаты испытаний пластов из папки Сomment (рис.1.10), указав тип файла «Comment well log». Установим для каждого шаблона соответствующее число знаков после запятой, раскраску, название и рисунок (Pattern) - рис.1.11-13. Для кривых измеренных глубин, гамма-каротажа, нейтронного каротажа, проводимости и ПС выберем один знак после запятой, один и тот же цвет от минимуму да максимума. Для этого надо предварительно перейти из закладки исходных данных Input в закладку Templates.
1-5
Для пористости выберем три знака после запятой, нефтенасыщенности – два знака, цвет переменный от синего до красного. Для шаблона литологии (рис.1.13) зададим для нулевых значений название Clay, зеленый цвет, для единичных значений название Sand и желтый цвет. Остальные строки удалим. Для шаблона флюида зададим для нулевых значений название Clay, зеленый цвет, для единичных значений название Oil и коричневый цвет, для значений двойки название Water и синий цвет.
1-6
Добавим в таблицу строки и зададим для значений
двенадцать
название
Und
(неопределенный характер насыщения) и белый цвет. Подготовив, таким образом, загруженные кривые ГИС и РИГИС для дальнейшей работы, вернемся к папке стратиграфических разбивок и переименуем ее, убрав txt. Переименуем зоны в первую, вторую и третью (рис.1.14). К сожалению, на некоторых рисунках в следующих главах названия зон остались старые, непереименованные (Zone 1 – Zone_top_BC_1), за что автор приносит свои извинения. Следующим
шагом
загрузим полигон лицензии (рис.1.15), указав тип файла CPS-3 lines и тип линии – контуры.
Завершим
загрузкой
этап
структурной
сейсмической карты с именем «seismic» сейсмического
и
карту
атрибута
с
именем «seis_atribut», которые затем будем использовать в качестве трендов (формат карт CPS-3 grid ASCII). Создадим новую папку. Переименуем ее и перетащим две загруженные карты в эту папку - рис.1.16.
Сохраним проект с загруженными данными.
1-7
2. Корреляция Для создания схем корреляции предварительно необходимо визуализировать скважины с уже имеющимися стратиграфическими разбивками (опорные) и без них. Откроем новое двумерное окно, назовем его «2D plan» и установим ему серую цветовую подложку (рис.2.1).
В этом окне визуализируем все скважины проекта, указав в качестве атрибута имя скважины (рис.2.2.). В Установках для папки Скважины (Wells) укажем красный цвет папки (тот же рис.2.2). Для траекторий скважин (Path) поставим цвет «как у скважины (as well)», ширину линии 20. Для подписей символов скважин зададим размер 20 в 2D, цвет «как у папки (as folder)», а расположение – в точках пересечений сейсмической структурной поверхности с траекториями скважин (или у забоев – base). Для самих символов (значков) скважин проставим размер 50, цвет «как у скважины», а расположение – по устью. Далее визуализируем стратиграфические разбивки (well tops). Включим отбивки только по одному пласту, например, по верхнему пласту БС101 (рис.2.3), указав в качестве атрибута имя скважины.
2-1
2-2
Укажем для значков отбивок черный цвет, размер 40, а для подписей – размер 15 в 2D. В результате получим план расположения скважин, на котором черным цветом видны места расположения скважин с уже имеющимися разбивками (рис.2.4).
Для набора скважин в корреляционные схемы укрупним окно и начнем набирать скважины в первую схему корреляции так, чтобы она начиналась и заканчивалась скважинами с уже готовыми разбивками, между которыми располагались бы близрасположенные скважины без разбивок. Сформируем (рис.2.5) первую схему корреляции по двум кустам по следующим номерам скважин: 16R-15-49-17-98-22-80-75-76-73-71-66-62-65-110-74-100-15R.
2-3
Откроем первое окно корреляции (Well section 1) и включим одну за другой скважины именно в этом порядке, чтобы потом не пришлось перетаскивать скважины, задавая нужную последовательность.
Предварительно для
удобства
отсортируем
поиска скважины
(рис.2.6) по номерам (по имени).
На шаге
в
следующем первой
слева
скважине 16R включим кривые ПС, ГК, БК и НКТ (рис.2.7).
Раскроем корреляции
контейнер
(well
схемы
section
контейнер
16R
удобства
работы
каротажи.
Перетащим
1)
скважины.
и Для
сгруппируем мышкой
кривую ГК в трэк (track panel) кривой ПС, а кривую НКТ в трэк кривой БК. Работать
будем
в
измеренных
глубинах, для чего укажем MD в окошке вверху.
2-4
Теперь выставим для каротажей установки отображения. Будем поочередно заходить в Settings для каждой кривой в скважине 16R в окне корреляции. Для кривой ПС определим цвет «как свойство (as property)», ширину линии 3, а максимум и минимум выставлять не будем, так как для кривой ПС в каждой скважине они могут меняться очень значительно (рис.2.8). Для кривой ГК установим тот же цвет и ширину, а максимум и минимум от 0 до 15. Для кривой БК – от 2 до 40, для кривой НКТ – от 1 до 10. В дальнейшем при необходимости для некоторых скважин для лучшей визуализации мы будем в индивидуальном порядке менять диапазоны изменения параметров.
Укажем для скважины 16R, что будем использовать ее в качестве шаблона (template) для других скважин. Применим установки отображения этой скважины к другим скважинам схемы корреляции, отметив именно ее при выборе шаблона (template) для применения. После этого получим в схеме корреляции все скважины с раскраской и диапазонами кривых так, как мы это сделали для скважины 16R (рис.2.9). Перейдя в Настройки (Settings) схемы корреляции, выставим расстояние между скважинами постоянное 5 мм и фиксированный вертикальный масштаб 1:500. Включим сейсмическую поверхность, задав ей толщину линии 15, и прокрутим скважины, выравнивая примерно на положение сейсмического горизонта (рис.2.10). 2-5
2-6
Включим
стратиграфические
отбивки, активизировав горизонт кровли глины
(выделив
создание
и
мышкой).
Начнем
редактирование
отбивок
кровли глины (create/edit well tops), проставляя отбивки в каждой скважине слева направо (рис.2.11). Проставлять отбивку кровли глины мы будем в основном по началу падения показаний зондов нейтронного и бокового каротажа. Поскольку глины эти мягкие, то при бурении они размываются буровым раствором, образуя каверну. Кривая ПС практически не реагирует на каверну, показания гамма-каротажа могут падать или оставаться прежними. А вот показания бокового каротажа (рис.2.12) приближаются к показаниям для бурового раствора 1-3 Омм. Показания нейтронного каротажа также приближаются к показаниям в баке с водой, составляя 1-1,5. Поскольку каверна заполнена не водой, а раствором, и имеет ограниченные размеры, то показания нейтронного каротажа должны несколько превышать единицу. Мощность каверны составляет 4-5 м, ниже подошвы глины залегают песчаники пласта БС11.
2-7
После того, как отбивки кровли глины будут проставлены во всех скважинах корреляционного набора, мы сделаем выравнивание скважин на этот горизонт, указав в Настройках (Settings) корреляционной схемы «выравнивание на отбивки (flatten on well top)» и забросив стрелочкой горизонт кровли глины (рис.2.12). Теперь проставим разбивки стратиграфической пластов
БС101,
БС103.
Будем
ориентироваться
на
кровли БС102
и
начало опесчанивания в кровле каждого пласта. В песчаниках показания ПС и ГК уменьшаются влево, показания
БК
увеличиваются
и
НКТ
вправо.
Для редактирования разбивок можно использовать отмену действия (Undo), удаление или изменение глубины отбивки (рис.2.13). В контейнере глобальных каротажей включим кривую кода коллектора, которая визуализируется во всех скважинах. Пройдемся слева направо по схеме корреляции (рис.2.14), проверяя, чтобы отбивки кровли пласта совпадали или были несколько выше начала первого проницаемого пропластка по результатам интерпретации ГИС (РИГИС). Для лучшей визуализации можно увеличить толщину линий в установках для разбивок до 10.
2-8
Перейдя в двумерное окно расположения, скважин можно проконтролировать наличие разбивок у всех скважин из данной корреляционной схемы (рис.2.15) – напомним, что отбивки отображаются в виде черных кругов.
Сформируем вторую схему корреляции по двум кустам по следующим номерам скважин:
14R-10-72-69-70-31-16-26-55-342-14-202-18-4-34-108-203-205-35-15R.
Применим для этой схемы корреляции в качестве темплейта скважину 16R из первой схемы корреляции и аналогично проставим корреляционные разбивки во всех скважинах. Третью схему сформируем по скважинам: 15R-101-3-32-142-27-103-59-115-9986-97-87-116-22R. Четвертую – по скважинам: 16R-77-36-39-52-518-54-38-51-24-45-6178-20-21-63-64-79-58-15R. В пятую схему включим оставшиеся скважины: 24R119-122-23R-22R-60-53-47-43-42-41-4R-17R-44.
Проставим
корреляционные разбивки во всех скважинах. В скважинах, где отсутствует боковой или нейтронный каротаж, можно включить кривую индукционного каротажа IK. На этой кривой начало каверны отбивается резким увеличением проводимости вправо (обратно уменьшению сопротивления – рис.2.16). В шестую, и последнюю, схему включим все разведочные
скважины
и
еще
раз
их
просмотрим,
корректируя, если надо, разбивки. Для контроля проделанной работы можно загрузить разбивки из тестового проекта, находящиеся на прилагаемом диске. 2-9
Это можно сделать либо используя операции экспорта/импорта, либо открыв второй проект (Reference project tool) из меню операций с файлами и указав, что папку разбивок будем копировать (галочка Copy mode) в наш проект (рис.2.17).
Проверим количество разбивок по каждому пласту. Возможно, мы где-то не проставили разбивки или поставили их дважды. Для этого создадим специальный фильтр – «сохраненный поиск» (Saved search), отвечающий за наличие разбивок в скважинах. В папке Wells нажмем правой кномпкой мыши по подпапке «сохраненных поисков» (Saved search) и создадим новый фильтр (рис.2.18). Определим тип фильтра как «Well Tops», и рассмотрим отбивки кровли первого пласта. Чтобы искать скважины, в которых отбивки отсутствуют, инвертируем наш фильтр, отметив галочкой опцию «Invert total filter», и сохраним его, нажав OK. Включив созданный фильтр, мы увидим, что все скважины, в которых присутствовали разбивки top_BC10_1, пропали с закладки Input. Остались только две скважины – 38 и 115. В них нет каротажа (рис.2.18) в интервале расположения пласта БС101.
2-10
Проверив скважины на наличие разбивки, завершим этап предварительной корреляции (возможные корректировки могут выявиться в процессе построения модели). Не забудем отключить фильтр (Saved search), чтобы снова все скважины были представлены на закладке Input.
2-11
3. Геометризация залежей На первом этапе геометризации залежей необходимо определить положение литологических границ залежей. Для этого создадим для каждой зоны (пласта) атрибут коэффициента песчанистости по скважинам, по которому в дальнейшем построим карты и создадим полигоны зон замещения коллекторов. В папке разбивок, встанем на Attribute и, нажав правую кнопку мыши, выберем вставку нового атрибута (Insert new attribute). Появится окошко создания нового атрибута, в нем оставим тип атрибута непрерывный (continuous) и нажмем OK (рис.3.1).
Для созданного нового атрибута зайдем в Настройках атрибута на закладку операций (Attribute operations) и укажем следующие настройки операции: расчет для зон (to the zones), по каротажу (Well logs), по каротажу литологии (Kod_coll), методом расчета доли (Fraction), в абсолютных глубинах (SSTVD), для кода фаций песчаники (1 – sand). Запустим расчет (Run) и получим в папке разбивок новый атрибут Kod_coll, Переименуем его в ntg wells (песчанистость по скважинам). Аналогичным образом создадим атрибут Kod_coll, то есть фактически суммарных эффективных толщин, указав метод расчета Thickness, и привяжем его к шаблону Thickness general. 3-1
Иногда бывает так, что в некоторых скважинах проставленные стратиграфические разбивки на какие-то сантиметры залезают на каротаж другого пласта. И при вычислении атрибутов песчанистости и эффективных толщин в полностью заглинизированных скважинах вычисляются ненулевые (но очень маленькие) значения атрибутов. Чтобы избежать этого, встанем курсором на атрибут песчанистости (ntg wells) и вызовем правой кнопкой
калькулятор
для
атрибутов
разбивок.
В
калькуляторе напишем (рис.3.2) условие: если значение эффективной толщины в скважине меньше 0,2 м (один каротажный отсчет), то значение атрибута равно 0, в противном случае – самому себе. То же сделаем и с атрибутом эффективных толщин (Kod_coll).
На следующем шаге конвертируем для первой зоны значения атрибута песчанистости в точки. Для этого кликнем по атрибуту ntg wells, чтобы сделать его активным. При этом он станет жирным. Встав курсором на первую зону, нажмем правую кнопку мыши и в выпадающем меню выберем операцию конвертации активного
атрибута
в
точки
(рис.3.3).
Посмотрев
статистику в Настройках для получившихся точек, увидим, что диапазон изменения для них от 0 до 0.8.
3-2
Рис.3.4. Щелкнув два раза мышью, вызовем процесс создания карт (Make/edit surface) из процессов Утилиты (Utilities). Укажем имя карты «ntg map zone 1» (рис.3.4). Закинем в Main input первую зону и выберем атрибут ntg wells. В Boundary положим сейсмическую карту и в закладке Геометрии (Geometry) выберем опцию получения размеров выходной карты с данных Automatic (from input data/boundary), то есть – с сейсмической карты. Выберем метод картопостроения Изохорная интерполяция (Isochore interpolation). На закладке Post proc ограничим диапазон карты 0 и 0.8 (truncated, галочки в % отжаты). Кроме того, чтобы карта точно сидела на значениях, укажем в Well adjustment Глобальную подгонку с радиусом влияния точек 300 м. Сами точки песчанистости закинем стрелочкой в Input. Визуализируем полученную карту и значения атрибута песчанистости для первой зоны в двумерном окне (рис.3.5). В Настройках (Settings) для карты сделаем цвет по географической шкале от синего до красного (от 0 до 0.8), изолинии проведем через 0.1, а прозрачность поставим 30%. В Info нажмем замочек, чтобы эти установки для карты не менялись в дальнейшем, если они будут меняться для других объектов с этим же шаблоном. 3-3
Начнем создавать полигоны зон глинизации (замещения). Активизируем в Утилитах процесс Создание/редактирование полигонов, стартуем создание нового полигона (рис.3.6) и начнем ставить точки вокруг скважин с нулевыми значениями песчанистости. Последнюю точку ставим рядом с первой и два раза кликаем мышкой: при этом возникнет окно с вопросом «замыкать ли полигон?», говорим «да». Если вопрос не возник, то замкнуть полигон нужно используя операцию закрытия в правом меню или на закладке Операций (Operations) в Настройках для полигона. Можно сгладить полигон с увеличением числа точек. Границы полигонов можно провести посередине между скважинами, можно более геологично – с учетом поведения изолиний. Переименуем первый полигон в glina zona 1 и добавим в него другие полигоны, получив единый полигон (Append polygons). Для этого единого полигона сделаем красный цвет в Info, толщину линии 4, тип раскраски цветом – Specified (рис.3.7). Зайдем в статистику (Statistics) для полигона и убедимся, что число полигонов, из которых он состоит, равно числу замкнутых полигонов. Если это не так, то надо еще раз замкнуть единый полигон.
3-4
Рис.3.7.
3-5
Аналогично тому, как мы это делали для стратиграфических разбивок (рис.2.17), откроем тестовый проект на диске как вторичный (Reference project tool) и скопируем в наш проект полигон глинизации для первой зоны (галочка в copy mode включена). Отредактируем точки полигона так, чтобы он был близок к полигону с диска, используя опцию Select and Edit/Add points из правого меню внизу. В настройках полигона на закладке Calculations присвоим ему значение 0 (рис.3.7). Теперь мы будем использовать этот полигон для перестроения карты песчанистости с учетом линии глинизации. Запустим
Рис.3.8.
процесс создания карт (Make/edit surface) и добавим
созданный
единый полигон на закладку
для
дополнительных исходных
данных
(Additional
inputs),
таким образом, при построении будут
карты
учитываться
как исходные точки со
значениями
песчанистости, так и линии глинизации (рис.3.8 слева вверху). На закладке Well Adjustment изменим радиус влияния точек на 100 метров, так как линии глинизации местами проходят достаточно близко к скважинам, а при таком радиусе процесс «подсадки» на точки не затронет нулевые значения, полученные из полигона. Другим подходом к построению карт на основе нескольких разнородных типов данных является конвертирование всех данных в точки (правой кнопкой мыши, Convert to points) и объединение точек в один объект (Настройки точек, закладка Operations, операция Append poins в папке Common operations). Это позволяет использовать один и тот же объект (точки) в качестве исходных данных и точек для «подсадки» в Well Adjustment (на рисунке именно так).
3-6
Отредактируем наиболее яркое место интерполяционного эффекта (рис.3.8) картопостроения. Здесь значения песчанистости достигли 0.7, хотя по
ближайшей
скважине значения 0.6. В правом меню при включенном процессе Make/Edit surface активизируем метод Присвоение значения (Assign…) и зададим значение Z=0.6, радиус влияния 10 (слева внизу). Кликая курсором в коричневую область, присвоим там значения 0.6. Рассмотрим дополнительную возможность присвоения карте значения 0 внутри полигона. Для этого, щелкнем по карте правой кнопкой мыши, зайдем в калькулятор (Calculator) для карт и присвоим в строке операций карте значение 0 (рис.3.9). Enter пока не нажимаем. Подведя курсор к кнопке использования фильтра (Use filter) получим выпавшую синюю гиперссылку. Нажав на нее курсором, перейдем в настройки фильтра для поверхностей. В фильтре закинем полигон глинизации и нажмем OK. Обратим внимание, что обнуление должно быть внутри (Apply inside) полигона. В калькуляторе нажмем на фильтр (он подкрасится коричневым) и только после этого – на Enter. Карта закончена.
Аналогичные построения сделаем и для второго пласта (зоны), учитывая диапазон изменения песчанистости в скважинах, который отличается для каждой зоны (min, max в Post proc). Если после сглаживания полигона границы зоны глинизации сильно не совпадают с нарисованными вручную, то оставьте прежние границы, сделав откат (Undo). Для оценки качества проведения зон глинизации сравните ваши полигоны глинизации с находящимися в тестовом проекте на диске, при необходимости отредактируйте свои полигоны. Помним, что активный атрибут должен 3-7
быть жирным. Для выходной карты нужно задать новое имя, удалив (delete) объект из поля Result surface и ответив на появившийся вопрос – «нет». Для третьего пласта ситуация осложняется наличием внутри южной зоны отсутствия коллекторов маленькой залежи из одной скважины, в которой есть коллектора (рис.3.10). Здесь мы должны сделать два замкнутых полигона, окружив области наличия коллекторов, слить их в один, а в процессе обнуления карты в фильтре, выбрать опцию Apply outside, чтобы обнуление шло не внутри, а снаружи.
По завершении картопостроения создадим три папки (через Insert в верхнем меню): «ntg map», «glina poligon», «glina points», куда сложим карты, полигоны и точки. В качестве полезного упражнения построим карты эффективных толщин. Для этого будем использовать атрибут Kod_coll. Действуем аналогично песчанистости, не забывая изменять диапазон выходных значений и «подсаживать» на точки, а также редактировать вручную зоны экстраполяционных значений и обнулять карты внутри полигонов глинизации (рис.3.11). Результаты сложим в папку.
3-8
Рис.3.11.
Для структурных построений необходимо подготовить карты изохор, то есть стратиграфических толщин пластов.
В папке скважинных разбивок (Well tops)
выделим жирным отбивки кровли верхнего пласта. Щелкнув правой кнопкой мыши по кровле второго, выберем опцию Конвертирование в точки изохор (Convert to isochore points) (рис.3.12). Поскольку в фильтре для разбивок мы ничего не отжимали, то на вопрос «хотим ли мы конвертировать отфильтрованные скважины» ответим «да». Полученные точки переименуем в «isohor points 1». Визуализируем точки в двумерном окне, включив атрибут Толщины и задав черный цвет подписи с размером шрифта 12 в 2D. Методом интерполяции изохор построим карту стратиграфических толщин «isohor map 1» (рис.3.13), подав на вход (Main input) и в «подсаживание» на скважины (Well adjustment)
точки изохор. В качестве атрибута у точек укажем Толщины
(Thickness), а не Z. В постобработке (Post proc) обрежем карту по минимуму и максимуму (галочка в % отжата). Аналогично построим карты стратиграфических толщин второго и третьего пласта (меняя min и max), результаты сложим в папки для точек изохор и карт изохор. На следующем этапе работ нам необходимо будет
3-9
3-10
построить
структурные
карты.
Вначале
посмотрим,
насколько
сейсмическая
поверхность по кровле первого пласта согласуется с отбивками по скважинам. Создадим атрибут значений сейсмической поверхности в скважинах. Для этого создадим новый атрибут (рис.3.14) и в Операциях (Operations) укажем создание из поверхности (Sample from: Surface), закинем сейсмическую поверхность. Откроем Функциональное (Function) окно, в котором для первого пласта включим атрибуты отметок по скважинам Z (X) и по сейсмической поверхности seismic (Y). Видим, что сейсмическая поверхность в целом хорошо согласуется с отбивками на скважинах, но некоторые точки вылетают. Чтобы узнать, какие это скважины, скопируем сейсмическую поверхность (Copy-Paste) и перестроим ее в Make/edit surface (метод Surface resampling), сажая на отбивки, включив галочку для создания отчета (рис.3.15).
3-11
В отчете мы видим, что наибольший отскок имеют скважины 7Р и 44. В этих краевых скважинах неверная инклинометрия, поэтому мы их не будем использовать в структурных построениях. Щелкнув правой кнопкой мыши по разбивкам, откроем таблицу (Spreadsheet) для разбивок и, щелкнув два раза по заголовку столбца с именами скважин, отсортируем их по возрастанию. Найдя скважины 7Р и 44, отключим для них во всех пластах галочки для использования в модели (Used by geo mod) и преобразованиях время/глубина (Used by dep.conv.) (рис.3.16). Нажмем Apply.
Затем скопируем сейсмическую поверхность, через Surface resampling посадим на отбивки в скважинах и переименуем в «Str top bc10 1». Обратим внимание в отчете, что теперь скважин 7Р и 44 нет. Есть три скважины с большими отклонениями 79 – 10 м, 36 – 18 м, 55 – 20 м. Запомним их, чтобы вернуться к их возможным подвижкам после обоснования положения ВНК. Проанализируем полученные поверхности. Выделим курсором поверхность кровли первого пласта
и через правую кнопку
создадим для нее атрибуты углов и азимутов. Визуализируем в трехмерном окне кровлю первого пласта, отбивки пласта (рис.3.17). Включив для карты атрибут углов, мы сможем видеть карту кровли первого пласта, раскрашенную в соответствии с углами наклона этой поверхности. Видно, что большие углы наклона как раз в области 36 и 55 скважин: 55 «провалилась», а 36 «подпрыгнула».
3-12
Карту кровли второго пласта получим, вычтя из копии карты первого пласта карту изохор первого пласта в калькуляторе для самой карты (рис.3.18). Карту кровли третьего пласта получим, вычтя из копии карты второго пласта карту изохор второго пласта в калькуляторе для карт. Для разнообразия подошву третьего пласта (кровлю глины) сделаем в общем калькуляторе для карт. Следующим важным шагом является процедура посадки всех полученных карт на соответствующие стратиграфические разбивки. Поскольку скважины невертикальны, то точки изохор присваиваются не к подошве пласта, а к середине между кровлей и подошвой. Поэтому при прибавлении к кровле изохоры мы не можем получить подошву в точности и приходится «подсаживать» поверхности на точки. При «подсаживании» на точки (Surface resampling) видим, что по всем скважинам маленькое расхождение, кроме скважины 115, где расхождения в отчете нет вообще. Это произошло потому, что в скважине 115 нет каротажа вверху и, соответственно, нет отбивки кровли первого пласта. В
3-13
результате при натягивании вначале сейсмической поверхности на скважины в этом месте коррекции сейсмической поверхности на отбивку первого пласта не было.
Включив на схеме корреляции (рис.3.19) мы видим, что в этой скважине поверхность кровли первого пласта прошла существенно ниже, чем надо. Для исправления ситуации скопируем поверхность кровли второго пласта, прибавим к ней изохору первого пласта, полученную поверхность назовем кровлей первого пласта и посадим на точки (разбивки кровли первого пласта).
Эта поверхность всюду совпадает с первоначальной кровлей первого пласта, однако исправилась в районе 115 скважины. Таким образом, мы получили четыре 3-14
поверхности каркаса и складываем их в отдельную папку. Возможные корректировки последуют в процессе анализа контактов. Создадим атрибут, характеризующий в скважинах для каждого пласта долю нефтеносных коллекторов
в общей эффективной мощности (рис.3.20). Вначале
сделаем атрибут суммарных нефтенасыщенных толщин, для этого выберем при создании атрибута из каротажа «код флюида» код 1 (нефть), метод – суммирование мощности для дискретных переменных (thickness), масштаб глубин – абсолютные отметки (SSTVD). Назовем его Kod_fluid oil. Аналогично сделаем второй атрибут для водоносных коллекторов, указав код насыщения 2 - Kod_fluid water. Атрибут доли dolo_oil
сделаем
в
калькуляторе
как
dolo_oil=Kod_fluid_oil/(Kod_fluid_oil+Kod_fluid_water). Обратим внимание на наличие подчеркиваний – без них программа ругается на наличие синтаксических ошибок.
Чтобы избежать погрешностей неточной простановки разбивок, в калькуляторе присвоим значению атрибута неопределенные значения в скважинах, где Нэфф по пластам меньше 0,2 метра, как мы это уже делали для атрибутов песчанистости.
3-15
В двумерном окне включим поверхность кровли первого пласта, полигон зоны глинизации (красным) и атрибут dolo_oil (рис.3.21). Мы видим, что для чисто нефтяных скважин атрибут равен единице, для водоносных – нулю, для водонефтяных – от 0 до 1. Точки без значений находятся в зонах глинизации или там неопределенные значения кода характера насыщения. Открыв в Настройках (Settings) для каротажа кода характера насыщения (Kod_fluid) закладку гистограммы (Histogram), мы видим, что таких значений (код 12) немного. Пока будем анализировать северную залежь для первого пласта. Нефтяные скважины этого поднятия оконтуриваются замкнутой изогипсой на уровне примерно – 2260 м. Поэтому создадим по карте примерно по этой изогипсе замкнутый полигон. Скопируем поверхность кровли, назовем ее «vnk sever 1» и присвоим значение – 2260 м. Отсечем (Eliminate outside) поверхность вне созданного замкнутого полигона в Операциях (Operations). При необходимости немного расширим (Expand) или сожмем (Shrink) поверхность, чтобы размер был примерно как на рис.3.21. Перейдем ко второму пласту. Включив атрибут доли (рис.3.22) dolo_oil мы видим, в скважине 1Р имеется аномально значение 1 среди водоносных скважин с нулями. Будем считать, что мы сходили к каротажникам и они изменили характер насыщения по скважине 1Р во втором и третьем пласте с нефти на воду. Далее мы изменим каротаж в этой скважине, а пока исправим значения атрибута. Зайдем в 3-16
таблицу зон (View zone spreadsheet) для отбивок и в столбце для dolo_oil в скважине 1Р поставим нули для второго и третьего пластов. Не забудем нажать OK.
Здесь следует обратить внимание на следующее. Когда мы создали атрибуты суммарных нефтенасыщенных и водонасыщенных толщин, они располагаются в таблице для зон (Zones spreadsheet). Их можно посмотреть и отредактировать, зайдя через правую кнопку мыши с папки разбивок (рис.3.22). Однако калькулятор для отбивок может создавать только атрибуты, привязанные к горизонтам (не зонам), поэтому результат операции с ними dolo_oil находится уже не в таблице для зон, а в таблице для разбивок. Чтобы работать с калькулятором в области зон, нужно предварительно создать новый атрибут и назвать его dolo_oil (аналогично рис.3.20). Скопируем поверхность ВНК для первого пласта в районе скв.23Р, назовем ее «vnk sever 2» и присвоим значение – 2270 м. Вернемся к скважине 1Р. Чтобы не испортить исходный каротаж зайдем в Глобальные каротажи (Global well logs) (рис.3.23), выделим на любой каротаж и вызовем правой кнопкой калькулятор: создадим для всех скважин сразу рабочий каротаж флюида Kod_fluid_work=Kod_fluid, присвоив соответствующий шаблон. Визуализируем его в окне корреляции. Исправлять дискретный каротаж мы можем «кисточкой» (Paint discrete log class), рисуя интервал; или «ведром» (Flood fill discrete log class), заливая интервалы. В правом меню кликнем по иконке с «ведром» (Flood fill discrete log class), встанем курсором на каротаж и вызовем правой кнопкой в выпавшем меню код насыщения «вода» и кликнем на него курсором. Затем кликнув нефтяные интервалы, зальем их водой. 3-17
Поскольку для третьего пласта очевидно наличие двух залежей на севере, разделенных прогибом (рис.3.24), то мы сделаем две поверхности ВНК. Одну – как делали раньше через копирование, обрезание и присвоение значения – 2280 м (vnk sever 3). Другую, в районе скважины 8Р, для разнообразия сделаем немного по-другому через процесс картопостроения. Нарисуем замкнутый полигон, закинем его в Границу, снимем с него геометрию Automatic (from input data/boundary) (рис.3.24). Выберем Artificial алгоритм с постоянным значением – 2275 м и получим карту vnk sever vostok 3.
3-18
Создадим две плоские карты ВНК для центральной залежи вокруг скважины 2Р: «vnk center 1» со значением Z=-2255 м
для первого пласта и «vnk center 3» со
значением Z=-2275 м для третьего пласта (по второму пасту в скважине вода). В заключение создадим карту ВНК для южной залежи первого пласта (рис.3.25 коричневая) «vnk yug 1» со значением Z=-2246 м. Для общего обзора визуализируем все поверхности в трехмерном окне (рис.3.25) и сложим в созданную папку VNK. Теперь
будем
корректировать
предварительно созданные поверхности ВНК с учетом скважных данных. Начнем с северной залежи. Создадим профиль (схему корреляции) по скважинам 5Р24Р-9Р-119-122-23Р-3Р-29Р-26Р-27Р-8Р6Р,
переименуем
ее
в
Profil
sever
(рис.3.26). В двумерном окне включим разбивки с номерами скважин и галочку well section fence под именем корреляционной схемы на закладке Windows, чтобы визуализировать схему в окне.
3-19
Скопируем папку с поверхностями ВНК, добавим к именам поверхностей red (для редакции) и включим на профиле (рис.3.27) поверхности для северной и северовосточной залежей. При необходимости увеличим толщину линий в настройках отображения (Settings, закладка Style). Сам профиль выставим на абсолютную глубину (наберем -2000, это не принципиально). Обратим внимание, что в Настройках (Settings) для профиля тип абсолютных глубин – SSTVD. Установим фиксированный масштаб 1:250. Включим каротажи кода флюида - исходный и для работы (work), а также каротаж Комментариев для определения интервалов и результатов испытаний. В процессе работы мы будем править рабочий каротаж кода флюида. Его колонка не содержит тонких вертикальных линий, как у исходного каротажа. Проанализировав профиль мы видим, что нижняя нефть по первому пласту на северной залежи имеется в скважин 119. Учитывая, что при испытаниях было получено немного воды, примем контакт по подошве нефти в этой скважине. В скважине 23Р была получена нефть с водой, но данные контроля за притоком показали, что это вода с заколонного перетока. Поэтому мы принимаем в этой скважине по первому пласту насыщение нефть и заливаем неопределенный интервал нефтью (используя значок «ведро»). Чтобы совершенно точно узнать абсолютную отметку подошвы нефти в скважине 119 сделаем следующее. Создадим в калькуляторе глобальный каротаж с 3-20
именем ABS, равный абсолютной отметке по стволу скважины. Для этого приравняем ABS к Z – геометрической переменной, вызываемой кнопочкой Geometry. Откроем скважину 119 и включим в ней измеренную глубину MD (рис.3.28). Подведем курсор к подошве нефти и увидим, что глубина примерно 2508,2 м. Встанем на каротаж насыщения в скважине на закладке Input, откроем через правую кнопку мыши таблицу (Spreadsheet) и увидим, что в самом деле нулевые отсчеты после единицы начинаются с глубины 2508,2 м.
Откроем таблицу (Spreadsheet) для ABS и увидим, что глубине 2508,2 м соответствует абсолютная отметка – 2257, 82 м. Присвоим это значение поверхности ВНК первого пласта северной залежи и увидим, как она поднимется до подошвы нефти в скважине 119. Для поверхности ВНК второго пласта северной залежи vnk sever 2 red, аналогичным образом определив подошву нефти по скважине 23Р, присвоим значение – 2270, 8 м. Для поверхности ВНК третьего пласта северной залежи vnk sever 3 red, аналогичным образом определив подошву нефти по скважине 26Р, присвоим значение – 2279, 1 м. Зальем водой в этой скважине в рабочем каротаже характера насыщения пропластки с неопределенными значениями (Und) ниже ВНК (рис.3.29). Для поверхности ВНК третьего пласта северо-восточной залежи vnk sever vostok 3 red, аналогичным образом определив подошву нефти по скважине 8Р, присвоим значение – 2279, 62 м.
3-21
Следующим шагом проверим замыкание залежей. Зайдем в Операции (Operations) в Настройках (Settings) для карты ВНК первого пласта и сделаем Пересечение с картой кровли (Create intersection with surface), забросив карту кровли в строку со стрелкой. В двумерном окне визуализируем разбивки с номерами скважин, структурную карту кровли, поверхность ВНК, полигон глинизации
и
получившийся пересечения Видим,
полигон (рис.3.30).
что
полигон
внешнего
контура
замыкается и упирается в зону глинизации. Строго говоря, это не совсем точно внешний поскольку
контур, мы
сделали
пересечение
со
стратиграфической поверхностью,
а
не
с 3-22
кровлей коллектора. Но поскольку первый коллектор почти везде рядом с кровлей, это не существенно. Аналогично сделаем и для второго и третьего пластов (рис.3.30). Для второго пласта с принятой поверхностью ВНК мы имеем южную часть северной залежи (в районе 26Р), не охарактеризованную скважинами. Можно было бы убрать эту часть, удалив нижнюю половину поверхности ВНК. Мы же пока не будем этого делать, считая, что это у нас перспективы для бурения. Создадим другой профиль с единственной скважиной 2Р - Profil center. Присвоим поверхностям ВНК по первому и третьему пласту значения -2252 и -2271 м, чуть пониже подошвы нефти (рис.3.31). Создадим полигоны пересечения поверхностей ВНК с кровлей пласта (внешние контуры) и проверим замыкания структур (рис.3.31).
Зайдем в Настройки для скважин, в закладку Отчет (Report) и закинем туда все наши поверхности ВНК, кроме южной залежи (рис.3.31). Укажем, чтобы результаты попали в папку Others стратиграфических разбивок и запустим процесс, создав отбивки ВНК в скважинах как пересечение траекторий скважин с поверхностями ВНК. Перейдем к самому сложному – южной залежи первого пласта. Наберем серию профилей. Чтобы сэкономить время сделаем так – скопируем первую
корреляцию,
вставим
и
переименуем 3-23
в
Профиль
1.
Включим
стратиграфические разбивки (рис.3.32), рабочий каротаж флюида, комментарии по испытаниям скважин, поверхность ВНК. Обратите вниманите, что в верхнем окошке профиля должны стоять абсолютные отметки (SSTVD). Выровняем профиль на абсолютную отметку и выставим постоянное расстояние между скважинами 5 мм, чтобы профиль был более сжатым. Для этого также трэки Комментариев в тех скважинах, где они есть, переместим курсором в трэки каротажа флюида рабочего (см.рис3.32 слева внизу). Аналогично сделаем и профили со второго по пятый. В пятом профиле удалим скважины 44 и 17Р. Видим, что поверхность ВНК с рядом скважин в профилях не согласуется.
Создадим профиль для обоснования ВНК - Profil VNK yug. Перейдем в двумерное окно и включим стратиграфические разбивки, в фильтре по скважинам включив только разведочные скважины (рис.3.33). В профиле для ВНК включим скважины 14Р-1Р-16Р-15Р-22Р-4Р-19Р, стратиграфические разбивки, рабочий каротаж флюида, комментарии по испытаниям скважин, поверхность ВНК. Чтобы видеть траекторию профиля включим в двумерном окне галочку «Well section fence» в окошке профиля (рис.3.33 слева внизу).
3-24
Начнем проставлять стратиграфические отбивки ВНК с именем «vnk yug 1 red». Сначала во всех скважинах вручную (можно через Spreadsheet для отбивок) проставим на отметке – 2246 м. Затем, с учетом консультаций у каротажников и результатов испытаний (нефть с водой) в скважине 22Р передвинем отбивку на отметку -2245 м, а в скважине 4Р – на отметку – 2247 м (рис.3.34). Зальем кисточкой на каротаже Kod_fluid_work в этих скважинах коллектора первого пласта с неопределенным характером насыщения выше ВНК – на нефть, ниже ВНК – на воду. В папке разбивок сделаем активным атрибут Z (сделаем жирным) и конвертируем этот активный атрибут для проставленных отбивок ВНК в точки (нажать правой кнопкой мыши на отбивки ВНК и выбрать Convert active attribute to points). Для того, чтобы выяснить, каков у нас наклон поверхности ВНК и в какую сторону, построим по этим точкам аппроксимирующую плоскую поверхность (рис.3.35).
3-25
3-26
Используем метод Функциональной интерполяции, подгонку к плоской поверхности, с равным весом точек. Анализируя полученную поверхность видим, что наклон небольшой, допустимый для залежей данного региона. «Подсадим» плоскую поверхность на точки (Surface resampling) и проверим замыкание структуры – создав полигон пересечения поверхности с кровлей пласта. Теперь именно эту поверхность назовем «vnk yug 1 red», а старую с этим именем удалим.
При необходимости
расширим (Extend) поверхность. Включим пятый профиль (рис.3.36) и поверхность ВНК. Обратим внимание, что в скважина 53 коллектор с насыщением «вода» находится выше ВНК. Поскольку эта скважина с большим удлинением, введем поправку в инклинометрию скважины, изменив ее альтитуду в Настройках для скважины с 78 м на 74 м. При этом скважина передвинется вниз и водоносный коллектор будет ниже ВНК. В скважинах 60, 47 и 42 коллекторам с неопределенным характером насыщения с помощью инструмента «ведро» присвоим насыщение «нефть». Передвинем разбивки ВНК в скважинах на месте пересечения поверхности, которая отображается пунктиром, с траекториями скважин.
3-27
Аналогично поступим с четвертым профилем. Здесь добавим 3 м в альтитуду скважины 45 (с 80 на 83), чтобы подошва нефти была выше ВНК. В скважине 36 высокая
нефть
не
противоречит
ВНК,
но,
как
мы
помним,
она
сильно
рассогласовывалась с сейсмической картой, да и углы наклона структуры в ее окрестности аномально большие. Поэтому в ней тоже введем поправку в инклинометрию 20 м (с 77 на 57). Проставим разбивки ВНК в скважинах в месте пересечения поверхности с траекториями скважин. Перейдем к третьему профилю. В скважине 99 зальем воду ниже ВНК, а в скважинах 86 и 87 – нефть выше ВНК. Проставим разбивки ВНК в скважинах в месте пересечения поверхности с траекториями скважин. Только в скважинах 32 и 59 поставим их чуть пониже подошвы нефти (рис.3.37). Перейдем ко второму профилю. В аномально низкой скважине 55 введем поправку в инклинометрию 20 м (с 78 на 98). В 18 – 4 м (с 78 на 82). В 16 – 9 м (с 78 на 69). Проставим разбивки ВНК в скважинах в месте пересечения поверхности с траекториями скважин. Только в скважинах 31 и 16 поставим их чуть повыше кровли воды (рис.3.37). В первом профиле ничего трогать не будем, проставим разбивки, в скважине 15 – чуть выше кровли воды (рис.3.37).
3-28
Конвертируем отбивки ВНК этого пласта в точки, «подсадим» на них поверхность (рис.3.38). Отредактируем краевые эффекты прямо в трехмерном окне и окончательно «подсадим» на точки, но уже с малым радиусом. Для контроля проделанной работы будем визуализировать каротаж насыщения по скважинам и поверхность ВНК в трехмерном окне. Но перед этим, поскольку мы вводили поправки в инклинометрию и разбивки сдвинулись, обязательно «подсадим» все наши четыре поверхности структурного каркаса на соответствующие отбивки (поверхность Str top bc10 1 – на top_BC10_1 и т.д.). В скважинах, которые мы двигали, в отчете отмечается расхождение (diff. before) перед корректировкой поверхности на отбивки. Можно также еще раз проверить замыкание структуры.
3-29
Щелкнем правой кнопкой мыши по папке стратиграфических разбивок Well tops и через контекстное меню создадим Зональный каротаж (Zone log) (рис.3.39). При создании этого каротажа первая зона получает индекс 0, вторая – 1, третья – 2. Используем этот каротаж для создания в калькуляторе каротажа характера насыщения для визуализации в трехмерном окне. Мы хотим, чтобы этот каротаж существовал только для первой зоны и только для коллекторов. Для этого в калькуляторе Глобальных каротажей создадим каротаж Kod_fluid_viz=Kod_fluid_work с шаблоном Fluids и напишем для него условие Kod_fluid_viz=If( Zone_log_linked_to_Well_tops=0 And Kod_coll=1, Kod_fluid_viz, U).
В трехмерном окне визуализируем поверхность ВНК и каротаж Kod_fluid_viz. Сделаем для него следующие установки: визуализацию как 3D трубка (Draw log as 3D pipe), минимум 0, максимум 2, цвет – как свойство (As property). Просмотрим по площади все скважины, убедившись, что все нефтяные пропластки находятся выше поверхности ВНК, а водоносные – ниже.
3-30
4. Построение каркаса и ВНК В закладке Процессы откроем папку Структурного моделирования (Structural modeling) и, дважды кликнув мышкой, активизируем процесс Создания модели (Define model). Зададим имя модели – Test. В двумерном окне включим все карты ВНК, кроме северо-восточной залежи (ее моделировать не будем). Создадим вокруг них замкнутый полигон, отступая от краев 0,5-1,5 км (рис.4.1). Назовем его Poligon model. Теперь активизируем процесс создания сетки Pillar gridding и зададим размеры сетки 50 на 50 метров. Apply пока не нажимаем.
При активном процессе Pillar gridding вызываем через правую кнопку мыши, встав на полигон модели, опцию конвертации полигона в границу модели. Эта граница (Boundary) появится в модели разломов (Fault model). Отметим, что эта опция возникает только при активном процессе Pillar gridding, если просто встать на полигон, то нажав правую кнопку мыши мы ее не увидим. Теперь нажимаем Apply и потом обязательно OK, соглашаемся при вопросе о создании сетки (Sceleton), и сетка создается. Зайдя на закладку Статистики (Statistics) в Настройках (Settings) грида, можно посмотреть число созданных двумерных ячеек. Приступим к созданию горизонтов каркаса. Активизируем процесс Создания горизонтов (рис.4.2) и закинем туда в качестве исходных данных наши четыре 4-1
структурные поверхности по пластам (в столбец Input #1) и стратиграфические разбивки (в столбец Well tops). Горизонты создадутся с именами стратиграфических разбивок.
Следующим шагом произведем разбиение созданных трех зон на прослои, то есть нарезку слоев (процесс Layering). Тип нарезки возьмем пропорциональный, пласты у нас относительно простые, без размывов. Количество слоев для каждой зоны определим так. Посмотрим в Статистике для карты стратиграфических толщин (изохоры) для первой зоны среднее (около 13 м). Прибавим к нему величину стандартного отклонения (около 3,5 м) – всего будет 16,5 м. Разделим на величину 0,3 м – среднее между величиной отсчетов по каротажу 0,2 м и величиной минимальной мощности пластов 0,4 м, выделяемых при интерпретации каротажа. Полученную величину округлим в большую сторону, чтобы ячейки были потоньше, и получим 60. Аналогично для второй зоны зададим 45 слоев, а для третьей – 50. Завершив процесс нарезки слоев, посмотрим Статистику для грида – общее число трехмерных ячеек будет около 25-30 млн. Создадим несколько полезных кубов. Для этого в Процессах моделирования свойств (Property modeling) активизируем процесс Геометрического моделирования (Geometrical modeling) и создадим новое свойство (рис.4.3), то есть куб высоты ячеек, выбрав метод Высота ячейки (Cell height). Создадим также параметр объема (Cell volume) ячейки и индекса зоны (Zone index). Визуализируем куб индекса зоны в трехмерном окне и включим в правом меню 4-2
I или J сечение. Щелкая курсором по стрелочкам в правом меню, прогоним взад и вперед сечения куба индекса зоны, анализируя куб на предмет наличия неестественных увеличений или уменьшений мощности пластов. Если таковые имеют место, значит что-то неправильно было сделано при построении каркаса. Следует помнить, что правое меню с кнопочками сечений и фильтром присутствует, если активен какой-либо из процессов моделирования свойств – при редактировании, например, поверхностей правое меню будет другим. Включим фильтр для свойств, кликнув воронку из правого меню или вызвав его из Настроек (Settings) для папки Свойств (Properties) в 3D-гриде. Включим фильтр для второй зоны (рис.4.3). В Petrel параметры, по которым в текущий момент установлен фильтр, подкрашиваются пурпурным цветом. Посмотрим гистограмму высоты ячеек для второй зоны. Для этого зайдем в Настройки (Settings) куба высоты ячеек и на закладке Гистограммы (Histogram) нажмем кнопку фильтра, она подкрасится коричневым. Убедимся, что величины толщин ячеек достаточно малы, нет аномально больших значений.
Займемся созданием контактов. В первую очередь они нам будут нужны для вычисления параметра удаленности ячейки от ВНК. Встанем на какой-нибудь из горизонтов модели и через правую кнопку мыши конвертируем его в структурную поверхность (рис.4.4).
4-3
После этого присвоим этой поверхности значение 1000 м, то есть заведомо выше поверхностей ВНК, и назовем ее vnk1calk. Будем создавать из этой поверхности поверхность ВНК для первого пласта. В
Операциях
для
поверхности выберем метод Объединение поверхностей А и Б, сохраняя Б (рис.4.4). В качестве второй поверхности выберем поверхность ВНК для северной пласта,
залежи закинем
первого ее
и
объединим поверхности в одну.
Далее сделаем эту процедуру еще два раза – с
поверхностями ВНК для первого пласта для центральной и южной залежей. Для второго пласта сделаем все аналогично и получим поверхность vnk2_calk – объединенную поверхность -1000 с поверхностью ВНК для северной залежи второго пласта. Для третьего пласта поверхность vnk3_calk также получим из плоской поверхности -1000 и двух поверхностей ВНК для северной и центральной залежей, северо-восточную залежь моделировать не будем. Созданные поверхности сложим в папку. Активизируем (рис.4.5) процесс Создания контактов (Make contacts). Удалим, если надо, кнопкой с красным крестом газовый контакт. Укажем галочкой, что создаем для всех сегментов. Для каждой зоны закинем свою поверхность ВНК. Созданный набор контактов (Set) появится в папке флюидных контактов в модели (внизу).
4-4
Зайдем в Операции для этого Contact set и создадим (Make property) дискретное свойство Контакты (выше-ниже поверхностей контактов). При этом нужно следить, что программа предлагает создать над контактом и что – под ним, в случае необходимости исправить нефть на воду. Прицепим его к шаблону General discrete с коричневым цветом выше ВНК и синим – ниже ВНК. Активизировав процесс Геометрического моделирования (Geometrical modeling), создадим куб удаленности ячеек от ВНК (Above contact), закинув Oil water contact из папки Флюидных контактов в окно процесса. Сохраним проект. Визуализируем куб удаленности ячеек от ВНК Oil water contact и, включая поочередно фильтр по зонам и щелкая мышкой по ячейкам, убедимся, что положительные значения куба присутствуют только в структурах над поверхностями ВНК, а остальные значения куба равны 0. В папке Properties нашего 3D-грида создадим подпапку Dop cubes и перетащим мышкой в нее все свойства, которые мы создали в процессе Геометрического моделирования (Geometrical modeling).
4-5
5. Осреднение скважинных данных на сетку Осреднение скважинных данных на сетку начнем с того, что создадим непрерывный каротаж литологии Litho_cont из дискретного каротажа литологии (рис.5.1). Запустим процесс осреднения скважинных данных на сетку (scale up well
Рис.5.1.
logs) для этих двух каротажей и получим в модели два новых куба Kod_coll[U] и Litho_cont[U]. Наличие расширения U в названии указывает на наличие в кубе осредненных из скважинных данных ячеек. При мелких ячейках выбор метода осреднения практического значения не имеет. Непрерывную литологию прицепим к шаблону Fraction и раскрасим от зеленого до желтого. Создадим в Properties папочку ScUp и переместим дискретный и непрерывный кубы литологии по скважинам в эту папку.
5-1
Включим какую-нибудь схему корреляции, установим вертикальный масштаб покрупнее (100 или 200) и включим кубы литологии (рис.5.2). Пересечения кубов с траекториями скважин визуализируются в корреляционном окне. В правом меню включим визуализацию ячеек сетки и прокрутим схему корреляции, сравнивая каротаж
Рис.5.2.
литологии с Kod_coll[U] и Litho_cont[U] из модели. Убедимся, что ячейки у нас достаточно мелкие, чтобы тонкие пропластки не затирались при переносе на сетку.
Рис.5.3.
5-2
Перейдем к осреднению пористости и насыщенности. Зайдем в Настройки (Settings) скважин и перейдем в закладку Создание каротажей (Make logs), а в ней – создание из зон (рис.5.3). Создадим каротаж зон Zonelog for 'Test model/3D grid'. К сожалению, мы не могли воспользоваться сделанным ранее каротажем зон из стратиграфических разбивок Zone log linked to 'Well_tops', поскольку он не создался там, где некоторые разбивки отсутствовали, например в скважине 115 для верхнего пласта. А каротаж зон Zonelog for 'Test model/3D grid' создался и там. Сделаем
рабочий
каротаж
пористости
Poro=Kpor.
Затем
сделаем
его
неопределенным вне наших продуктивных пластов и в неколлекторах Poro=If( Zonelog_for_Test_model_3D_grid=U Or Kod_coll=0, U, Poro). Задание неопределенных значений в неколлекторах страхует от занижения значений пористости в ячейкахколлекторах, часть которых заезжает на каротаж неколлектора. Наконец, сделав условие Poro=If( Poro<0.11 Or Poro>0.27, U, Poro), уберем ошибочные значения ниже и выше граничных для коллекторов. Естественно, при этом перестроится гистограмма.
Рис.5.4.
5-3
Аналогично создадим рабочий каротаж насыщенности Sat=Soil, оставим значения
только
в
продуктивных
Sat=If(Kod_fluid_work=1,
Sat,
U)
и
интервалах обрежем
скважин по
в
пределах
граничным
модели
значениям
для
нефтенасыщенных (рис.5.4) коллекторов Sat=If( Sat<0.3 Or Sat>0.8, U, Sat). Следующим шагом запустим процесс осреднения скважинных данных на сетку (scale up) для каротажей Poro и Sat (рис.5.5).
Рис.5.5.
При осреднении используем арифметический метод и, осуществляем привязку (bias) к дискретному каротажу литологии. В целях упражнения было полезно руками удалить все значения пористости в глинах и вне модели. На самом деле именно опция bias в Petrel совместно с настройками перемасштабирования Treat log: As points и Method: Simple – без дополнительного редактирования данных обеспечивает корректное осреднение непрерывных показателей на основе литологии, без занижения значений в коллекторах. Поставим фильтр по песчаникам по Kod_coll [U]. Откроем гистограмму Poro[U], нажмем воронку фильтра и убедимся по гистограмме и статистике в корректности значений. Добавим фильтр от 0.1 и выше по параметру удаленности ячеек от ВНК (Oil water contact). Откроем гистограмму Sat[U], нажмем воронку фильтра и убедимся по гистограмме и статистике в корректности значений. Снимем все фильтры (Reset all filters) и сохраним проект.
5-4
6. Построение куба литологии Построение куба литологии начнем с создания в калькуляторе для кубов дискретного куба зон глинизации (рис.6.1) со значением 1. Запустим процесс Геометрического моделирования (Geometrical modeling) и выберем созданный куб glina_cub. Выберем метод присвоения (assign) значений и закинем полигон зон глинизации для первой зоны. Укажем, что значения 0 будут присваиваться всем ячейкам внутри полигона, а для остальный ячеек – без изменений (unchanged). Процесс присвоит всем ячейкам куба, которые находятся внутри полигона, значения 0.
Недостатком процесса Геометрического моделирования является то, что он присваивает значения сразу на всю модель, а фильтра по зонам нет. Поэтому создадим другой временный дискретный куб glina_cub2=1 и аналогичным образом обнулим его внутри полигона глинизации уже для второй зоны. Теперь, написав в калькуляторе условие glina_cub=If(Zones_hierarchy=0, glina_cub, glina_cub2), присвоим кубу зон глинизации значения для второй зоны, не трогая первую. Остается сделать третью
6-1
зону. Это можно сделать аналогично как для второй зоны, но мы сделаем это несколько по-другому. Вначале скопируем карту песчанистости для третьей зоны, переименуем ее в glina map zone 3, прицепим к дискретному темплейту General integer, присвоим ей значения 0 (обнулим) в калькуляторе. Внутри полигона зон глинизации для третьей зоны присвоим этой карте значения 1, используя фильтр, как мы это делали ранее. Помним, что выставляем фильтр внутри (Apply inside) полигона. Имеем дискретную (0 и 1) карту зон глинизации. Вызовем процесс Фациального моделирования (Facies modeling) и выберем куб зон глинизации (рис.6.1). Первую и вторую зону не трогаем, выбираем третью зону и отжимаем замочек слева. Выбираем метод Присваивания значений (Assign values) и закидываем карту glina map zone 3. Процесс создает по карте значения в кубе для третьей зоны. Визуализируем куб зон глинизации, включив фильтр по глинам. Включая поочередно фильтр по зонам, убедимся, что все сделано корректно. Заметим, что для непрерывного куба это можно было бы сделать проще, зайдя в Операции для куба и выбрав там присвоение значения по карте с учетом зоны и фильтра.
6-2
Перед началом моделирования литологии для первой зоны проанализируем вертикальную степень изменчивости свойств. Откроем процесс Анализа данных (Data analysis) и вверху выберем дискретное свойство литологии по скважинам для первой зоны (рис.6.2). Процесс Анализа данных для достаточно большой модели (26 млн. ячеек) требует существенных ресурсов оперативной памяти, поэтому на «слабых» компьютерах может помочь отключение всех окон или даже их удаление (главное – потом перезагрузить проект без сохранения). Укажем код фации песчаник (Sand), перейдем в закладку Вариограмм (Variograms), выберем вертикальную, выставим радиус поиска (Search radius) 5 метров. Хватая за синие квадратики, подгоним вариограмму к точкам. Вертикальный радиус (range) будет при этом около 4-4,5 метров. Следует помнить, что радиус вариограммы – это величина, больше которой всякая взаимосвязь между точками теряется. Достаточно сильная же корреляция свойств наблюдается на величине около 1/3 радиуса, то есть около 1,5 метров. Откроем закладку толщин (Thickness), оставим только песчаники и зададим величину бина полметра, нажмем Apply. Получим гистограмму распределения толщин пропластков, среднее около 2 метров. Запомним это число. Горизонтальные вариограммы строить не будем, обычно они плохо получаются из-за нехватки данных, скважины ведь вертикальные. Исходить будем из следующего. Измерим линейкой из правого меню (рис.6.2) расстояние от краевых скважин до границы модели – будет около 6 км. Чтобы модель получилась достаточно гладкой оценим горизонтальный радиус вдвое больше, то есть 12 км. Сделаем копию куба непрерывной литологии по скважинам и запустим процесс Петрофизического моделирования (рис.6.3). Выберем наш куб и первую зону, отожмем замочек слева, выберем метод моделирования – кригинг (Kriging). Установим горизонтальные радиусы 12 км. По поводу же ранга вертикальной вариограммы существует правило: корректное моделирование свойств возможно в модели, средняя мощность слоя которой меньше половины ранга вертикальной вариограммы. В данном случае средняя толщина ячейки в модели 0,2-0,3 м, а ранг 4 м – следовательно связность при моделировании свойств по вертикали с таким рангом сохраниться. Диапазон выходных параметров поставим от 0 до 1, в качестве вторичной переменной используем карту песчанистости для первого пласта, запустим процесс. Хотя для реальных задач корреляция 0,3 между картой и моделируемым свойством достаточно мала – в качестве примера мы все-таки ей воспользуемся. 6-3
Если у Вас устаревший или «слабый» компьютер и расчет идет очень медленно, то можно остановить процесс моделирования и попробовать уменьшить ранги вариограмм. Такие действия, конечно, могут привести к некорректному с точки зрения геостатистики моделированию свойств, но в целях получения результата для перехода к следующим упражнениям мы можем пойти на это.
Используя полученный непрерывнй куб, создадим дискретный куб литологии, применяя простую отсечку 0.5: Lito_krig1=If(ScUp\Copy_of_Litho_cont<0.5, 0, 1). Примечание – в калькуляторе машина пишет перед именем свойства перед обратным слешем префикс – имя папки, где свойство лежит. Так что у Вас, возможно, запись в калькуляторе будет выглядеть просто Lito_krig1=If(Copy_of_Litho_cont<0.5, 0, 1). Недостатком в Petrel является то, что карту эффективных толщин нельзя построить для дискретного куба. Поэтому приходится создавать непрерывный временный куб tmp=Lito_krig1 с непрерывным шаблоном, а уже из него делать в закладке Операций карту суммарных эффективных толщин для первой зоны (рис.6.3). В принципе, для моделирования дискретных параметров, таких как куб литологии в Petrel используется процесс Facies modeling, в котором есть дискретный аналог Кригинга – Indicator Kriging. Но при работе с непрерывными свойствами у нас есть доступ к закладке Co-kriging, где мы используем подготовленную карту
6-4
песчанистости. Поэтому в образовательных целях на нашем примере воспользуемся процессом Petrophysical modeling. Сделаем для сравнения расчет куба литологии методом простой (рис.6.4) интерполяции (Functional). Интерполировать будем по слоям, горизонтальная интерполяция
применяется
только
изредка
при
расчете
нефтенасыщенности
параллельно ВНК. Зададим настройки как показано на рисунке, в качестве тренда используем ту же карту песчанистости для первой зоны, масштабировать не будем (галочка Scale отжата), поскольку карта у нас в том же диапазоне, что и данные. Масштабирование
будем
использовать
потом
при
использовании
трендовой
сейсмической карты, где значения меняются совсем в другом диапазоне.
Рис.6.4.
Аналогично
создадим
дискретный
куб
литологии
Lito_inter=If(
ScUp\Copy_of_Litho_cont<0.5, 0, 1) и построим карту эффективных толщин. Сравним между собой эти кубы, гоняя I и J сечения, а также карты эффективных толщин с рассчитанной ранее по скважинам двумерной картой heff1. Мы видим (рис.6.4), что полученный интеполяцией куб как-то плохо согласуется со скважинами. Поэтому будем далее работать с кубом из кригинга. Немного отредактируем этот куб вручную. Включим в двумерном окне (рис.6.5) карту эффективных толщин и зоны глинизации. Выберем какое-нибудь место, где нет
6-5
коллекторов вне зоны глинизации, например, в этом примере – в районе скважины 29R. Создадим вокруг этой области полигон для правки. Включим J сечение через этот район и, кликнув курсором в нужную ячейку, увидим внизу номер слоя – четвертый (у Вас может быть и другой). Можно также прогнать К сечения (слои) куба, чтобы сообразить, какой слой править.
Включим в двумерном окне (рис.6.6) куб литологии по кригингу, номера скважин и полигон для правки. Включим К сечение и отщелкаем на четвертый номер (номер слоя отображается справа внизу). Включим в правом меню «кисточку» (при активном процессе Facies modeling) и установим тип фации для заливки «песчаник» с помощью инструмента «ведро». Спустимся чуть ниже ведра и зададим следующие настройки: размер кисточки по вертикали – 1 ячейка, по горизонтали – 5 ячеек. Теперь закрасим глины внутри полигона песчаниками, кликая курсором. Посмотрим снова сечение и увидим, что песчаники в этом слое протянулись ближе к скважине. Обнулим куб в зонах глинизации, выставив фильтр и приравняв куб к нулю или в калькуляторе Lito_krig1=If(glina_cub=0, 0, Lito_krig1). Сделем неопределенными ячейки во второй и третьей зонах Lito_krig1=If(Dop_cubes\Zones_hierarchy=1 Or Zones_hierarchy=2, U, Lito_krig1). Построим карту эффективных толщин и сравним ее с двумерной по скважинам, включив изолинии двумерной карты толстым белым цветом (рис.6.7). Увидим, как изменилась область, где мы подкрашивали кисточкой. 6-6
6-7
Сопоставим карты в окне функций (Function vindow). Напомним, что по умолчанию в Установках стоит 1000 точек. А когда мы делаем кросс-плот карта-карта или куб-куб, число точек существенно больше. Поэтому в окне функций надо зайти в правое функциональную панель, открыть Настройки (Show viewport settings) и там увеличить число точек, добавив несколько нулей. Иногда, чтобы кросс-плот карта-карта создался, надо закинуть карты в одну папку. Сравним объемы коллекторов по картам. Для этого в картах в Операциях в Калькуляторе сделаем расчет объемов, не забыв закинуть для двумерной карты полигон модели, так как она больше по площади. В окошке сообщений (message) видим,
что
объемы
коллекторов
практически
одинаковы.
Оценим
связность
коллекторов (рис.6.8) путем создания в процессе Геометрическое моделирование куба связанных объемов (Connected volumes) для фации песчаников по кубу дискретной литологии по Кригингу. Визуальный анализ и статистика (число связанных объемов менее сотни) показывает высокую связность коллекторов в объеме резервуара, причем
основная масса (более 90%) коллекторов находится в одном объеме (теле). Перенесем созданное и отредактированное свойство в Kod_coll[U], с которым будем продолжать работать дальше: ScUp\Kod_coll = If(ScUp\Kod_coll<>U, ScUp\Kod_coll, Lito_krig1). Сохраним проект и перейдем ко второму пласту. Откроем в процессе Анализ данных закладку Пропорция для куба литологии Kod_coll[U] (рис.6.9). Выберем вторую зону для нашего куба. Подгоним кривую изменения песчанистости по слоям в правом окне, нажав кнопочку Fit… Таким образом 6-8
мы создали Vertical Proportional Curve (VPC), то есть геолого-статистический разрез (ГСР). Нажмем Apply. Вызовем процесс Фациального моделирования (Facies modeling), для первой зоны включим замочек (ее мы не будем моделировать), а для второй зоны выберем метод последовательного индикаторного моделирования SIS (см.рис.6.9). Закинем вправо моделируемые фации «песчаник» и «глина». Выставим горизонтальные радиусы в 20 км, а вертикальный – 2 м. Нажмем кнопочку Использования VPC, созданной в анализе данных, она чуть подкраситься коричневым.
В качестве тренда для песчаников закинем карту песчанистости по скважинам для второй зоны. Масштабировать (Scale) не будем. А для глин в качестве тренда используем карту «антипесчанистости», которую создадим вычитанием из единицы карты песчанистости: antintg_map_zone_2=1-ntg_map_zone_2. Масштабировать не будем. Поскольку будем делать одну реализацию, в закладку Common, где по умолчанию и стоит одна реализация, обращаться не будем. Запустим процесс и получим результат. Сделаем карту эффективных толщин, визуализируем ее вместе с изолиниями двумерной карты (рис.6.10.) и создадим куб связанных объемов
6-9
коллекторов, число которых получается очень большое: много изолированных ячеек коллектора (можно поставить и использовать фильтр по второй зоне).
Мы видим, что модель у нас достаточно «рваная». Зайдем в Операции (Operations) для куба литологии и выберем Сглаживание (Smooth). По горизонтали будем сглаживать с окном в три ячейки, по вертикали – в одну ячейку, то есть без сглаживания. Влияние скважин поставим пять. Выберем только вторую зону. Чтобы значения
на
скважинах
не
исказились,
кнопочка
Сохранения
значений
перемасштабированных ячеек слева от Zone должна быть нажата (чуть подкрашена коричневым). Получим (Run) сглаженный куб. Обнулим его в зоне глинизации ScUp\Kod_coll = If(glina_cub=0 And Dop_cubes\Zones_hierarchy=1, 0, ScUp\Kod_coll). Сделаем куб связанных объемов коллекторов (рис.6.10 справа), их число уменьшилось до менее 300. Сделаем карту эффективных толщин по Зоне 2. Сравним величины объемов по этой карте и по двумерной карте в пределах полигона модели. Сделаем вывод, что, хотя результат в целом удовлетворительный, одной реализации маловато для построения модели. Сохраним проект, очистим память (Free memory в Tools в верхнем меню) и перейдем к третьему пласту (рис.6.11). 6-10
Рис.6.11.
Снова откроем Анализ данных (Data analysis) для скопированного свойства Copy of Kod_coll[U], теперь для Зоны 3. В Анализе данных для этого параметра сделаем ГСР (не забудем нажать Apply после подгонки кривой к данным в правом окне).
Перейдем
в
Фациальное
моделирование.
Для
песчаников
зададим
горизонтальные радиусы 20 км, вертикальный – 2 метра, а в качестве двумерного тренда используем карту сейсмического атрибута. Карту масштабируем (Scale trend so maximum probability is 1), так как здесь должна быть карта вероятности в диапазоне от 0 до 1. Для глин зададим те же радиусы, тренд подкладывать не будем. В закладке Common установим 33 реализации. Запустим процесс и получим 33 реализации. В Установках для Свойств (Properties) грида в закладке Операций пометим с шифтом все реализации (рис.6.11), метод арифметического осреднения и сделаем расчет осредненного свойства. Полученное арифметическое среднее назовем Arithmetic mean seis z3 и поместим в папку Work cubes. Фактически это непрерывный куб песчанистости, какой мы получали при кригинге. Если сделать бесконечно много реализаций, то в пределе и получим что-то очень близкое к Кригингу. Теперь дискретизируем с отсечкой 0,5 это свойство и получим дискретный параметр Kod_koll[U] в Зоне 3: 6-11
ScUp\Kod_koll=If(Dop_cubes\Zones_hierarchy=2,If(Work_cubes\Arithmetic_mean_seis_z3 <0.5,0, 1), ScUp\Kod_koll) Теперь нам надо сгладить результат, не исказив значений на скважинах. Сгладим куб Kod_koll[U] по горизонтали для третьей зоны (рис.6.12).
Обнулим в зоне глинизации для третьей зоны: ScUp\Kod_koll =If(Dop_cubes\Zones_hierarchy=2 And glina_cub=0, 0, ScUp\Kod_koll). Построим карту эффективных толщин и куб связанных объемов (рис.6.13). Визуально результат получается неплохой. Обратим внимание, что между скважинами 12Р и 29Р образовалась зона отсутствия коллекторов, то есть влияние этих скважин оказалось сильнее, чем тренда. Если бы мы захотели в точности добиться трендовой карты, можно было бы сделать следующее: •
уменьшить радиус влияния скважин,
•
удалить или отодвинуть скважины 12Р и 29Р,
•
поставить фиктивную скважину с коллекторами в нужных прослоях между ними,
•
отредактировать куб литологии вручную.
6-12
Но поскольку проект у нас тестовый, оставим такой вариант. Теперь переименуем окончательный куб литологии в Lito_fin и переместим его в папку Fin_cubes для использования в следующих упражнениях. А чтобы у нас всегда был под рукой осредненный в ячейки каротаж литологии, запустим еще раз Scale up well logs для каротажа Kod_koll и результат поместим в папку ScUp. Откроем куб Lito_fin[U] в Анализе данных и сравним ГСР литологии по скважинам и по модели, переключая кнопочки просмотра перемасштабированных каротажей (Use upscaled) и кубов (Use property) (рис.6.13 справа вверху). Удовлетворимся этим и сохраним проект для дальнейшего расчета пористости.
6-13
7. Построение куба пористости Построение куба пористости начнем с создания атрибута средней пористости для стратиграфических разбивок (рис.7.1). Создадим новый атрибут Poro – среднее по каротажу пористости, который мы сделали неопределенным в глинах. Предположим, что у нас существует связь – чем меньше коллекторов, тем хуже у них свойства. Откроем Функциональное окно и сделаем кросс-плот атрибута эффективной толщины по скважинам Kod_coll (ось X) и атрибута средней пористости коллекторов Poro (ось Y), по всем зонам. В правом меню откроем Установки и в них поставим галочки
для визуализации сеток (grid) для осей X и Y. Нажмем справа Создание линейной функции (Make linear function from crossplot) и получим на графике прямую, которая сохранится на закладке Input (Poro_vs_Kod_coll). Будем ее редактировать либо через редактирование точек в правом меню, либо зайдя в Настройки (Settings) для самой зависимости и там перейдя в закладку Функция (Function). Нарисуем зависимость так, чтобы первая точка у нее была с координатами 0 по толщине и 0.11 (граничное) по пористости. А в области больших толщин чтобы зависимость выполаживалась на максимальные значения 0.25-0.27. 7-1
Теперь построим в калькуляторе для карт трендовую карту пористости для первой
зоны
через
карту
эффективных
толщин
poro_map_trend_from_coll_z1=Poro_vs_Kod_coll(heff1).
и
Функция
зависимость:
Poro_vs_Kod_coll
закидывается в калькулятор голубой стрелкой, а в скобках добавляется нужное свойство. Займемся картопостроением для первой зоны. Конвертируем атрибут Poro для первой зоны в точки, удалим (Eliminate) их внутри полигона глинизации. Конвертируем полигон зоны глинизации в точки, присвоим им значение 0.11, добавим в точки из атрибута. Построим по совместным точкам карту poro_map_wells_z1, используя
(рис.7.2)
изохорный
алгоритм,
а
в
качестве
тренда
poro_map_trend_from_coll_z1.
Ограничим выходные значения, не забудем «подсадить» на точки.
7-2
карту
Аналогично построим карту для второго пласта, элиминируем внутри полигона глинизации. Глядя на карту (рис.7.3 слева) можно предположить, что песчаники сформированы руслом, по фарватеру которого должна быть высокая пористость. Чтобы
добиться этого, откроем через правую
кнопку
мыши
Расширенный лист для точек и добавим внизу несколько строк. В эти строки забьем X и Y для точек
на
краях
модели
в
фарватере русла (рис.7.3 справа) с высокими значениями 0.19 или 0.20. Определить X и Y для точек можно, кликнув курсором в
место
предполагаемого
положения точки и посмотрев информацию в строке состояния внизу. Перестроим карту с новыми точками. Для карты третьего пласта проведем редакцию не добавлением точек, а вручную. Активизировав процесс Создания/редактирования карт (Make/edit surface),
7-3
выберем в правом меню Присвоение (assign) значений, слева внизу установим Z=0.2, ширину колокольчика около 20 и отредактируем карту. Проверим статистику и, если необходимо, обрежем карту по минимальным и максимальным
значениям
poro_map_wells_z3<0.11,
точек 0.11,
для
третьего
пласта:
poro_map_wells_z3)
и
poro_map_wells_z3=If( poro_map_wells_z3=If(
poro_map_wells_z3>0.224, 0.224, poro_map_wells_z3). Прежде
чем
создавать
кубы
пористости,
в
Анализе
данных
оценим
вертикальный радиус свойства Poro по скважинам – он также около 4. Только при этом включим
фацию
«песчаника»
из
литологии
(рис.7.5).
Скопируем
пере-
масштабированную (осредненную) пористость, откроем процесс Петрофизического
Рис.7.5.
моделирования. Для фации «глин» из куба финальной литологии выберем метод присвоения значения (Assign values) – нуля. Для коллекторов – интерполяция кригингом (Kriging). Горизонтальные радиусы поставим по 20 км, вертикальный – 4 м. Ограничим выходные значения по минимуму и максимуму, в качестве тренда воспользуемся картой пористости для первой зоны. Полученный
куб
назовем
Poro_z_1.
Для
контроля
обнулим
Work_cubes\Poro_z_1=If( Fin_cubes\Lito_fin=0, 0, Work_cubes\Poro_z_1).
7-4
глины
Ограничим
значения
в
коллекторах
по
нижнему
пределу
Work_cubes\Poro_z_1=If(Fin_cubes\Lito_fin=1 And Work_cubes\Poro_z_1<0.11, 0.11, Work_cubes\Poro_z_1). Сделаем неопределенными значения во второй и третьей зонах Work_cubes\Poro_z_1=If(Dop_cubes\Zones_hierarchy=1 Or Dop_cubes\Zones_hierarchy=2, U, Work_cubes\Poro_z_1). Установим фильтр по коллекторам и, зайдя в закладку Операций в Настройках для куба, построим карту (рис.7.6) средней пористости коллекторов (кнопочка фильтра слева внизу включена).
Визуализировав на ней изолинии карты по точкам мы увидим, что она достаточно хорошо учла тренд. Прокрутив вертикальные и горизонтальные сечения куба можно убедиться, что распределение выглядит достаточно геологично. Сохраним проект и перейдем ко второму пласту.
7-5
Снова скопируем перемасштабированную (осредненную) пористость, откроем процесс Петрофизического моделирования. Для фации «глин» из куба финальной литологии выберем метод присвоения значения – нуля. Для коллекторов – SGS с одной реализацией. Горизонтальные радиусы поставим по 20 км, вертикальный – 2 м. Ограничим выходные значения по минимуму и максимуму, в качестве тренда воспользуемся картой пористости для второй зоны (рис.7.7).
Полученный куб назовем Poro_z_2. Поскольку он получился достаточно «рваный», зайдем в Операции в Установках для куба и сделаем сглаживание (smooth), включив кнопочки фильтра и сохранения значений на скважинах (предварительно установим фильтр по коллектору, чтобы значения в глинах не мешались при сглаживании). Для контроля обнулим глины Work_cubes\Poro_z_2=If( Fin_cubes\Lito_fin=0, 0, Work_cubes\Poro_z_2). Ограничим
значения
в
коллекторах
по
нижнему
пределу
Work_cubes\Poro_z_2=If(Fin_cubes\Lito_fin=1 And Work_cubes\Poro_z_2<0.11, 0.11, Work_cubes\Poro_z_2). Сделаем неопределенными значения в первой и третьей зонах Work_cubes\Poro_z_2=If(Dop_cubes\Zones_hierarchy=0 Or Dop_cubes\Zones_hierarchy=2, U, Work_cubes\Poro_z_2). 7-6
Построим карту средней пористости коллекторов для второй зоны, сохраним проект, очистим память, перейдем к третьему пласту. Для этого пласта построение куба пористости тоже выполним стохастическим моделированием, как для второго, но сделаем 33 реализации (закладка Common). В качестве трендовой карты для песчаников закинем, естественно, карту для третьего пласта. Выходной минимум поставим 0.11. А то если мы просто нажмем кнопку Estimate и получим, например, 0.13, то на граничные значения на зоне глинизации мы не выйдем. Лучше запустить процесс на ночь. Полученные реализации осредним, как в литологии, и назовем Poro_z_3. Сглаживать не будем, после 33 реализаций и так достаточно гладко. Для контроля обнулим глины Work_cubes\Poro_z_3=If( Fin_cubes\Lito_fin=0, 0, Work_cubes\Poro_z_3). Ограничим значения в коллекторах по нижнему пределу Work_cubes\Poro_z_3=If(Fin_cubes\Lito_fin=1 And Work_cubes\Poro_z_3<0.11, 0.11, Work_cubes\Poro_z_3). Сделаем неопределенными значения в первой и второй зонах Work_cubes\Poro_z_3=If(Dop_cubes\Zones_hierarchy=0 Or Dop_cubes\Zones_hierarchy=1, U, Work_cubes\Poro_z_3). Сделаем
единый
финальный
куб
пористости
Poro_fin.
Скопируем
перемасштабированную (осредненную) пористость, назовем Poro_fin. Последовательно по зонам прицепим к нему кубы пористости. Fin_cubes\Poro_fin=If(Dop_cubes\Zones_hierarchy=0 And Fin_cubes\Poro_fin=U, Work_cubes\Poro_z_1, Fin_cubes\Poro_fin). Fin_cubes\Poro_fin=If(Dop_cubes\Zones_hierarchy=1 And Fin_cubes\Poro_fin=U, Work_cubes\Poro_z_2, Fin_cubes\Poro_fin). Fin_cubes\Poro_fin=If(Dop_cubes\Zones_hierarchy=2 And Fin_cubes\Poro_fin=U, Work_cubes\Poro_z_3, Fin_cubes\Poro_fin). На всякий случай поставим фильтр по коллекторам и проверим по статистике и гистограммам минимум и максимум, если надо – обрежем по граничным значениям. Поставим фильтр по глинам, проверим значения, если надо – обнулим в калькуляторе Fin_cubes\Poro_fin=0 при включенной кнопочке Use filter. Очистим память (Free memory) сохраним проект.
7-7
8. Построение куба нефтенасыщенности Построение куба нефтенасыщенности начнем с создания трендовых карт и зависимостей для каждой зоны. Вначале откроем в трехмерном окне куб дискретного параметра Contacts, активируем процесс Facies modeling и «кисточкой» с кодом «вода», если необходимо, закрасим нефтяной куполок рядом с водоносной скважиной 19Р, установив при этом высоту кисточки на целую (Entire zone) зону.
Теперь поставим фильтр по ячейкам выше контакта и для первой зоны сделаем из этого куба Contacts какую-нибудь карту, среднюю или эффективную, все равно. По этой карте через правую кнопку мыши сделаем оконтуривающую границу (Create surface edge). Получили полигон вокруг залежей around_zal_z1. Зайдем в Операции в Установках для куба литологии. Для первой зоны создадим с куба карту кровли коллектора (рис.8.1 слева), указав код фации единицу. Пересечем (Create intersection with surface) эту карту с поверхностью ВНК для первой зоны vnk1_calk и получим полигон внешнего контура нефтеносности для первой зоны VNK pol 1. Отредактируем его, удалив лишние хвостики в районе 19Р скважины (рис.8.1 справа). 8-1
Мы видим, что этот полигон уже отличается от полигона surface edge, который был сделан по стратиграфической кровле, а, кроме того, прерывается в зонах глинизации, где нет коллекторов. Сделаем для разбивок атрибут средней нефтенасыщенности из каротажа Sat, который мы делали неопределенным в воде и в глинах. Конвертируем этот атрибут в точки для первой зоны и построим методом Isochore interpolation карту, задав геометрию по полигону around_zal_z1, ограничив min и max по точкам, посадив на точки. Конвертируем полигон VNK pol 1 в точки, проредим их (filter every n’th points) и присвоим граничное значение 0.3. Объединим эти точки c точками из атрибута (операция Append points в папке Common operations) и переcтроим карту (алгоритм Surface resampling), «подсаживая» на совместные точки с радиусом 800 м, либо, как в предыдущих упражнениях, используем закладку Additional inputs в процессе Make/edit surface. Удаляем данные внутри полигона глинизации (рис.8.2). Отредактируем вручную карту, в основном, на краях и назовем Trend_sat_map_from_wells_z1.
Создадим куб флюида, равный литологии Fluid=Lito_fin, но с шаблоном флюида Fluids. Сделаем так, чтобы в глинах он был равен нулю, в коллекторах выше контакта (нефть) - единице, а в коллекторах ниже контакта (вода) – двойке: Fluid=If(Contacts=1 8-2
And Lito_fin=1, 2, Fluid). Это позволит нам в дальнейшем фильтроваться по нефти или воде только по одному этому кубу, без одновременного фильтра по литологии и контакту (расстоянию от ВНК). Скопируем перемасштабированную (осредненную) нефтенасыщенность по скважинам
Sat,
назовем
Sat
z1.
Активизируем
процесс
Петрофизического
моделирования (Petrophysical modeling). Будем моделировать методом кригинга первую зону (рис.8.3). Нажмем кнопку фаций, выберем куб флюида, выберем нефть. Поставим горизонтальные радиусы по 1 км, а вертикальный 0,2 м. Ограничим выходной диапазон значений.
В
качестве
тренда
используем
построенную
карту
средней
нефтенасыщенности для первой зоны. Для фаций глин и воды используем метод присвоения неопределенного (undefined) значения.
Рис. 8.3.
В
полученном
кубе
обнулим
воду
и
глину
Work_cubes\Sat_z1=If(Dop_cubes\Fluid=0 Or Dop_cubes\Fluid=2, 0, Work_cubes\Sat_z1). Сделаем
неопределенные
значения
во
второй
и
третьей
зонах
Work_cubes\Sat_z1=If(Dop_cubes\Zones_hierarchy=0, Work_cubes\Sat_z1, U). Включим фильтр по нефти. Проанализируем полученный куб, построим карту средней нефтенасыщенности продуктивных коллекторов первой зоны. Сравним статистику по перемасштабированным ячейкам, по кубу и по трендовой карте (mean). Сохраним проект.
8-3
Другие зоны попробуем сделать с использованием модели переходной зоны. Предположим, что у нас существуют связи – чем меньше пористость, тем ниже насыщенность. И чем дальше от ВНК, тем выше насыщенность. Откроем окно функций (Function window) и сделаем кросс-плот по кубу расстояния от ВНК Oil water contact (ось X) и перемасштабированному каротажу нефтенасыщенности Sat[U] (ось Y). Включим сетку. Поставим фильтр по нефти и по пористости – от 11% до 22%. Сделаем линейную зависимость и будем ее модифицировать
точками,
создавая
зависимость
для
плохих
коллекторов
Sat_vs_Oil_water_contact_bad (рис.8.4 вверху слева).
Рис.8.4.
Предположим, что зеркало чистой воды у нас ниже ВНК на три метра. Поэтому нижняя точка будет иметь координаты (-3, 0). На контакте будет граничное значение, то есть обязательно будет точка (0, 0.3). Ну а выходить зависимость направо, удаляясь от контакта, будет на асимптотическое значение нефтенасыщенности 0.45. Теперь поставим фильтр по нефти и по пористости – от 22% до 26%. Сделаем линейную зависимость и будем ее модифицировать точками, создавая зависимость для хороших коллекторов Sat_vs_Oil_water_contact_good. Нижняя точка будет, естественно, такой же - (-3, 0). На контакте же будет более высокое для хороших коллекторов 8-4
граничное
значение
0.43.
Больше
будет
и
асимптотическое
значение
нефтенасыщенности 0.57. Снимем фильтр по пористости и визуализируем обе зависимости сразу. В значительной части случаев, как, например для газовых шапок, переходная зона отсутствует, однако имеет место корреляция насыщенности и пористости. Поэтому
включим
фильтр
по
нефти
и
построим
линейную
зависимость
нефтенасыщенности от пористости Sat_vs_Poro (рис.8.4 вверху справа). При
включенном
фильтре
по
нефти
создадим
трендовый
куб
нефтенасыщенности для второй зоны Sat_trend_z2=Sat_vs_Poro(Fin_cubes\Poro_fin). Обрежем его (рис.8.5) по граничному значению при включенном фильтре Sat_trend_z2=If( Sat_trend_z2<0.3, 0.3, Sat_trend_z2). Сделаем
неопределенными
значения
Sat_trend_z2=If(Dop_cubes\Zones_hierarchy=0
Or
в
первой
и
третьей
зонах
Dop_cubes\Zones_hierarchy=2,
U,
Sat_trend_z2). Так как вторая зона у нас очень небольшая, то куб нефтенасыщенности для нее возьмем по трендовому кубу Sat_z2=Sat_trend_z2. Иногда для маленьких залежей вообще присваивают одно значение нефтенасыщенности. Для упражнения немного отредактируем этот непрерывный куб Sat_z2 при включенном фильтре по нефти и активном процессе Петрофизического моделирования.
cut
Рис.8.5.
8-5
Кликнем курсором в какую-нибудь ячейку, перебьем значение в ней в верхнем меню на немного более высокое и, когда рука с кубиком зажелтеет, нажмем ее – значение в ячейке переприсвоится. К сожалению, здесь нельзя использовать кисточку, только по одной ячейке можно вручную редактировать. Присвоим нулевые значения в воде и глинах, которые сейчас неопределенные: Work_cubes\Sat_z2=If(Dop_cubes\Zones_hierarchy=1
And
Work_cubes\Sat_z2=U,
0,
Work_cubes\Sat_z2). Сохраним проект и перейдем к третьей зоне. Построим, включив фильтр по нефти, трендовый куб нефтенасыщенности для третьей зоны, используя сделанные зависимости: Sat_trend_z3=If(Poro_fin<0.22,
Sat_vs_Oil_water_contact_bad(Oil_water_contact),
Sat_vs_Oil_water_contact_good(Oil_water_contact)). Сделаем
неопределенными
значения
в
первой
и
второй
зонах:
Sat_trend_z3=If(Dop_cubes\Zones_hierarchy=2, Sat_trend_z3, U). Сгладим куб Sat_trend_z3 (рис.8.6), чтобы избежать резких границ из-за изменения зависимостей при переходе через пористость 22%. Сейчас нам надо «подсадить» насыщенность на скважинные значения (в западной практике часто этого не делают и пользуются кубами, рассчитанными через модель переходной зоны).
8-6
Создадим
куб
Дистанции
до
объекта
(Distance
to
object),
используя
Геометрическое моделирование, где в качестве объекта используем точки, сделанные из стратиграфических отбивок для какого-нибудь пласта (рис.8.6). Можно было бы взять в качестве объекта траектории скважин, но в этом случае процесс может считаться долго. Будем считать, что зона влияния скважин распространяется на 500 м. Вырежем из
куба
Sat_trend_z3
«дырки»
вокруг
скважин,
используя
куб
Дистанции:
Sat_trend_z3=If(Dop_cubes\Distance_from_Well_tops<500, U, Sat_trend_z3). Скопируем перемасштабированный каротаж нефтенасыщенности по скважинам Sat, назовем Sat_z3. Сделаем неопределенными значения в первой и второй зонах Sat_z3=If(Dop_cubes\Zones_hierarchy=2, Sat_z3, U). Прицепим к нему трендовый куб с вырезанными вокруг скважин значениями: Sat_z3=If(Dop_cubes\Zones_hierarchy=2 And Sat_z3=U, Sat_trend_z3, Sat_z3). Сделаем экстраполяцию значений (рис.8.6) и получим сводный куб. Примечание – иногда при нажатой кнопке фильтра процесс не работает. А вот кнопочка сохранения значений на скважинах обязательно должна быть нажата. В данном примере приходится прибегать к экстраполяции, а не классическим методам моделирования свойств, потому что нефтенасыщенность рассчитана по предполагаемым зависимостям (функциям), которые в данном упражнении достаточно условны. Обнулим значения в воде и глинах, просто поставив фильтр по третьей зоне, по воде и глине и приравняв куб к нулю. Единый
для
всех
перемасштабированный
зон
каротаж
куб
нефтенасыщенности
нефтенасыщенности
по
получим,
скопировав
скважинам
Sat
и
переименовав его в Sat_fin. Затем неопределенные ячейки этого куба в межскважинном пространстве заменим на значения нефтенасыщенности из сделанных ранее кубов: Fin_cubes\Sat_fin=If(Dop_cubes\Zones_hierarchy=0
And
Fin_cubes\Sat_fin=U,
And
Fin_cubes\Sat_fin=U,
And
Fin_cubes\Sat_fin=U,
Work_cubes\Sat_z1, Fin_cubes\Sat_fin); Fin_cubes\Sat_fin=If(Dop_cubes\Zones_hierarchy=1 Work_cubes\Sat_z2, Fin_cubes\Sat_fin); Fin_cubes\Sat_fin=If(Dop_cubes\Zones_hierarchy=2 Work_cubes\Sat_z3, Fin_cubes\Sat_fin). Проверим, включая фильтр по разному флюиду, статистику по нефти, воде и глинам, если надо, еще раз обнулим воду и глины. Очистим память и сохраним проект. 8-7
9. Подсчет запасов Подсчет запасов выполним разными способами на примере первой зоны. В Операциях для куба расстояний от ВНК Oil water contact построим карту Net map для первой зоны. В Калькуляторе для этой карты удалим значения меньшие и равные 0
(рис.9.1). Активируем процесс Редактирования карт (Make/edit surface) и присвоим значения минус 1 вокруг около скв.19Р. Снова элиминируем значения меньше и равные 0 – этот район пропадет.
Расширим (expand) 2-3 раза карту, сделаем вокруг нее
границу (edge) и назовем ее Boundary_zapas_z1. Поставим фильтр по нефти и по первой зоне, откроем куб флюида в двумерном окне и визуализируем Boundary_zapas_z1. Убедимся, что наша граница полностью включает нефтяные залежи. 9-1
Вначале сделаем точный подсчет эффективных нефтеносных объемов в пласте для первой зоны (чтобы получить потом запасы на поверхности, если необходимо, надо будет умножить на плотность нефти и пересчетный коэффициент). Предварительно зайдем в закладку Templates и для наших расчетных параметров (bulk volume, net volume, pore volume, HCPV) увеличим количество знаков после запятой до 5 знаков (рис.9.2).
Откроем процесс Подсчета запасов (Volume calculation) из Утилит (Utilities) и начнем задавать параметры. Вначале забросим ВНК, затем укажем в качестве кубов для подсчета финальные кубы пористости и нефтенасыщенности. Поскольку куба песчанистости (NTG) у нас нет, оставляем для него константу 1. Выходной куб галочкой зададим только один – объемов ячеек над ВНК. Поставим фильтр по первой зоне и по коллекторам, укажем галочкой использование фильтра. В качестве ограничивающего полигона закинем Boundary_zapas_z1. Запустим (run) расчет и из полученного репорта запишем цифру эффективных нефтесодержащих объемов в пласте HCPV (в примере – 6,43*106). Она будет у нас в
9-2
дальнейшем использоваться для сравнения с величинами нефтесодержащих объемов, рассчитанных другими способами подсчета. Полученный куб объемов ячеек-коллекторов первой зоны над ВНК назовем Bulk volume VNK koll z1. Теперь поставим фильтр по нефти и по первой зоне и рассчитаем куб HCPV_z1=Dop_cubes\Bulk_volume*Fin_cubes\Sat_fin*Fin_cubes\Poro_fin. Куб
геометрического
объема
ячеек
Bulk_volume
мы
рассчитывали
в
Геометрическом моделировании ранее (cell volume). Зайдя в Статистику и посмотрев Sum мы видим близкую цифру - 6,47*106. Разница имеет место потому, что куб HCPV_z1 мы рассчитывали без точного учета объема ячеек, секущихся поверхностью ВНК. Снимем
фильтры
и
рассчитаем
куб
доли
Dola_cells=Dop_cubes\Bulk_volume_VNK_koll_z1/Dop_cubes\Bulk_volume.
ячеек Он
равен
единице для ячеек, удаленных от контакта, и меньше единицы - для ячеек, секущихся поверхностью ВНК (рис.9.3).
9-3
Включим фильтр по коллекторам и перерасчитаем куб с учетом куба доли ячеек: HCPV_z1=Dop_cubes\Bulk_volume*Fin_cubes\Sat_fin*Fin_cubes\Poro_fin*Dop_cubes\Do la_cells [Filter ON]. Посмотрев Sum мы видим очень близкую цифру - 6,43*106, разница в третьем знаке. Построим карту эффективных толщин из куба доли ячеек при включенном фильтре по коллекторам (рис.9.3) – это будет карта эффективных нефтенасыщенных толщин. Более грубо можно было бы построить эту карту просто из единичного куба, включив фильтр по нефти. Если бы у нас был куб песчанистости, то карту надо было бы строить из него. В Операциях для карты подсчитаем объем. При включенном фильтре по нефти посмотрим среднее значение пористости и нефтенасыщенности продуктивных коллекторов первой зоны по финальным кубам при нажатой кнопочке использования фильтра.
Перемножив
объем
из
карты
и
средние
значения
пористости
и
нефтенасыщенности, получим цифру эффективных нефтесодержащих объемов в пласте 6,3*106. Эту цифру можно вполне использовать для быстрых прикидок величин запасов, так как на больших месторождениях процесс Volume calculation может считать весьма долго. Очистим память и сохраним проект.
9-4
10. Менеджер задач Менеджер
процессов
используется
для
организации
многократно
повторяющихся расчетов или для фиксирования графа создания модели (workflow – рабочий процесс) для будущего использования. Мы же применим его для оценки возможных величин объема продуктивных пород-коллекторов над ВНК для первой зоны в предположении, что по исходным данным положение ВНК мы знаем недостаточно точно. Зайдем в закладку Workflows, в Установки для имеющегося там объекта-workflow и переименуем его в Volume Calc. Пока workflow у нас пустое. Встав на кнопку Автоматической генерации workflow, кликнем по ней и запустим Повторение (Repeat all calculations on activ 3D grid) всех вычислений в активном гриде (рис.10.1). В появившемся длинном списке наших предыдущих операций удалим все
Рис.10.1. строки, кроме строки использования 3D грида и строки создания контакта (рис.10.1). Начнем формировать workflow. Из папки Калькуляторов и фильтров (Calculators & filters) добавим в список действий строку Калькулятора поверхностей (Surface calculator). На закладке Input скопируем поверхность ВНК для первого пласта vnk1_calk и переименуем ее в VNK 10-1
для использования в workflow (чтобы исходную поверхность не портить). Вернемся в workflow, кликнув дважды по Калькулятору поверхностей, пропишем в нем выражение VNK=vnk1_calk и, после нажатия Enter, оно появится в правой части строки. Добавим еще одну строку Калькулятора поверхностей и в ней запишем выражение VNK=VNK3. Таким образом, мы начнем вычисления объемов продуктивных пород с поверхности ВНК, которая на три метра ниже использовавшейся в модели. Организуем цикл. Из утилит (Utilities), из папки Statements закинем Цикл (Loop). Имя переменной, которая стоит после знака доллара, переименуем в Loop, а число шагов цикла проставим семь (рис.10.1). Дважды кликнув, в строке Создание контактов для первой зоны вместо vnk1_calk закинем VNK (рис.10.2). После строки Создания контактов добавим строку Подсчета запасов (Volume calculation). Дважды кликнем по
Рис.10.2. Volume calculation и начнем задавать параметры расчетов. Поскольку запасы нас сейчас не интересуют, поставим пористость и насыщенность по константе-единице (рис.10.2). Галочку в использовании границы-полигона снимем, а в использовании фильтра оставим. Фильтр же установим по первой зоне и по коллекторам. В выходных кубах (Output) снимем все галочки. Откроем Установки для отчета (Report settings). В закладке Cases поставим галочку в Bulk volume. В закладке Format
10-2
снимем все галочки, кроме галочки для записи в одну строку и галочки для создания выходного отчета (рис.10.2). Теперь у нас внутри цикла каждый раз будет рассчитываться объем продуктивных пород и его величина будет записываться в выходной отчет. В следующую строку закинем папку Move, чтобы выходные результаты перемещались в нужное место. В закладке Workflows откроем контейнер переменных (Variables). Оттуда возьмем переменную Output и положим в нашу строку (рис.10.2). В закладке сценариев (Cases) создадим папку rezultat и ее положим в нашу строку в качестве места, куда будут перемещаться данные.
Рис.10.3.
Следующей строкой добавим Очистку памяти (рис.10.4). После этого вставим строку Калькулятора поверхностей, где запишем изменение ВНК вверх на один метр VNK=VNK+1.
Последней
строкой
завершим
цикл
End
loop.
Для
проверки
синтаксических ошибок нажмем Test. Сохраним workflow – Apply. Запустим Run. Теперь, после работы workflow, в папке результатов сохранились выходные данные. Откроем закладку Results и, кликнув дважды по папке Volumetrics, откроем
10-3
окно настроек (Settings). Там в Cases откроем контейнер результатов и пометим все сценарии.
Рис.10.4.
Нажмем Make report и получим отчет. В нем для всех сценариев даны величины объемов продуктивных пород. Обратим
внимание,
что для среднего сценария (четвертого)
величина
объема
оказалась
практически такой же, что и при расчете в модели, только немного естественно,
больше.
Это
так
для
как
этого сценария поверхность ВНК такая же, а объемов чуть больше, так как полигон был отключен и из-за этого был
просчитан
водяной
Рис.10.5.
куполок в районе скважины 19Р. 10-4
Построим гистограмму распределения величин объемов. Откроем через верхнее меню окно гистограмм (рис.10.6). В закладке Results пометим параметр Bulk volume, а в закладке Cases в контейнере rezultat все наши сценарии. Поскольку вероятности у всех сценариев одинаковые (1/7), то они визуализируются одинаковыми по высоте столбиками.
Рис.10.6.
При необходимости, чтобы не визуализировались вторая и третья зона столбиками с нулями, отключим их галочки в фильтре для зон в 3D гриде (на закладке Results). В завершение активизируем процесс создания контактов для модели и там, поскольку мы испортили создание контакта работой workflow, снова запустим процесс с использованием для первой зоны поверхность vnk1_calk.
10-5
11. Двумерное картопостроение Двумерное картопостроение по данным РИГИС без участия кубов ФЕС модели будем выполнять для северной залежи. В папке скважин создадим дополнительную
Рис.11.1.
папку Copy_wells. В нее поочередно скопируем-вставим скважины 24R, 119, 122, 23R, 3R, 29R, 26R, 27R. В этих скважинах удалим все каротажи, кроме глубины и абсолютной отметки (рис.11.1), а потом загрузим каротажи литологии и флюида Litho_copy и Fluid_copy из папки дополнительных входных данных Dop input. Из этой же папки загрузим карты стратиграфической кровли и подошвы StratBot и StratTop этого участка (формат CPS-3 grid). Они отличаются от наших карт в модели меньшим размером (обрезаны полигоном). Создадим папку стратиграфических разбивок Well tops 2D (выравнивание на абсолютную глубину, в верхнем меню SSTVD, 1:200). Зайдем в закладку создания отчетов (Report) в папке скважин Copy_wells, закинем поверхности StratBot и StratTop и создадим отбивки пересечения траекторий скважин с этими поверхностями. В новом окне корреляции Well section 2D включим наши скважины Copy of 24R, Copy of 119, Copy of 122, Copy of 23R, Copy of 3R, Copy of 29R, Copy of 26R, Copy of 11-1
27R, стратиграфические отбивки кровли и подошвы, каротажи
Litho_copy и
Fluid_copy, поверхность ВНК для первой зоны северной залежи vnk sever 1 red (рис.11.1). Теперь нам будут нужны в первую очередь отбивки кровли первого и подошвы последнего коллектора в скважинах. Создадим (рис.11.2) глобальный каротаж измеренных глубин для наших скважин только в коллекторах mdcoll=If(Litho_copy=0 Or Litho_copy=U, U, DEPT). Сделаем из каротажа mdcoll два атрибута для разбивок. Один – mdcollmin – минимального значения измеренной глубины (рис.11.2), другой – mdcollmax - максимального значения измеренной глубины.
Рис.11.2.
Сделаем копию папки с отбивками Well tops 2D (Ctrl+C, Ctrl+V) и переименуем ее в «Well tops 2D col». В полученных отбивках зайдем в контейнер Stratigraphy и переименуем StratBot и StratTop в ColBot и ColTop соответственно. Откроем таблицу
11-2
атрибутов для зон (Zones spreadsheet) стратиграфических отбивок (рис.11.2), там увидим заглинизированную скважину Copy of 29R, в которой не рассчитались значения атрибутов mdcollmin и mdcollmax. Удалим эту скважину из Well tops 2D col (из подпапки Well filter). Не закрывая таблицу Zones spreadsheet, откроем основную таблицу (Spreadsheet) для отбивок Well tops 2D col и отсортируем данные по столбцу Surface (дважды кликнуть по заголовку столбца) – сверим то, что у нас получилось с рис.11.2. Теперь осталось включить режим редактирования значений измеренной глубины (Edit point: MD) в основной таблице (Spreadsheet) и скопировать из Zone spreadsheet два столбца, как показано на рисунке. Включим-выключим разбивки на схеме корреляции Well tops 2D, убедимся, что все получилось правильно, отбивки ColTop и ColBot соответствуют кровле первого и подошвы последнего коллектора в скважинах. В дальнейшем мы будем использовать полученные отбивки кровли и подошвы коллектора вместе со стратиграфическими разбивками Well tops 2D. Поэтому, выделив все строки таблицы (Spreadsheet) для Well tops 2D col, скопируем их (Copy). Откроем таблицу (Spreadsheet) для Well tops 2D, создадим в ней дополнительную пустую строчку и, предварительно выдели ее,
вставим (Paste) на место этой строчки
скопированные данные. Не забудем нажать OK, чтобы изменения вступили в силу. В результате мы увидим в папке с отбивками Well tops 2D два новых объекта в подпапке Others. Папку отбивок Well tops 2D col теперь можно удалить. Начнем делать карту эффективных толщин Heff map_2D. Вначале создадим атрибут Heff по коллекторам из картотажа Litho_copy (рис.11.3). Cкопируем полигон зоны глинизации для первой зоны, назовем его glina 2dmapping, удалим в нем все полигоны, кроме полигона вокруг скважины Copy of 29R. Сконвертируем в точки и присвоим им значения 0.1. Конвертируем атрибут Heff в точки, добавим к ним точки из полигона (append) и построим по ним карту (рис.11.3 справа) эффективных толщин Heff map_2D методом изохор. Для геометрии используем карту StratBot. Отредактируем карту в юго-восточном и юго-западных углах. Обнулим с помощью фильтра для карт внутри полигона глинизации. Для сравнения можно загрузить карту из папки дополнительных входных данных Dop input или из проекта на диске.
11-3
Создадим на будущее атрибут
нефтенасыщенных
толщин Heff nn из каротажа Fluid_copy по нефти (oil). В скважине
Copy
расположенной
of в
3R, чисто
нефтяной зоне, он совпадает с
Рис.11.3.
Heff. После
построения
карты эффективных толщин будем строить карты по кровле и
подошве
коллектора.
Перетащим отбивки ColTop и ColBot из Others в папку стратиграфии и создадим точки изохор между стратиграфической кровлей и кровлей коллектора. По этим точкам построим (рис.11.4) карту изохор isoh colt str t. Скопируем карту стратиграфической кровли, переименуем в ColTop, отнимем карту isoh colt str t и для контроля посадим на отбивки кровли коллекторов. точки
Аналогично
создадим
изохор
между
Рис.11.4.
стратиграфической подошвой и подошвой коллектора. По этим
точкам
построим
(рис.11.4) карту изохор isoh colb str b. Скопируем карту стратиграфической подошвы, переименуем в ColBot, теперь уже прибавим карту isoh colb str b и для контроля посадим на
отбивки
подошвы
коллекторов. Включим карты в корреляционном окне. Поскольку мы построили карту эффективных толщин, плавно уменьшая толщины к зоне замещения (постепенное выклинивание коллектора), на границе зоны 11-4
замещения карты кровли и подошвы коллекторов должны сходится вместе. Для этого построим временную карту tmp=(ColTop+ColtBot)/2 (сходится будут посередине). Полигону glina 2dmapping присвоим значения по этой карте и сконвертируем в точки. Сконвертируем в точки и отбивки кровли коллектора, добавим к ним точки glina 2dmapping из полигона. Теперь с радиусом 800 м высадим на эти совместные точки карту ColTop. Аналогично сконвертируем в точки отбивки подошвы коллектора, добавим к ним точки glina 2dmapping из полигона, с радиусом 800 м высадим на эти точки карту ColBot. Сделаем полигон из пересечения поверхностей vnk sever 1 red и ColTop, получим внешний контур нефтеносности Vnesh contur VNK, установим стиль тире с одной точкой. Аналогично сделаем полигон из пересечения поверхностей vnk sever 1 red и ColBot, получим внутренний контур нефтеносности Vnutr contur VNK, установим стиль тире с двумя точками (рис.11.4). Замкнем контуры, если надо. Включим скважины, полигон глинизации и контура в двумерном окне (рис.11.4). На границе зоны глинизации на западе полигоны должны сходится. Скопируем карту кровли коллектора, элиминируем внутри зоны глинизации, назовем Cut ColTop. Скопируем карту подошвы коллектора, элиминируем внутри зоны глинизации, назовем Cut ColtBot. Посмотрим на поведение поверхностей в трехмерном окне. Создадим прямой полигон через точку схождения контуров (рис.11.4). Через правую кнопку мыши сделаем вертикальное сечение (рис.11.4). Отобразим его в новом трехмерном окне. Зайдем в Установки для сечения и отключим галочку визуализации внутренней заливки сечения (show – рис.11.5). Толщину отображаемых поверхностей поставим 2. В нижнем меню слева нажмем синий квадратик и все возможные для визуализации объекты подкрасятся синим. Включим карты Cut ColTop и Cut ColtBot, поверхность ВНК vnk sever 1 red. Отключим синий квадратик. Снова включим карты Cut ColTop и Cut ColtBot, а также полигон glina 2dmapping и
поверхность ВНК vnk sever 1 red. Ножницами внизу
отрежем объекты перед сечением (рис.11.5). Перейдем собственно к двумерному картопостроению. На первом этапе будем карту строить простым методом «по точкам». Скопируем карту эффективных толщин и элиминируем ее снаружи внутреннего контура нефтеносности. Сконвертируем эту усеченную карту в точки. Однократно проредим точки (filter every n`th points), чтобы их не было так много, иначе высаживание на точки будет происходить весьма долго. 11-5
Далее сконвертируем в точки полигон внешнего контура нефтеносности, присвоим этим точкам значение нуля, один раз проредим точки (рис.11.6).
=
Рис.11.5.
+
Рис.11.6.
11-6
Сконвертируем в точки атрибут Heff nn, элиминируем внутри внутреннего контура и снаружи внешнего контура нефтеносности. Соединим все три набора точек в один объект, элиминируем внутри зоны глинизации. Используем эти объединенные точки в качестве исходных для картопостроения Heff nn 2D from points методом Kriging с радиусами 1000 м. Для геометрии возьмем карту Heff map_2D. Подгонку с радиусом 100 м будем осуществлять на точки, сделанные из атрибута Heff nn. Полученную карту обрежем (eliminate) снаружи внешнего контура нефтеносности и внутри зоны глинизации. Отобразим карту (рис.11.6) совместно с атрибутом Heff nn, контурами нефтеносности и зоны глинизации. Обратим внимание на излом изолиний нефтенасыщенных толщин на внутреннем контуре нефтеносности. Сохраним проект. На втором этапе будем карту строить более сложным методом: «через песчанистость», учитывающим изменения структурного плана в водонефтяной зоне. Сначала нам надо создать карту общих толщин продуктивной части для коллекторов. Скопируем карту ВНК и присвоим ей значения карты подошвы коллектора там, где подошва коллектора находится выше поверхности ВНК - Copy_of_vnk_sever_1_red=If( ColtBot>vnk_sever_1_red, ColtBot, Copy_of_vnk_sever_1_red). Вычтем из этой карты карту кровли коллектора (рис.11.7). Обрежем (eliminate) снаружи внешнего контура и
Рис.11.7.
11-7
внутри зоны глинизации. Умножим на минус единицу. Присвоим значения нуля, там где карта имеет маленькие значения меньше нуля. Назовем ее ob tol. Обратим внимание, что значения карты уменьшаются к нулю на внешнем контуре, где сходятся карты ВНК и кровли коллектора, а также уменьшаются к нулю к полигону зоны глинизации, где сходятся карты кровли и подошвы коллектора. Займемся построением карты песчанистости. Чтобы затем окончательная карта совпадала с картой эффективных толщин в пределах внутреннего контура нефтеносности, скопируем карту ob tol и обрежем (eliminate) снаружи внутреннего контура нефтеносности (рис.11.8).
Сделаем
временную
карту
песчанистости
внутри
внутреннего
контура
tmp1=Heff_map_2D/Copy_of_ob_tol. Сконвертируем в точки и проредим один раз. Подготовив точки песчанистости внутри внутреннего контура, создадим точки песчанистости продуктивной части для межконтурной зоны.
11-8
Скопируем папку стратиграфических разбивок Well tops 2D, назовем tmp, удалим оттуда все отбивки, кроме кровли коллектора. Зайдем в папку скважин Copy_wells и создадим отбивки пересечения поверхности ВНК vnk_sever_1_red и траекторий скважин. Для нашей зоны между кровлей коллектора и ВНК создадим атрибут песчанистости по нефтенасыщенным толщинам oil. Сконвертируем атрибут в точки, элиминируем внутри внутреннего контура и, на всякий случай, снаружи внешнего. Добавим эти точки к точкам песчанистости внутри внутреннего контура (рис.11.9). По этим точкам методом изохор построим карту Pesch, удалим значения внутри зоны глинизации и снаружи внешнего контура. Обрежем максимальные значения по единице.
Рис.11.9.
Получим
карту
нефтенасыщенных
толщин
Heff_eff_nn_2D_from_NTG
перемножением карт общих толщин продуктивной части ob tol и карты песчанистости продуктивной части Pesch (рис.11.10). Затем «подсадим» эту карту на точки нефтенасыщенных толщин с малым радиусом 300 м. Обратим внимание в отчете, что, если мы все делали аккуратно, первоначальное расхождение по точкам не превышает нескольких сантиметров.
11-9
=
*
Рис.11.10.
Сделаем карту разности обеих карт нефтенасыщенных толщин, возьмем ее значения по модулю Delta=Abs(Delta). Отобразим эти карты в двумерном окне
и
карту
кровли
Рис.11.11.
коллектора
(рис.11.11). Мы видим, что основные расхождения имеют место в водонефтяной зоне,
где
карта
по
песчанистости
учитывает изменения структурного плана, а карта по точкам – нет. Очистим память и Heff_eff_nn_2D_from_NTG
сохраним проект.
Heff nn 2D from points
11-10
ColTop
Delta
12. Картооформление Оформление
карты
эффективных
нефтенасыщенных
толщин
Heff_eff_nn_2D_from_NTG будем производить в новом окне Map Window. Включим в этом окне карту и в меню справа откроем Настройки, где установим фиксированный масштаб 1:50000 (рис.12.1).
Рис.12.1. Кликнув два раза мышью, установим бумагу А4. А в Настройках собственно для карты зададим шаг изолиний два метра, высоту подписей аннотации 10, отожмем, если надо, галочку в подписывании только жирных (bold) изолиний. Скопируем
внешний
контур
нефтеносности,
элиминируем внутри зоны глинизации, назовем Cut Vnesh contur, визуализируем с толщиной 3 и стилем линии
точка-тире.
нефтеносности,
Скопируем
удалим
внутренний
значения
внутри
контур зоны
глинизации, назовем Cut Vnutr contur, визуализируем с толщиной 3 и стилем линии тире-две точки. Для полигона зоны глинизации glina 2dmapping поставим зеленый цвет, толщину 3 и стиль линии «реснички» внутрь
(рис.12.2).
Скопируем
карту
эффективных
12-1
Рис.12.2.
толщин, обрежем внутри внутреннего контура и зоны глинизации, назовем Cut Heff map_2D. Визуализируем только изолинии пунктиром, аннотацию к ним 10 шрифтом. Следующим шагом нам надо визуализировать скважинную информацию. Включим в папке атрибутов стратиграфических разбивок имена скважин, эффективные и нефтенасыщенные толщины. Кликнув два раза по каждому атрибуту, установим позицию для каждого как на рисунке 12.3, размер 10.
Рис.12.3. Величину символа стратиграфических разбивок установим 1, чтобы его потом перекрыл символ скважин. Если надо, уменьшим количество знаков после запятой для шаблонов эффективных и нефтенасыщенных толщин до одного знака после запятой. Включим скважины в папке Copy_wells, величину символа сделаем 10, траекторию (path) отключим, а позицию символа определим на поверхности кровли коллектора. Символы визуализируются такие, как мы их установили вначале работы – разведочные скважины.
12-2
Теперь у нас визуализированы необходимые нам объекты и мы можем заняться подписями к карте. Сперва импортируем из папки дополнительных исходных данных Dop input файл картинки RGU.bmp. Откроем Установки для Frame (рис.12.4) через верхнее меню или открыв контейнер окна в закладке Windows. Закинем в качестве logo наш рисунок. Напишем текст «Карта нефтенасыщенных толщин», установим для текста 16 шрифт жирный и позицию по центру вверху. А для картинки (logo) установим позицию справа снизу.
Рис.12.4. Для легенды установим высоту 3 см, позицию слева снизу. При необходимости встанем курсором на край красной рамки и растянем. Карта будет похожа на изображенную на рис.12.4. Очистим память и сохраним проект.
12-3
Закревский К. Е.
Практикум по геологическому 3D моделированию. Построение тестовой модели в Petrel 2009