В проекте реализован матаппарат расчёта теплофизических параметров реальных газов и их смесей. Используемые уравнения состояния реального газа, или, для краткости, модели, были выбраны руководствуясь главным образом успехом применения их для описания газовых смесей близких по составу к природному газу.
Ссылки на используемую техническую литературу по физике газов прописаны контекстно в коде, и в разделе Литература.
- Рид Р., Праусниц Дж., Шервуд Т. "Свойства газов и жидкостей: Справочное пособие". Л.:Химия, 1982.
- Павловский В.А. "Введение в термодинамику реальных газов". Тут данные издания.
- Брусиловский А.И. "Фазовые превращения при разработке месторождений нефти и газа". М.:Грааль, 2002.
- Казунин Д.В. Информация по монографии
- ГОСТ 30319 -- 2015.
- ГОСТ 30319.1 -- 2015. Межгосударственный стандарт. Газ природный. Методы расчёта физических свойств. Общие положения. М.: Стандартинформ, 2015.
- ГОСТ 30319.3 -- 2015. Межгосударственный стандарт. Газ природный. Методы расчёта физических свойств. Вычисление свойств на основе данных о компонентном составе. М.: Стандартинформ, 2015.
- ISO 20765-1. International standard. Natural gas -- Calculation of thermodynamic properties. Part 1: Gas phase properties for transmission and distribution applications. ISO 2005.
Алсо, вторая часть этого стандарта тоже интересна, а за денежку можно купить новый.
- Копировать репозиторий и подмодули:
git clone --recursive https://github.com/korteelko/asp_therm
- Установить зависимости
- Создать файл конфигурации, например из файла configuration_template.xml
- Запустить cmake
Если не использовать ide, стандартный набор команд сетапа проекта с cmake примерно такой:
cd asp_therm
mkdir build
cd build
cmake ..
make
Опции работы библиотеки, методов расчёта, хранения результатов и т.д. расписаны в файле конфигурации configuration.xml. В репозитории отслеживается файл configuration_template.xml - шаблон конфигурационного файла.
Краткое описание опций, формат ввода
debug_mode
Bool
Включить вывод дополнительной информации в файл логирования, добавить элементы в разработке к сборке.rk_orig_mod
Bool
Разрешение использовать классическое уравнение состояния Редлиха-Квонга. Опция может показаться достаточно неоднозначной, т.к. это действительно что ни на есть эталонное уравнение термодинамических параметров системы. В отличии от основополагающего теоретизированного уравнения Ван-дер-Ваальса, оно актуально в практическом применении, в том числе в виде многих модификаций. Но проект в большей степени ориентирован на углеводородные смеси, а задачи реализовать как можно больше кубических уравений состояния не стояло - использовались наиболее точные. Классическая модель Редлиха-Квонга в этом отношении несколько проигрывает более специализированным аппроксимациям.rk_soave_mod
Bool
Разрешение использовать модификацию Соаве для уравнения состояния Редлиха-Квонга. публикации Соаве к литературе добавить.pr_binary_coefs
Bool
Разрешение использовать модификацию уравнения Пенга-Робинсона с коэффициентами бинарного взаимодействия между компонентами смесей. Наверное опция пропадёт(станет всегдаtrue
) как только я нормально оформлю эту реализацию, со ссылками, исследованиями и прочими подобающими вещами.include_iso_20765
Bool
Разрешение использовать стандарт ISO 20765-2005 поверх ГОСТ 30319. Стандарт ISO объёмней и интереснее, ГОСТ, соответственно, поурезан, в области возможных компонентов например. Опция нужна ради соблюдения условностей. ГОСТ от 2015 года кстати местами непонятно перепечатали, может напишу об этом позже.log_level
Enum: "debug", "warnings", "errors", "no_logs"
Уровень логирования.log_file
String
Имя файла логирования.
Параметры хранения данных
dry_run
Bool
Не устанавливать физическое подключение к БД. Для true запросы выводятся в файл логирования.client
Enum: "noone", "postgresql"
Клиент СУБД. Про подключение postgresql есть отдельный раздел.name
String
Имя БД.username
String
Пользователь БД.password
String
Пароль пользователя БД.host
String
URL СУБД.port
Int
Порт СУБД.
Подключение PostgreSQL
Имя БД - 'africae', имя пользователя(user или role) - 'jorge', пароль пользователя 'my_pass'.
Первым делом необходимо переключиться на пользователя postgres и запустим cli субд:
$ sudo -u postgres psql
После запуска cli создадим базу данных и пользователя, предоставив ему все привилегии над этой БД:
=# create database africae;
=# create user jorge with encrypted password 'my_pass';
=# grant all privileges on database africae to jorge;
Посмотреть состояние субд можно командой \l
. Полный help отобразит \?
.
Для завершения сессии введите команду 'exit;
' или \q
.
После соответствующих изменений секция базы данных в файле конфигурации configuration.xml будет выглядеть примерно так(см. configuration_template.xml):
<group name="database">
<parameter name="dry_run"> false </parameter>
<parameter name="client"> postgresql </parameter>
<parameter name="name"> africae </parameter>
<parameter name="username"> jorge </parameter>
<parameter name="password"> my_pass </parameter>
<parameter name="host"> 127.0.0.1 </parameter>
<parameter name="port"> 5432 </parameter>
</group>
Подключение к бд 'africae' по cli: $ sudo -u postgres pqsl -d africae
P.S. Вы заслужили печенюшку если раскусили неслучайный характер выбора имён БД и пользователя.
Для управления базами данными PostgreSQL удобно использовать pgAdmin4. Функционал просмотра записей, изменения таблиц и т.п. требует соответствующих привилегии пользователя на таблицы. Добавить необходимые привелегии можно подключившись к БД по cli. Соответствующие команды для пользователя user выглядят примерно так:
На все привилегии:
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO user
На привелегии выборки:
GRANT SELECT ON ALL TABLES IN SCHEMA public TO user
- pugixml - парсинг xml-файлов
- spdlog - библиотека логгирования
- asp_utils - вынесенный подмодуль утилит
- asp_db - вынесенный подмодуль БД
- libpqxx - С++ клиент для PostgreSQL
- опционально googletest - C++ тест фрэймворк от Google
В директории tests/full
находится проект гуглотестов. Проект специализирован CMakeLists.txt файлом.
На расчёт покрытия есть python скрипт gcov_report.py в папке soft
. Вызов с опцией -h(--help) выдаст пример использования.
- добавить модель для СПГ
- разбить модели на области, сращивание моделей
- прикрутить модуль динамики(по мере необходимости)