РОССИЙСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
НЕФТИ И ГАЗА имени И.М. ГУБКИНА
Кафедра геофизических информационных систем
А.В. Городнов, В.Н. Черноглазов
СБОРНИК ЗАДАЧ И АЛГОРИТМОВ
по курсу
«ТЕОРЕТИЧЕСКИЕ ОСНОВЫ, АЛГОРИТМЫ И
СИСТЕМЫ ОБРАБОТКИ ГЕОФИЗИЧЕСКОЙ
ИНФОРМАЦИИ»
Москва - 2009 2 УДК 550.83 А.В. Городнов, В.Н. Черноглазов. Сборник задач и алгоритмов по курсу «Теоретические основы, алгоритмы и системы обработки геофизической информации». М.: РГУ, 2009.
Сборник предназначен для студентов специальности 080900 «Геофизические методы исследования скважин», изучающих дисциплину «Теоретические основы, алгоритмы и системы обработки геофизической информации».
В нем рассмотрены примеры решения типовых задач предварительной обработки и интерпретации стандартного комплекса методов ГИС в компьютерной системе КАМЕРТОН с помощью встроенного языка программирования. Основные функции и процедуры алгоритмов снабжены комментариями в тексте программ.
Ознакомится с полным набором алгоритмов и задач можно на сервере специализированной аудитории 417 кафедры ГИС, а узнать подробнее о системе КАМЕРТОН на сайте www.getek.ru.
Рецензент: проф., д.т.н. Кременецкий М.И.
Сборник одобрен к изданию учебно-методической комиссией факультета геологии и геофизики нефти и газа.
РГУ нефти и газа имени И.М. Губкина, 2009.
Введение Для написания курсовой работы по курсу «Теоретические основы, алгоритмы и системы обработки геофизической информации» студенту необходимо овладеть профессиональными знаниями и навыками в области обработки и интерпретации данных геофизических методов исследования скважин (ГИС), изучить приемы и алгоритмы интерпретации в рамках одной из применяемых в промышленности систем автоматизированной интерпретации данных ГИС для решения конкретных задач выделения и оценки свойств коллекторов различного типа.
Материалы для курсовой работы, включающие геофизические кривые в формате LAS и петрофизические зависимости для продуктивных объектов, собираются студентами на преддипломной практике. Также допускается использовать в курсовой работе фондовые геофизические и керновые материалы кафедры ГИС.
Алгоритмы обработки создаются как с помощью встроенных элементов стандартной технологии интерпретации ГИС, так и в специализированном приложении системы КАМЕРТОН - «Методика пользователя». Результатом работы является набор расчетных кривых (непрерывных или пластовых) коллекторских свойств и насыщения продуктивных пластов.
1. Язык программирования системы КАМЕРТОН 1.1 Термины и определения Термин Определение Идентификатор Символьное обозначение имени кривой, под кривой которым она используется в алгоритмах расчета Колодец Графический тип данных для отображения колонок литологии, типа коллектора и насыщенности, РНД Рабочий набор данных, хранящихся в локальной базе Имя кривой Имя, под которым кривая существует в списке Массив глубин Массив целых чисел для перечисления квантов Массив интервалов Массив целых чисел для перечисления глубин глубин кровли и подошвы всех интервалов колодца, начиная Временная кривая Кривая, создаваемая для использования внутри 1.2 Функции и операторы языка Алгоритмы пользовательских методик для реализации графа обработки геофизических данных описываются с помощью специального языка программирования.
Данный язык позволяет загружать геофизические кривые и графические типы данных (колодцы), работать с локальной базой данных, производить сложные итерационные вычисления с разнообразными условиями, представлять результаты интерпретации ГИС в виде выходных кривых, объемных моделей, графических типов данных-колодцев.
Основными элементами языка являются:
• Функции общения с планшетом: OPEN.
• Функции общения с локальной базой данных: DB_READ, DB_WRITE.
• Функции получения массивов глубин или интервалов: DEPTHES, DEP_RANGES.
• Специальные функции для работы с кривыми: MIN, MAX, AVE, • Общие операторы языка.
• Стандартные математические функции и операции (в том числе логические).
• Пользовательские переменные.
Функция OPEN.
Функция предназначена для загрузки входных и создания выходных или временных кривых (колодцев). Обобщенное представление функции записывается в следующем виде:
Идентификатор кривой = OPEN (флаг открытия, [имя кривой], [тип кривой / тип колодца]) Пример записи функции для загружаемой в задание геофизической кривой ПС выглядит так:
PS = OPEN ( IN, "ПС" ) Пример записи функции для выходной геофизической кривой «Альфа ПС»:
Aps = OPEN ( OUT, "АльфаПС", CURVE) В круглых скобках через запятую указываются аргументы функции, которые могут принимать следующие значения:
Флаг открытия. Возможные значения: IN - кривая на вход; OUT - на выход; TMP - временная.
Имя кривой. Задается в кавычках. Для кривых TMP не задается.
Тип кривой. Возможные значения: CURVE - непрерывная, STEP ступенчатая. Для колодцев не задается.
Тип колодца. Один из возможных типов выходных колодцев (литология, интервал, конструкция и др.). Задается в кавычках.
Последний аргумент – [тип кривой/тип колодца] для входных кривых не указывается, поскольку автоматически распознается программой.
Функция DEPTHES Предназначена для получения рабочего массива глубин.
Имя массива = DEPTHES (; интервал фильтрации).
Например, d = DEPTHES ( PS; YELLOW ) означает выполнить индексирование всего массива глубин по кривой с идентификатором PS в выделенных на экране рабочих интервалах.
До точки с запятой в аргументах функции идет перечисление всех необходимых источников точек. В случаях колодцев или массивов интервалов берется начальная и конечная точка с каждого интервала.
Кроме того, указав флаг YELLOW, можно получить начальные и конечные точки каждого их желтых интервалов.
После точки с запятой следует фильтр полученных точек. В случае отсутствия необходимости фильтрации эту часть вместе с точкой с запятой опускают. Интервалы фильтрации получают проведением математических операций объединения и пересечения множеств. Для объединения используется знак «+», для пересечения – знак «*». В качестве аргументов могут выступать: колодцы, массивы интервалов, элементы массива интервалов, флаг YELLOW (для использования желтых интервалов) или кривые (для получения полного интервала кривой).
Использование массива точек Пусть d – имя массива точек.
Получить количество точек в массиве: d.SIZE Получить глубину по индексу [i]: d[i] Функция DEP_RANGES Предназначена для получения рабочего массива интервалов глубин.
Имя массива = DEP_RANGES (интервалы) В скобках проводятся действия с интервалами, описанные выше (см.
описание функции DEPTHES).
Использование массива интервалов Интервал представляет собой начальную и конечную глубину.
Пусть R1 – имя массива интервалов.
Получить количество точек в массиве: R1.SIZE Получить начальную глубину по индексу: R1[index].FROM Получить конечную глубину по индексу: R1[index].TO Специальные функции для работы с кривыми MIN, MAX, AVE, DISP - функции для вычисления соответственно минимального, максимального, среднего значений кривой и ее дисперсии.
Аргументом функции указывается идентификатор имени кривой.
Например, a = MIN (PS).
Использование идентификатора кривой Пусть PS– идентификатор кривой, а C1 – идентификатор колодца.
Пусть массив глубин имеет идентификатор d = DEPTHES ( PS ).
Пусть R1 – массив интервалов.
Тогда в теле программы идентификатор кривой записывается как функция от массива глубин PS(d[i]), где i – это имя цикла, описывающего индексированный массив глубин.
С колодцами и кривыми можно производить следующие действия:
PS (depth) – получить значение на глубине depth (имя цикла на глубине depth).
C1(R1[I]) - получить имя цикла в интервале с индексом I из рабочего массива интервалов R1.
C1(depth) = a – записать в кривую точку “a” на глубину depth.
C1(depth1, depth2) = “Имя цикла” - записать в колодец цикл “Имя цикла” между глубинами depth1 и depth2.
C1(R1[I]) = “Имя цикла” - записать в колодец цикл “Имя цикла” в интервал с индексом I из рабочего массива интервалов R1.
Функция DB_READ Предназначена для чтения значений параметров из рабочего набора.
Имя переменной = DB_READ (имя раздела, имя параметра) Имена раздела и параметра задаются в кавычках. Значение записывается в переменной.
Функция DB_WRITE Предназначена для записи значений параметра в рабочий набор.
DB_WRITE (имя раздела, имя параметра, значение) Имена раздела и параметра задаются в кавычках.
Общие операторы языка Перечислим операторы языка:
IF…[AND, OR]…THEN…[ELSE]…ENDIF-оператор сложного условия;
FOR … TO … [STEP] … NEXT - оператор цикла (все переменные Поддерживаемые операции с числами и переменными можно производить следующие действия:
SIN, COS, TAN, SQR, LN, LG, EXP- стандартные алгебраические операции;
<,, >=, =, -логические операции.
Вместо запятой в дробных числах следует использовать точку!!!
Можно использовать круглые скобки.
Работа с переменными Переменные в программе могут быть типа «число», типа «массив точек», типа «массив интервалов», типа «идентификатор кривой». Не допускается использование одних и тех же имен для переменных разного типа. Чтобы завести переменную, следует присвоить ей некоторое значение. Например, зададим значение диаметра скважины как переменную: Dс = 0. Поддерживаются русские имена переменных.
В программе можно использовать значение признака отсутствия данных – NO_DATA.
1.3 Работа в окне «Методика пользователя»
Методика пользователя открывается с помощью кнопки на панели инструментов. Окно методики пользователя состоит из двух половин (Рис.1). Левая половина является вспомогательным и служит для хранения и предоставления информации о кривых, палетках, колодцах, загруженных в базу данных текущей скважины. Закладки в нижней части левой половины окна позволяют делать доступными константы из рабочего набора данных, типы и элементы колодцев, операторы и функции языка программирования.
Правая часть окна называется Редактором и предназначена для написания и редактирования текста программы. Информация из левой половины окна в окно Редактора может перемещаться захватом левой кнопкой мыши.
На закладке «Кривые» (рис.1) показаны все существующие на планшете кривые. Если «перетащить» с помощью левой кнопки мыши кривую в рабочее поле редактора, под курсором появится ее имя.
Если выполнить эту операцию, удерживая Ctrl, в окне редактора появится оператор OPEN, открывающий данную кривую на вход.
На закладке «Константы» показаны все доступные параметры рабочего набора.
Рисунок 1 – Окно «Методика пользователя».
Если «перетащить» параметр или раздел в рабочее поле редактора, под курсором появится его название. Если выполнить эту операцию, удерживая Ctrl, в окне редактора появится оператор DB_READ, открывающий данный параметр.
На закладке «Типы колодцев» показаны все доступные в программе типы колодцев и их элементов. Если «перетащить» элемент или колодец в рабочее поле редактора, под курсором появится их название. Если «перетащить» колодец, удерживая Ctrl, в окне редактора появится оператор OPEN, создающий выходной колодец данного типа.
Палетки, представленные в левой половине окна, предварительно должны быть оцифрованы и обучены. Файлы палеток с расширением «.xyp» должны располагаться в следующей папке С: \Program Files\ Kamerton 1227\Lint\xyp\learned\ file.xyp.
Методики, записанные в Редакторе в виде программ, можно сохранять и открывать для повторного использования с помощью кнопок «Открыть» и «Сохранить» в левом нижнем углу окна. Методики хранятся в файлах с расширением *.um. Их можно также просматривать и редактировать любым текстовым редактором типа Блокнот и др.
Кнопка «Пример» предназначена для первичного ознакомления с последовательностью записи текста программы.
Кнопка «Расчет» запускает счет по заданной программе.
При наличии ошибки в программе будет выведено сообщение об ошибке с указанием номера строки.
Наиболее часто встречаемые ошибки связаны с операцией деления на ноль, отрицательными числами под логарифмом или корневым выражением. Для избежания подобных ситуаций рекомендуется предварительно накладывать условия на используемую кривую с целью устранения ошибки.
При построении алгоритмов расчета рекомендуется упрощать вычисляемые выражения, вводя дополнительные переменные. Тогда любое сложное выражение можно записать в несколько строк, что упрощает запись, делает ее более наглядной, избавляет запись от обилия скобок.
2. ПРИМЕРЫ АЛГОРИТМОВ И ЗАДАЧ ИНТЕРПРЕТАЦИИ ГИС
2.1. ЗАДАЧА 1. Расчет относительного параметра СП Строки, начинающиеся с оператора REM, не обрабатываются и служат для написания комментариев (ремарок) к тексту программы.REM Расчет Альфа_ПС REM Открываем входные и выходные кривые, REM в кавычках указываются имена кривых в рабочем наборе ps = OPEN ( IN, "ПС" ) Aps = OPEN ( OUT, "АльфаПС", CURVE) REM где "ps" и "Aps" являются идентификаторами входной кривой ПС и выходной - с названием АльфаПС.
REM Определяем минимум и максимум кривой ПС a=MIN(ps) b=MAX(ps) REM Считываем глубины с кривой ПС и записываем в массив с идентификатором "d" d=DEPTHES(ps) REM Определяем общее количество точек (квантов) глубин на кривой ПС N=d.SIZE REM Задаем цикл поточечной обработки кривой ПС от начальной до конечной глубины REM Расчет Альфа_ПС для глубины - d [ i] REM Цикл завершается оператором окончания цикла NEXT REM Программа завершается оператором окончания END END 2.2. ЗАДАЧА 2. Снятие отсчетов с кривой REM Cнятие средних отсчетов с непрерывной кривой в границах пластов REM Входная непрерывная кривая - ПС c = OPEN(IN, "ПС") REM Границы пластов (кровля-подошва) задаются с помощью колодца "интервал" col = OPEN(IN, "интервал") REM Результат запишем под именем cool2 = OPEN(OUT, "Пластовая_ПС", STEP) REM получим массив границ пластов в интервалах глубин пересечения колодца "интервал" и "желтые" интервалы p = DEP_RANGES(col*YELLOW) FOR i=1 TO p.SIZE REM получим массив глубин с кривой ПС (идентификатор "с") от кровли до подошвы пласта p[i] d = DEPTHES(c; p[i]) REM - d.SIZE - количество точек глубин на кривой ПС, REM Расчет среднего значения кривой в пласте p[i] ave = sum/d.SIZE REM формируем ступенчатую кривую, кровле пласта присвоим расчитанное среднее значение кривой в пласте cool2( p[i].FROM ) = ave REM в подошве пласта указываем "нет_данных".
REM если пласты идут подряд, на этой глубине будет кровля следующего пласта p[i+1] cool2( p[i].TO ) = NO_DATA NEXT END 2.3. ЗАДАЧА 3. Расчет производной от непрерывной кривой REM Расчет производной для непрерывной кривой REM Зададим входную и выходную кривые c1 = OPEN(IN, "Термометр_1") res3 = OPEN(OUT, "Производная", CURVE) REM Считываем массив глубин с входной кривой d = DEPTHES(c1) REM Вычисляем производную на каждой точке (кванте) глубины от 1-й до предпоследней REM и записываем в выходную кривую с идентификатором res FOR i=1 TO d.SIZE- res3(d[i]) = ( c1( d[i+1] ) - c1( d[i] ) ) / ( d[i+1] - d[i] ) NEXT END 2.4. ЗАДАЧА 4. Сглаживающий фильтр REM Сглаживание кривой осредняющим фильтром c1 = OPEN(IN, "МБК") res2 = OPEN(OUT, "МБК_сглаж", CURVE) d = DEPTHES(c1) FOR i=3 TO d.SIZE- REM Суммируем значения кривой на 5 окружающих точках REM Вычисляем среднее значение для каждой точки и записываем в выходную кривую res2(d[i]) = sum/ NEXT REM Две первые и последние точки глубин не будут сглажены !!!
END 2.5. ЗАДАЧА 5. Расчет отклонения от номинального диаметра REM Расчет отклонения диаметра скважины от номинального в интервалах обработки curve1 = OPEN(IN, "Caliper") curve2 = OPEN(OUT, "new", CURVE) REM На планшете интервалы обработки выделены желтым цветом REM Считываем массив глубин, попавших в желтые интервалы (фильтр интервалов глубин - YELLOW) d = DEPTHES(curve1; YELLOW) REM Определяем общее количество точек (квантов) глубин на кривой каверномера в желтых интервалах N=d.SIZE REM Зададим величины номинального диаметра скважины REM На глубине 1700 м номинальный диаметр изменяется IF (d[i]) Level THEN REM тогда записываем во временную переменную "tmp" для данной точки глубины d[i] значение 1.
ELSE REM иначе (если заданное условие не соблюдается) записываем значение 0 (неколлектор).
ENDIF NEXT REM Сформировалась непрерывная кривая tmp со значениями 0 и 1 для всего массива глубин.
REM Далее выбрасываем лишнии точки ( повторы ), преобразуя непрерывную кривую в ступенчатую.
REM Припишем значение первой точке глубин a = tmp(d[1]) out(d[1]) = tmp(d[1]) REM Для последующих точек глубин организуется новый цикл FOR i=2 TO d.SIZE REM Если значение в текущей точке не равно значению в предыдущей, то REM для данной точки глубин записывается новое значение выходной кривой "out" REM Если значение в текущей точке равно значению в предыдущей, REM эта точка глубин не записывается в выходную кривую "out" NEXT REM Сформировалась ступенчатая кривая "out" со значениями 1 в кровле и 0 в подошве каждого пласта END 2.7. ЗАДАЧА 7. Поправка в метод СП Методика с введением поправки за ограниченную мощность пласта в пластовую кривую метода СП требует использования палетки. Палетка предварительно должна быть оцифрована и обучена. Файл палетки с расширением «.xyp» должен располагаться в следующей папке С: \Program Files\ Kamerton 1227\Lint\xyp\learned\ Поправка_СП.xyp.
Вид палетки представлен на рисунке 2. По горизонтальной оси отложено отношение толщины пласта к диаметру скважины. По вертикальной оси величина искомой поправки. Шифром кривых является отношение удельного сопротивления пласта к сопротивлению раствора.
Палетка обучена для нахождения Y по известным величинам X и шифра кривой.
Рисунок 2 – Палетка для введения поправки за ограниченную мощность пласта в метод СП.
Для оценки величины поправки в пластовую кривую СП необходимо также загрузить пластовую кривую сопротивления плата. Это может быть кривая сопротивлений по БК, ИК или градиент зонду.
REM Поправка в (ступенчатую) кривую СП за мощность пласта REM т.е. приведение к статической амплитуде SP = OPEN(IN, "Пластовая ПС") Rp = OPEN(IN, "Пластовая ГЗ3") SP2 = OPEN(OUT, "СП_стат", STEP) REM Загрузить палетку pal = LOAD_PLT("Поправка_СП.xyp") REM Задаем сопротивление раствора и диаметр скважины Rs = 2. ds = 0. REM Создаем индексированный массив границ пластов d = DEPTHES(SP) FOR i=2 TO d.SIZE- REM Находим толщины пластов H = d[i+1] - d[i] REM Вычисляем по палетке "pal" величину поправки NU = pal ((H/ds), (Rp(d[i])/Rs)) IF NU>1 THEN NU=1 ENDIF REM Вычисляем среднее значение СП во вмещающих породах U_vm = (SP(d[i+1])+SP(d[i-1]))/ REM Вычисляем амплитуду относительно уровня вмещающих пород Amp = SP(d[i]) - U_vm REM Вносим поправку в амплитуду СП и вычисляем исправленное значения на кривой СП SP2(d[i]) = U_vm + Amp / NU NEXT END 2.8. ЗАДАЧА 8. Поправка в кривые РК Эта методика предназначена для введения поправки за ограниченную мощность пласта в любые радиоактивные методы, зарегистрированные с использованием интегрирующей ячейки.
REM Поправка в (ступенчатые) кривые РК за мощность пласта REM и интегрирующую ячейку с использованием палетки RK = OPEN(IN, "Пластовая GK") RK2 = OPEN(OUT, "ГК_исп", STEP) REM Загрузить палетку pal = LOAD_PLT("Radiometr1.xyp") REM Задается значение произведения скорость*постоянная интегр.ячейки VT= d = DEPTHES(RK) FOR i=2 TO d.SIZE- REM Находим толщины пластов H = d[i+1] - d[i] REM Вычисляем по палетке "pal" величину поправки IF NU>1 THEN NU= ENDIF REM Вносим поправку в амплитуду относительно подстилающих Amp = RK(d[i]) - RK(d[i+1]) RK2(d[i]) = RK(d[i+1])+ Amp / NU NEXT END 2.9. ЗАДАЧА 9. Скин-эффект в методе ИК Регистрация индукционного метода производиться в единицах проводимости, измеряемой в мсим/м. Для перевода показаний в единицы удельного электрического сопротивления с учетом влияния скин-эффекта используется палетки для конкретного типа аппаратуры индукционного каротажа.
Рисунок 3- Палетка для перевода кривой ИК из единиц проводимости в единицы удельного электрического сопротивления для зонда 6Ф1.
REM Поправка за скин-эффект и перевод показаний ИК из проводимости в сопротивления REM с использованием палетки IK = OPEN(IN, "ИК") Resist = OPEN(OUT, "Rk_ИК", CURVE) REM Загрузить палетку p = LOAD_PLT("SKIN-4И1.xyp") d = DEPTHES(IK) FOR i=1 TO d.SIZE REM Аргументом палетки "p" является кривая с идентификатором "IK" Resist( d[i] ) = p ( IK(d[i] )) NEXT END 2.10. ЗАДАЧА 10. Расчет водородосодержания по НК Известно, что существует линейная обратно пропорциональная зависимость между показаниями нейтронного метода и логарифмом водородосодержания (пористости) пород. Зная координаты двух точек зависимости, можно провести через них прямую линию и построить зависимость показаний нейтронного метода от водородосодержания пород для конкретной скважины.
В качестве опорных выбираются пласты с максимальным водородосодержанием, обычно глины, и минимальным водородосодержанием, обычно плотные низкопористые пласты с низкой глинистостью.
Водородосодержание глин складывается из химически связанной воды самих глин и пористости глин. В кавернах диаметром более 40 см, превышающих радиус исследования нейтронного метода, принимается водородосодержание 0.45-0.50.
Пористость (водородосодержание) плотного пласта оценивается независимым способом по электрическому методу, либо по плотностному или акустическому методам.
REM Расчет водородосодержания по прямым показаниям нейтронного метода по методике двух опорных пластов c=OPEN ( IN, "NGK" ) W=OPEN ( OUT, "W_calc",CURVE ) REM Вводим значения в опорных пластах Wгл=0. Wпл=0. Jпл=3. Jгл=1. d=DEPTHES(c) FOR i=1 TO d.SIZE m = (c(d[i])-Jгл) / (Jпл-Jгл) W(d[i]) = Wгл * (Wпл/Wгл) ^ m NEXT END Существует второй способ нахождения зависимости показаний нейтронного метода от водородосодержания пород, основанный на линейной связи водородосодержания и обратной величины показаний нейтронного метода. Этот способ имеет преимущество перед первым благодаря линейности зависимости в области низких значений пористости (водородосодержания) пород.
REM Расчет водородосодержания по обратным показаниям нейтронного метода по методике двух опорных пластов c=OPEN ( IN, "NGK,у.ед" ) VSH=OPEN ( IN, "VSH" ) W=OPEN ( OUT, "W_calc",CURVE ) Кпн=OPEN ( OUT, "Кпн",CURVE ) Wгл=0. Wпл=0. Jпл=4. Jгл=1. d=DEPTHES(c) FOR i=1 TO d.SIZE X = 1 / c(d[i]) X2 = 1/Jгл X1 = 1/Jпл B = (Wгл-Wпл)/(X2-X1) A = Wгл - B*X W(d[i]) = A +B*X Кпн(d[i]) = W(d[i]) - 0.25* VSH(d[i]) NEXT END 2.11. ЗАДАЧА 11. Литологическая колонка REM Создание колодца литологии REM Открываем входные кривые и выходной колодец c1 = OPEN ( IN,"Альфа_ПС" ) c2 = OPEN ( IN, "GK" ) c3 = OPEN ( IN, "NKT" ) col = OPEN(OUT, "Литология", "Литология") REM Зададим пороговые значения для кривых lev1 = 0. lev2 = lev3 = REM Считываем массив глубин d = DEPTHES(c1) REM Создаем литологическую колонку FOR i=1 TO d.SIZE IF c2(d[i]) < lev2 AND c3(d[i]) > lev3 THEN NEXT END 2.12. ЗАДАЧА 12. Определение глинистости по ГК Для оценки коэффициента массовой глинистости по данным гамма метода воспользуемся зависимостью, полученной Ларионовым на образцах глинистых пород. Палетка, связывающая двойной разностный параметр ГК с массовой глинистостью представлена на рисунке 4.
Данная палетка построена для условий, когда нулевой радиоактивности (т.е. Jгк = 0) соответствует нулевое содержание глинистого материала, максимальной радиоактивности при Jгк = соответствует Сгл = 1.
В реальных скважинных условиях практически не встречаются случаи присутствия в разрезе абсолютно чистого, неглинистого пласта и пласта со стопроцентной глинистостью. Поэтому для пластов с минимальной и максимальной радиоактивностью необходимо указывать содержание в них глинистых минералов и пересчитывать палетку в новых относительных единицах.
Рисунок 4 – Палетка для оценки Сгл по данным ГК.
REM Расчет Сгл по ГК по палетке Ларионова GK = OPEN ( IN, "ГК" ) Сгл = OPEN ( OUT, "Сгл", CURVE) Paletka = LOAD_PLT("ГК-Ларионов.xyp") REM Зададим глинистость для пластов с минимальной и максимальной радиоактивностью Сгл_мин = 0. Сгл_макс = 0. REM Находим для заданной глинистости соответствующие значения deltaГК по палетке путем перебора значений DGK DGK= REM Если условие С =Сгл_мин, сохраняем подобранное значение dGK_min ELSE C = Paletka (DGK) IF C < Сгл_макс THEN GOTO REM Определяем миним. и макс. значения на кривой ГК GK_min = MIN(GK) GK_max = MAX(GK) d=DEPTHES(GK) FOR i=1 TO d.SIZE REM Расчитываем двойной разностный параметр для кривой ГК DGK2 = (GK(d[i]) - GK_min)/(GK_max - GK_min) REM Приводим шкалу ДРП_ГК к шкале палетки DGK3 = DGK2 * (dGK_max - dGK_min) + dGK_min REM Определяем по палетке Сгл Сгл(d[i]) = Paletka (DGK3) END ЗАДАЧА 13. Определение литологии и пористости по комплексу НК-ГГК Для решения задачи одновременной оценки пористости и литологического состава породы с двухкомпонентной матрицей используем типовую палетку компании Шлюмберже зависимости плотности пород от нейтронной пористости и литологического состава (рис.5).
Для использования в методике палетка предварительно оцифровывается и обучается по двум параметрам: по литологическому составу (параллельно кривым палетки) и коэффициенту пористости (перпендикулярно кривым палетки).
Нейтронная пористость на палетке представлена в процентах, плотность – в г/см3.
Рисунок 5 – Палетка для оценки пористости и литологического состава REM Опрелеление литологии и пористости REM по палеткам Шлюмберже по методам НК - ГГК REM (порода представлена известняком и доломитом) W_НК = OPEN ( IN,"Кп, нейтр" ) ГГК = OPEN ( IN,"ГГК-плотность" ) Por = OPEN ( OUT,"Пористость",CURVE ) Dol = OPEN ( OUT,"Доломитизация",CURVE ) REM Загружаем две палетки, полученные в результате оцифровки с одной палетки Шлюмберже, но обученные по линиям равного содержания доломита и равной пористости p1 = LOAD_PLT("Доломит_ГГК_НК.xyp") p2 = LOAD_PLT("Пористость_ГГК_НК.xyp") d = DEPTHES(W_НК) FOR i=1 TO d.SIZE Por(d[i]) = p2(W_НК(d[i])*100, ГГК(d[i]))/ Dol(d[i]) = p1(W_НК(d[i])*100, ГГК(d[i]))/ REM Пористость и доломитизация в долях единицы END 2.14. ЗАДАЧА 14. Оценка параметров в карбонатном разрезе Методика оценки параметров коллекторов с вторичной пористостью и сложным литологическим составом матрицы (скелета) требует наличия в комплексе ГИС трех методов «пористости»: акустического, плотностного и нейтронного.
По комплексу методов плотностной - нейтронный определяется общая пористость коллекторов с учетом сложного состава матрицы. Затем по известной пористости вычисляется плотность матрицы пород, по которой определяется ее компонентный состав с помощью системы условий. Вторичная пористость оценивается по акустическому методу с учетом рассчитанного компонентного состава пород.
REM Оцека лит.состава и кавернозной пористости по методике Г.М.Золоевой RHOB = OPEN ( IN, "DENS" ) CNL = OPEN ( IN, "Kp_nnk" ) DT = OPEN ( IN, "Dt-m" ) REM Задаем плотность флюида и интервальное время пробега волны во флюиде, находящемся в порах пород в радиусе исследования методов Df = 1. DTf = PHI = OPEN ( OUT, "PHI_CNL-RHOB", CURVE) PHI_AK = OPEN ( OUT, "PHI_AK", CURVE) PHI_sec = OPEN ( OUT, "PHI_second", CURVE) Dens_m = OPEN ( OUT, "Dens_m", CURVE) C_anh = OPEN ( OUT, "C_anh", CURVE) C_dol = OPEN ( OUT, "C_dol", CURVE) C_cal = OPEN ( OUT, "C_cal", CURVE) C_gips = OPEN ( OUT, "C_gips", CURVE) d=DEPTHES(CNL) REM Загружаем палетку, обученную по пористости pal = LOAD_PLT("Шлюм_P4-16_ГГК-НК.xyp") FOR i=1 TO d.SIZE REM Расчет пористости по палетке Шлюмберже PHI(d[i]) = pal ( CNL(d[i]), RHOB(d[i]))/ REM Расчет плотности скелета по известной пористости Dens_m(d[i]) = (RHOB(d[i]) - Df * PHI(d[i]))/(1 - PHI(d[i])) NEXT REM Оценка литологии по плотности скелета FOR i=1 TO d.SIZE ZZ = Dens_m(d[i]) C1_anh = C1_dol = C1_cal = C1_gips = REM Оценка содержания ангидрит – доломит при плотности скелета в интервале 2.87 – 2. IF ZZ>=2.87 AND ZZ=2.78 AND ZZ=2.71 AND ZZ0.13 и Кгл>0. IF K < 0.13 OR WSH(d[i]) > 0.07 THEN Кв = Кпо(d[i]) = ELSE Pп = Am/(K)^m Rвп = Pп * Rв Кв = (Rвп*An / Rп(d[i]))^ (1/n) Кпо(d[i]) = Кп(d[i]) ENDIF IF Кв > 1 THEN Кв = ENDIF Кн (d[i]) = 1- Кв NEXT END 2.18. ЗАДАЧА 18. Оценка пористости по акустическому методу REM Расчет пористости по АК с поправкой за глинистость по кривой Альфа СП ( Шлюмберже) DTp = OPEN ( IN, "DT" ) Aps=OPEN ( IN, "АльфаПС" ) Кп = OPEN ( OUT, "Кп_АК_гл", CURVE) REM Интервальные времена скелета и пластового флюида в радиусе исследования акустического метода DTsk = DTfl = d=DEPTHES(DTp) Кп (d[i]) = ((DTp(d[i]) - DTsk) / (DTfl - DTsk))/(2-Aps(d[i])) NEXT END REM Расчет пористости по АК с поправкой за глинистость Кгл DTp = OPEN ( IN, "dТр_2") gl = OPEN ( IN, "VSH") col = OPEN ( IN, "литология" ) Кп = OPEN ( OUT, "Кп_АК_гл", CURVE) DTfl = DTgl = DTsk = d=DEPTHES(DTp) FOR i=1 TO d.SIZE A = gl(d[i])*(DTgl - DTsk) / (DTfl - DTsk) Кп (d[i]) = (DTp ( d [ i] ) - DTsk) / (DTfl - DTsk) - A NEXT END 2.19. ЗАДАЧА 19. Оценка пористости по плотностному методу REM Расчет пористости по ГГК D = OPEN ( IN, "RHOB" ) Кп = OPEN ( OUT, "Кп_ГГК", CURVE) REM Задаем плотность скелета и флюида в радиусе исследования метода Dsk = 2. Dfl = 1. d=DEPTHES(D) FOR i=1 TO d.SIZE Кп (d[i]) = (Dsk - D(d[i])) / (Dsk - Dfl) NEXT END 2.20. ЗАДАЧА 20. Расчет модуля сдвига по данным ВАК Модуль сдвига рассчитывается по формуле G = п / Ts2, где Ts – интервальное время пробега поперечной волны в мкс/м, п – плотность пород в г/см3.
REM Расчет модуля сдвига REM Зададим входные кривые поперечной волны и плотности DTS = OPEN(IN, "Пластовая dts") den = OPEN(IN, "Пластовая Dпл") G= OPEN(OUT, "G", STEP) REM На планшете интервалы обработки выделены желтым цветом REM Считываем массив глубин, попавших в желтые интервалы (фильтр интервалов глубин - YELLOW) d = DEPTHES(DTS; YELLOW) REM Определяем общее количество точек (квантов) глубин на входной кривой в желтых интервалах N=d.SIZE s2=DTS(d[i])^ G(d[i])=1000000*(den(d[i])/s2) END 2.21. ЗАДАЧА 21. Прямой сглаживающий фильтр метода ПС Пусть имеется кривая статических аномалий метода ПС для пластов разной толщины, полученная при условии нулевого диаметра скважины и однородности электрического сопротивления среды. Покажем влияние скважины на изменение формы кривой ПС в пластах разной толщины.
На рисунке 6 приведен пример вертикального геометрического фактора метода ПС, представляющий собой зависимость коэффициентов сглаживающего фильтра от вертикального удаления по стволу скважины от точки записи (электрод А).
Коэффициенты фильтра рассчитываются с помощью телесных углов, под которыми из точки А наблюдается поверхности двойных электрических слоев на стенке скважины.
Рисунок 6 – Вертикальный геометрический фактор метода ПС.
REM Сглаживание ПС прямым фильтром (Rp=Rs) PS = OPEN ( IN, "ПС_синтет" ) FILTR = OPEN ( OUT, "ПС_фильтр", CURVE) REM Длина фильтра, радиус скважины, шаг квантования,УЭС раствора Q= ds2=0. DH=0. H2=DH/ Rs= REM Вычисляем сумму коэф-тов фильтра S1=2*3.14*((H2)/((H2)^2+ds2^2)^0.5 - (-H2)/((H2)^2+ds2^2)^0.5) FOR j=1 TO Q W=2*3.14*((Z+H2)/((Z+H2)^2+ds2^2)^0.5 - (Z-H2)/((Z-H2)^2+ds2^2)^0.5) S1=S1+2*W NEXT d=DEPTHES(PS; YELLOW) N=d.SIZE FOR i=1+Q TO N -Q W1=2*3.14*((H2)/((H2)^2+ds2^2)^0.5 - (-H2)/((H2)^2+ds2^2)^0.5) S2= REM Вычисляем сумму произведений текущих значений ПС на REM нормированные коэф-ты фильтра FOR j=1 TO Q Z= j * DH W=2*3.14*((Z+H2)/((Z+H2)^2+ds2^2)^0.5 - (Z-H2)/((Z-H2)^2+ds2^2)^0.5) A = PS(d[i+j]) * W B = PS(d[i-j]) * W S2 = S2 + A +B NEXT REM Вычисляем сглаженное значение FILTR (d[i])= (PS(d[i])*W1 + S2)/S NEXT END На рисунке 7 показан пример моделирования влияния скважины на форму кривой статических амплитуд СП для пластов различной толщины с помощью прямого сглаживающего фильтра. Чем меньше толщина пласта, тем больше влияние скважины, и тем больше уменьшается отрицательная амплитуда кривой от своих статических величин.
Рисунок 7 – Пример применения прямого сглаживающего фильтра к 2.22. ЗАДАЧА 22. Обратный фильтр метода ПС Задача заключается в исправлении непрерывной кривой ПС от искажающего влияния скважины и вмещающих пород. Задача решается с помощью математического аппарата обратной фильтрации для электрически неоднородной среды.
Коэффициенты фильтра подбираются с учетом вертикального геометрического фактора метода ПС (рис.6). Сопротивление пород задается по непрерывной кривой БК, учитывается сопротивление раствора.
REM Обратный фильтр ПС с учетом Rp/Rs PS = OPEN ( IN, "PS" ) BK = OPEN ( IN, "BK" ) FILTR = OPEN ( OUT, "ПС_испр", CURVE) F1 = OPEN (TMP, CURVE) REM Длина фильтра, радиус скважины, шаг квантования,УЭС раствора Q= ds2=0. DH=0. H2=DH/ Rs= P=0. d=DEPTHES(PS; YELLOW) N=d.SIZE FOR i=1+Q TO N -Q REM Вычисляем сумму коэф-тов фильтра для нормировки REM Центральная точка фильтра Z = H S1=1/(Z^(1.8-P*LG(BK(d[i])/Rs))) REM Остальные точки фильтра FOR j=1 TO Q W1=1/(Z^(1.8-P*LG(BK(d[i+j])/Rs))) W2=1/(Z^(1.8-P*LG(BK(d[i-j])/Rs))) S1=S1+W1+W NEXT REM Вычисляем коэф-т фильтра для центральной точки (немного смещена из-за деления на 0) W0=1/(H2^(1.8-P*LG(BK(d[i])/Rs))) S2= REM Вычисляем сумму произведений текущих значений ИК на REM нормированные коэф-ты фильтра W/S W1=1/(Z^(1.8-P*LG(BK(d[i+j])/Rs))) W2=1/(Z^(1.8-P*LG(BK(d[i-j])/Rs))) REM Вычисляем сглаженное значение F1 (d[i])= (PS(d[i])*S1 - S2)/W NEXT REM Сглаживаем (2М+1) точечным фильтром M= FOR i=1+M TO N-M SUM= R=F1(d[i-j]) + F1(d[i+j]) FILTR (d[i])= ((F1(d[i])+SUM)/ (2*M+1) + PS(d[i]))/ NEXT END На рисунке 8 показан пример применения обратного фильтра к кривой ПС. Аномалии на кривой исправляются за влияние скважины, сопротивления пород и ограниченной мощности пластов. В более тонких пластах с высоким сопротивлением амплитуда исправленной кривой больше.
Рисунок 8 - Пример обратной фильтрации кривой ПС.
ЗАКЛЮЧЕНИЕ
Результатом выполнения отдельных задач являются новые расчетные кривые и колодцы, появляющиеся на рабочем планшете.При обработке в пластовом режиме окончательные результаты интерпретации геофизических материалов оформляются в виде табличного заключения с использованием подпрограммы «Заключение», вызываемой с помощью кнопки на панели инструментов.
При обработке в поточечном режиме создаются объемная и флюидальная модели разреза, которые оформляются в виде полей на планшете с соответствующей закраской областей между кривыми литологическими или флюидальными символами.
ЛИТЕРАТУРА
интерпретация данных геофизических исследований нефтяных и газовых скважин (учебное пособие). Издательство «Нефть и газ»РГУ нефти и газа им.И.М.Губкина, 2003г.
2. Интерпретация результатов геофизических исследований нефтяных и газовых скважин: Справочник/ Под ред. В.М.Добрынина.-М.:
Недра, 1988.
3. Методические рекомендации по подсчету геологических запасов нефти и газа объемным методом. Под ред. В.И.Петерсилье, В.И.Пороскуна, Г.Г.Яценко. Москва-Тверь, ВНИГНИ, НПЦ «Тверьгеофизика», 2003.
Содержание Введение 1. Язык программирования системы КАМЕРТОН 2. Примеры алгоритмов и задач интерпретации ГИС 2.1 ЗАДАЧА 1. Расчет относительного параметра СП 2.3 ЗАДАЧА 3. Расчет производной от непрерывной кривой 2.5 ЗАДАЧА 5. Расчет отклонения от номинального диаметра скважины 2.10 ЗАДАЧА 10. Расчет водородосодержания по НК 2.12 ЗАДАЧА 12. Определение глинистости по ГК 2.13 ЗАДАЧА 13. Определение литологии и пористости по комплексу НК-ГГК 2.14 ЗАДАЧА 14. Оценка параметров в карбонатном разрезе 2.15 ЗАДАЧА 15. Оценка параметров в терригенном разрезе 2.16 ЗАДАЧА 16. Оценка вторичной пористости по данным ВАК 2.17 ЗАДАЧА 17. Оценка насыщенности по Дахнову-Арчи 2.18 ЗАДАЧА 18. Оценка пористости по акустическому методу 2.19 ЗАДАЧА 19. Оценка пористости по плотностному методу 2.20 ЗАДАЧА 20. Расчет модуля сдвига по данным ВАК 2.21 ЗАДАЧА 21. Прямой сглаживающий фильтр метода ПС Заключение Литература