Jump to content

Выгрузка результатов


Recommended Posts

fakemade

Здравствуйте. Такой вопрос. Мне необходимо подсчитать некоторое значение такого вида - uTKu, где u-вектор перемещений элемента, а K соответственно матрица жесткости элемента. Так вот вопрос в том, каким образом мне получить перемещения элемента. 

Что я попробовал и узнал. Я могу получить эту величину через стандартный get. В таком случае возникает проблема с нумерацией. Как я узнал, в Ansys есть 3 типа нумерации. Первый - пользовательский, это то, что мы видим на экране. Второй - внутренний, это то, как видит нумерацию Ansys(убирает ненужные узлы из общей системы). И третий тип - нумерация решателя, это использование внутренней нумерации, а также возможные оптимизации в ходе решения, которые эту нумерацию еще раз возможно тасуют. Ту величину, что мне нужно посчитать, мне надо посчитать по каждому элементу и просуммировать. С помощью DMAT, SMAT и линейного решателя я сразу могу получить величину всей модели, вытащив общий вектор U и общую матрицу К, в таком случае их нумерация будет совпадать и умножаться будут нужные величины. Но дальше мне нужно использовать именно элементные величины и вот команды для получения вектора перемещений для конкретного элемента с нужной нумерацией я не нашел, пока что метод проб не работает и с помощью DMAT и SMAT я не могу получить вектор для конкретного элемента. Может есть те, кто занимался таким вопросом и сможет помочь. Спасибо.

Link to post
Share on other sites


UnPinned posts
Борман

@fakemade

Есть команда *EXPORT

Посмотрите, может быть как то сможете ее использовать. Но хз.

 

Link to post
Share on other sites
fakemade
9 часов назад, Борман сказал:

@fakemade

Есть команда *EXPORT

Посмотрите, может быть как то сможете ее использовать. Но хз.

 

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

Link to post
Share on other sites
Борман

@fakemade

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

Link to post
Share on other sites
AlexKaz

Посмотрите ANSYS programmers manual, м.б. это и возможно через Fortran.

Link to post
Share on other sites
ДОБРЯК
2 часа назад, fakemade сказал:

так как Ansys перенумеровывает все узлы по своему для оптимизации, соответственно и матрицы жесткости элементов составлены с учетом нумерации

Вряд ли Ansys перенумеровывает узлы. Когда вы работаете с матрицами, то вы работаете со степенями свободы.

Перенумеровывают степени свободы. 

Вам нужно найти соответствие номеров степеней свободы номерам узлов. 

Link to post
Share on other sites
Fedor
Цитата

 Первый - пользовательский

Для пользователя он и последний. Нет смысла давать ему внутреннюю кухню :) 

Выбрать элемент и узлы его и все дела. 

Цитата

Вряд ли Ansys перенумеровывает узлы

Тут могут быть для подхода .  Я обычно оптимизировал как раз по узлам граф связности. Просто ради скорости.  Но можно и по степеням свободы. Кстати у Джорджа и Лю была статья где рассматривались как раз матрицы из матриц и их решение. Обычно клетки связанные с узлом полностью заполненные и можно решать сразу относительно них как элементов глобальной матрицы.  Вместо деления будет обращение небольших матриц, а в остальном алгоритмы такие же будут.   Когда-то Икрамов присылал мне список статей на эту тему, если найду письмо, то сфотографирую и размещу   :)   

Link to post
Share on other sites
ДОБРЯК
1 час назад, Fedor сказал:

Я обычно оптимизировал как раз по узлам граф связности.

Вы оптимизировали нумерацию степеней свободы. Но использовали для этого узлы. Скорее всего это был алгоритм Катхилла - Макки. Это ленточный алгоритм. 

Оптимизация это перестановка строк и столбцов в матрице.  Размер матрицы >= количеству узлов. Вы переставляли не одну строку-столбец, а сразу блок степеней свободы (3 или 5 или 6... степеней свободы).

Ansys для оптимизации использует Метис. Это уже оптимизация заполняемости.

 

Link to post
Share on other sites
Fedor

https://en.wikipedia.org/wiki/Graph_partition   граф то не меняется при любых оптимизациях, насколько понимаю... 

Цитата

Это ленточный алгоритм

скорее уж профильный... 

 

https://en.wikipedia.org/wiki/METIS   

Edited by Fedor
Link to post
Share on other sites
Fedor

https://en.wikipedia.org/wiki/Sparse_matrix#Compressed_sparse_column_(CSC_or_CCS)   тема потихоньку развивается, коды новые появляются :)

Интересно, существует ли разреженное представление блочных разреженных матриц  на SQL ?  

Цитата

Ansys для оптимизации использует Метис

Может и что-то свое учитывая кто покупает Ansys , как тут писали... 

Edited by Fedor
Link to post
Share on other sites
Flint_ru
21 час назад, fakemade сказал:

Здравствуйте. Такой вопрос. Мне необходимо подсчитать некоторое значение такого вида - uTKu, где u-вектор перемещений элемента, а K соответственно матрица жесткости элемента. Так вот вопрос в том, каким образом мне получить перемещения элемента. 

Что я попробовал и узнал. Я могу получить эту величину через стандартный get. В таком случае возникает проблема с нумерацией. Как я узнал, в Ansys есть 3 типа нумерации. Первый - пользовательский, это то, что мы видим на экране. Второй - внутренний, это то, как видит нумерацию Ansys(убирает ненужные узлы из общей системы). И третий тип - нумерация решателя, это использование внутренней нумерации, а также возможные оптимизации в ходе решения, которые эту нумерацию еще раз возможно тасуют. Ту величину, что мне нужно посчитать, мне надо посчитать по каждому элементу и просуммировать. С помощью DMAT, SMAT и линейного решателя я сразу могу получить величину всей модели, вытащив общий вектор U и общую матрицу К, в таком случае их нумерация будет совпадать и умножаться будут нужные величины. Но дальше мне нужно использовать именно элементные величины и вот команды для получения вектора перемещений для конкретного элемента с нужной нумерацией я не нашел, пока что метод проб не работает и с помощью DMAT и SMAT я не могу получить вектор для конкретного элемента. Может есть те, кто занимался таким вопросом и сможет помочь. Спасибо.

Посмотрите в Help "Degree of Freedom Ordering"  Там есть примеры, как конвертировать из internal в user ordering и наоборот или solver.

Не подойдет?

Link to post
Share on other sites
ДОБРЯК
23 часа назад, Fedor сказал:

скорее уж профильный... 

Строка умножается на коэффициент и складывается с другой строкой. Ленточный алгоритм.

23 часа назад, Fedor сказал:

Может и что-то свое учитывая кто покупает Ansys

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

Предобуславливатель купили, символьную и численную факторизацию купили.

  Это давно уже бизнес, поэтому и покупают, чтобы делать деньги, а не писать что-то своё.

  • Нравится 1
Link to post
Share on other sites
Fedor

Почти все матричные алгоритмы используют скалярные произведения.  :)   

Link to post
Share on other sites
ДОБРЯК
37 минут назад, Fedor сказал:

Почти все матричные алгоритмы используют скалярные произведения.  :)   

Если алгоритм решения работает со строками матрицы, то это ленточный алгоритм, если со столбцами, то профильный.

 

Link to post
Share on other sites
Fedor

Я привык к другой терминологии. Лента когда ненулевые по диагоналям. Вот как тут  https://openlibrary.org/works/OL15166836W/Справочник_алгоритмов_на_языке_АЛГОЛ   определяется.  Ну а профильные это как в алгоритмах https://studizba.com/files/show/djvu/303-1-dzhordzh-lyu--chislennoe-reshenie-bol.html этой книжки ... 

 

 

"то это ленточный алгоритм, если со столбцами, то профильный" при LDLt  один раз как со столбцами, другой раз как со строками . У Джорджа и Лю все расписано :) 

Link to post
Share on other sites
ДОБРЯК
5 часов назад, Fedor сказал:

Лента когда ненулевые по диагоналям.

:biggrin:

Разреженная матрица заполняется при решении.

Пример разреженной матрицы. 

22.png

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

23.png

Если матрицу хранить по столбцам, то заполняемости при решении не будет. Это и есть профильный способ оптимизации и хранения матриц.

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

Link to post
Share on other sites
Fedor

Это как обычно ваша интерпретация общепринятых концептов :)   

 

image.png

https://translated.turbopages.org/proxy_u/en-ru.ru.8dc4425f-65b4dd52-5e292b15-74722d776562/https/en.wikipedia.org/wiki/Band_matrix

 

Edited by Fedor
Link to post
Share on other sites
ДОБРЯК

L+1 - ширина ленты матрицы. Я дал такое же определение.

А теперь напишите чему равен профиль для этой матрицы. Дайте определение профиля.

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

 

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    No registered users viewing this page.




  • Сообщения

    • KorovnikovAV
    • Ветерок
      Погасить слой SURFACES, сохранить состояние видимости.
    • AlexVv
      Возможно ввести новые данные есть. Но раньше расчет усилия происходил автоматически.
    • Guhl
      Не. Датчика на шпинделе нету. Но если поставить его, то резьбу ЧПУ должно резать даже если рукой шпиндель крутить.
    • Genius123
      Доброго времени суток, стал с недавних пор пользователем этой чудо программы. Проблема такова, при запуске УП (Сделана в SolidCam), при выполнении первого перехода все работает замечательно, но когда станок подъезжает к следующему переходу обработки , то он начинает обрабатывать деталь в воздухе, пока не нажмешь кнопку "Паузы", потом вновь нажимаем старт появляется окно "preperational positioning" и нажимаем ок, то станок отпускается на нужную высоту к заготовке и начинает обрабатывать, если не нажимать кнопку паузы, то станок все последующие переходы кроме первого орабатывает в воздухе
    • Viktor2004
    • Fixedes
      А во время нарезки резьбы? Такого к сожалению тоже не встречал.   Local Var, Mach variables но я с ними не работал, поэтому не подскажу
    • Salmon
    • meganom
      Может кто подскажет как на чертеже отключить видимость резьбы, чтоб было видно только отверстие, но не контур резьбы. Именно локально для определенного чертежа, а не вообще глобально отключить ее отображение . Просто есть детали на которые делаются DXF контур и отправляется для подготовки ЧПУ программы обработки, и вот этот контур резьбы сильно напрягает. Хотелось бы как то отключать его видимость 
    • Бестолковый
      https://help.solidworks.com/2022/english/SolidWorks/sldworks/HIDD_OPTIONS_DIMS_New_dim.htm и далее по тексту если Вы об этом ;)
×
×
  • Create New...