korteelko / asp_therm

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Build Status

asp_therm

Содержание

Введение

В проекте реализован матаппарат расчёта теплофизических параметров реальных газов и их смесей. Используемые уравнения состояния реального газа, или, для краткости, модели, были выбраны руководствуясь главным образом успехом применения их для описания газовых смесей близких по составу к природному газу.
Ссылки на используемую техническую литературу по физике газов прописаны контекстно в коде, и в разделе Литература.

Литература

  • Рид Р., Праусниц Дж., Шервуд Т. "Свойства газов и жидкостей: Справочное пособие". Л.:Химия, 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.
    Алсо, вторая часть этого стандарта тоже интересна, а за денежку можно купить новый.

Программное обеспечение

Загрузка и сборка

  1. Копировать репозиторий и подмодули: git clone --recursive https://github.com/korteelko/asp_therm
  2. Установить зависимости
  3. Создать файл конфигурации, например из файла configuration_template.xml
  4. Запустить 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) выдаст пример использования.

ToDo

  • добавить модель для СПГ
  • разбить модели на области, сращивание моделей
  • прикрутить модуль динамики(по мере необходимости)

About

License:MIT License


Languages

Language:C++ 94.5%Language:CMake 2.3%Language:Python 1.8%Language:C 1.0%Language:QMake 0.4%