Автоматизированное проектирование в CAD, анализ в FEA и оптимизация

Я хотел бы оптимизировать проект, чтобы оптимизатор вносил изменения в файл САПР, который затем анализировался в FEM, а результаты возвращались в оптимизатор для внесения изменений в проект на основе FEM, пока решение не сойдется к оптимум (масса, жесткость, прочее).

Вот что я себе представляю:

  • создайте чертеж детали в программе САПР (например, CATIA).
  • запустить код оптимизатора (например, fmincon) из языка программирования (например, Python). Параметры оптимизатора — это параметры CAD-модели (углы, длины, толщины и т. д.).
  • оптимизатор оценивает определенный дизайн (набор параметров). Язык программирования вызывает программное обеспечение САПР и соответствующим образом изменяет дизайн.
  • язык программирования извлекает некоторую информацию (например, массу).
  • затем язык программирования извлекает файл STEP и передает его решателю FEA (например, Abaqus), где выполняется предопределенный анализ.
  • язык программирования считывает результаты (например, максимальное напряжение ван Мизеса).
  • результаты CAD и FEM (например, масса и напряжение) передаются в оптимизатор, который соответствующим образом изменяет конструкцию.
  • пока не сходится.

Я знаю, что это существует в рамках закрытой архитектуры (например, isight), но я хочу использовать открытую архитектуру, в которой оптимизатор вызывается из открытого языка программирования (в идеале Python).

Итак, наконец, вот мои вопросы:

  • Можно ли сделать так, как я описал или иначе?
  • Ссылки, учебники, пожалуйста?
  • Какое программное обеспечение вы рекомендуете для программирования, CAD и FEM?

person Gulango    schedule 01.08.2015    source источник


Ответы (1)


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

  1. Тщательно сформулируйте задачу минимизации (минимизируйте f(x), где x — вектор, содержащий... переменные, с учетом... ограничений и т. д.)
  2. Обзор и определение отдельных инструментов, представляющих интерес
  3. Как будет работать каждый инструмент? Входные переменные? Выходные переменные?
  4. Наметьте в матрице структуры проекта (также известной как диаграмма N ^ 2), как инструменты будут передавать информацию (переменные) друг другу.
  5. Какой оптимизатор лучше всего подходит для вашей задачи (MDF?)
  6. Определите подходящие допуски сходимости

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

  • OpenMDAO (http://openmdao.org/): современная платформа MDO, разработанная Исследовательским центром Гленна НАСА. Учебники хорошо помогают вам начать работу. Обратите внимание, что каждая «дисциплина» в задаче Селлара, второй задаче в учебнике, будет включать вызов вашего инструмента (инструментов) вместо уравнения в закрытой форме. Пока вы следуете структуре классов OpenMDAO, ему все равно, что представляет собой каждая дисциплина, и он рассматривает ее как черный ящик; ему все равно, что происходит между вводом и выводом.
  • Scipy и numpy: два пакета научной и числовой оптимизации

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

  • Abaqus имеет API Python (http://www.maths.cam.ac.uk/computing/software/abaqus_docs/docs/v6.12/pdf_books/SCRIPT_USER.pdf)
  • Если вам нужно использовать программу, не имеющую API, вы можете автоматизировать графический интерфейс с помощью пакета Python win32com или Pywinauto (автоматизация графического интерфейса).
  • Для FEM/FEA я использовал как MSC PATRAN, так и MSC NASTRAN в предыдущих проектах, поскольку они имеют интерфейсы командной строки (читай: с ними легко взаимодействовать через Python).
  • HyperSizer также имеет Python API
  • Установите Pythonxy (https://code.google.com/p/pythonxy/) и используйте среда разработки Spyder Python (в комплекте)
  • CATIA можно автоматизировать с помощью win32com (быстрый поиск в Google, как это сделать: http://code.activestate.com/recipes/347243-automate-catia-v5-with-python-and-pywin32/)

Примечание: чтобы дать вам какие-то сроки разработки, то, что вы просите, вероятно, займет не менее двух недель.

Надеюсь, это поможет.

person Manuel J. Diaz    schedule 03.08.2015
comment
Это так, большое спасибо. Какое программное обеспечение САПР вы рекомендуете из стандартных (CATIA v5, v6, NX, SolidWorks или AutoCAD)? - person Gulango; 03.08.2015
comment
Не особо то и другое. Я говорю, используйте тот, с которым вы больше всего знакомы, у которого есть API. Кроме того, имейте в виду, что это звучит так, как будто вам нужна CAD только для параметрического аспекта FEM, и вам не нужны тонны других наворотов, с которыми обычно приходят громкие имена. Вы когда-нибудь слышали об OpenVSP? Он был написан НАСА и прекрасно работает с CalculiX, программой генератора FEM. У них обоих есть хорошие API. См. слайды 14 и 15 из openvsp. org/wiki/lib/exe/ для получения дополнительной информации. - person Manuel J. Diaz; 03.08.2015