Petrel: Workflow

Последнее сообщение
Timmus 75 14
Июн 08

Народ, может кто нить кто нить подскажет как написать воркфло в Петреле для такой задачи:
Есть папка с картами (пористость) их нужно все пересчитать по одной зависимости (Кпо-Кпр) и соответственно создать новые карты.

Также интересно поделиться опытом написания воркфло для различных задач.

Есть "мега" воркфло для выгрузки карты расчленености из модели....

RomanRRR 26 14
Июн 08 #1

Меня уже давно волнует вопрос написания плагинов для Петреля…
Я бы обменял все плагины, что у меня есть на короткие инструкции по написанию простейшего плагина (например, по осреднению параметров модели по колонкам (для построения карты).
Есть еще у меня инструкция по Ocean'у (на анг.), но она написана по принципу "много чего написано, но такая хрень… что время жалко тратить на чтение

PS Все, что у меня есть могу кинуть на адрес в Пн…

Timmus 75 14
Июн 08 #2

Хм, вопрос был про Воркфло :-) а не плагины....

Написание простого плагина не так сложно как кажется!
Самый простой путь разобраться с этим это запустить прилагаемый (Petrel 2005) проект VisualStudia.net и покопаться в нем.

C:\Program Files\Schlumberger\Petrel 2005\APIDevKit\Samples\API_samples.sln

[Нужно поставить VisialStudia.net]

Вот пример как из Модели выгрузить ГСР....
В принципе ничего страшного здесь нет....

{
int k=0;
int i=0;
int j=0;
uint ij=0;
uint ij1=0;
float Summing=0;
float Summing1=0;
float devide2=0;
Index3 numCells = PropIN.NumCellsIJK;
int ijtot= (numCells.J)*(numCells.I);
CoreSystem.Log.Info(string.Format("undefined = {0:f10}", PropIN[5,15,1] ));
CoreSystem.Log.Info(string.Format("Number of cells in IJ = {0:f0}", ijtot ));
for ( k=0; k<numCells.K; ++k)
{
for ( i=0; i<numCells.I; ++i)
{
for ( j=0; j<numCells.J; ++j)

{
Summing=PropIN[i,j,k]*PropInLito[i,j,k]*PropInRegion[i,j,k]+ Summing;
ij=ij+PropInLito[i,j,k]*PropInRegion[i,j,k];
Summing1=PropInLito[i,j,k]*PropInRegion[i,j,k]+ Summing1;
ij1=ij1+PropInRegion[i,j,k];
} //j cycle
} // i cycle
float devide=Summing/ij;
float devide1=Summing1/ij1;
devide2=(float)ij*100/ijtot;
CoreSystem.Log.Info(string.Format("layer = {0:f0}, GSR = {1:f4}, Proportion of Sand, % = {2:f6}", k , devide, devide1));
Summing=0;
ij=0;
Summing1=0;
ij1=0;
} // k cycle

} //invoke

Guest_ 197 15
Июн 08 #3

могу предложить брутальный способ, на случай если ничего лучше не будет

loop - For All Icons In ... Child reference ...
дальше выражаешь свою зависимость через набор обыкновенных арифметических операций (может даже придется создать surfac'ы типа е и тд )))
и используешь Arithmetic Operations
end loop

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

выглядеть он конечно будет странно, но зато он будет рабоать wink.gif

Timmus 75 14
Июн 08 #4

Ага, смысл ясен, но что то с Child reference ... не могу разобраться?
Если не сложно, можно пример?

Guest_ 197 15
Июн 08 #5

в child reference ты просто указываешь какую-нить Variable (из закладки воркфло)
и в дальнейших операциях уже просто вставляешь этот Variable

прикрепил скрин в качестве примера:
этот воркфло прибавит 1000 всем поверхностям (а также точкам, полигонам и тд.) в папке 12Picture1.jpg

ojakov 135 16
Июн 08 #6

А с well tops как работать? Пробую посчитать isochore points для каждого well top.

Пока цветок не выходит sad.gif

Guest_ 197 15
Июн 08 #7

с well tops'ами уже без скрипта не обойтись... sad.gif

Timmus 75 14
Июн 08 #8

Guest_ пишет:

прикрепил скрин в качестве примера:


помогло!
Спасибо!

ojakov 135 16
Июл 08 #9

ojakov пишет:

А с well tops как работать? Пробую посчитать isochore points для каждого well top.

Пока цветок не выходит sad.gif


Всегда бесило, что isochore points нельзя апдейтить.
Т.е. если ты сделал эти самые isochore points, настроил стили всех аттрибутов, а потом поменял well tops где-нить - надо снова делать новые isochore points и тд..

Есть какие-нибудь наработки?

Я вот думаю, что уже существующие isochore points можно апдейтить с помощью workflow:
- в reference задать welltops
- по welltops посчитать surfaces (не важно каким алгоритмом)
- калькулятором для аттрибута thickness задать разницу between surfaces

Не знаю, легче ли это..

Guest_ 197 15
Июл 08 #10

ojakov пишет:

Всегда бесило, что isochore points нельзя апдейтить.
Т.е. если ты сделал эти самые isochore points, настроил стили всех аттрибутов, а потом поменял well tops где-нить - надо снова делать новые isochore points и тд..

Есть какие-нибудь наработки?

Я вот думаю, что уже существующие isochore points можно апдейтить с помощью workflow:
- в reference задать welltops
- по welltops посчитать surfaces (не важно каким алгоритмом)
- калькулятором для аттрибута thickness задать разницу between surfaces

Не знаю, легче ли это..


неа... я обычно с веллтопами руками работаю,
хотя то, что ты написал должно сработать wink.gif

ojakov 135 16
Июл 08 #11

Guest_ пишет:

неа... я обычно с веллтопами руками работаю,
хотя то, что ты написал должно сработать wink.gif


Гриша, ты штоли?

Guest_ 197 15
Июл 08 #12

ojakov пишет:

Гриша, ты штоли?

ыыы, хоть уже выяснили на баскетболе, но отвечу - да ))))

Aleksey_ZR 112 13
Сен 09 #14

Привет!

Часть вопроса уже задал в моделировании - повторяться не буду

Остальная часть - можно ли в workflow "попросить" Petrel создать каротаж по кубу свойств? И если да, то как можно сделать это только для нужных мне скважин...

Вопросы, возможно, глуповатые, но разобраться нужно быстро - времени нет blush.gif

trex 300 14
Сен 09 #15

Aleksey_ZR пишет:

Привет!

Часть вопроса уже задал в моделировании - повторяться не буду

Остальная часть - можно ли в workflow "попросить" Petrel создать каротаж по кубу свойств? И если да, то как можно сделать это только для нужных мне скважин...

Вопросы, возможно, глуповатые, но разобраться нужно быстро - времени нет blush.gif


а зачем в воркфлоу? это делается скопом для всех скважин одним нажатием кнопки, вот по поводу фильтра незнаю

Aleksey_ZR 112 13
Сен 09 #16

trex пишет:

а зачем в воркфлоу? это делается скопом для всех скважин одним нажатием кнопки, вот по поводу фильтра незнаю


Есть просто идея по моделированию Х реализаций, там бы нужно посреди процесса снять лог по свойству и использовать эту кривую в дальнейшем, отсюда желание затолкать все в воркфлоу smile.gif

trex 300 14
Сен 09 #17

Aleksey_ZR пишет:

Есть просто идея по моделированию Х реализаций, там бы нужно посреди процесса снять лог по свойству и использовать эту кривую в дальнейшем, отсюда желание затолкать все в воркфлоу smile.gif


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

Aleksey_ZR 112 13
Сен 09 #18

trex пишет:

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


Ух... сурово smile.gif

А (усложняя задачу) разве можно будет эти точки потом преобразовать в каротаж?.. (собсссно, для целей, указанных в соседней ветке, которую Вы уже видели smile.gif)

trex 300 14
Сен 09 #19

Aleksey_ZR пишет:

Ух... сурово smile.gif

А (усложняя задачу) разве можно будет эти точки потом преобразовать в каротаж?.. (собсссно, для целей, указанных в соседней ветке, которую Вы уже видели smile.gif)


в пете 2005 вродь нет напрямую, но мож еще покопаюсь

Aleksey_ZR 112 13
Сен 09 #20

trex пишет:

в пете 2005 вродь нет напрямую, но мож еще покопаюсь


Спасибо за активное участие! smile.gif

trex 300 14
Сен 09 #21

Aleksey_ZR пишет:

Спасибо за активное участие! smile.gif


ну если вам нужно просто посмотреть эти полученные "псевдологи", то мож "и так сойдет"(с)?

Aleksey_ZR 112 13
Сен 09 #22

trex пишет:

ну если вам нужно просто посмотреть эти полученные "псевдологи", то мож "и так сойдет"(с)?

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

Ох... smile.gif

trex 300 14
Сен 09 #23

Aleksey_ZR пишет:

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

Ох... smile.gif


ну ок, апскейлить то можно и точки с атрибутами

Aleksey_ZR 112 13
Сен 09 #24

trex пишет:

ну ок, апскейлить то можно и точки с атрибутами


Так а в моделинг же потом все равно каротажи нужны, а не точки... видимо, гиблая затея smile.gif
Буду, скорее всего, делать кучу реализаций куба#1, потом усреднять, снимать каротаж, а потом уже с этими логами строить кучу реализаций куба#2.

Изначально хотел по каждой реализации куба#1 снимать логи, и сразу моделить одну реализацию куба#2, т.е. снимать логи до усреднения реализаций куба#1
Еще раз пролистал ман - пусто smile.gif

trex 300 14
Сен 09 #25

Aleksey_ZR пишет:

Так а в моделинг же потом все равно каротажи нужны, а не точки... видимо, гиблая затея smile.gif
Буду, скорее всего, делать кучу реализаций куба#1, потом усреднять, снимать каротаж, а потом уже с этими логами строить кучу реализаций куба#2.

Изначально хотел по каждой реализации куба#1 снимать логи, и сразу моделить одну реализацию куба#2, т.е. снимать логи до усреднения реализаций куба#1
Еще раз пролистал ман - пусто smile.gif


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

Aleksey_ZR 112 13
Сен 09 #26

trex пишет:

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


Ну, тогда... делая скидку на мое базовое знание workflow manager (или как там его smile.gif), можно пробежаться по пунктам?

1. Я так понимаю, что нужно с нужным дискретом создать псевдо-сейсмокуб (а зачем именно сейсмокуб?)
2. разбить скважины на точки (опять же с нужной дискретизацией)
3. точкам - свойства куба
4. апскейлить точки
5. и... вот тут вопрос - теперь из точек нужно склеить логи? или точки что-нить типа "convert to logs"... щас уже глупые предположения, просто мозг уже сломан smile.gif

trex 300 14
Сен 09 #27

Aleksey_ZR пишет:

Ну, тогда... делая скидку на мое базовое знание workflow manager (или как там его smile.gif), можно пробежаться по пунктам?

1. Я так понимаю, что нужно с нужным дискретом создать псевдо-сейсмокуб (а зачем именно сейсмокуб?)
2. разбить скважины на точки (опять же с нужной дискретизацией)
3. точкам - свойства куба
4. апскейлить точки
5. и... вот тут вопрос - теперь из точек нужно склеить логи? или точки что-нить типа "convert to logs"... щас уже глупые предположения, просто мозг уже сломан smile.gif


все верно, окромя пункта 5 - зачем логи? или я неправильно понял задачу

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

Aleksey_ZR 112 13
Сен 09 #28

trex пишет:

все верно, окромя пункта 5 - зачем логи? или я неправильно понял задачу

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


Всё верно!

Проще нарисовать, но картинки в сеть у меня с работы не уйдут...

Я все о моделировании эксплуатации/разведки

Идея моя расписана уже и там, чиркану еще раз (раз уж нас двоих и там, и тут показывают smile.gif):

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

Блин, сам не знаю, понял бы или нет... картинок, жаль (снова) , нет smile.gif

trex 300 14
Сен 09 #29

Aleksey_ZR пишет:

Всё верно!

Проще нарисовать, но картинки в сеть у меня с работы не уйдут...

Я все о моделировании эксплуатации/разведки

Идея моя расписана уже и там, чиркану еще раз (раз уж нас двоих и там, и тут показывают smile.gif):

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

Блин, сам не знаю, понял бы или нет... картинок, жаль (снова) , нет smile.gif


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

trex 300 14
Сен 09 #30

да, по поводу пунка 5 - еще раз, можно апскейлить вместо лога точки с атрибутами, это дело не меняет, почти по-моему smile.gif

trex 300 14
Сен 09 #31

да, и еще, дискрет куба думаю не стоит делать равным дискрету лога (типо там 0.2 м) а в дискрет 3D грида

Aleksey_ZR 112 13
Сен 09 #32

trex пишет:

да, и еще, дискрет куба думаю не стоит делать равным дискрету лога (типо там 0.2 м) а в дискрет 3D грида


Продолжим в соседней?.. smile.gif

Tolstiy 120 14
Сен 09 #33

Aleksey_ZR пишет:

Всё верно!

Проще нарисовать, но картинки в сеть у меня с работы не уйдут...

Я все о моделировании эксплуатации/разведки

Идея моя расписана уже и там, чиркану еще раз (раз уж нас двоих и там, и тут показывают smile.gif):

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

Блин, сам не знаю, понял бы или нет... картинок, жаль (снова) , нет smile.gif

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

Плагин правда работает только в версии 2008 и 2009. на странице http://www.slb.ru/sis/item355/ можно скачать его описание - номер плагина "4.6" , но вот сами плагины к сожалению скачать больше нельзя. Остается надеяться только на тех кто успел скачать.

С этим плагином можно создать воркфлоу для обновления модели:

Сначала ручками создаешь замкнутый полигон, затем в воркфлоу:

1. двигаешь его к нужной скважине.
2. с помощью плагина помечаешь ячейки как перемасштабированные,
3. в воркфлоу добавляешь процесс геометрического моделирования для создания фильтра внутри этого полигона.
4. и добавляешь процесс моделирования свойств с включенным фильтром

Если надо обновить модель вокруг нескольких скважин, то из этого воркфлоу можно создать цикл и процесс моделирования вынести за цикл - таким образом сэкономиться немного времени))

Aleksey_ZR 112 13
Сен 09 #34

Tolstiy пишет:

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

Плагин правда работает только в версии 2008 и 2009. на странице http://www.slb.ru/sis/item355/ можно скачать его описание - номер плагина "4.6" , но вот сами плагины к сожалению скачать больше нельзя. Остается надеяться только на тех кто успел скачать.

С этим плагином можно создать воркфлоу для обновления модели:

Сначала ручками создаешь замкнутый полигон, затем в воркфлоу:

1. двигаешь его к нужной скважине.
2. с помощью плагина помечаешь ячейки как перемасштабированные,
3. в воркфлоу добавляешь процесс геометрического моделирования для создания фильтра внутри этого полигона.
4. и добавляешь процесс моделирования свойств с включенным фильтром

Если надо обновить модель вокруг нескольких скважин, то из этого воркфлоу можно создать цикл и процесс моделирования вынести за цикл - таким образом сэкономиться немного времени))


Спасибо, как раз оно smile.gif Это снимает пару проблем с фиктивными скважинами. Спасибо!
А еще пара вопросов по воркфлоу, на которые я решенья пока не нашел - надеюсь потому, что еще многого не догнал smile.gif А можно ли в воркфлоу поставить фильтр по какому-нибудь свойству? тут это не нужно, а вообще эт реально? И 2й - можно ли тут же усреднить множество реализаций куба?

Aleksey_ZR 112 13
Сен 09 #35

Aleksey_ZR пишет:

...И 2й - можно ли тут же усреднить множество реализаций куба?...


Ну.... это я чего-т затупил smile.gif сам дотумкал smile.gif

Tolstiy 120 14
Сен 09 #36

Aleksey_ZR пишет:

Спасибо, как раз оно smile.gif Это снимает пару проблем с фиктивными скважинами. Спасибо!
А еще пара вопросов по воркфлоу, на которые я решенья пока не нашел - надеюсь потому, что еще многого не догнал smile.gif А можно ли в воркфлоу поставить фильтр по какому-нибудь свойству? тут это не нужно, а вообще эт реально? И 2й - можно ли тут же усреднить множество реализаций куба?

Фильтр по свойству можно использовать. Но сначала создай это свойство вручную и отметь как фильтр на закладке
Properties => settings => Filter . а в воркфлоу просто меняй это свойство и фильтр будет автоматически перестраиваться по обновленному свойству. и когда будешь пользоваться этим фильтром не забывай ставить соответствующую галочку. Например в калькуляторе свойств есть такая галочка. В процессах моделирования фаций и непрерывных свойств тоже есть такая галочка на закладке Common.

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

Еще можно осреднить одной кнопкой, но уже не в воркфлоу: в настройках папки со свойствами модели есть закладка Operations, там все можно сделать очень быстро.

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

Aleksey_ZR 112 13
Сен 09 #37

Tolstiy пишет:

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


Спасибо за помощь!
Насчет этого сглаживания с SLB решили, что не наш вариант (долго рассказывать)
Осредняю именно для "человеческого вида" smile.gif

Вопрос по плагину... а он всегда так долго работает? или сам не пользовался? или есть какие-нить вещи, сделав которые я упрощу ему и себе жизнь? smile.gif

Go to top