Анализ режима
Анализ режима по результатам расчёта: перепады, завоздушивание, температуры, допустимость и зоны.
Возможности
- Шесть запросов «Анализа» десктопа: отрицательные перепады, завоздушивание, низкие температуры, закрытые участки, отключённые участки, гидростатические зоны.
- Десять запросов допустимости режима («Анализ режима: …»): напор в узлах подачи и обратки, располагаемый напор потребителей, теплообеспеченность, тепловой режим, потери напора на участках.
- Анализ по последнему расчёту фрагмента или по любому из 50 последних расчётов с результатами.
- Над таблицей — плитки «Найдено», «С координатой» и по одной плитке на каждое значение колонки «Режим»; щелчок по плитке оставляет в таблице только эти строки. Рядом — мини-гистограмма ключевого показателя.
- Щелчок по строке — объект на карте; «Показать все на карте (N)» ставит оранжевые метки на все найденные (с учётом фильтра плитки), «Скрыть с карты» убирает их.
Как это работает
Запросы только читают результаты расчёта: us_out (узлы), ut_out (участки), pt_out (потребители). «Последний расчёт» — расчёт фрагмента с наибольшим номером. Напор и температура узла берутся как в десктопе: по каждой трубе строка с наибольшим напором; узел связи внутренней схемы передаёт значения внешнему узлу.
| Запрос | Что ищет |
|---|---|
| Отрицательные перепады | узлы, где напор обратки выше напора подачи, оба не 0 |
| Завоздушивание | потребители, у которых напор в подаче ниже высоты здания; независимые схемы (1.5, 1.6 и с номером после точки 9–12) не учитываются |
| Низкие температуры | потребители с температурой в подаче ниже t2 графика источника при Tн расчёта; график — линейная интерполяция, выше таблицы — летняя температура источника |
| Закрытые участки | участки в состоянии «закрыт» по подаче или обратке, у которых нет результата расчёта |
| Отключённые участки | все участки фрагмента без результата расчёта |
| Гидростатические зоны | статический напор фрагмента и узлы нижней зоны |
Гидростатические зоны считаются по паспорту, без расчёта: полный статический напор = max(отметка верха трубы + высота здания) + 5 м; пьезометрический = полный − минимальная отметка. Нижняя зона — узлы, до которых можно дойти по сети от узла с минимальной отметкой, пока |zmin − (z + Hзд)| < 60 м. Узлы с отметкой 0 не участвуют. Поле «Расчёт» для этого запроса неактивно — зонам расчёт не нужен.
Допустимость режима — SQL-запросы десктопа (sql/admissibility/01.sql…10.sql). Например, в запросе 1 напор подачи допустим от max(0; 0,535·t − 49,2) до 150 м. Критерии всех десяти запросов — в курсе, модуль 11.
Участки и узлы отбираются по фрагменту начального узла. Объект внутренней схемы показывается на карте точкой узла-владельца, участок — серединой линии.
Что нужно для работы
- Расчёт выбранного фрагмента. Без расчёта запросы по результатам вернут «У фрагмента нет расчёта».
- Для гидростатических зон — заполненные отметки верха трубы и высоты зданий.
- Окно доступно всем, кто вошёл.
Шаги
Откройте «Инструменты» и наберите в поиске «Анализ режима» — пункт выделен рамкой.

Нажмите пункт — откроется окно.

В поле «Фрагмент» начните набирать номер или название фрагмента и выберите его из списка. «Расчёт» — по умолчанию последний; при необходимости выберите другой.

Выберите «Запрос» (отрицательные перепады, завоздушивание, низкие температуры, закрытые участки, гидростатические зоны) и нажмите «Выполнить». Щелчок по значку в строке показывает объект на карте; «Показать все на карте» — все найденные сразу.

Примеры
Фрагмент 74, расчёт 808 (−25 °C):
- «Отрицательные перепады» и «Завоздушивание» — 0 записей, плитка «Найдено» зелёная.
- «Низкие температуры» — 4 узла (3Гр-9, 3Гр-8, 3-2, 7Ш-20с): t подачи 0 °C при t2 графика 70 °C, у всех «Нет расхода» — потребители без нагрузки, к которым вода не дошла.
- «Закрытые участки» — 53 участка общей длиной 6256,4 м; «Отключённые участки» — 133 участка, 16 125,3 м.
- «Анализ режима: Участки трубопроводов. Анализ потерь напора» — 1626 строк; по скорости в подаче 1179 «Ниже рекомендуемого диапазона», 445 «В пределах нормы», 2 «Выше рекомендуемого диапазона».
Ошибка в отметке портит зоны. «Гидростатические зоны» фрагмента 74: полный статический напор 1006,8 м (здание 26/6, уровень 1001,8 м), пьезометрический — 1005,8 м, в нижней зоне один узел. Причина — у одного узла отметка верха трубы 1,0 м вместо примерно 700–900 м. Пока отметка не исправлена, результат не имеет смысла. Похожий след ошибок в исходных данных — в «Анализ режима: Узлы, подающий трубопровод»: 33 узла «Превышает допустимый», и у части из них напор 700–900 м над землёй (например, узел 3А-20/1 — 859 м при допустимых 150 м). Такого напора в сети нет — проверьте отметки этих узлов.
Если не получается
- «Анализ не выполнен» — ошибка API; текст причины — под заголовком.
- «Список расчётов фрагмента не загрузился — анализ по последнему расчёту» — выбрать расчёт нельзя, запросы идут по последнему.
- «Каталог анализов режима не загрузился — в списке только основные запросы» — нет десяти запросов допустимости; откройте окно заново.
- «Расчёт N не найден для фрагмента M» — выбранный расчёт удалён или относится к другому фрагменту.
- «Нет узлов с заполненной отметкой верха трубы» — у фрагмента нет отметок для гидростатических зон.
- «С координатой» меньше «Найдено» — у части объектов нет геометрии; по таким строкам карта не переходит.
Для администратора
- Данные:
calculation,us_out,ut_out,pt_out,deployedtempgraphs,heatsources; запросы допустимости лежат вsql/admissibilityв каталоге API. - Маршруты не проверяют роль сами: при выключенном
AUTH_REQUIRED_GETанализ доступен без входа.
Для разработчика
- API:
GET /api/analysis/regime/negative-dp,/airlock,/low-temperature,/closed-sections(include_uncalculated=true— «Отключённые участки»),/hydrostatic-zones(zone_height_m, по умолчанию 60) — все сfragment_idи необязательнымcalculation_id;GET /api/analysis/admissibility(каталог),GET /api/analysis/admissibility/{1..10}; список расчётов —GET /api/v1/calculations?file_id=…. Код —routers/analysis.py,database/regime_queries.py. - Веб:
components/RegimeAnalysisDialog.vue, метки на карте —utils/regimeMapPoints.ts, слойregime-analysis-points—components/MapViewer.vue. - MCP: инструмент
regime_analysis(без запросов допустимости). - Тесты:
tests/components/RegimeAnalysisDialog.spec.ts,tests/utils/regimeMapPoints.spec.ts, e2ee2e/functions.spec.tsиe2e/smoke.spec.ts; API —test_regime_queries.py.
