Перейти к публикации

Скольжение узла по балке


Рекомендованные сообщения

Добрый день, коллеги!

 

Может быть кто-то сможет подсказать - буду очень благодарен!

 

В общем, есть балка построенная балочными элементами (на рисунке сиреневая, вытянутая вдоль z).

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

Балка может достаточно далеко уезжать вдоль z, да и в остальных осях перемещаться и поворачиваться способна. Да и сама рамка вокруг может деформироваться.

 

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

 

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

Пошёл через рестарт (ANTYPE,,REST) и через рождение и смерть элементов: узел пружин соединён с узлом балки через MPC. Построена вторая группа пружин (с малой жёсткостью), но она не присоединяется к балке. На каждом шаге решения узел из второй группы ищет ближайший к нему узел на балке. Если узел из первой группы удаляется выше некоторого критерия, то узел из второй группы перемещается к найденному ближайшему узлу балки ( "D,,," - шаг решения 2).

Затем на третьем шаге решения убиваем MPC первой группы и создаём MPC-связь второй группы пружин с балкой и задаю второй группе нужные жёсткости.

Всё хорошо, но вот только обе группы возвращаются в нулевое состояние (ненагруженное положение) и MPC-связь второй группы как-будто бы не создаётся.

 

Просьба подсказать идеи решения задачи.

Или прокомментировать моё решение - что может быть не так с точки зрения логики.

 

 

07.png


 

08.png

Ссылка на сообщение
Поделиться на других сайтах


UnPinned posts

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

Ссылка на сообщение
Поделиться на других сайтах

Добрый вечер!

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

Второй путь применяю, а в первом что значит "физически передвинуть свободный узел пружины к требуемому узлу балки"? Во втором случае делал через D, а в первом?

Что-то подобное делал и с CP, код ниже (в файле).

 

Суть полученного: новый СР не создаётся, а старый не удаляется.

_08_05_04.txt

Изменено пользователем Avksent
Ссылка на сообщение
Поделиться на других сайтах

некоторые комманды работают только в /Prep7

физически =сделать так чтобы координаты узлов совпадали.

Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, dronm сказал:

некоторые комманды работают только в /Prep7

Ну, они в коде реализованы в Prep7:

 

! Убиваем CP и создаём новый
FINISH  
/PREP7 
CP, , ALL, N6,Nbeam
CPDEL ,1
ALLSEL, ALL, ALL

 

первым CP создали новую связь

вторым CP - убили старую связь

 

но переходя обратно в /sol и решая задачу с рестартом эти строки игнорируются.

2 часа назад, dronm сказал:

физически =сделать так чтобы координаты узлов совпадали.

Так, собственно с помощью команды D мы и двигаем координаты. Но это "второй вариант".

Как можно ещё совместить координаты?

Ссылка на сообщение
Поделиться на других сайтах

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

Ссылка на сообщение
Поделиться на других сайтах

Кстати, если еще добавить скалярное произведение равное нулю, то получим условие присоединения в произвольной точке, не обязательно в узле :)

Ссылка на сообщение
Поделиться на других сайтах
4 hours ago, Avksent said:

Ну, они в коде реализованы в Prep7:

 

! Убиваем CP и создаём новый
FINISH  
/PREP7 
CP, , ALL, N6,Nbeam
CPDEL ,1
ALLSEL, ALL, ALL

 

первым CP создали новую связь

вторым CP - убили старую связь

 

но переходя обратно в /sol и решая задачу с рестартом эти строки игнорируются.

Так, собственно с помощью команды D мы и двигаем координаты. Но это "второй вариант".

Как можно ещё совместить координаты?

я ж не виноват что код не корректен, я дал идею - за воплощение идеи в жизнь я не отвечаю

после CP, , ALL, N6,Nbeam, создалось  6 CP, связалось по UX, UY, UZ,Rotx,Roty,Rotz, а удаляете только первую,

у ANSYS сложно с логикой нумерации, поэтому либо сами определяете номер CP, а потом его удалете, либо

удаляйте все

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

Рекомендация - прежде чем запускать код на исполнение, убедитесь что он работает адекватно в режиме ввода

команд в командную строку.

Хорошо бы читать описание команд, хотя бы бегло.

В общем не в коня корм

Ссылка на сообщение
Поделиться на других сайтах
22 часа назад, Avksent сказал:

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

Нельзя сразу создать 100500 пружин для всех вариантов? Лишние пружины на каждом шаге "убивать".

22 часа назад, Avksent сказал:

Всё хорошо, но вот только обе группы возвращаются в нулевое состояние (ненагруженное положение)

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

Сохранять в переменные/таблицы или во внешний текстовый файл, конечно.

22 часа назад, Avksent сказал:

Пошёл через рестарт (ANTYPE,,REST) и через рождение и смерть элементов

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

Изменено пользователем AlexKaz
Ссылка на сообщение
Поделиться на других сайтах
5 минут назад, AlexKaz сказал:

Нельзя сразу создать 100500 пружин для всех вариантов? Лишние пружины на каждом шаге "убивать".

 

Если через EKILL, то он для пружин не работает - уже думал о таком варианте.

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

 

COMBIN39 Assumptions and Restrictions
...

The element can not be deactivated with the EKILL command.

...

Ссылка на сообщение
Поделиться на других сайтах

Так выключенные элементы ресурсы решателя не расходуют...

С такими сложностями не проще передвигать узел на балке?

Ссылка на сообщение
Поделиться на других сайтах
7 минут назад, AlexKaz сказал:

Так выключенные элементы ресурсы решателя не расходуют...

Разве на каждом шагу проверки не будет проверяться условие включения/выключения для каждого из миллиона элементов? Не выгоднее ли сделать условие "вручную" проверки "одного" элемента и его перенастройки на нужном шагу?


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

Изменено пользователем Avksent
Ссылка на сообщение
Поделиться на других сайтах
Только что, Avksent сказал:

Разве на каждом шагу проверки не будет условие проверяться для каждого из миллиона элементов?

Как организуете алгоритм. Если номера заранее известны, то всё можно сделать быстро.

А ленивый перебор по условию явно не оптимальный вариант.

9 минут назад, AlexKaz сказал:

С такими сложностями не проще передвигать узел на балке?

 

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




×
×
  • Создать...