» »

Программы для создания 3d физических процессов. Анализируйте, прогнозируйте поведение и оптимизируйте инженерные расчётные проекты с помощью пакета COMSOL Multiphysics ®. Геометрическое моделирование и взаимодействие со сторонними CAD-пакетами

23.01.2020

Но пока не затрагивали одну из самых интересных и важных тем - испытания спроектированных устройств, как виртуальные, так и реальные.

Выдержит ли корпус удар в трех плоскостях? Деформируется при экстремальных температурах? Хорошо ли продумана внутренняя система охлаждения электроники? Ответить на эти вопросы можно двумя способами. Первый: провести испытания готового устройства (прототипа) в реальной жизни и по результатам отправить его на доработку. Второй: провести виртуальное моделирование физических процессов и скорректировать проблемные места на этапе разработки. Это гораздо быстрее и эффективнее, так можно получить рабочие прототипы уже на первой итерации. Давайте рассмотрим оба варианта на реальных проектах…

1. Проверка надёжности крепления корпуса

Начнем с устройства для отправки сигнала SOS, которое встраивается в салон автомобиля. По условиям технического задания оно должно крепиться на защелках, использовать винты запрещено.

Рис. 1. SOS-устройство в салоне авто (лицевая сторона)

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

Вот так устройство выглядит с внутренней стороны приборной панели авто:


Рис. 2. Корпус SOS-устройства (внутренняя сторона)

Что же произойдет при столкновении? Используется довольно мощное крепление, посмотрите на защелки. Нужно ли моделировать?

Расчет решено сделать в 2 этапа, чтобы учесть усилие прижима защелок:

  1. Вставка устройства в панель в салоне автомобиля.
  2. Столкновение.
На двух анимированных иллюстрациях ниже показан процесс защелкивания в различных ракурсах. В жизни это будет немного иначе, но при моделировании желательно максимально упростить задачу в разумных пределах. Главное - учесть преднатяг защелки.


Рис 3. Моделирование процесса защелкивания (снаружи)


Рис 4. Моделирование процесса защелкивания (в разрезе)

Из анимации видно, что защелка сначала проходит сквозь деталь. Такую хитрость можно и даже нужно делать при упрощении задачи. В нашем расчете контакт деталей был включен позже.


Рис. 5. Вылет устройства из приборной панели в результате ДТП

После таких результатов на изделие уже смотришь совсем другим взглядом. Обратите внимание, какой образован рычаг в конструкции.

На этом проекте всё уже было готово к производству прототипов. Поджимали сроки. Никто не ожидал таких результатов. По итогам моделирования мы вовремя приостановили производство прототипов. На одну итерацию стало меньше, сэкономлены деньги заказчика.

Мы внесли изменения в конструкцию, в результате которых вылет устройства стал значительно меньше за счет подбора новых компонентов на плате. Также было скорректировано крепление нижней части устройства.

Ещё один пример моделирования на этом проекте - расчеты на дефекты литья пластмассы (литьё под давлением). Они позволили подобрать оптимальные материалы и сделать детали более технологичными. В результате был получен отчет о возможных утяжинах при запуске изделия в серийное производство. Также проведен расчет на остаточные напряжения в отливке.

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

2. Пластиковые корпусы: дефекты отливки

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


Рис. 6

А это - результаты моделирования его отливки (с лицевой стороны изделия проблем не видно):


Рис. 7

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

Как видите, результаты моделирования не совпадают на все 100 процентов с реальностью, но общая картина все-таки схожа. В серийном производстве одна отливка может отличаться от другой, это нормальное явление.

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

Ещё один пример. На рисунке ниже показана анимация заливки изделия. В расчете учитывалась литниковая система, система охлаждения пресс-формы ну и сама пресс-форма:


Рис. 8

Дефект отливки выделен красным цветом:


Рис. 9

Этот дефект чётко виден и на фотографии:


Рис. 10

3. Краш-тесты электроники

Испытания на прочность - популярная тема в обзорах планшетов и смартфонов. Часто на форумах обсуждают, будет ли работать устройство после случайного падения.

Мы тоже проводим такие тесты в процессе разработки потребительской электроники. Возьмём в качестве примера шлюз Bluetooth:


Рис. 11

При падении с высоты 1,2 метра устройство должно быть в первозданном состоянии, это было одно из требований заказчика. В техническом задании были отмечены возможные проблемные места, в которых устройство могло сломаться. Мы провели 7 расчетов и получили положительные результаты. На рисунке ниже показан один из результатов расчетов:


Рис. 12

После изготовления прототипов мы ещё раз провели испытания, на этот раз - падение устройства в реальной жизни. Результаты - снова положительные.

Стоит учитывать, что фрезерованные прототипы по физическим характеристикам немного отличаются от серийных корпусов, которые производятся методом отливки - при фрезеровке в изделии остаются остаточные напряжения. Однако и в этом случае лучше произвести испытания.

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


Рис. 13

Вторым этапом стал заказ новых прототипов.

После испытаний на устойчивость к падению устройство, тем не менее, стало ломаться, чего никто не ожидал:


Рис. 14

Такой вот ценный опыт. Хорошо, что корпус еще не был запущен в серийное производство.

Решено провести повторное моделирование и сравнить результаты с практикой. И действительно, программа показала это новое проблемное место:


Рис. 15

Решено убрать отдельные ребра. После очередного моделирования получены положительные результаты.

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

[?!] Вопросы и комментарии приветствуются. На них будет отвечать наш инженер-конструктор Максим Кендысь, эксперт по моделированию изделий из пластмассы и металла в системах инженерного анализа (CAE).

Программы для 3D-моделирования могут помочь превратить некоторые идеи в красивые модели и прототипы, которые впоследствии можно будет использовать в самых разных целях. Эти инструменты позволяют создавать модели с нуля, независимо от уровня подготовки. Некоторые 3D редакторы достаточно просты, так что их в короткие сроки освоит даже новичок. Сегодня 3D-модели используются в самых различных сферах: это кино, компьютерные игры, дизайн интерьера, архитектура и многое другое.

Выбор оптимального программного обеспечения для моделирования часто бывает трудным, так как непросто найти программу, в которой был бы весь необходимый функционал. FreelanceToday предлагает вашему вниманию 20 бесплатных программ для 3D-моделирования.

Daz Studio – это мощное и при этом совершенно бесплатное программное обеспечение для трехмерного моделирования. Нельзя сказать, что это легкий для освоения инструмент – новичкам придется долго изучать возможности программы. Создатели программы позаботились о пользовательском опыте, но удобство Daz Studio удастся оценить далеко не сразу. Одной из фишек программы является создание 3D-изображений с GPU ускорением во время рендеринга, что дает возможность создавать очень реалистичные модели. Также в Daz Studio имеется поддержка создания сцен и функционал для анимации моделей.

Доступно для : Windows, | OS X

Бесплатное программное обеспечение для 3D-моделирования Open SCAD создано для серьезного проектирования (промдизайн, интерьеры, архитектура). Художественные аспекты создателей программы интересовали в гораздо меньшей степени. В отличие от других программ подобного плана, Open SCAD не является интерактивным инструментом – это 3D-компилятор, который отображает детали проекта в трехмерном виде.

Доступно для: Windows, | OS X | Linux

Программа AutoDesk 123D – это большой набор различных инструментов для CAD и 3D-моделирования. С помощью программы можно проектировать, создавать и визуализировать практически любые 3D-модели. AutoDesk также поддерживает технологию 3D-печати. Основной сайт AutoDesk 123D имеет несколько сателлитов, где можно найти множество интересных бесплатных 3D-моделей, с которыми можно поэкспериментировать или просто использовать их в личных целях.

Доступно для: Windows, | OS X | IOS |

Meshmixer 3.0 позволяет проектировать и визуализировать 3D-конструкции путем объединения двух или нескольких моделей всего за несколько простых шагов. В программе для этого имеется удобная функция «cut and paste», то есть можно вырезать из модели нужные части и вставлять их в другую модель. Программа даже поддерживает лепку – пользователь может создавать виртуальную скульптуру, формируя и уточняя поверхность точно так же, как если бы он лепил модель из глины. И все это в режиме реального времени! Программа поддерживает 3D-печать, готовые модели полностью оптимизированы для отправки в принтер.

Доступно для : Windows, | OS X

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

Доступно для : Windows

Бесплатная программа 3D Crafter предназначена для 3D-моделирования в режиме реального времени и создания анимаций. Основная фишка данного редактора – интуитивно понятный подход «drag-and-drop». Сложные модели могут быть построены с помощью простых форм, программа поддерживает скульптурное моделирование и 3D-печать. Это один из самых удобных инструментов для создания анимации.

Доступно для : Windows

PTC Creo – это комплексная система, созданная специально для инженеров, работающих в сфере машиностроения, а также для конструкторов и технологов. Программа также будет полезна для дизайнеров, которые создают продукты, используя методы автоматизированного проектирования. Прямое моделирование позволяет создавать конструкции по существующим чертежам или использовать программу для визуализации новых идей. Изменения в геометрию объекта можно внести очень быстро, что существенно ускоряет процесс работы. Программа, в отличие от предыдущих, платная, однако есть 30-дневный триал и бесплатная версия для преподавателей и студентов.

Доступно для : Windows

Бесплатное программное обеспечение LeoCAD – это система автоматизированного проектирования виртуальных моделей LEGO. Есть версии для Windows, Mac OS и Linux. Программа может стать хорошей альтернативой Lego Digital Designer (LDD), так как имеет простой интерфейс, поддерживает ключевые кадры и работает в режиме анимации. Именно поддержка анимации выделяет LeoCAD на фоне других программ подобного плана.

Доступно для : Windows, | OS X | Linux

Программа VUE Pioneer поможет создать трехмерную модель для визуализации ландшафта. Софт может быть полезен для продвинутых пользователей, которые ищут удобные инструменты для рендеринга. Pioneer позволяет создавать удивительные 3D-ландшафты благодаря наличию большого количества пресетов и обеспечивает прямой доступ к Cornucopia 3D -контенту. С помощью программы можно создать множество эффектов освещения.

Доступно для : Windows, | OS X

Netfabb – это не только программа для просмотра интерактивных трехмерных сцен, с его помощью можно анализировать, редактировать и изменять 3D-модели. Программа поддерживает 3D-печать и является самым легким и простым инструментом с точки зрения установки и использования.

Доступно для : Windows, | OS X | Linux

Бесплатная программа NaroCad – это полноценная и расширяемая система автоматического проектирования, основанная на технологии OpenCascade, и работающая на платформах Windows и Linux. В программе имеется весь необходимый функционал, имеется поддержка основных и усовершенствованных операций трехмерного моделирования. Функции программы могут быть расширены с помощью плагинов и программного интерфейса.

Доступно для : Windows, | Linux

LEGO Digital Designer позволяет строить трехмерные модели с использованием виртуальных кирпичиков (блоков) конструктора LEGO. Результат можно экспортировать в различные форматы и продолжить работу в других 3D-редакторах.

Доступно для : Windows, | OS X

Бесплатную программу ZCAD можно использовать для создания 2D и 3D- чертежей. Редактор поддерживает различные платформы и обеспечивает большие углы обзора. Наличие множества удобных инструментов, позволяет решить большинство проблем, связанных с моделированием трехмерных объектов. Пользовательский интерфейс программы простой и понятный, что существенно облегчает процесс рисования. Готовый проект можно сохранить в формате AutoCAD и других популярных 3D-форматах.

Доступно для : Windows, | Linux

Бесплатная версия Houdini FX, Houdini Apprentice, пригодится студентам, художникам и любителям, создающим некоммерческие проекты трехмерных моделей. Программа обладает несколько урезанным, но вместе с тем достаточно широким функционалом и тщательно продуманным пользовательским интерфейсом. К недостаткам бесплатной версии можно отнести водяной знак, который отображается на 3D-визуализации.

Доступно для : Windows, | OS X | Linux

Приложение для создания рабочих дизайн-листов позволяет создавать достаточно подробные 3D-модели. Создатели программы позаботились о функциях, позволяющих устранять проблемные места путем изменений и дополнений к существующему дизайну. Также с помощью DesignSpark можно быстро изменить концепцию 3D-продукта. Программа поддерживает прямую технику моделирования и 3D-печать моделей.

Доступно для : Windows

FreeCAD – это параметрический 3D-моделлер, разработанный для создания реальных объектов любого размера. Пользователь может легко изменить дизайн, используя историю модели и изменяя отдельные параметры. Программа мультиплатформенная, умеет считывать и записывать различные форматы файлов. FreeCAD позволяет создавать собственные модули и затем использовать их в дальнейшей работе.

Доступно для : Windows, | OS X | Linux

Бесплатная программа Sculptris откроет перед пользователями окно в захватывающий мир 3D. Особенностями Sculptris являются удобная навигация и простота использования. Программу легко освоит даже новичок, у которого нет никакого опыта в цифровом искусстве или трехмерном моделировании. Процесс работы построен так, что можно забыть о геометрии и просто создавать модель, при этом бережно расходуя ресурсы компьютера.

Доступно для: Windows, | Linux

Программу MeshMagic можно использовать для 3D-рендеринга файлов, а также для создания двухмерных объектов или их конвертации в 3D. Программное обеспечение имеет интуитивно понятный интерфейс и может использоваться для решения самых разных задач. В настоящее время Mesh Magic поддерживает только Windows. Результат сохраняется в популярном формате STL, который можно открыть и редактировать в большинстве онлайн и оффлайн инструментов для 3D-моделирования.

Доступно для : Windows

Open Cascade – это комплект разработчика программного обеспечения, предназначенный для создания приложений, связанных с 3D-CAD. Он включает в себя специальные, разработанный сообществом C++ библиотеки классов, которые можно использовать для моделирования, визуализации и обмена данных, а также для быстрой разработки приложений.

Доступно для : Windows, | OS X | Linux

Весьма занимательная программка, позволяющая моделировать всевозможные механические системы и ситуации в двухмерном пространстве, простыми движениями мыши.

Шекспир когда-то сказал: "Весь мир - театр, а люди в нем - актеры". Это если исходить с позиции художественного образа мышления. Если же посмотреть на мир с научной точки зрения, то можно перефразировать великого драматурга: "Весь мир - природа, а люди в ней объекты":). А при чем тут природа? Да при том, что по-гречески "природа" будет "физис", а отсюда и название главной науки обо всем сущем - "физика".

Физические явления окружают нас с самого раннего детства, и у каждого ребенка рано или поздно возникают разнообразные вопросы: "Почему светит солнце? Почему идет дождь? Почему бутерброд всегда падает на пол, а не зависает в воздухе? :)". И по мере взросления ребенок, пытаясь получить ответы на эти вопросы, методом "научного тыка" познает окружающий его мир и законы его существования. Но не всегда такие эксперименты заканчиваются безболезненно.

Именно для того, чтобы можно было безопасно, для ребенка и для окружающего его мира:), смоделировать любой физический процесс, я рекомендовал бы использовать программу Phun .

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

Установка программы для моделирования механических процессов Phun

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

Сразу оговорюсь, если у Вас старый компьютер с довольно слабенькой видеокартой, то Phun в таком случае будет заметно притормаживать. Хотя заявлена поддержка (правда более ранней 4-ой версии) видеокарт с 32 МБ памяти, на моем компьютере со 128 МБ программа иногда подвисала довольно ощутимо. Я думаю, что оптимальный вариант будет около 256 МБ.

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

Русификация программы

Перед нами окно программы с приветственным проектом:

Программа по умолчанию - английская, но в пятой версии появилась и русская локализация. Чтобы русифицировать Phun, заходим в меню "File" и в пункте "Change language" выбираем опцию "Russian". Готово!

Теперь, когда мы имеем дело с русской версией, рассмотрим элементы управления программой.

Интерфейс программы

В самом верху Вы видите немного стилизированную, но привычную по другим приложениям строку меню.

Меню "Файл" позволяет настроить сцену под проект (сохранить, очистить), загрузить или создать новую сцену, сменить язык, переключить вид, проверить обновления, скачать дополнительные сцены или купить полную версию (хотя зачем, если и бесплатной хватает с головой).

Меню "Инструменты", "Управление" и "Контекстное меню" позволяют скрыть или отобразить соответствующие вкладки программы.

Меню "Инструменты":

Здесь собраны все те приспособления, при помощи которых мы будем создавать нужные нам для эксперимента объекты. Вся панель разделена на три зоны: в первой зоне инструменты для перемещения объектов, во второй - для рисования, а в третьей - для вставки механизмов. Рассмотрим их по порядку.

Первую панель открывает инструмент "Перемещение", который позволяет нам перемещать любые объекты в горизонтальной и вертикальной плоскостях. Инструмент "Рука" также служит для перемещения, однако может выполнять свою функцию в уже запущенном эксперименте.

Инструмент "Вращение" нужен для вращения объектов вокруг их центра тяжести или крепления. Инструмент "Масштаб" позволяет изменять размеры любых объектов. "Нож" - предназначен для разделения любого предмета на части, причем работает он и в режиме подготовки эксперимента и в режиме проигрывания.

В панели рисования первый инструмент - "Полигон". С его помощью Вы сможете нарисовать любую фигуру "от руки" или ровный многоугольник (для этого зажмите и удерживайте клавишу Shift, чтобы нарисовать ровную линию). Инструмент "Кисть" позволяет рисовать любые линии, фигуры и объекты вручную.

"Прямоугольник" помогает нам нарисовать четкий прямоугольник или квадрат (также зажав Shift), а с инструментом "Круг" Вы всегда сможете начертить ровный круг. Далее идут три специализированных инструмента "Шестерня", "Плоскость" и "Цепь". Все они соответственно создают свои объекты.

Третья панель также предназначена для создания специальных объектов со своими физическими характеристиками. Здесь находятся инструменты "Пружина", "Крепление", "Ось" и "След". Назначение первых троих, я думаю, объяснять не надо, а последний служит для отображения инерционного следа от движения какого-либо объекта, к которому прикреплен инструмент (см. пример Cycloid).

Меню "Управление":

Здесь мы видим нечто похожее на пульт управления стандартным плеером. Здесь есть кнопки реверса (отменить/повторить) и "плей" (соответственно, запустить эксперимент).

Далее находится ползунок масштаба и две кнопки навигации. Масштаб в Phun можно изменять тремя способами: передвигая ползунок, зажав левую кнопку мыши на кнопке (+/-) или колесом мыши, когда она находится над полем эксперимента. Кнопка со стрелками служит для перемещения по рабочему полю. Зажмите ее и, удерживая, перемещайте мышь. Хотя, по-моему, удобнее делать то же самое, зажав кнопку мыши в любом месте на рабочем поле.

Две последние кнопки панели управления служат для создания невесомости и безвоздушного пространства. По умолчанию гравитация соответствует настоящему значению в 9,8 м/с 2 , а сила сопротивления воздуха - 1. Но эти значения легко можно изменить в "Настройках" в подменю "Симулятор". Там же можно установить скорость симуляции (по умолчанию - 1).

Перед тем, как приступать к созданию собственных сцен, следует рассмотреть еще одну немаловажную деталь управления - контекстное меню.

В Phun контекстное меню у Вас всегда на виду, и Вы легко можете изменять свойства любого объекта в реальном времени. В самом общем виде контекстное меню отображается для рабочей области. Здесь мы можем настроить вид сцены, добавить один из готовых объектов на выбор и изменить цвет фона.

Для каждого нового объекта функции будут расширяться, дополняясь такими как клонирование, действия, выбор материала, настройка контуров и т. д.

Теперь мы готовы к работе с Phun, и для начала предлагаю провести небольшой эксперимент, чтобы проверить срабатывает ли в программе закон всемирного тяготения.

Первый эксперимент

Для этого в меню "Файл" выберем "Новая сцена" и нарисуем горизонтальную плоскость (0°). Теперь на одинаковой высоте подвесим два тела побольше и поменьше (для интереса маленький шарик я сделал из метала, а большой из стекла).

Все готово для эксперимента, осталось только нажать "Пуск!". Как видим, оба тела с одинаковой скоростью полетели вниз. Единственным минусом оказалось то, что стеклянный шар не разбился:((ненатурально получилось). В остальном же тела повели себя так, как и должны были бы настоящие их аналоги.

Более сложные манипуляции с телами и жидкостями

Усложним эксперимент, добавив вместо твердой поверхности, на которую приземляются тела, воду.

Поставим два столба (прямоугольника) и жестко их закрепим. Это будет емкость для нашей воды. Теперь "нальем" в нее саму воду. Чтобы создать воду, достаточно нарисовать между столбами большой предмет, а затем в его контекстном меню выбрать в "Действиях" пункт "Превратить в воду".

Готово! Можно запускать эксперимент.

Готовые сцены

Обзор программы был бы неполным, если бы я не упомянул, что для Phun существует множество готовых сцен. Несколько из них доступно, если нажать в меню "Файл" кнопку "Открыть сцену". Если же Вам и этого мало, Вы всегда можете скачать из Интернета тысячи других. Достаточно в том же меню "Файл" выбрать пункт "Скачать еще сцены".

Желаю Вам творческих успехов и всегда удачных экспериментов:)!

И традиционно, флеш-игра, также основанная на некоторой доле физики. Здесь мы управляем магнитным погрузчиком, основная задача которого - погрузить в машину все ящики. Но чем дальше, тем сложнее это сделать.

P.S. Разрешается свободно копировать и цитировать данную статью при условии указания открытой активной ссылки на источник и сохранения авторства Руслана Тертышного.

P.P.S. Если Вам понравилась эта программа, то советую обратить внимание на еще одну не менее интересную. Программа Начала Электроники позволит Вам моделировать реальные процессы в разнообразных электрических схемах, которые Вы же и создаете!

Для некоторых примеров задач Коши можно легко найти ответ аналитическим методом, но в сложных симуляциях аналитический подход может оказаться очень сложным. Поэтому попробуем найти способ поиска аппроксимированного решения задачи.

Для примера возьмём простую задачу Коши.
Дано: и . Найти аппроксимированное решение для .

Рассмотрим задачу с геометрической точки зрения и посмотрим на значение и касательную в точке . Из того, что нам дано, имеем и


Мы пока не знаем как выглядит , но мы знаем что возле точки , значение близко к касательной. Теперь постараемся вычислить для маленького значения , воспользовавшись касательной. Для начала попробуем .


Если расписать, то мы приближаем значение следующим образом:

Так, для .
​​
Теперь мы можем продолжить вычислять для других точек. Хотя, конечно, мы нашли не точное значение , но если наше приближённое значение очень близко к точному, то аппроксимированная касательная тоже будет очень близка к действительной!

$$display$$\begin{aligned}​f(t,y(t))&​=y(t)\\​f(0.5,1.5)​&=1.5​​\end{aligned}$$display$$



Далее, продвинемся ещё на единиц вправо по касательной.


Повторим процесс и получим угловой коэффициент касательной :


Процедуру можно проводить рекурсивно и для этого выведем формулу:

Данный численный метод решения дифференциальных уравнений называется методом Эйлера. Для общего случая шаг x += v * delta_t .

В нашем конкретном случае, пошаговое решение выглядит так:

Используя данный метод, результаты удобно представлять в виде таблицы:

Оказывается, у нашей задачи есть красивое аналитическое решение :


Как вы думаете, что произойдёт, если в методе Эйлера уменьшить шаг?


Разница между аппроксимированным и точным решениями уменьшается с уменьшением ! К тому же, вдобавок к уменьшению шага, можно использовать и другие методы численного интегрирования, которые могут привести к лучшему результату, такие как метод средних прямоугольников , метод Рунге-Кутты и метода Адамса .

Настало время кодить!

С таким же успехом как мы вывели математическое представление описания симуляции, мы можем написать реализацию симуляции программно.

Т.к. я больше всего знаком с JavaScript, и мне нравится ясность, которую добавляют в код аннотации, все примеры будут написаны на TypeScript .

А начнём мы с версии, в которой подразумевали, что это одномерный массив чисел, прямо как в нашей математической модели.

Function runSimulation(// y(0) = y0 y0: number, // dy/dt(t) = f(t, y(t)) f: (t: number, y: number) => number, // показывает текущее состояние симуляции render: (y: number) => void) { // Шаг вперёд на 1/60 секунды за тик // Если анимация будет 60fps то это приведёт к симуляции в рельном времени const h = 1 / 60.0; function simulationStep(ti: number, yi: T) { render(yi) requestAnimationFrame(function() { const fi = f(ti, yi) // t_{i+1} = t_i + h const tNext = ti + h // y_{i+1} = y_i + h f(t_i, y_i) const yNext = for (let j = 0; j < y.length; j++) { yNext.push(yi[j] + h * fi[j]); } simulationStep(tNext, yNext) } } simulationStep(0, y0) }
Оперировать с одномерными массивами не всегда удобно, можно абстрагировать функции сложения и умножения процесса симуляции в интерфейс и получить краткую обобщённую реализацию симуляции используя TypeScript Generics .

Interface Numeric { plus(other: T): T times(scalar: number): T } function runSimulation>(y0: T, f: (t: number, y: T) => T, render: (y: T) => void) { const h = 1 / 60.0; function simulationStep(ti: number, yi: T) { render(yi) requestAnimationFrame(function() { // t_{i+1} = t_i + h const tNext = ti + h // y_{i+1} = y_i + h f(t_i, y_i) const yNext = yi.plus(f(ti, yi).times(h)) simulationStep(yNext, tNext) }) } simulationStep(y0, 0.0) }
Положительной стороной данного подхода является возможность сконцентрироваться на основе симуляции: что именно эту симуляцию отличает от любой другой. Используем пример симуляции с двумя объектами, упомянутыми выше:

Код симуляция двух объектов

// Состояние симуляции двух объектов в один тик времени class TwoParticles implements Numeric { constructor(readonly x1: Vec2, readonly v1: Vec2, readonly x2: Vec2, readonly v2: Vec2) { } plus(other: TwoParticles) { return new TwoParticles(this.x1.plus(other.x1), this.v1.plus(other.v1), this.x2.plus(other.x2), this.v2.plus(other.v2)); } times(scalar: number) { return new TwoParticles(this.x1.times(scalar), this.v1.times(scalar), this.x2.times(scalar), this.v2.times(scalar)) } } // dy/dt (t) = f(t, y(t)) function f(t: number, y: TwoParticles) { const { x1, v1, x2, v2 } = y; return new TwoParticles(// dx1/dt = v1 v1, // dv1/dt = G*m2*(x2-x1)/|x2-x1|^3 x2.minus(x1).times(G * m2 / Math.pow(x2.minus(x1).length(), 3)), // dx2/dt = v2 v2, // dv2/dt = G*m1*(x1-x1)/|x1-x2|^3 x1.minus(x2).times(G * m1 / Math.pow(x1.minus(x2).length(), 3))) } // y(0) = y0 const y0 = new TwoParticles(/* x1 */ new Vec2(2, 3), /* v1 */ new Vec2(1, 0), /* x2 */ new Vec2(4, 1), /* v2 */ new Vec2(-1, 0)) const canvas = document.createElement("canvas") canvas.width = 400; canvas.height = 400; const ctx = canvas.getContext("2d")!; document.body.appendChild(canvas); // Текущее состояние симуляции function render(y: TwoParticles) { const { x1, x2 } = y; ctx.fillStyle = "white"; ctx.fillRect(0, 0, 400, 400); ctx.fillStyle = "black"; ctx.beginPath(); ctx.ellipse(x1.x*50 + 200, x1.y*50 + 200, 15, 15, 0, 0, 2 * Math.PI); ctx.fill(); ctx.fillStyle = "red"; ctx.beginPath(); ctx.ellipse(x2.x*50 + 200, x2.y*50 + 200, 30, 30, 0, 0, 2 * Math.PI); ctx.fill(); } // Запускаем! runSimulation(y0, f, render)


Если подшаманить с числами, то можно получить симуляцию орбиты Луны!Симуляция орбиты Луны, 1 пикс. = 2500 км. 1 сек. симуляции равна 1 дню на Земле. Пропорция Луны к Земле увеличена в 10 раз

Столкновения и ограничения

Приведённая математическая модель и в самом деле симулирует физический мир, но в некоторых случаях метод численного интегрирования, к сожалению, ломается.

Представьте симуляцию прыгающего на поверхности мячика.

Состояние симуляции можно описать так:

Где это высота мяча над поверхностью, а его скорость. Если отпустить мяч с высоты 0.8 метра, то получим:

Если изобразить график , то получим нечто следующее:


Во время падения мяча производная функции вычисляется достаточно легко:

С ускорением свободного падения, .

Но что произойдёт, когда мяч коснётся поверхности? То, что мяч достиг поверхности мы можем узнать по . Но при численном интегрировании, в один момент времени мяч может находиться над поверхностью, а уже в следующий под ней: .

Можно было бы решить эту задачу путём определения момента столкновения . Но даже если этот момент найти, как определить ускорение так, чтобы оно менялось в противоположную сторону.

Можно, конечно, определить столкновение в ограниченном промежутке времени и применить другую силу на этот отрезок времени , но гораздо легче определить дискретную константу ограничивающую симуляцию.

А чтобы уменьшить величину проницания мячом поверхности, можно за один тик вычислять сразу несколько шагов симуляции. В совокупности с этим, код нашей симуляции изменится так:

Function runSimulation>(y0: T, f: (t: number, y: T) => T, applyConstraints: (y: T) => T, iterationsPerFrame: number, render: (y: T) => void) { const frameTime = 1 / 60.0 const h = frameTime / iterationsPerFrame function simulationStep(yi: T, ti: number) { render(yi) requestAnimationFrame(function () { for (let i = 0; i < iterationsPerFrame; i++) { yi = yi.plus(f(ti, yi).times(h)) yi = applyConstraints(yi) ti = ti + h } simulationStep(yi, ti) }) } simulationStep(y0, 0.0) }
И теперь уже можно написать код нашего прыгающего мячика:

Код прыгающего мячика

const g = -9.8; // m / s^2 const r = 0.2; // m class Ball implements Numeric { constructor(readonly x: number, readonly v: number) { } plus(other: Ball) { return new Ball(this.x + other.x, this.v + other.v) } times(scalar: number) { return new Ball(this.x * scalar, this.v * scalar) } } function f(t: number, y: Ball) { const { x, v } = y return new Ball(v, g) } function applyConstraints(y: Ball): Ball { const { x, v } = y if (x <= 0 && v < 0) { return new Ball(x, -v) } return y } const y0 = new Ball(/* x */ 0.8, /* v */ 0) function render(y: Ball) { ctx.clearRect(0, 0, 400, 400) ctx.fillStyle = "#EB5757" ctx.beginPath() ctx.ellipse(200, 400 - ((y.x + r) * 300), r * 300, r * 300, 0, 0, 2 * Math.PI) ctx.fill() } runSimulation(y0, f, applyConstraints, 30, render)


Внимание разработчикам!

Хоть у такой модели есть свои плюсы, она не всегда ведёт к производительным симуляциям. По мне, такой фреймворк полезен для представления поведения симуляции, даже если в ней происходит много чего лишнего.

До скорого!

Я нахожу пересечение математики, физики и программирования чем-то действительно впечатляющим. Создание работающей симуляции, её запуск и рендеринг это некий особенный вид чего-то из ничего .

На всё изложенное меня вдохновили материалы лекции SIGGRAPH, точно так же как и в симуляции жидкости . Если хотите найти более исчерпывающую информацию о вышеизложенном, то взгляните на материалы курса SIGGRAPH 2001 «Введение в физическое моделирование» . Привожу ссылку на курс 1997 года, т.к. Pixar похоже удалила версию 2001.

Только зарегистрированные пользователи могут участвовать в опросе. , пожалуйста.

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

Пользователи COMSOL Multiphysics ® свободны от жестких ограничений, которые обычно свойственны пакетам для моделирования, и могут управлять всеми аспектами модели. Вы можете творчески подходить к моделированию и решать задачи, сложные или невозможные при обычном подходе, сочетая произвольное число физических явлений и задавая пользовательские описания физических явлений, уравнений и выражений через графический пользовательских интерфейс (GUI).

Точные мультифизические модели учитывают широкий диапазон рабочих условий и большой набор физических явлений. Таким образом, моделирование помогает понимать, проектировать и оптимизировать процессы и устройства с учетом реальных условий их работы.

Последовательный рабочий процесс моделирования

Моделирование в COMSOL Multiphysics ® позволяет исследовать в одной программной среде явления электромагнетизма, механики конструкций, акустики, гидродинамики, теплопередачи и химические реакции, а также любые другие физические явления, которые можно описать системами дифференциальных уравнений в частных производных. Вы можете сочетать в одной модели все эти физические явления. Графический пользовательский интерфейс COMSOL Desktop ® предоставляет доступ к полноценной интегрированной программной среде для моделирования. Какие бы устройства и процессы вы ни изучали, процесс моделирования будет логичным и последовательным.

Геометрическое моделирование и взаимодействие со сторонними CAD-пакетами

Операции, последовательности и выборки

Базовый пакет COMSOL Multiphysics ® содержит инструменты геометрического моделирования для создания элементов геометрии на основе твердых тел, поверхностей, кривых и булевых операций. Итоговая геометрия определяется последовательностью операций, каждая из которых может получать входные параметры, что облегчает редактирование и параметрические исследования мультифизических моделей. Связь между определением геометрии и настройками физики двусторонняя - любое изменение геометрии автоматически приводит к соответствующим изменениям в связанных настройках модели.

Любые геометрические объекты можно объединять в выборки (selections) для дальнейшего использования в определении физики и граничных условий, построении сеток и графиков. Кроме того, последовательность операций можно использовать, чтобы создать параметризованную геометрическую заготовку (geometry part), которую потом можно сохранить в Библиотеке частей и повторно использовать во многих моделях.

Импорт, обработка, дефичеринг и виртуальные операции

Импорт всех стандартных CAD и ECAD файлов в COMSOL Multiphysics ® поддерживается при наличии модулей Импорт данных из CAD и Импорт данных из ECAD соответственно. Модуль Проектирование расширяет набор геометрических операций, доступных в COMSOL Multiphysics ® . Модули Импорт данных из CAD и Проектирование предоставляют возможность исправлять геометрии и удалять некоторые лишние детали (операции Defeaturing и Repair). Модели на основе поверхностных сеток, например, формат STL, можно импортировать и преобразовывать в геометрические объекты с помощью базовой платформы COMSOL Multiphysics ® . Операции импорта работают так же, как и все остальные геометрические операции - в них можно использовать выборки и также ассоциативность при параметрических и оптимизационных исследованиях.

В качестве альтернативы операциям Defeaturing и Repair программный пакет COMSOL ® включает также так называемые виртуальные операции, которые позволяют исключить влияние ряда геометрических артефактов на конечно-элементную сетку, в частности, вытянутых и узких границ, которые понижают точность моделирования. В отличие от удаления деталей при дефичеринге, виртуальные операции не изменяют кривизну или точность геометрии, но позволяют получить более чистую сетку.

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

  • Примитивы
    • Блок, сфера, конус, тор, эллипсоид, цилиндр, спираль, пирамида, шестигранник
    • Параметрическая кривая, параметрическая поверхность, многоугольник, полигоны Безье, интерполяционная кривая, точка
  • Операции Extrude (Вытяжка), Revolve (Разворот), Sweep и Loft (создать тело по траектории или по сечениям 1
  • Булевы операции: объединение, пересечение, разность и разделение
  • Трансформации: создание массива, копирование, отражение, перемещение, вращение и масштабирование
  • Преобразования:
    • Преобразовать в замкнутое объемное тело, поверхность, кривую
    • Midsurface (Средняя поверхность) 1 , Thicken (Утолщение) 1 , Split (разделение на составляющие)
  • Chamfer (Скос) и Fillet (Cкругление) 2
  • Виртуальные геометрические операции
    • Remove details (Автоматическое применение виртуальных операций)
    • Игнорировать: вершины, ребра и границы
    • Сформировать совокупный объект: из ребер, границ или областей
    • Свернуть ребро или границу
    • Объединить вершины или ребра
    • Mesh control (Контроль сетки): вершины, ребра, границы, области
  • Гибридное моделирование: твердые тела, поверхности, кривые и точки
  • Рабочие плоскости (Work Plane) с двухмерным геометрическим моделированием
  • Импорт из CAD и двусторонняя интеграции с помощью модулей расширения Импорт данных из CAD, Проектирование и продуктов группы LiveLink™
  • Исправление и удаление деталей из CAD-моделей с помощью модулей расширения Импорт данных из CAD, Проектирование и продуктов группы LiveLink™
    • Cap faces (Закрыть грань), Delete (Удаление)
    • Скругление, Избавление от коротких ребер, узких граней, границ и выступов
    • Detach faces (Выделение домена из границ), Knit to solid, Repair (Избавление от зазоров, Обработка и исправление геометрии)

1 Требует наличия модуля Проектирование

2 Данные операции в 3D требуют наличия модуля Проектирование

Эта рама велосипеда была спроектирована в программном пакете SOLIDWORKS ® , и может быть в несколько кликов импортирована в COMSOL Multiphysics ® . Можно также импортировать геометрические модели из других сторонних CAD-пакетов или создавать их с помощью встроенных геометрических инструментов COMSOL Multiphysics ® .

Инструменты COMSOL Multiphysics ® позволяют изменять и исправлять сторонние CAD-геометрии (для соответствия КЭ-расчету), как в данном случае в моделе рамы велосипеда. При желании вы могли бы создать эту геометрию с нуля в COMSOL Multiphysics ® .

конечно-элементная сетка для проекта рамы велосипеда. Теперь она готова к расчету в пакете COMSOL Multiphysics ® .

В COMSOL Multiphysics ® был выполнен механический расчет модели рамы велосипеда. Анализ результатов может подсказать, какие изменения внести в конструкцию рамы в стороннем CAD-пакете для дальнейшей работы.

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

Программный пакет COMSOL ® содержит готовые физические интерфейсы для моделирования самых разных физических явлений, в том числе распространенных междисциплинарных мультифизических взаимодействий. Физические интерфейсы - это специализированные пользовательские интерфейсы для отдельной инженерной или исследовательской области, которые позволяют досконально управлять моделированием исследуемого физического явления или явлений - от задания исходных параметров модели и дискретизации до анализа результатов.

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

Платформа COMSOL Multiphysics ® включает в себя большой набор базовых физических интерфейсов, например, интерфейсы для описания механики твердых тел, акустики, гидродинамики, теплопередачи, переноса химических веществ и электромагнетизма. Расширяя базовый пакет дополнительными модулями COMSOL ® , вы получаете набор специализированных интерфейсов для моделирования частных инженерных задач.

Список доступных физических интерфейсов и представлений материальных свойств

Физические интерфейсы

  • Electric currents (Электрические токи)
  • Electrostatics (Электростатика)
  • Heat transfer in solids and fluids (Теплопередача в твердых телах и текучих средах)
  • Joule heating (Джоулев нагрев)
  • Laminar flow (Ламинарный поток)
  • Pressure acoustics (Скалярная акустика)
  • Solid mechanics (Механика твердого тела)
  • Transport of diluted species (Перенос растворенных веществ)
  • Magnetic Fields, 2D (Магнитные поля, в 2D)
  • Дополнительные специализированные физические интерфейсы содержатся в модулях расширения

Материалы

  • Изотропные и анизотропные материалы
  • Неоднородные материалы
  • Материалы с пространственно-неоднородными свойствами
  • Материалы со свойствами, изменяющимися во времени
  • Материалы с нелинейными свойствами, зависящими от какой-либо физической величины

Модель термопривода в COMSOL Multiphysics ® . Ветвь Heat Transfer (Теплопередача) раскрыта и показывает все соответствующие физические интерфейсы. Для этого примера активированы все модули расширения, поэтому доступно для выбора множество физических интерфейсов.

Прозрачное и гибкое моделирование на основе пользовательских уравнений

Программный пакет для научных и инженерных исследований и инноваций должен быть не просто средой для моделирования с предопределенным и ограниченным набором возможностей. Он должен предоставлять пользователям интерфейсы для создания и настройки описаний собственных моделей на основе математических уравнений. Пакет COMSOL Multiphysics ® обладает такой гибкостью - он содержит интерпретатор уравнений, обрабатывающий выражения, уравнения и другие математические описания перед созданием численной модели. Вы можете добавлять и настраивать выражения в физических интерфейсах, легко связывая их друг с другом для моделирования мультифизических явлений.

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

Список доступных функций при использовании моделирования на основе пользовательских уравнений (equation-based modeling)

  • Дифференциальные уравнения в частных производных (PDE) в слабой форме
  • Произвольные Лагранж - Эйлеровы методы (ALE) для задач c деформированной геометрией и подвижными сетками
  • Алгебраические уравнения
  • Обыкновенные дифференциальные уравнения (ODE)
  • Дифференциальные алгебраические уравнения (DAE)
  • Анализ чувствительности (для оптимизации требуется дополнительный модуль Оптимизация)
  • Вычисление криволинейных координат

Модель волнового процесса в оптическом волокне на основе уравнения Кортевега - де Фриза. Дифференциальные уравнения в частных производных и обыкновенные дифференциальные уравнения можно задавать в программном пакете COMSOL Multiphysics ® в коэффициентной или математической матричной форме.

Автоматизированное и ручное построение сетки

Для дискретизации модели и построения сетки программный пакет COMSOL Multiphysics ® использует различные численные методики и техники, зависящие от исследуемого в модели типа физики или сочетания физических явлений. Наиболее часто используемые методы дискретизации основаны на методе конечных элементов (полный список методов приведен в разделе «Решатели» на этой странице). Соответственно, алгоритм построения сетки общего назначения создает сетку с элементами того типа, который подходит для этого численного метода. Например, применяемый по умолчанию алгоритм может использовать произвольную тетраэдрическую сетку или сочетать ее с методом построения погранслойных сеток, комбинируя элементы различных типов и обеспечивая более быстрые и точные расчеты.

Операции измельчения сетки (mesh refinement), повторного построения или адаптивного построения сетки могут быть выполнены в процессе решения или специального этапа исследования для сетки любого типа.

Список доступных опций при построении сетки

  • Произвольная сетка на основе тетраэдров
  • Сетка протяжкой (Swept) на основе призматических и гексаэдрических элементов
  • Погранслойная сетка
  • Тетраэдрические, призматические, пирамидальные и гексаэдрические объемные элементы
  • Произвольная треугольная сетка для трехмерных поверхностей и двухмерных моделей
  • Свободная четырехугольная сетка и структурная 2d сетка (типа Mapped) для трехмерных поверхностей и двухмерных моделей
  • Операция копирования сетки
  • Виртуальные геометрические операции
  • Разбиение сеток на области, границы и ребра
  • Импорт сеток, созданных в другом программном обеспечении

Построенная в автоматическом режиме неструктурированная тетраэдральная сетка для геометрии обода колеса.

Построенная в полуавтоматическом режиме неструктурированная сетка с погранслоями для геометрии микросмесителя.

Сетка, созданная в ручном режиме, для модели электронного компонента на печатной плате. Конечно-элементное разбиение сочетает в себе тетраэдрическую сетку, треугольную сетку на поверхности и сетку, построенную протяжкой в объём.

Поверхностная сетка модели позвонка была сохранена в формате STL, импортирована в COMSOL Multiphysics ® и преобразована в геометрический объект. На нее была наложена автоматизированная неструктурированная сетка. Геометрия в формате STL предоставлена Марком Йоменом (Mark Yeoman) из компании Continuum Blue, Великобритания.

Исследования и их последовательности, параметрические расчеты и оптимизация

Типы исследований

После выбора физического интерфейса COMSOL Multiphysics ® предлагает несколько различных типов исследований (или анализа). Например, при исследовании механики твердого тела программный пакет предлагает нестационарные исследования, стационарные исследования и исследования на собственные частоты. Для задач вычислительной гидродинамики будут предложены только нестационарные и стационарные исследования. Вы можете свободно выбирать и другие типы исследований для проводимого вами расчёта. Последовательности этапов исследования определяют процесс решения и позволяют выбирать переменные модели, которые необходимо рассчитать на каждом этапе. Решения с любых предыдущих этапов исследования можно использовать как входные данные для следующих этапов.

Параметрический анализ, оптимизация и оценка

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

Модель спирального статического смесителя была создана с помощью Построителя моделей COMSOL Multiphysics ® .