0
Мар 14
Коллеги и вновь я взываю к коллективному разуму!
Убив пол рабочего дня, я так и не решил следующей проблемы:
Имеем 20 значений (пластов) плотности нефти и около 5 регионов , необходимо создать куб плотностей нефти по каждому пласту и региону....
Ума не приложу, как создать таблицу с этими значениями и потом расчитать из этого массива в куб...
Писать кучу строк в калькуляторе с играми в if and else, вариант пройденный и не очень красивый... хочется изящного решения :)
Опубликовано
11 Мар 2014
Активность
19
ответов
4838
просмотров
9
участников
4
Рейтинг
ну так а фильтры чем не подходят?
Не совсем понял про фильтры...
Есть множество значений плотности (на бумажке, в экселе) регионам, есть куб регионов, необходимо каким-то изящным способом создать куб плотностей с учетом регионов....
Написать руками, как я уже писал выше, не особо вариант...
Похоже я не туда влез-) Я думал вручную отфильтровать регион->присвоить значение. Но так получается у вас 20*5=100 регионов и вы хотите сделать это автоматически. с форкфлоу не очень силен я.
Вы тогда хоть сообщите с каким софтом работаете, чтобы народ подсказал.
если эту процедуру требуется выполнить всего один раз, то не вижу особого смысла заморачиватся с воркфлоу. я бы делал через калькулятор if then and...
В 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)
... так для всех значений
читается лучше чем в калькуляторе, и ошибки проще найти и поправить.
Еще одно замечание, вместо реальных имен кубов, я бы рекомендовал в workflow использовать "get calculator name", объявив переменные $Density, $region, ... тогда можно будет спокойно переименовывать кубы без лишних правок в workflow
Спасибо коллеги, данное решение не на один раз, да и еще потом планируеться его использование в анализе не определенностей.
Походу, единственный способ это через калькулятор...
Обидно что в петреле нельзя создать массив с данными и потом путем перебора этого массива присваивать значения.
Пытался вчера играть со стринговыми массивами, но петрель и файл текстовый или функцию с input считать не может...
В воркфлоу есть списки значений и функция List. Или у тебя матрица 20х5 должна получиться?
ЗЫ. Есть еще set reference list - можно сделать список объектов, а потом использовать в цикле for each
Что, то я не нашел этот List, завтра внимательно еще посмотрю, set reference применим только к переменным или объектам с ним я уже баловался, и к сожалению, тоже не очень подходит.
В идеале бы иметь функцию задания массива 20х5, но увы...
Саша, из текстовика сам лично скидывал в массив и использовал, найду пример, покажу.
TimTTT, буду очень благодарен :)
Изящно. 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, это тоже можно форкфлоу сделать
Саша, если что-то не понятно, напиши текщую почту я туда скину скрин.
FullChaos, круто, не знал про такую мощную штуку. Спасибо, потестил, работает.
так это просто подгружает эту табличку в петрел и все, или должно свойство получится?
Жень, спасибо :) как раз то, что надо :)
Я собственно только Load output sheet не нашел :)
Load output sheet найдешь в закладке Utilities в контейнере Auditing
ну у меня только табличку подгрузило...
и еще вопрос - а из обычного .txt файла загруженного путем Import on tree он не прочитал бы данные для расчета свойства?