Массив с данными его создание и использование в workflow

Последнее сообщение
jedi72ru 182 7
Мар 14

Коллеги и вновь я взываю к коллективному разуму!

Убив пол рабочего дня, я так и не решил следующей проблемы:

Имеем 20 значений (пластов) плотности нефти и около 5 регионов , необходимо создать куб плотностей нефти по каждому пласту и региону....

Ума не приложу, как создать таблицу с этими значениями и потом расчитать из этого массива в куб... 

Писать кучу строк в калькуляторе с играми в if and else, вариант пройденный и не очень красивый... хочется изящного решения :)

 

Eric_Cartman 125 9
Мар 14 #1

ну так а фильтры чем не подходят?

jedi72ru 182 7
Мар 14 #2

Eric_Cartman пишет:

ну так а фильтры чем не подходят?

Не совсем понял про фильтры...

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

Написать руками, как  я уже писал выше, не особо вариант...

Eric_Cartman 125 9
Мар 14 #3

Похоже я не туда влез-) Я думал вручную отфильтровать регион->присвоить значение. Но так получается у вас 20*5=100 регионов и вы хотите сделать это автоматически. с форкфлоу не очень силен я.

Вы тогда хоть сообщите с каким софтом работаете, чтобы народ подсказал.

Aleksander 231 7
Мар 14 #4

если эту процедуру требуется выполнить всего один раз, то не вижу особого смысла заморачиватся с воркфлоу. я бы делал через калькулятор if then and...

volvlad 2134 13
Мар 14 #5

В workflow через калькуляторы, чем не "изящное" решение. 

Dorzhi 905 13
Мар 14 #6

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

Antalik 1503 13
Мар 14 #7

volvlad пишет:

В workflow через калькуляторы, чем не "изящное" решение. 

Я бы  тоже так сделал. Только не делайте nested if - запутаетесь. Пишите так:

calc: Density = 1 // дефолтное
calc: Density  = if ( plast = 1 and region = 1, 0.9 , Density)
calc: Density  = if ( plast = 1 and region = 2, 0.95 , Density)
... так для всех значений

читается лучше чем в калькуляторе, и ошибки проще найти и поправить.

volvlad 2134 13
Мар 14 #8

Еще одно замечание, вместо реальных имен кубов, я бы рекомендовал в workflow использовать "get calculator name", объявив переменные $Density, $region, ... тогда можно будет спокойно переименовывать кубы без лишних правок в workflow

jedi72ru 182 7
Мар 14 #9

Спасибо коллеги, данное решение не на один раз, да и еще потом планируеться его использование в анализе не определенностей.

Походу, единственный способ это через калькулятор...

Обидно что в петреле нельзя создать массив с данными и потом путем перебора этого массива присваивать значения.

Пытался вчера играть со стринговыми массивами, но петрель и файл текстовый или функцию с input считать не может...

Гоша 1183 13
Мар 14 #10

В воркфлоу есть списки значений и функция List. Или у тебя матрица 20х5 должна получиться?

 

ЗЫ. Есть еще set reference list - можно сделать список объектов, а потом использовать в цикле for each

jedi72ru 182 7
Мар 14 #11

Что, то я не нашел этот List, завтра внимательно еще посмотрю, set reference применим только к переменным или объектам с ним я уже баловался, и к сожалению, тоже не очень подходит. 

В идеале бы иметь функцию задания массива 20х5, но увы...

TimTTT 156 12
Мар 14 #12

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

jedi72ru 182 7
Мар 14 #13

TimTTT, буду очень благодарен :)

FullChaos 875 12
Мар 14 #14

Изящно. 7 Строчек.

 

With 3D Grid

Load output sheet  - указываем файл и имя шита, в который читаем sheet1

for loop $i=0 to 20*5-1

   Read  output sheet $region row $i column 1 sheet1

   Read  output sheet $dens row $i column 2 sheet1

   Property calculator density=if(Zones=$region,$dens,density)

End loop

 

считываемый файл  - обычный текстовый два столбца, номер региона и плотность

также подразумевается, что есть уже куб регионов от 0 до 99, это тоже можно форкфлоу сделать

Саша, если что-то не понятно, напиши текщую почту я туда скину скрин.

Dorzhi 905 13
Мар 14 #15

FullChaos, круто, не знал про такую мощную штуку. Спасибо, потестил, работает.

Aleksander 231 7
Мар 14 #16

так это просто подгружает эту табличку в петрел и все, или должно свойство получится?

jedi72ru 182 7
Мар 14 #17

FullChaos пишет:

Изящно. 7 Строчек.

 

With 3D Grid

Load output sheet  - указываем файл и имя шита, в который читаем sheet1

for loop $i=0 to 20*5-1

   Read  output sheet $region row $i column 1 sheet1

   Read  output sheet $dens row $i column 2 sheet1

   Property calculator density=if(Zones=$region,$dens,density)

End loop

 

считываемый файл  - обычный текстовый два столбца, номер региона и плотность

также подразумевается, что есть уже куб регионов от 0 до 99, это тоже можно форкфлоу сделать

Саша, если что-то не понятно, напиши текщую почту я туда скину скрин.

 

Жень, спасибо :) как раз то, что надо :) 

Я собственно только  Load output sheet не нашел :)

jedi72ru 182 7
Мар 14 #18

alex_stan пишет:

так это просто подгружает эту табличку в петрел и все, или должно свойство получится?

Подгружает табличку, и читая эту табличку создает свойство 

Aleksander 231 7
Мар 14 #19

Load output sheet найдешь в закладке Utilities в контейнере Auditing

ну у меня только табличку подгрузило...

и еще вопрос - а из обычного .txt файла загруженного путем Import on tree он не прочитал бы данные для расчета свойства?

Go to top