Официальный форум российского программного комплекса T-FLEX PLM


Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
Расчёт пружины
 
Уважаемые участники Форума.
Участвуя в дискуссии о производительности и параметрических возможностях T-FLEX CAD, я решил подготовить краткую статью, связанную с темой обсуждения.
http://isicad.ru/ru/articles.php?article_num=15302#6082
Это пример параметрической модели пружины и её оптимизации как встроенным решателем T-FLEX CAD, так и внешней программой.

В примере будут затронуты вопросы создания параметрической модели пружины, оформление её как фрагмента с переменными для удобства использования в сборках, расчёт жёсткости пружины, расчёт диаметра проволоки пружины для обеспечения требуемой жёсткости как при помощи встроенного механизма оптимизации T-FLEX CAD, так и при помощи подключения внешней программы оптимизации. Большинство вопросов будут известны пользователям T-FLEX CAD, но некоторые могут быть интересны даже для «продвинутых» пользователей.

1. Создание модели пружины
Пружина сжатия создаётся в T-FLEX CAD одной операцией. Операция пружина позволяет задать все параметры, такие как длина, диаметр, диаметр проволоки, шаг, количество витков, поджатие пружины на концах и шлифовку. Для создания модели пружины в модели требуется наличие всего лишь двух 3D узлов, задающих направление и длину.
Для удобства управления параметрами пружины зададим большинство значений в свойствах операции при помощи переменных. Переменные сделаем внешними с тем, чтобы управлять ими из сборки. Создание конфигураций заранее конечно не требуется.
1.png (65.64 КБ)
 
Получилась модель пружины.
2.png (58.11 КБ)
 
При помощи команды «Элементы управления» создадим страницу диалога с требуемыми переменными. Теперь все параметры задаются в удобном для пользователя виде:
3.png (17.7 КБ)
 
Создадим локальную систему координат привязки для вставки пружины в сборку, и она готова к использованию. Понятно, что количество комбинаций параметров, которые могут быть установлены в сборке, в общем случае, бесконечно.
4.png (150.41 КБ)
 
2. Расчёт пружины
Создаём КЭА-задачу статического анализа в модуле "T-FLEX Анализ". В ней выбираем тело пружины, закрепляем один конец, прилагаем силу, например, 1Н к другому концу, задаём свойства материала.

Возможно, данную задачу можно решить и в модуле экспресс-анализа, входящего в состав T-FLEX CAD 3D, но в нём меньше возможностей для получения результатов.
5.png (47.8 КБ)
51.png (10.59 КБ)
Изменено: Сергей Козлов - 28.06.2012 17:52:43
 
Рассчитываем задачу, получаем эпюру перемещений. Можем расставить метки, соответствующие значениям перемещений в нужных точках. Максимальное значение отображается автоматически. При необходимости можем показать и любые другие параметры результатов расчёта.
На второй картинке показаны настройки решателя.
55.PNG (47.33 КБ)
56.png (38.02 КБ)
Изменено: Сергей Козлов - 28.06.2012 14:18:06
 
3. Оптимизация пружины. Для примера ставим задачу оптимизации: «Рассчитать диаметр проволоки пружины, при котором максимальное перемещение при заданной нагрузке в 1Н составит 5 мм.
Для решения задачи нам требуется задать критерий оптимизации. Это будет максимальное значение перемещения. Для этого в команде «Измерение» создадим переменную, получающую максимальное значение перемещения после расчёта задачи. Кликаем правой кнопкой в КЭА задачу и выбираем «Измерить». Выбираем из списка требуемый параметр и создаём переменную, которая будет получать значение при помощи функции get. Данная функция получает с объекта значение нужного нам свойства.
6.png (27.42 КБ)
Изменено: Сергей Козлов - 28.06.2012 17:53:00
 
Видим созданную переменную и её значение в редакторе переменных.
7.png (43.97 КБ)
Изменено: Сергей Козлов - 28.06.2012 17:53:27
 
Теперь нам требуется подобрать значение переменной d таким образом, чтобы значение переменной Displacement получило требуемое нам значение.
3А. Решение задачи встроенной командой «Оптимизация»
Входим в команду «Оптимизация», создаём новую задачу, в качестве целевой переменной задаём Displacement, в качестве управляющей d. Задаём пределы изменения для переменной d.
В процессе оптимизации будет производиться как пересчёт 3D модели, так и расчёт задачи. Задаём эти опции.
По сути задача является одномерной, так что выбираем наиболее простой алгоритм дихотомии.
8.png (42.83 КБ)
Изменено: Сергей Козлов - 28.06.2012 17:53:44
 
Теперь в диалоге со списком задач жмём «Выполнить»
9.png (21.46 КБ)
 
и через минуту получаем результат:
10.png (31.69 КБ)
Изменено: Сергей Козлов - 28.06.2012 18:10:15
 
Задача решена. Перемещение равно 5 мм:
11.png (177.03 КБ)
Изменено: Сергей Козлов - 28.06.2012 17:56:20
 
3Б. Расчёт диаметра проволоки внешней программой оптимизации
Данный пункт распишем подробнее, так как именно он являлся предметом дискуссии.
Как известно, T-FLEX CAD имеет API, позволяющий автоматизировать взаимодействие пользователя с моделью. На этом API можно разрабатывать приложения, например на языке программирования C#. Для решения данной задачи я воспользовался уже имеющимся приложением, предназначенным для обеспечения взаимодействия внешних программ с открытой в T-FLEX CAD моделью. В данном случае для обмена сообщениями и внешней программой используется системный механизм DDE (dynamic data exchange). Данный механизм предполагает наличие двух программных компонентов, работающих в разных процессах – клиента и сервера. Роль сервера будет выполнять приложение TFDDEServer, написанное на OpenAPI T-FLEX CAD. Оно принимает сообщения от сторонних приложений-клиентов в виде команд и выполняет данные команды, изменяя параметры текущей модели, пересчитывая модель, производя расчёт конечно-элементных задач и т.д. Результаты расчёта сохраняются во внешний текстовый файл простого формата. Вот пример такого файла:
L 100

d 1.495361328125

Coils 10

D 20

Displacement 5.00087118148804

F 1000

Клиентское приложение представляет собой очень маленькую программу TFDDEClient, которая запускается, принимая команды в командной строке и передавая эти параметры серверу для выполнения. Вот список команд, которое может выполнять данное приложение:
12.png (49.16 КБ)
 
Нужно отметить, что довольно устаревший механизм DDE был выбран только потому, что под рукой оказалось готовое приложение, которое можно было сразу использовать. С большим успехом вместо DDE можно использовать такие более современные «традиционные» механизмы для передачи параметров между процессами, как Marshalling и WCF. При необходимости, я могу передать исходные тексты проектов TFDDEServer и TFDDEClient любому желающему.
Теперь, используя связку этих двух приложений (TFDDEServer – TFDDEClient) можно использовать внешнюю программу оптимизации параметров, запускающую программу TFDDEClient через командную строку.

Команда может быть например такой:
TFDDEClient.exe VAR: d=1
Данная команда устанавливает значение переменной «d» в значение 1.
В качестве внешней программы оптимизации, я использовал собственную программу, написанную специально для данного случая. Она реализует одномерный алгоритм дихотомии. Понятно, что для многомерного случая её использовать нельзя, но в качестве простого примера вполне подойдёт. Исходные тексты проекта для Visual Studio 2010 приложены ниже.
При запуске программы появляется диалог с настройками оптимизации. После нажатия «Выполнить» выполняются итерации расчёта.
13.png (29.37 КБ)
Изменено: Сергей Козлов - 28.06.2012 18:03:07
 
И находится нужное нам решение.
14.png (13.51 КБ)
Изменено: Сергей Козлов - 28.06.2012 18:14:32
 
Результаты соответствуют условиям задачи.
15.png (172.74 КБ)
Изменено: Сергей Козлов - 28.06.2012 18:15:54
 
Вот архив с исходным текстом внешней программы оптимизации. Желающие могут попробовать сделать её многомерной или подключить вместо неё свою программу.
 
Вот модель с расчётом и настроенной оптимизацией
 
Спасибо. Весьма познавательный пример. Неплохо было бы разместить его (да и еще ряд примеров) в разделе "Обучающие материалы", а то со временем затеряется.
Изменено: B_S_V - 29.06.2012 09:33:10
Страницы: 1