Отключение водопровода задвижками

Отключение трубы водопровода: какие задвижки закрыть, какие узлы останутся без воды и какой отбор пропадёт; расчёт с отбором по давлению показывает недоподачу в остальной сети.

Где найти
«Инструменты» (значок чемоданчика справа вверху) → Расчёты и диагностика → «Водопровод: расчёт сети» → модель в списке → раздел «Отключение участка задвижками». То же — палитрой команд: Ctrl+K и начните набирать название.
Права
«Найти задвижки» — все, кто вошёл; «Расставить «N−1»» — право «Справочники и шаблоны карточек»; «Рассчитать отключение» — право «Запуск расчётов» и работающий расчётный движок водопровода.
Функция показана в сквозном сценарии:Водопровод: модель, зоны DMA, отключение задвижками
Читаю как

Возможности

  • «Задвижек в модели: N» с разбивкой по происхождению: «N−1» — расставлены автоматически, «из ГИС» — из слоя задвижек при загрузке сети, «вручную».
  • «Расставить «N−1»» — расставить задвижки по правилу «N−1» в модели без задвижек (учебные сети); повторно — заменить расставленные так же, с подтверждением.
  • «Труба» → «Найти задвижки» — какие задвижки закрыть, чтобы отключить трубу; какие насосы и арматуру закрыть вместе с ними; сколько узлов останется без воды и какой отбор пропадёт.
  • «Рассчитать отключение» — то же с гидравлическим расчётом суток: сколько воды получит остальная сеть и у каких узлов недоподача из-за падения давления. Расчёт сохраняется в модели («№19 · отключение трубы 129») — его можно перематывать по часам.
  • «Отключение на карте» — сеть окрашивается по отключению: участок красный и толстый, трубы под закрываемыми задвижками и сами задвижки — чёрные, отрезанные от источников узлы — фиолетовые, узлы с недоподачей — оранжевые, остальная сеть — серая. Включается само после поиска задвижек.

Как это работает

Задвижка стоит на трубе у одного из её концов (пара «труба — узел»); на карте — точка на трубе в 5 м от узла. Задвижки хранятся в tgid_water_valve. Правило «N−1» (Walski): у узла с N ≥ 2 трубами — задвижки на всех трубах, кроме самой крупной по диаметру (магистраль; при равных — с меньшим именем), у тупика — нет, у резервуара и бака — на всех трубах. Повторная расстановка заменяет только задвижки «N−1», остальные остаются.

Отключаемый участок выбранной трубы — всё, до чего от неё можно дойти по трубам, не проходя через задвижку: трубы и узлы. Закрытые трубы участок не продолжают. Насос или арматура EPANET на пути — граница участка, их закрывают («Закрыть насосы и арматуру:»). Закрываемая задвижка перекрывает свою трубу целиком.

Без воды остаются узлы участка и узлы, которые после закрытия участка, задвижек и насосов не связаны ни с одним резервуаром или баком («отрезаны»). Отбор — сумма их среднего суточного отбора, л/с. Если в участок попадает резервуар или бак — жёлтое предупреждение «В отключаемый участок попадают ёмкости: …». В списке задвижек — первые 12, остальные — «и ещё N».

Расчёт отключения. Движок считает сутки с шагом 1 ч с закрытыми участками и отбором по давлению (PDD): полный отбор при давлении 10 м и выше, нулевой — при 0 м. Так отрезанные узлы получают ноль, а не бессмысленное отрицательное давление. Правила управления (controls) закрываемых участков снимаются. «Подано … из … л/с» — средняя за сутки подача всем узлам против нужной по графикам. Недоподача из-за давления — узлы вне участка и не отрезанные, которым подано меньше 90 % нужного и заметно меньше (больше чем на 5 % нужного, не меньше 0,01 л/с), чем в такой же сети без отключения; этот расчёт «без отключения» делается один раз на модель и запоминается. В ответе — до 50 таких узлов, в окне — первые 12. Если EPANET останавливается (сеть без участка не работает), окно показывает причину жёлтой плашкой, расчёт не сохраняется.

Что нужно для работы

  • Модель водопровода с задвижками: «N−1» или слой задвижек из ГИС. Без задвижек «Найти задвижки» неактивна.
  • «Найти задвижки» — любой вошедший, движок не нужен.
  • «Расставить «N−1»» — право «Справочники и шаблоны карточек» и включённая запись на сервере (MUTATIONS_ENABLED).
  • «Рассчитать отключение» — право «Расчёты» и работающий расчётный движок водопровода.

Шаги

  1. Откройте «Инструменты» и наберите в поиске «Водопровод: расчёт сети» — пункт выделен рамкой.

    Пункт «Водопровод: расчёт сети» в панели «Инструменты»

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

    Окно «Водопровод: расчёт сети»

  3. «Расставить «N−1»» ставит задвижки в модели без них (учебные сети): у узла с N трубами — на всех, кроме самой крупной. Рядом — сколько задвижек в модели и откуда они: «N−1», «из ГИС», «вручную».

    Отключение водопровода задвижками: шаг 3

  4. Выберите «Труба» и нажмите «Найти задвижки»: какие задвижки закрыть, длина отключаемого участка, сколько узлов останется без воды (на участке и отрезанные от источников) и их отбор. Сеть на карте окрашивается по отключению («Отключение на карте»).

    Отключение водопровода задвижками: шаг 4

  5. «Рассчитать отключение» — расчёт суток с закрытым участком и отбором по давлению: сколько воды получит сеть и у каких узлов недоподача из-за падения давления. Расчёт сохраняется в модели и появляется в списке «Расчёт».

    Отключение водопровода задвижками: шаг 5

Примеры

Копия Алматы, своя копия учебной Net3. «Расставить «N−1»» → «Задвижек в модели: 142 («N−1»: 142)». Труба 129 → «Найти задвижки»: «Закрыть задвижки (3): на трубе 129 у узла 121; на трубе 131 у узла 125; на трубе 169 у узла 125», «Участок: 1 тр., 283,5 м. Без воды 1 узл. (на участке 1, отрезаны 0), отбор 3,1 л/с.» «Рассчитать отключение» (2 с): «Расчёт №19 (сутки, отбор по давлению): подано 687,2 из 690,3 л/с. Остальная сеть давление держит — недоподачи из-за отключения нет.» Разница 3,1 л/с — отбор отключённого узла 125.

Та же модель: труба у насоса. Труба 329 — задвижки на трубе 329 у узла 123 и на трубе 333 у узла 61, «Закрыть насосы и арматуру: 335» (насос от источника River). Без воды 2 узла: 61 на участке и 601 отрезан, отбор 0 л/с — у этих узлов нет потребителей. Расчёт №20: подано 690,3 из 690,3 л/с — сеть держат насос от Lake и баки.

Сеть из ГИС (вымышленный GeoPackage, задвижки из слоя точек). Труба T2: «Закрыть задвижки (2): на трубе T2 у узла J2; на трубе T5 у узла J3». Участок — 4 трубы, 551,1 м: задвижки есть только у J2 и J3, остальные трубы T3-1, T3-2, T6 открыты, а закрытая T7 в обход не ведёт. Без воды 5 узлов (4 на участке, J7 на ветке T5 отрезан), отбор 29,3 л/с из 50 л/с всей сети.

Если не получается

  • «Найти задвижки» неактивна — в модели нет задвижек: «Расставить «N−1»» или загрузите сеть из ГИС со слоем задвижек.
  • «Найти задвижки» неактивна — не выбрана труба или в модели нет задвижек: нажмите «Расставить «N−1»» или загрузите сеть из ГИС со слоем задвижек.
  • «Закрыть задвижки (0): нет — участок ограничен насосами, арматурой или закрытыми трубами» — задвижек на границе нет, участок отключают сами насосы и арматура.
  • «Некорректные параметры запроса: Труба «330» и так закрыта» — в модели эта труба закрыта (статус Closed), отключать нечего.
  • Жёлтая плашка «Движок водопровода: Расчёт EPANET не выполнен: …» — без участка сеть не считается (часто — «System unbalanced»); узлы без воды и задвижки при этом показаны.
  • «Задвижки не загрузились», «Задвижки не расставлены», «Задвижки не найдены», «Отключение не рассчитано» — с текстом ответа сервера.

Для администратора

  • Таблица tgid_water_valve (миграция sql/migrations/20261101_water_valves.sql), колонка source: strategic («N−1»), gis, user. Кеш подачи без отключения — summary.pdd_baseline в tgid_water_model, считается при первом расчёте отключения модели.
  • Расчёт отключения пишет обычный расчёт модели в tgid_water_run (сводка summary.isolation).

Для разработчика

  • API (routers/water.py, логика — database/water_isolation.py): GET /api/v1/water/models/{id}/valves (GeoJSON, count, by_source), POST /api/v1/water/models/{id}/valves/generate, POST /api/v1/water/models/{id}/isolation (link_id), POST /api/v1/water/models/{id}/isolation/run (link_id; ответ — то же плюс run_id, supply, simulation_error).
  • Движок: POST /simulate с closed_links и demand_model: "PDD" (water_engine/engine.py: close_links, _supply, halt_reason).
  • Веб: components/WaterIsolationPanel.vue (внутри WaterDialog.vue), utils/water.ts (ISOLATION_META, isolationFrame, runLabel).
  • Тесты: API — tests/test_water_isolation.py; веб — tests/utils/water.spec.ts («отключение участка»); e2e — e2e/functions/water.spec.ts («отключение участка: расстановка «N−1», задвижки и расчёт…», отключение по задвижкам из ГИС).
Хотите увидеть эту функцию на своих данных?Покажем ТГИД на демонстрации и ответим на вопросы инженеров.
Запросить демо