Не знаю, как часто инженерам, работающим с моделями в Eclipse приходится использовать пользовательскими переменными (UDQ), а также событиями (ACTION*). Думаю, что не очень часто, но тем не менее, считаю, что некоторым информация, о которой я напишу ниже пригодится.
Итак, есть задачка: Смоделировать в Эклипс ситуацию, когда необходимо, чтобы в первые месяцы (годы) после начала закачки на нагнетательных скважинах, предварительно отработавших на нефть от полугода до полутора, забойное давление не превышало давление гидроразрыва. Дело в том, что во время отработки, в отсутствие закачки, достаточно сильно проседает пластовое давление и происходит переориентация стрессов. В нашем случае в период добычи нагнетательных скважин максимальный стресс начинал разворачиваться перепендикулярно к стволу горизонтальной скважины, что в случае гидроразрыва негативно сказывалось бы на эффективности заводнения. После начала закачки пластовое давление постепенно возрастает и стрессы снова начинают ориентироваться в нужном направлении. В тот момент, когда это произойдет эффективнее закачивать воду при давлении выше давления разрыва.
В общем эту ситуацию и нужно было замоделировать в Эклипс.
Что было сделано.
1. Добавляем грид с дополнительнымы регионами, окружающие нагнетательные скважины с некоторым радиусом, и назовем его скажем – FIPWEL. Это свойство понадобится для получения средних давлений в районе конкретной скважины. В принципе можно сделать проще с помощью WP9. Но нам надо было взять несколько большую зону чем 9 ячеек вокруг скважины. Ссылку на это свойство описываем в секции REGIONS. FIPWEL будет дополнительным регионом к стандартному FIPNUM.
2. В секции RUNSPECS ключевыми словами UDQDIMS и UDADIMS описываем сколько пользовательских переменных будет использовано в расчете.
-- USER DEFINED QUANTITIES DIMENSIONS UDQDIMS -- MAXFUNC MAXITEMS MAXC MAXF MAXG MAXR MAXS MAXW MAXA MAXB 16 16 0 1 1 1 0 5 0 1 /
UDADIMS 3 /
3. Затем в секции SCHEDULE задаем эти самые переменные и события устанавливающие режим
UDQ DEFINE WUPR1 RPR__WEL 2 / -- пластовое давление в районе скважины UNITS WUPR1 PSIA / UPDATE WUPR1 ON / ASSIGN FUBOOL 0 / -- пока 0 не рвем пласт DEFINE WUMXP1 (WUPR1/14.5*0.725+162-69/4)*14.5 / -- расчет давления разрыва UNITS WUMXP1 PSIA / UPDATE WUMXP1 ON / / ----------------------- ACTIONX ACT1 10000 / WUMXP1 'INJ1' <= 7000 AND / -- условие после которого можно рвать пласт FUBOOL = 0 / / --CONVERT INJ1 INTO INJECTOR WCONINJE 'INJ1' WATER OPEN RATE 10000 1* WUMXP1 1* / -- ограничение на максим. давление / ENDACTIO ------------------------- ACTIONX ACT2 1 / WUMXP1 'INJ1' > 7000 / / UDQ ASSIGN FUBOOL 1 / / WCONINJE 'INJ1' WATER OPEN RATE 6000 1* 8000 1* / -- / ENDACTIO
Ну в общем, как-то так. Часть формул я упростил, чтобы чересчур не загружать.