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

Изменение свойств по ходу расчета


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

Здравствуйте, уважаемые дамы и господа!

При решении задачи остывания металлического изделия (Transient Thermal) хотелось бы менять свойства материала после каждого шага решения в зависимости от текущей температуры (для разных выборок элементов они разные). Это уже было реализовано с помощью APDL макросов, но надо именно в WB. Попытки вставлять циклы *do…. solve *enddo в Commands как в ветку препроцессора, так и постпроцессора, потерпели крах. Реализуемо ли это в принципе? И если да, то как?

Заранее благодарен

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


Дмитрий Фролов

командную вставку в данном случае надо вставлять в препроцессор

WB генерирует входной файл по дереву модели сверху вниз, а затем в конце ставит команду SOLVE.

поэтому программируйте ход решения во вставке и завершайте её командой *ABBR,SOLVE,NOSOLVE, чтобы WB не запускал решение ещё раз по своим настройкам.

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

Изменено пользователем Дмитрий Фролов
Ссылка на сообщение
Поделиться на других сайтах
Axer , циклы в Commands Object работают легко и просто, просто вставляются) Если комментарии Дмитрия не помогут, попробуйте подробнее описать Ваш конкретный случай. Какие ошибки, предупреждения и т.д. А если проект небольшой, то и выложить можно.
Ссылка на сообщение
Поделиться на других сайтах

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

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

k3.rar

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

Axer , не могу сказать, что подробно посмотрел, "много букафф". Почему Вы свойства материала (блок команд MP...) делаете в цикле? Если я правильно понял Ваше желание, то перегретый материал Вы задаете один раз. И потом уже стартуете цикл, в котором ищете перегретые элементы, меняете им материал, продолжаете расчет.

А еще интересно: Вы ждете нагрева элементов, но CO в расчете про охлаждение. Не очень понятно.

Вы не фазовый переход случаем моделируете? Через энтальпию уже пробовали? Релаксация напряжений будет?

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

Спасибо!

Axer , не могу сказать, что подробно посмотрел, "много букафф". Почему Вы свойства материала (блок команд MP...) делаете в цикле? Если я правильно понял Ваше желание, то перегретый материал Вы задаете один раз. И потом уже стартуете цикл, в котором ищете перегретые элементы, меняете им материал, продолжаете расчет.

Первая задача -просто нагрев, вторая-охлаждение (27 шагов), третья - определение напряжений по первым 7 шагам второй задачи.

Количество нагретых элементов (выше 750) меняется по ходу охлаждения и я хочу каждый раз новому набору присваивать новый материал... Цикл я правильно написал?

А еще интересно: Вы ждете нагрева элементов, но CO в расчете про охлаждение. Не очень понятно.

Вы не фазовый переход случаем моделируете? Через энтальпию уже пробовали? Релаксация напряжений будет?

Да, фазовый, но очень грубо. Через энтальпию не пробовал, линк ссылку пожалуйста.

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

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

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

Вы же сказали, что в APDL задача решена. Здесь будет тоже самое.

Количество нагретых элементов (выше 750) меняется по ходу охлаждения и я хочу каждый раз новому набору присваивать новый материал... Цикл я правильно написал?

Лучший критерий правильности - получение верного результата.

Задачу Вы себе поставили, Вам и судить - правильно или нет.

Еще раз говорю, мне странно, что у Вас в цикле свойства материалов задаются. Почему так?

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

Вы же сказали, что в APDL задача решена. Здесь будет тоже самое.

в APDL цикл выглядит так

stepo=27

tstepo=1

*do,i,1,stepo

time,(tstepo*i)

....

solve

save

*enddo

при простом копировании в Solution Information пишется, что solve использовать нельзя

Еще раз говорю, мне странно, что у Вас в цикле свойства материалов задаются. Почему так?

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

Мой цикл теперь имеет следующий (команды МР выше вставил)

(В Analysis Settings/Step Controls у меня следующее:Number of Steps 27, каждый шаг 1 секунда)

stepo=27

tstepo=1

*do,i,1,stepo

nsel,s,temp,,750

esln,s,0

cm,austm,elem

alls

esel,s,,,austm

mpchg,5,all

allsel

time,(tstepo*i)

solve

*enddo

*ABBR,SOLVE,NOSOLVE

Однако из Solution Information непонятно, делает ли он эту замену пошагово (выборку видно только перед первым шагом, между шагами пусто).

А еще в Solution Information есть такая информация

ABBREVIATION= SOLVE NOSOLVE

*GET ANSINTER_ FROM ACTI ITEM=INT VALUE= 0.00000000

*IF ANSINTER_ ( = 0.00000 ) NE

0 ( = 0.00000 ) THEN

*ENDIF

*** WARNING *** CP = 336.728 TIME= 12:41:36

NOSOLVE is not a recognized SOLUTION command, abbreviation, or macro.

This command will be ignored.

Гдето ошибка, судя по всему...

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

при простом копировании в Solution Information пишется, что solve использовать нельзя

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

Однако из Solution Information непонятно, делает ли он эту замену пошагово (выборку видно только перед первым шагом, между шагами пусто).

А еще в Solution Information есть такая информация

Делайте пример, в котором корректная и некорректная работа Вашего кода дает качественно(!) разный результат в постпроцессоре, чтобы Вы могли однозначно идентифицировать это.

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

*** WARNING *** CP = 336.728 TIME= 12:41:36

NOSOLVE is not a recognized SOLUTION command, abbreviation, or macro.

This command will be ignored.

Гдето ошибка, судя по всему...

это не ошибка, просто команды NOSOLVE нету, вот и ругается) наша задача не дать WB запустить расчет автоматически, поэтому подменяем команду SOLVE любой другой

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

Всем большое спасибо! Получилось! Код следующий:

stepo=27

tstepo=1

*do,i,1,stepo

time,(tstepo*i)

solve

save

nsel,s,temp,,750

esln,s,0

cm,austm,elem

alls

esel,s,,,austm

mpchg,5,all

allsel

*enddo

*ABBR,SOLVE,NOSOLVE

Заметил несколько моментов.

1. С этим кодом расчет ведется в одном Load Step'е (который в Solution Information называется в данном случае LS1, внутри которого есть уже другие Load Step'ы, но по времени 1 секунда). Это сбивало с толку, т.к. заданный в параметрах WB параметр Number of steps это именно те самые LS.

2. Расчет ведется если Auto Time Stepping установлен на Programm Controlled

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

1. С этим кодом расчет ведется в одном Load Step'е (который в Solution Information называется в данном случае LS1, внутри которого есть уже другие Load Step'ы, но по времени 1 секунда). Это сбивало с толку, т.к. заданный в параметрах WB параметр Number of steps это именно те самые LS.

Load step - шаг нагружения. между шагами нагружения изменяются ГУ. Load step разбит на Substep`ы. Они помогают алгоритму сходиться.

Вот эта пара строчек:

time,(tstepo*i)

solve

каждый раз создает новый Load Step. Утверждение, что расчет ведется в одном Load Step довольно сомнительно. Может, еще не до конца разобрались?
Ссылка на сообщение
Поделиться на других сайтах

Согласен, не разобрался до конца еще... Но количество блоков решения LS* (из текста Solution Information) совпадает с количеством Number of steps, которые задаются в интерфейсе WB. Выходит, что Number of steps это не количество Load Step, а что же?

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

Number of Steps это и есть Load Steps. Тут все верно.

Тут стоит понимать другое: на каждом из шагов в WB Вы можете запускать свой CO. Внутри него могут выполняться новые LS. И все это будет накапливаться, если не будет противоречить друг другу.

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

Number of Steps это и есть Load Steps. Тут все верно.

Тут стоит понимать другое: на каждом из шагов в WB Вы можете запускать свой CO. Внутри него могут выполняться новые LS. И все это будет накапливаться, если не будет противоречить друг другу.

Что значит СО?

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

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

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

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

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

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

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

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

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

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

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




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