- PVSM.RU - https://www.pvsm.ru -
Мне кажется, я знаю, как должен быть устроен идеальный электродвигатель. Но чтобы это доказать, нужен инструмент.
Существующий софт убивал все желание творить:
Ansys Maxwell - мощный, но тяжелый и часто просто отказывается запускаться.
FEMM - быстрый, но его интерфейс - пример того, как не надо делать UI в 21 веке.
SimScale - удобно, но медленно, и бесплатные лимиты кончаются слишком быстро.
За зимние каникулы (плюс пара дней) мы написали свой солвер.
Почти весь код написан нейросетью. Пару лет назад я бы в это не поверил, но сегодня мы с ней создали сложный инженерный софт.
Весь проект сделан на бесплатной версии Gemini.
Даже очень щедрых лимитов (спасибо Гуглу) постоянно не хватало. Это показательно: будь у нас больше ресурсов - мы бы сделали намного больше. Миру (и особенно мне) нужно намного больше вычислительных мощностей для ИИ.
Весь софт — это один HTML файл. Никаких серверов, установок и зависимостей.
Чтобы считать быстро, мы используем WebGPU. Все вычисления идут на видеокарте.
Разрешение: Спокойно перевариваем сетку 16К (о чем другие реал-тайм солверы могут только мечтать).
Сходимость: Экстремально быстрая (потратили уйму времени на тюнинг алгоритмов).
Рендер: Визуализация на Three.js, так как обычный Canvas 2D тормозил на таких объемах.
Интерфейс, в котором хочется работать:
Декартова или полярная система координат — сетка строится секторами, что идеально для вращающихся машин.
Sweep (Развертка) — задаем диапазон (угол/позицию), софт прогоняет симуляцию и строит графики.
«Зарядка» магнитов — уникальная фича: можно нарисовать «пустой» магнит в поле катушки, нажать кнопку, и он запомнит намагниченность.
Запись видео — рендер вебмки прямо из браузера.
Тут мы сломали немало копий.
Считать силы в реал-тайме через Тензор Максвелла на прямоугольной сетке и полуать качественный результат в котором можно быть уверенным - не получилось(
В итоге мы внедрили Метод Виртуальных Перемещений.
Как видно на скриншоте, он дает идеально гладкие графики момента и сил в режиме Sweep. Результат отличный, но ради этого пришлось пожертвовать интерактивностью - силы считаются только в режиме развертки, а не в реальном времени под мышкой. Даже если вам просто нужно посчитать магнитик на холодильник - нужно прогонять sweep
Проект Open Source.
Потыкать онлайн [1]
Код на GitHub [2]
В далекой перспективе думаю сделать 3D расчет на GPU с использованием адаптивной сетки (уплотнение вокселей в местах интереса).
А пока — буду рад фидбеку. Какого функционала вам не хватает?
Автор: mozg4d
Источник [3]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/three-js/443081
Ссылки в тексте:
[1] Потыкать онлайн: https://schoolscience.org/magneto/index.htm
[2] Код на GitHub: https://github.com/mozg4D/magneto-solver
[3] Источник: https://habr.com/ru/articles/989380/?utm_source=habrahabr&utm_medium=rss&utm_campaign=989380
Нажмите здесь для печати.