Skip to content

ddkx21/electrocoalescence-simulator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Electrocoalescence Simulator

Симулятор коалесценции капель воды в нефти под действием электрического поля

CI Status License C++17


🎯 О проекте

Это высокопроизводительный симулятор для моделирования электрокоалесценции - процесса слияния капель воды в нефтяной эмульсии под действием электрического поля. Проект разработан для:

  • 🔬 Исследования физики коалесценции
  • 📊 Сбора статистики для оптимизации промышленных дегидраторов
  • 🚀 Симуляции миллионов капель с использованием эффективных алгоритмов
  • 📈 Анализа динамики процесса осаждения воды из нефти

Ключевые возможности

  • Физически корректная модель: Диполь-дипольные взаимодействия в электрическом поле
  • Эффективный алгоритм: Barnes-Hut Octree O(N log N) вместо O(N²)
  • Периодические граничные условия: Корректная обработка бесконечных систем
  • Автоматическое тестирование: Unit и интеграционные тесты с CI/CD
  • ⚠️ В разработке: Полнофункциональная система сбора статистики и визуализации

⚠️ Текущий статус: Alpha v0.1

Проект находится в активной разработке!

Что работает ✅

  • ✅ Ядро физического движка (расчет сил, обновление позиций)
  • ✅ Octree для ускорения вычислений
  • ✅ Периодические граничные условия (PBC)
  • ✅ Система инициализации капель
  • ✅ Модульные тесты

Что в процессе разработки 🚧

  • 🚧 Главный исполняемый файл (main.cpp)
  • 🚧 Система сбора статистики
  • 🚧 Методы step() и simulate()
  • 🚧 Экспорт результатов (VTK, CSV, JSON)
  • 🚧 Документация пользователя

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

Требования

  • Компилятор: GCC 9+, Clang 10+, MSVC 2019+
  • C++ стандарт: C++17
  • Система сборки: Meson >= 0.55
  • Тесты: Google Test (подтягивается автоматически)

Установка

Linux (Ubuntu/Debian)

# Установить зависимости
sudo apt update
sudo apt install build-essential meson ninja-build git

# Клонировать репозиторий
git clone https://github.com/YOUR_USERNAME/electrocoalescence-simulator.git
cd electrocoalescence-simulator

# Сборка
meson setup build
meson compile -C build

# Запуск тестов
meson test -C build --verbose

macOS

# Установить зависимости через Homebrew
brew install meson ninja

# Клонировать и собрать
git clone https://github.com/YOUR_USERNAME/electrocoalescence-simulator.git
cd electrocoalescence-simulator
meson setup build
meson compile -C build
meson test -C build

Windows

# Установить Visual Studio 2019+
# Установить Python и Meson
pip install meson ninja

# Клонировать и собрать
git clone https://github.com/YOUR_USERNAME/electrocoalescence-simulator.git
cd electrocoalescence-simulator
meson setup build
meson compile -C build
meson test -C build

🏗️ Архитектура

electrocoalescence-simulator/
├── include/         # Заголовочные файлы
│   ├── core/        # Ядро: Droplet, DropletSystem
│   ├── acceleration/# Octree для O(N log N)
│   ├── solvers/     # Расчет сил (Naive, Octree)
│   ├── initializers/# Инициализация систем
│   ├── experiments/ # Научные эксперименты
│   ├── utils/       # 🚧 Утилиты 
│   └── collision/   # 🚧 Коллизии
│
├── src/             # Реализация
│   ├── main.cpp     # 🚧 Main фунция
│   └── ...          # Реализации модулей
│
├── tests/           # Тестирование
│   ├── unit/        # Unit-тесты
│   ├── integration/ # 🚧 Интеграционные тесты
│   └── benchmarks/  # 🚧 Бенчмарки 
│
├── scripts/         # Python утилиты
│   └── *.py         # Визуализация и анализ
│
└── docs/            # Документация
    └── *.md         # Техническая документация

🔬 Физическая модель

Метод дискретных элементов

Эволюция системы описывается системой дифференциальных уравнений:

$dr_i/dt = v_i + u_i$ где $r_i = (x_i,y_i,z_i)$ положение капли, $v_i$ дрейфовая скорость, $u_i$ конвективная скорость.

Сила взаимодействия между двумя диполями: $F(x,y,z) = M*(R_i^3R_j^3)/r^4x(4z^2-x^2-y^2)/r^3$ где:

  • M - константа дипольной силы
  • R - радиусы капель
  • r - расстояние между каплями

Передемпфированная динамика

В вязкой среде инерция капель незначительна: $v_i=sum(F(r_i-r_j))/A$ Полная конвективная скорость в точке расположения всех остальных капель: $u_i = sum(J*F(r_i-r_j))$ где: A - коэффициент сопротивления (Формула Адамара-Рыбчинского) J - стокслет

Детали: См. документацию в include/core/PhysicsConstants.h

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors