коэффициент расчлененности

Последнее сообщение
VIA 13 16
Апр 11

Доброе время суток, господа. Нужна помощь.

Хочу посчитать коэффициент расчлененности на каждой скважине . Как это сделаь в PetreL?

TOTAL 300 14
Апр 11 #1

с помощью плагина :)

  1. T21 - http://www.ocean.slb.com/pages/product.aspx?category=petrophysics&cat=ocean&id=pst2-b1
  2. ExpertiseModel - http://www.ocean.slb.com/pages/product.aspx?category=geophysics&cat=ocean&id=pexm-b1

_____________________

это ответ службы поддержки Шлюмберже, я к ним обращался с этим вопросом месяц назад, думал в 2010 версии можно без плагина обойтись  :)

beaves 419 15
Апр 11 #2

Не хило стОит плугин, 580 зелени за месяц, пипец! surprise

TOTAL 300 14
Апр 11 #3

beaves пишет:

Не хило стОит плугин, 580 зелени за месяц, пипец! surprise

раньше для 2008 версии были бесплатно )

VIA 13 16
Апр 11 #4

Плагины это конечно все хорошо. может кто скажет как в калькуляторе посчитать количество пропластков коллекторов и общее количество пропластков.

FullChaos 834 17
Апр 11 #5

TOTAL пишет:

раньше для 2008 версии были бесплатно )

почему раньше? 2008 версия никуда не делась))

VIA пишет:

Плагины это конечно все хорошо. может кто скажет как в калькуляторе посчитать количество пропластков коллекторов и общее количество пропластков.

в самом petrel не придумал как, можно только выгрузив каждую скважинку в эксель

sNeG 861 14
Апр 11 #6

http://oilm.nglib.ru/book_view.jsp?idn=000234&page=14&format=free

VIA 13 16
Апр 11 #7

как считать коэффициент расчлененности я знаю вот как посчитать  его в Petrel? проблема по большому счету только одна, как посчитать в калькуляторе Petrel количество прослоев коллектора и общее количество проластков.

qwerty1308 25 16
Апр 11 #8

имеющимся функционалом в петреле без плагина, это практиго не сделать.  Свяжитесь со службой поддержки )

TOTAL 300 14
Апр 11 #9

VIA пишет:

Плагины это конечно все хорошо. может кто скажет как в калькуляторе посчитать количество пропластков коллекторов и общее количество пропластков.

разные варианты перебирал через калькулятор, не придумал :(

TOTAL 300 14
Апр 11 #10

FullChaos пишет:

почему раньше? 2008 версия никуда не делась))

ну так-то да, никуда не делась 2008 версия ;) но работаю и создаю проекты щас в 2010 версии

TOTAL 300 14
Апр 11 #11

qwerty1308 пишет:

имеющимся функционалом в петреле без плагина, это практиго не сделать.  Свяжитесь со службой поддержки )

Я к ним обращался, вот вопрос:

"Подскажи пожалуйста как посчитать расчленённость?

В исходных LOG’ах я неколлектор сделал андефайн, как в атрибутах посчитать количество пропластков в пласте?"

 

вот ответ службы поддержки:

"К сожалению, в Petrel нет возможности напрямую сделать это, но вы можете воспользоваться следующими плагинами, чтобы посчитать расчлененность:

T21 - http://www.ocean.slb.com/pages/product.aspx?category=petrophysics&cat=ocean&id=pst2-b1

ExpertiseModel - http://www.ocean.slb.com/pages/product.aspx?category=geophysics&cat=ocean&id=pexm-b1

Обратите внимание, для каждого плагина есть бесплатная 10-дневная версия."

:)

Александер 11 14
Апр 11 #12

Насколько я знаю, в случае, если у вас есть 3D модель, количество пропластков и по кубу и по скважинам можно найти в Data Analysis. А если модели нет - наверняка можно через workflow посчитать, правда не так все просто будет. В конечном счете, плагин - это специально созданный для этого инструмент, так что с ним все будет легко

Tolstiy 120 16
Дек 11 #13

В топку плагины))

 

пример макроса для построения карты расчлененности по модели rasch_iz_modeli.jpg

пример для расчлененности по скважинам rasch_po_skvazhinam_i_apskeylinym_yacheykam.jpg

 

Temr 140 17
Фев 12 #14

Если бы не посто про 500 баксов в месяц не писал бы однако да уж)

Вообще можешь написать workflow  но будет он работать долго и нудно

Второй самый простой вариант выгрузить файл свойств NTG в и загрузить его в эксель далее в эселе напиши слудющий макрос

да при выгрузке укажи знаечние не определенных ячеек как -999

обычно он выгружается в 4 столбца

''i,j,k размерность твоего грида

dim arr(i,j,k) as double

dim frac(i,j,k) as double

ll=2 ' 'это строка с которой будут начинаться твои загруженные знаечния NTG

nn=1 ' 'это столбец

set q=workshets("имя товего листа куда ты сохранил значения свойства")

for k=1 to kk

     for j=1 to  jj

         for i=1 to ii 

             arr(i,j,k)=q.cells(ll,nn)

             nn=nn+1

             if nn>4 then

                nn=1

                ll=ll+1

             end if

       next i

    next j

next kk

''- ты загрузил файл свойств теперь тебе надо посичитать расчлененность

for jj=1 to j

    for ii=1 to i

       for kk=1 to k

            if arr(i,j,kk)>=0 then exit for

        next kk

        fraction=-999

         

         if kk<k then 

            fraction=1

            startfacies=arr(i,j,kk)

            for kkk=kk+1 to k

                 if arr(i,j,k)<> startfacies then

                   frac=frac+1

                   startfacies=arr(i,j,kkk)

                 end if

             next kkk

         end if 

for kk=1 to k 

frac(ii,jj,kk)=fraction ' это и есть твой массив расчлененностей 

next kk

next ii

next jj

' далее надо распечатать массив на одельный лист

n=2

l=1

set q=workshets("имя товего листа куда ты будешь записывать новое свойство")

for kk=1 to k

     for jj=1 to j

         for ii=1 to i

              q.cells(n,l)=frac(ii,jj,kk)

               if l>5 then 

                  l=1

                  n=n+1

               end if

           next ii

        next jj

next kk

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

 

        

             

Celebrity 1578 16
Фев 12 #15

 оооо temr красава!!! молодец

dane 61 13
Фев 12 #16

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

Temr 140 17
Фев 12 #17

Celebrity пишет:

 оооо temr красава!!! молодец

Спасибо, старался)

Иван007 860 14
Фев 12 #18

я видимо совсем чайник. 

Извините вы собрали в массив значение переменных, действительно красиво, на сколько я понял коллектор не коллектор, НТГ в целом по залежи или по скважине выгрузили?

Вопрос "Хочу посчитать коэффициент расчлененности на каждой скважине" в начале темы.

Тут просто спор http://heriot-watt.ru/t2487.html

 

FullChaos 834 17
Авг 12 #19

Tolstiy пишет:

В топку плагины))

 

пример макроса для построения карты расчлененности по модели rasch_iz_modeli.jpg

пример для расчлененности по скважинам rasch_po_skvazhinam_i_apskeylinym_yacheykam.jpg

 

а можно пожалуйста перезалить картинки?

AlNikS 859 16
Авг 12 #20

Для вычисления расчлененности по модели необходимо сравнивать значения свойства в соседних ячейках. Насколько я знаю, в Petrel нет такого функционала, поэтому вычисление расчлененности без посторонних инструментов (например в калькуляторе или workflow) невозможно. Для фиксированного количества ячеек по Z, наверное, можно что-то замутить через карты, заведя переменную для каждого слоя модели и строя карты по каждому слою.

Гоша 1202 18
Авг 12 #21

В Petrel есть такой функционал - индексация массивов по I,J,K поддерживается с 2011-й версии

FullChaos 834 17
Авг 12 #22

Гоша пишет:

В Petrel есть такой функционал - индексация массивов по I,J,K поддерживается с 2011-й версии

вот мне как раз синтаксис нужен, помню на тех картинах он был

пойду хелп покопаю, может там есть

AlNikS 859 16
Авг 12 #23

Тогда все элементарно и не надо никаких плагинов.

1. Пусть есть куб NTG, 1 - коллектор, 0 - не колллектор.

2. Строим куб NTG_Shift со сдигом значений по z на одну ячейку вниз (NTG_Shift в первом слое присвоить NTG в последнем слое, т.е. циклический сдвиг) - это ключевой шаг, который был невозможен в предыдущих версиях.

3. Строим куб Boundaries = NTG_Shift - NTG. Получаем Воundaries = 1 - граница коллектор-неколлектор, Boundaries = -1 - граница неколлектор-коллектор. Boundaries = 0 - нет границы. Но в первом слое значения некорректны, т.к. сравниваем первый слой с последним. Корректируем следующим образом, для первого слоя Boundaries = (NTG_Shift - 0.5)*2. Таким образом мы учтем границы пропластков на "дне" модели, которые до сих пор не посчитаны.

4. Строим Reservoir = if (Boundaries=-1,0,Boundaries) и NonReservoir = if (Boundaries=1,0,-Boundaries)

5. Строим суммарные карты по этим свойствам и получаем карту кол-ва пропластков-коллекторов и карту кол-ва пропластков-неколлекторов.

6. PROFIT!!!

volvlad 2196 18
Авг 12 #24

Wastekland Rat: Отличный метод, только я бы немного его упростил, убрав несколько промежуточных гридов, но суть метода оставил прежнюю

Col = дискретное свойство коллектор-неколлектор

ReservoirLayers=if(K<КоличествоСлоев, if(Col-Col[I,J,K+1]>0,1,0),if(Col=Col[I,J,K-1] or Col=0,0,1))

Аналогично для неколлектора если нужно, хотя по-моему всегда количество слоев коллектора считают.

AlNikS 859 16
Авг 12 #25

Конечно, всё оптимизируется. С кубиками просто нагляднее :) Просто возможны глюки из-за сложной формы грида, когда что-нибудь выклинивается - вылезают Undefined значения при сдвиге.

Только я не понял, зачем в конце дополнительное условие, вроде должно быть просто:

ReservoirLayers=if(K<КоличествоСлоев, if(Col-Col[I,J,K+1]>0,1,0),if(Col=0,0,1))

volvlad 2196 18
Авг 12 #26

Да все верно, доп. условие не нужно. С доп условием при чистом коллекторе в пласте получится расчлененность 0

Go to top