Subterra
Код Личный кабинет
Subterra PVT

PVT-инженерия на Rust

Subterra PVT считает фазовое поведение пластовых флюидов: от состава и уравнения состояния — до лабораторных экспериментов, регрессии на замеры и готовых таблиц для гидродинамического симулятора. Расчётное ядро написано на Rust, работает в единицах СИ и не подставляет значение по умолчанию там, где его не задали.

  • Единицы СИ внутри ядра
  • Число без единицы — ошибка ввода
  • Один и тот же расчёт в браузере и на ПК

Работает в браузере, без установки. Отдельные сборки для Windows, Linux и macOS сейчас обновляются — актуальная версия всегда здесь.

Что видно на экране

Кривые и таблицы, а не только итоговое число. Ниже — типичный вид графиков и таблиц, которые строит программа по ходу расчёта.

CCE — относительный объём
Pнас Давление, снижается →
Давление насыщения — по излому кривой, не по ручной отметке.
Совпадение с лабораторными замерами
Замер Расчёт
Расхождение видно по каждой точке отдельно, не только суммарной ошибкой.
PVT-таблица для симулятора
P, МПа Rs, м³/м³ Bo, м³/м³ μo, мПа·с
25.01481.3120.41
20.01481.2980.44
15.01211.2460.52
10.0871.1890.63
5.0461.1120.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 защитила ваш компьютер»: «Подробнее» → «Выполнить в любом случае». А пока — заходите через личный кабинет, там та же программа работает уже сейчас.