Сообщения

Сообщения и новости будут копиться тут

Python API и многофазные корреляции

от Ринат Хабибуллин -

Работать с макросами Unifloc VBA можно из python 3.  Для того чтобы проще это было сделать автоматически генерируется питоновский модуль, который можно найти в папке unifloc_vba_python_api,  а примеры его использования можно найти в папке examples_python

Примеры сделаны с использованием Jupyter Notebook. Для того чтобы все было проще запустить стоит поставить сборку Анаконда. Для версии 7.23 там вроде все работает.

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

Для корреляции Ансари, Беггса Брилла и Унифицированной 




Картинки прикольные, но явно надо бы с ними еще поиграть детальнее. 


Расчет z фактора

от Ринат Хабибуллин -

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

z фактор важен для расчетов свойств газа. При этом он имеет достаточно сложную зависимость от давления и температуры.  Отклонения коэффициента сжимаемости, Z, от единицы связаны межмолекулярными силами притяжения и отталкивания. Если при заданном давлении и температуре силы отталкивания доминируют, то z фактор больше единицы (объем реального газа больше идеального). Если доминируют силы притяжения то z фактор меньше единицы. 

Стандартный способ расчета z фактора углеводородных газов основан на решении уравнения состояния для газа. Метод хорош с физической точки зрения, но затратен по времени. Широкое распространение получила корреляция Дранчука [1] основанная на итеративном методе решения уравнения состояния. Итеративный расчет не удобен для инженерных расчетов без компьютера, поэтому в литературе часто встречаются явные корреляции для расчета z фактора. Они позволяют рассчитать значение z фактора непосредственно. При этом желательно осторожно относиться к таким корреляциям, особенно старым, так как они могут давать хорошую сходимость с уравнением состояния в узком диапазоне давлений и температур (пример приведен на рисунке ниже). В унифлоке реализованы две явные корреляции - Беггса Брилла (197) и Kareem (2016) [2]. Описание корреляций можно найти в мануале или по ссылкам ниже. Проверить расчет можно в файле примера  ex012.PVT_z_factor.xlsm. Кроме расчета z фактора часто требуется рассчитывать производные z фактора по давлению и температуре.

Ниже приведены результаты расчета для удельной плотности газа \( \gamma_{gas} = 0.7 \)

Расчет по корреляции Беггса Брилла


Расчет по корреляции Дранчука


Расчет по корреляции Кареема


Интересно отметить скорость расчета, которую также можно проверить в файле примера.

time to calc comparison for z factor.
100000 runs
z_cor = 0. Beggs Brill. time = 0.1289063
z_cor = 1. Dranchuk.  time = 5.355469
z_cor = 2. Kareem.  time = 0.25
Явные корреляции считают значительно быстрее. Корреляция Беггса Брилла самая простая и быстрая,  но может давать большие погрешности для больших давлений больше 100 атм.

По умолчанию в расчетах используется метод Kareem.

Если интересна тема z фактора - посмотрите материалы и код в репозитории Alfonso R. Reyes https://github.com/f0nzie/zFactor [3]. 

  1. Dranchuk, P.M. and Abou-Kassem, H. 1975. Calculation of Z Factors For Natural Gases Using Equations of State. J Can Pet Technol 14 (3): 34. PETSOC-75-03-03. http://dx.doi.org/10.2118/75-03-03
  2. Kareem L.A., Iwalewa T., AlMarhoun M. New explicit correlation for the compressibility factor of natural gas: linearized z-factor isotherms   https://link.springer.com/article/10.1007/s13202-015-0209-3
  3. https://github.com/f0nzie/zFactor

Изменения в версии 7.21

от Ринат Хабибуллин -

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

  1. название переменной для флага направления расчета оказалось неверным (calc_along_flow вместо calc_along_coord, что было бы логичнее), 
  2. при расчете нагнетания воды в скважину параметры оказались перепутаны (но это не точно), 
  3. при расчете трубопровода (сегментированной трубы) использована другая логика с двумя флагами. 
В итого я сам быстро запутался где что надо задавать, когда попытался использовать эти функции после некоторого перерыва.

Это побудило меня внести изменения в параметры функций расчета трубы. Заодно, если уж что то менять можно внести и другие новшества, которые я откладывал не желая менять сигнатуру вызова. Одна из старых проблем связана с количеством переменных, которые можно использовать в пользовательских функциях. Точнее даже не с количеством переменных, а общей длинной названий всех переменных - если она окажется слишком большой, то в интерфейсе excel перестанут отображаться подсказки. Это приводит к тому, что для сложных функций (скважины) приходится отказываться от некоторых переменных. И здесь я вместо двух переменных для калибровки оставил одну, но в которую можно передавать несколько значений. Другая проблема связана с тем, что некоторые параметры расчета добавлялись в ходе доработки и оказались оторваны от себе подобных. При добавлении новых параметров лучше их делать опциональными и добавлять в конец - тогда не разрушатся старые вызовы.

 Исходя из этого изменения такие:

  1. Для трубы и трубопровода (многосегментной трубы) вводится единый механизм задания режима расчета. Используется одна переменная calc_flow_direction, которая может принимать 4 значения

    ' calc_flow_direction - направление расчета и потока
    '                   относительно координат
    '                   если = 11 расчет и поток по координате
    '                   если = 10 расчет по, поток против координат
    '                   если = 00 расчет и поток против координате
    '                   если = 01 расчет против, поток по координате
  2. Калибровка задается одним параметром c_calibr, которая может принимать одно или два значения, числом, массивом или объектом range. Если будет передано одно число - это будет калибровка по гравитационной составляющей, если два то трение будет также учитываться.
  3. Последовательность параметров изменена. Предпринята попытка сгруппировать параметры по логическим группам. При этом некоторые параметры, которые ранее были опциональны -теперь обязательны, например диаметры.
  4. Для трубопровода (MF_p_pipeline) отлажена схема, когда глубины, диаметры и температуру можно задавать различными методами - числом, массивом или объектом range

Функции для расчета трубы получились сложные - много настроек и различных вариантов поведения. Наверняка там есть еще баги, но надеюсь они будут исправлены в последующих версиях.


Сайт unifloc.ru

от Ринат Хабибуллин -

Запуск сайта унифлок.ру!

Предполагается, что тут будет копиться и систематизироваться информация по расчетным модулям унифлок. Начнем с модулей для Excel Unifloc VBA. Но надеюсь, что только Excel дело не ограничится. 

Найти модули можно на https://github.com/unifloc/unifloc_vba.

В связи с самоизоляцией развитие модулей унифлок ускорилось. Еще сильнее продвигает их вперед подготовка дистанционного курса для по инженерным расчетам в добыче нефти для магистров РГУ нефти и газа имени И.М. Губкина. Варианты курсов по унифлоку и инженерным расчетам появятся и на этом сайте в ближайшее время.

Пока регистрация на сайте ограничена, но в ближайшее время это также наверное изменится.