PVT-инженерия на Rust
Subterra PVT считает фазовое поведение пластовых флюидов: от состава и уравнения состояния — до лабораторных экспериментов, регрессии на замеры и готовых таблиц для гидродинамического симулятора. Расчётное ядро написано на Rust, работает в единицах СИ и не подставляет значение по умолчанию там, где его не задали.
- Единицы СИ внутри ядра
- Число без единицы — ошибка ввода
- Один и тот же расчёт в браузере и на ПК
Работает в браузере, без установки. Отдельные сборки для Windows, Linux и macOS сейчас обновляются — актуальная версия всегда здесь.
Что видно на экране
Кривые и таблицы, а не только итоговое число. Ниже — типичный вид графиков и таблиц, которые строит программа по ходу расчёта.
| P, МПа | Rs, м³/м³ | Bo, м³/м³ | μo, мПа·с |
|---|---|---|---|
| 25.0 | 148 | 1.312 | 0.41 |
| 20.0 | 148 | 1.298 | 0.44 |
| 15.0 | 121 | 1.246 | 0.52 |
| 10.0 | 87 | 1.189 | 0.63 |
| 5.0 | 46 | 1.112 | 0.81 |
Что уже считается
Экраны программы идут по одному пути: от состава и лабораторных замеров — до регрессии, контроля качества и экспорта. Ниже — что уже умеет расчётное ядро.
Состав и C7+
Ввод компонентного состава, библиотека стандартных компонентов, разбиение C7+ на псевдокомпоненты методами Уитсона и Педерсена с подбором парных коэффициентов под SRK.
EOS и флеш
Пенг-Робинсон, PR78, SRK, проверка стабильности фаз, двухфазный flash, давление насыщения и построение фазовой огибающей.
Лабораторные эксперименты
CCE, CVD, дифференциальное разгазирование, сепараторные тесты, swelling, grading, расчёт MMP, смешивание и рекомбинация проб.
Вода и рассол
Термодинамика чистой воды по IAPWS-95, растворимость метана и CO2, трёхфазный flash с учётом водной фазы.
Вязкость и свойства
Вязкость по методу LBC, плотность, энтальпия, энтропия, теплоёмкости и коэффициент Джоуля — Томсона.
Таблицы для симулятора
Black-oil и compositional PVT-таблицы, аппроксимация корреляциями Стэндинга, Васкеса-Беггса и Ласатера.
Регрессия и контроль качества
Подгонка модели по замерам с разделением на fit и holdout, сравнение вариантов модели, визуальная проверка совпадения.
Проект и история расчётов
Версионированный файл проекта, источник данных у каждого параметра, неизменяемые ревизии расчётов.
Один движок везде
Приложение для ПК, браузер и командная строка используют одно и то же ядро на Rust — не три отдельные реализации физики.
Как это устроено
pvt-core (Rust, f64, детерминированное)
├── pvt-api → единые JSON-контракты
├── pvt-wasm → браузер
├── pvt-cli → HTTP и диагностика
└── pvt-desktop → приложение для ПК
Ядро ничего не знает об интерфейсе — ни окон, ни кнопок, ни сети. Сам интерфейс написан на TypeScript, без React и других фреймворков, и выглядит одинаково в браузере и в приложении для ПК.
Программа работает и без интернета: один исполняемый файл поднимает HTTP-сервер в локальной сети, а расчёт идёт прямо на той машине, где он запущен.
Скачать
Сейчас актуальная версия работает в браузере — открывается прямо из личного кабинета, без установки. Отдельные сборки для Windows, Linux и macOS готовятся к обновлению и скоро вернутся сюда.
Windows скоро
pvt-windows-x86_64.exe — один файл, интерфейс вшит внутрь
Linux скоро
pvt-linux-x86_64 — тот же HTTP-сервер и интерфейс
macOS скоро
pvt-macos-arm64 — для Apple Silicon
Когда сборки обновятся: программа поднимает HTTP-сервер, доступный всей локальной сети, — устанавливать ничего дополнительно не нужно. Windows может показать предупреждение «Система Windows защитила ваш компьютер»: «Подробнее» → «Выполнить в любом случае». А пока — заходите через личный кабинет, там та же программа работает уже сейчас.