maneto solver
maneto solver

Мечта об идеальном двигателе

Мне кажется, я знаю, как должен быть устроен идеальный электродвигатель. Но чтобы это доказать, нужен инструмент.
Существующий софт убивал все желание творить:

  • Ansys Maxwell - мощный, но тяжелый и часто просто отказывается запускаться.

  • FEMM - быстрый, но его интерфейс - пример того, как не надо делать UI в 21 веке.

  • SimScale - удобно, но медленно, и бесплатные лимиты кончаются слишком быстро.

За зимние каникулы (плюс пара дней) мы написали свой солвер.
Почти весь код написан нейросетью. Пару лет назад я бы в это не поверил, но сегодня мы с ней создали сложный инженерный софт.

Про ИИ и ресурсы

Весь проект сделан на бесплатной версии Gemini.
Даже очень щедрых лимитов (спасибо Гуглу) постоянно не хватало. Это показательно: будь у нас больше ресурсов - мы бы сделали намного больше. Миру (и особенно мне) нужно намного больше вычислительных мощностей для ИИ.

Технологии: WebGPU и один файл

Весь софт — это один HTML файл. Никаких серверов, установок и зависимостей.
Чтобы считать быстро, мы используем WebGPU. Все вычисления идут на видеокарте.

  • Разрешение: Спокойно перевариваем сетку 16К (о чем другие реал-тайм солверы могут только мечтать).

  • Сходимость: Экстремально быстрая (потратили уйму времени на тюнинг алгоритмов).

  • Рендер: Визуализация на Three.js, так как обычный Canvas 2D тормозил на таких объемах.

Что умеет солвер

Интерфейс, в котором хочется работать:

  1. Декартова или полярная система координат — сетка строится секторами, что идеально для вращающихся машин.

  2. Sweep (Развертка) — задаем диапазон (угол/позицию), софт прогоняет симуляцию и строит графики.

  3. «Зарядка» магнитов — уникальная фича: можно нарисовать «пустой» магнит в поле катушки, нажать кнопку, и он запомнит намагниченность.

  4. Запись видео — рендер вебмки прямо из браузера.

Расчет поля B
Расчет поля B

Проблема: Силы и Момент

Тут мы сломали немало копий.
Считать силы в реал-тайме через Тензор Максвелла на прямоугольной сетке и получать качественный результат в котором можно быть уверенным - не получилось(

В итоге мы внедрили Метод Виртуальных Перемещений.
Как видно на скриншоте, он дает идеально гладкие графики момента и сил в режиме Sweep. Результат отличный, но ради этого пришлось пожертвовать интерактивностью - силы считаются только в режиме развертки, а не в реальном времени под мышкой. Даже если вам просто нужно посчитать магнитик на холодильник - нужно прогонять sweep

расчет момента методом виртуальных перемещений
расчет момента методом виртуальных перемещений

Ссылки

Проект Open Source.

Планы

В далекой перспективе думаю сделать 3D расчет на GPU с использованием адаптивной сетки (уплотнение вокселей в местах интереса).

А пока — буду рад фидбеку. Какого функционала вам не хватает?

Комментарии (10)


  1. rPman
    27.01.2026 07:47

    Проект не смотрел (хотя по описанию уже выглядит круто), но вопрос, солвер работает именно в динамике? В зависимости от скорости вращения (частоты) начинают работать характеристики материалла, из чего сделаны магнитопроводы (феррит, прессованный изолированный железный порошок или ленты/нити эти в свою очередь от их ориентации работают) из-за вихревых токов, которые в свою очередь генерируют свое поле.


    1. mozg4d Автор
      27.01.2026 07:47

      расчет только в статике(
      Тип магнитопроводов можно выбрать из дропдацна, там много вариантов


  1. domix32
    27.01.2026 07:47

    В демке определённо не хватает какого-нибудь дефолтного DXF


    1. mozg4d Автор
      27.01.2026 07:47

      да, я думаю когда руки дойдут еще одну статью уже с двигателем и файлом проекта создать, который можно бедет в солвере открыть, но вилимо не скоро(


  1. dinalt2006
    27.01.2026 07:47

    Красиво выглядит! Неясно, как задается схема обмотки в машине. Не хватает документации. Работа программистов - на отлично! Но пока что это инструмент "в себе". Редактор геометрии, редактор обмотки... Вот мне очень нужен подобный инструмент для расчета машины с пятифазным статором. И кстати, а что там у вас с ротором и его обмотками?
    А вообще - КРУТО, молодцы !


    1. mozg4d Автор
      27.01.2026 07:47

      по слоям в DXF. Например в DXF может быть два объекта copper. в одни подаете 5 ампер на квадратный мм, в другой - минус 5.
      Сплайны рисуются во внешнем софте. Обмотки могут быть какие угодно у статора или у ротора

      предполагается что документация не нужна, т.к. можно ссылку ИИ закинуть, обн объяснит


      1. rPman
        27.01.2026 07:47

        У меня слово солвер ассоциируется с решателем, который в контексте статьи, подбирал бы конфигурацию ротора двигателя с целью максимизации какого-либо иного параметра, в предельных значениях... как именно это второй вопрос, я смутно догадываюсь что способ задания предельных значений изменений задают в больших продуктах буквально кодом, а точнее определяют саму модель параметрически (по типу как в scad) и задают уже логику подбора параметров.

        Логичное продолжение вашего проекта в этом направлении

        p.s. проект вообще крутой, переход к 3d (даже с ограничениями) сделает его еще круче


  1. sergerz
    27.01.2026 07:47

    Шикарная вещь мирового уровня, но документация никакая. Пишите документацию, будет вам счастье и успех. Причем надо описывать со всех сторон. Чтобы любой профан пришел и посчитал. Не напишете - умрет без развития. А такому продукту развитие нужно обязательно. У нас с рассчетами двигателей очень плохо.


  1. JerryI
    27.01.2026 07:47

    Потрясающе!

    Было бы здорово увидеть статью про то как оно работает и архитектуру в стиле старого Хабра :)


  1. vlados_s_s
    27.01.2026 07:47

    Добрый день, успехов в дальнейшем развитии программы!

    Я для своих нужд, к слову, использую COMSOL MULTYPHYSICS. Там уже есть встроенные библиотеки с физикой (в том числе электромагнетизм), создан е геометрии, сетки, настройка решателей (алгоритмов), разнообразная постобработка, вроде как даже есть возможность обработка внутренней нейронкой. А если не хватает встроенных библиотек с физикой, можно всегда использовать библиотеку PDE (part differential equations), которую как раз использую я для моделирования сверхпроводниковой электроники. В статике считаю 3D сетку на 10 миллионов элементов за несколько часов на своем обычном ноутбуке итерационным решателем.

    В общем, можете ещё COMSOL попробовать, если не пробовали. В динамике там тоже можно моделировать спокойно.