ModelingToolkit.jl — это фреймворк на языке программирования Julia для описания, анализа и преобразования математических моделей, ориентированный на системный, уравнений-основанный и композиционный подход. Он предоставляет средства для формирования моделей в виде алгебраических и дифференциальных уравнений, блочно-композиционных представлений и графов связей между компонентами, а также для выполнения символических преобразований, упрощения и манипулирования системами уравнений.
Проект разработан как часть экосистемы Julia для научных вычислений и моделирования и интегрируется с численными решателями, генераторами кода и инструментами для оптимизации и анализа. В основе архитектуры лежит унификация символического описания физических и инженерных систем с возможностью автогенерации эффективного численного кода и передачи упрощённых систем в специализированные интеграторы и оптимизаторы.
- Композиционное моделирование: поддержка композиции подсистем и блочных соединений, позволяющая строить сложные системы из повторно используемых компонентов.
 - Уравнений-основанные модели: представление моделей в форме дифференциальных, алгебраических и дифференциально-алгебраических уравнений (ODE/DAE), а также систем с индексами и смешанными типами уравнений.
 - Каузальные и акаузальные представления: возможность описывать как каузальные (направленные) модели для имитации потоков вычислений, так и акаузальные уравненные описания, пригодные для преобразований и решения совместно с анализаторами консистентности.
 - Символические преобразования: операции подстановки, упрощения, факторизации, выделения состояний, символического дифференцирования и преобразования уравнений для упрощения и приведения к удобным для численной интеграции формам.
 - Модельная редукция и упрощение систем: алгоритмы для устранения алгебраических переменных, определения зависимостей, снижения порядка и устранения избыточных уравнений с целью получения численно устойчивых систем.
 - Автогенерация кода: генерация эффективных численных функций и правых частей для передачи в интеграторы, включая оптимизированный код на Julia и возможность таргетирования внешних бэкэндов.
 - Интеграция с решателями: совместимость с численными библиотеками для решения ODE/DAE и задач оптимизации, что обеспечивает переход от символического описания к практическому численному моделированию.
 - Поддержка параметрического анализа: работа с параметрами модели, их зависимостями и чувствительностью, что позволяет выполнять параметрические исследования и оптимизацию.
 - Инструменты для тестирования и отладки моделей: средства для проверки согласованности уравнений, раннего выявления проблем с индексами DAE и диагностики потенциальных источников численной неустойчивости.
 - Расширяемость и совместимость: модульная архитектура, позволяющая расширять набор компонент, добавлять пользовательские трансформации и интегрировать сторонние библиотеки символических и численных методов.