Skip to content

Latest commit

 

History

History
257 lines (173 loc) · 19.3 KB

File metadata and controls

257 lines (173 loc) · 19.3 KB

r.avaflow · Веб-приложение

Моделирование лавин, селей, оползней и лахаров — прямо из браузера.

Никакого терминала. Никакой установки GRASS GIS. Без Python, без R, без необходимости помнить десятки Docker-команд. Открываешь приложение, проходишь мастер из 7 шагов — и занимаешься наукой, а не настройкой окружения.

License: GPL v2+ Angular NestJS Docker OpenMP GRASS GIS Status

🇬🇧 English version · Сообщить о баге · Ядро r.avaflow


Зачем этот проект

r.avaflow — это рецензируемый научный инструмент мирового уровня для моделирования гравитационных массовых потоков: физика лавин, селей, оползней и лахаров. Разрабатывается Мартином Мерджили и Шивой П. Пудасаини и цитируется в сотнях публикаций.

И его адски сложно поднять. Нужен GRASS GIS, совместимая версия Python, набор R-пакетов, C-компилятор, GDAL, Pillow, подходящие kernel headers, правильный базовый Docker-образ, дружелюбный Linux-терминал — и несколько часов терпения.

Этот проект устраняет этот барьер.

Студент-гляциолог, геоморфолог, инженер по оценке рисков или градостроитель могут запустить полноценную многофазную симуляцию, ни разу не открыв консоль. Всё — зависимости, GRASS GIS, R-пакеты, скомпилированное C-ядро, даже pipeline визуализации — упаковано в один Docker-образ с удобным веб-интерфейсом.

Валидация на реальных событиях.

  • Web-app использован для моделирования прорыва оз. Башкара 2017 г. (Центральный Кавказ — 3 погибших, разрушено 4 км автодорог, ущерб ~810 млн ₽) — результаты опубликованы в рецензируемом журнале Лёд и Снег (2024), см. раздел Научные публикации ниже. Соавторы этой статьи — те же, кто создавал этот web-app.
  • В 2026 году в этом web-app был успешно воспроизведён катастрофический сход ледника Колка 20 сентября 2002 года (Кавказ, Северная Осетия — 125 жертв, runout 19 км). Результат моделирования стал основой для курсовой работы студента-гляциолога.

Для кого это

Вы… Получаете…
Гляциолог, изучающий ледово-каменные лавины Многофазную модель Пудасаини–Мерджили с таянием, когезией и вовлечением — настраиваемую через форму, а не через командную строку
Геоморфолог, моделирующий сели Полное покрытие параметров r.avaflow (~85 настроек) с разумными дефолтами, подсказками и валидацией
Инженер-геотехник, оценивающий опасность оползней Быстрые многопоточные прогоны, воспроизводимые проекты, готовые к экспорту бандлы с результатами
Градостроитель / специалист по рискам Визуальный вывод (карты, GIF-анимации, ROC-валидация) без каких-либо навыков работы с ГИС
Студент / начинающий исследователь On-ramp к сложному инструменту — вы фокусируетесь на науке, а не на apt-get

Если ваш рабочий процесс сегодня начинается со слов "Так, сначала SSH на лабораторный сервер…" — этот проект заменяет этот шаг на вкладку в браузере.


Что внутри

Пошаговый мастер симуляции (7 шагов)

Вместо 400-символьной команды в терминале вы заполняете форму:

  1. Настройка проекта — фазы, гравитация, режим топокоррекции, число ядер, CFL, пороги
  2. Рельеф и зона отрыва — ЦМР, слои отрыва, гидрограф, тайминг
  3. Материалы — плотности, углы трения, деформация, drag, virtual mass (по фазам)
  4. Вовлечение, остановка и фазовые переходы — коэффициент по log₁₀-шкале, управление таянием
  5. Вывод и тайминг — что сохранять, временное окно, контрольные точки, линии профиля
  6. Визуализация — ортофото RGB, 17 параметров отображения карт
  7. Обзор и запуск — полное резюме + превью реального r.avaflow-скрипта, который будет выполнен

У каждого поля есть подсказка со строкой "Affects:". Изменённые поля подсвечиваются зелёной рамкой — вы всегда видите, что отличается от дефолта. Два языка: English и Русский.

Мониторинг симуляции в реальном времени

  • WebSocket-поток логов с ring buffer (браузер не падает даже на многочасовых прогонах)
  • Датчики CPU и RAM
  • Отмена / перезапуск не покидая страницы
  • Прогресс-бар привязан к модельному времени

Встроенный просмотрщик результатов

  • Сетка изображений с click-to-zoom для PNG-карт и GIF-анимаций
  • Файл-браузер по проекту (растры, CSV, логи, R-графики)
  • Экспорт проекта целиком в ZIP одним кликом
  • R-визуализация (ROC-кривые, карты опасности) работает из коробки

Управление проектами

  • Создание, загрузка, переименование, дублирование, удаление проектов из сайдбара
  • Автоопределение cellsize из загруженного GeoTIFF — опционально, с подтверждением
  • Drag-and-drop загрузка растров
  • Все данные хранятся в Docker-томе

История с OpenMP: ядро теперь быстрее

Стандартное вычислительное ядро r.avaflow (r.avaflow.main, ~13 000 строк C) исторически было однопоточным. На современном 12-ядерном воркстейшне оно использовало 1 ядро, а 11 остальных простаивали — и полная симуляция селевого потока занимала десятки часов.

В этом проекте ядро распараллелено. Мы добавили директивы OpenMP во все «горячие» вычислительные регионы схемы NOC-TVD: flux computation, source terms, фазовые переходы, CFL-редукция, entrainment, stopping. Все восемь параллелизуемых регионов теперь под #pragma omp parallel for.

Результат на каноническом продакшн-сценарии (прорыв озера Башкара, cellsize = 5 м, временное окно 60/1000):

Конфигурация Время Ускорение
Оригинальное однопоточное ядро ~36 ч 1.0× (baseline)
OpenMP на 12 ядрах (этот релиз) ~6 ч ≈ 6×
OpenMP на 16 ядрах ~3 ч ≈ 12×

На 16-ядерной машине r.avaflow.main достигает ≈ 810 % загрузки CPU — то есть 8 из 16 ядер полностью насыщены, против 100 % (одно ядро) на стоковой сборке. Симуляция, которая раньше считалась сутки, теперь укладывается до обеда.

Всё работает автоматически — в web-app есть слайдер CPU-cores, который мапится в OMP_NUM_THREADS, а Docker-образ уже содержит libgomp. Никакой перекомпиляции, никаких флагов, которые надо запоминать.


Научные публикации

Этот проект упомянут как научный вклад в рецензируемой публикации:

Солодова А. С., Петраков Д. А., Пуганов К. А. (2024). Моделирование селевого потока при прорыве оз. Башкара в 2017 г. Лёд и Снег, 64(4), 527–542. Московский государственный университет имени М. В. Ломоносова. DOI: 10.31857/S2076673424040043 · Страница журнала · EDN: HTRDDK

Авторы статьи — соавторы этого web-app. Работа моделирует прорыв оз. Башкара 1 сентября 2017 г. в долине Адылсу (Центральный Кавказ) и впервые для региона рассчитывает давление, кинетическую энергию потока, эрозию и аккумуляцию материала по всей длине русла.

В статье прямо названы два юзабилити-ограничения стокового r.avaflow, которые и мотивировали этот проект:

«К недостаткам программы можно отнести трудоёмкость подготовки входных данных, отсутствие пользовательского интерфейса, использование лишь одного ядра процессора, а также высокие требования к оперативной памяти. К примеру, расчёты по данной работе задействовали 16 ГБ оперативной памяти и длились более 40 часов.»

— Солодова, Петраков, Пуганов (2024), с. 529

Оба ограничения закрыты здесь:

  • Нет GUI → 7-шаговый wizard заменил терминал и ручное написание shell-скриптов.
  • Только одно ядро CPU → OpenMP-распараллеливание теперь масштабируется на все доступные ядра (см. таблицу ускорения выше).

Быстрый старт

Запуск готового образа (проще всего)

docker run -d -p 3001:3000 \
  -v avaflow-data:/data/projects \
  --name avaflow \
  ghcr.io/kostyanp95/r-avaflow:webapp-latest

Открыть http://localhost:3001. Всё.

Локальная разработка

cd web-app
npm install
npm run start:dev   # NestJS на :3000, Angular на :4200 с hot-reload

Подробности для разработчиков — web-app/README_ru.md.


Технологический стек

Вычислительное ядро

  • C — r.avaflow.main/main.c
  • OpenMP (параллелизация CPU)
  • OpenACC (upstream, GPU)
  • GRASS GIS 8.4 bindings

Веб-приложение

  • NestJS 9 (backend)
  • Angular 15.2 + ng-zorro-antd
  • Socket.IO (live streaming)
  • @ngx-translate (EN / RU)

Инфраструктура

  • Docker multi-stage builds
  • GitHub Container Registry
  • GitHub Actions CI
  • K3s деплой-манифесты
  • Playwright E2E + Karma unit

Документация


Версия движка и план миграции

Сейчас web-app работает поверх r.avaflow версии 3 (3G) — релиз 27.01.2023. Именно на эту версию ссылается вся рецензируемая литература по r.avaflow (включая нашу опубликованную статью), и именно её мы распараллелили OpenMP и валидировали на событиях Башкара-2017 и Колка-2002.

Upstream тем временем выпустил r.avaflow версию 4 (40G) — крупную переработку, опубликованную 02.09.2025 и описанную в Mergili et al. (2025), Geoscientific Model Development 18, 9879–9896. В новой версии:

  • Контролируемая деформация (CDEFORM) — заменяет legacy-схему с динамическим трением и пределом текучести физически обоснованным параметром деформации.
  • Фрагментация — модели потери энергии и диссипации импульса для скальных обвалов.
  • Когезия per-phase и слоистая модель фаз (фазы укладываются вертикально, а не смешиваются).
  • Режим медленного потока для скоростей < ~5 м/с (земляные потоки, каменные глетчеры).
  • Температура и таяние льда — 10-е уравнение состояния с обменом скрытой теплотой.
  • Обязательные topography-following высоты (h → h·cos β) во всей модели.

3G → 40G — несовместимое изменение: результаты напрямую не сопоставимы, откалиброванные параметрические наборы требуют повторной калибровки, а GRASS-интерфейс модуля другой. Поэтому сейчас web-app зафиксирован на 3G; миграция в roadmap ниже.


Roadmap

  • Миграция вычислительного бэкенда на r.avaflow 4.0G — расширенная физика (CDEFORM, фрагментация, когезия, слоистая модель, slow-flow, таяние льда)
  • Пресеты для типовых сценариев («Ледниковый коллапс», «Прорыв ледникового озера», «Снежная лавина»)
  • GPU-движок (OpenACC), доступный через web-app
  • Diff-просмотрщик симуляций (сравнение двух прогонов рядом)
  • Встроенная калибровка (ROC-guided parameter sweep)
  • Cloud-шаблоны деплоя (AWS / DigitalOcean / self-hosted K3s)

Авторы и благодарности

Веб-приложение Пуганов К. А. · Солодова А. · Петраков Д. А.

Физическая модель — ядро r.avaflow Martin Mergili · Shiva P. Pudasaini (2014–2025) · https://avaflow.org

Ключевые публикации

  • Mergili M., Pfeffer H., Kellerer-Pirklbauer A., Zangerl C., Pudasaini S.P. (2025). r.avaflow v4, a multi-purpose landslide simulation framework. Geoscientific Model Development 18, 9879–9896. https://doi.org/10.5194/gmd-18-9879-2025
  • Pudasaini S.P., Mergili M. (2019). A multi-phase mass flow model. JGR: Earth Surface 124(12), 2920–2942.

Участие в разработке

Багрепорты, запросы фич и pull-реквесты — welcome. Если вы исследователь, откалибровавший case study по натурным данным, заведите issue — успешные валидации вроде Колки напрямую влияют на roadmap пресетов.

Лицензия

Распространяется под GNU General Public License v2.0 или выше — лицензия унаследована от ядра r.avaflow. Полный текст — в upstream-репозитории r.avaflow.