| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Расчетные программы > ANSYS > Почему не работает внутреннее условие? ansys

Почему не работает внутреннее условие? ansys

Ответ
Поиск в этой теме
Непрочитано 22.09.2016, 15:02 #1
Почему не работает внутреннее условие? ansys
Eugeniya
 
Пермь
Регистрация: 20.09.2016
Сообщений: 8

Здравствуйте, проблема такая. Пишу алгоритм по разрушению и пытаюсь контролировать это самое разрушение через приложенное перемещение. Для этого написала 2 условия If, внутреннее из которых не работает (оно должно отвечать за перемещение). Подскажите, пожалуйста, как его исправить?????? Вот часть алгоритма.

*IF,SORTMAX,GE,PRED,THEN ! Условие 1

*IF,h,LT,0.5E-5,THEN
/POST1
*GET,SORTM,SORT,,IMAX
esel,s,,,SORTM,,,0
/solu
EKILL,ALL ! Убить элемент
ESEL,ALL
/STATUS,SOLU
SOLVE
FINISH
/POST1
ETABLE, REFL
*ELSEIF,h,EQ,0.5e-5,stop
*ENDIF

*ELSEIF,SORTMAX,lt,PRED! Условие 2
/solu
ESEL,ALL
h=h+0.005E-5
DL,3, ,UY,h
/STATUS,SOLU
SOLVE
FINISH

/POST1
ETABLE, REFL ! Обновить базу
FINISH
*ENDIF
Просмотров: 1998
 
Непрочитано 22.09.2016, 15:25
#2
Stanum

Dr
 
Регистрация: 16.10.2011
Днепропетровск
Сообщений: 1,020
<phrase 1=


Опишите проблему чуть подробней. Что не работает?
Не входит во внутренне условие? А верхнее выполняется?
Stanum вне форума  
 
Автор темы   Непрочитано 22.09.2016, 15:40
#3
Eugeniya


 
Регистрация: 20.09.2016
Пермь
Сообщений: 8


Да, именно так. Получается, что у меня выполняется внешний цикл 35, в соответствии с условием *do, хотя он должен в середине цикла прерываться, я это точно знаю. Так выглядит мой полный цикл.
*do,m,1,35
/solu
ESEL,ALL
Finish
/POST1
ESORT,ETAB,SEQV,1,0, ,
*GET,SORTMAX,SORT,,MAX
*IF,SORTMAX,GE,PRED,THEN ! Условие 1
*IF,h,LT,0.5E-5,THEN
/POST1
*GET,SORTM,SORT,,IMAX
esel,s,,,SORTM,,,0
/solu
EKILL,ALL ! Убить элемент
ESEL,ALL ! Выделить все элементы
/STATUS,SOLU
SOLVE ! Решить
FINISH
/POST1
ETABLE, REFL ! Обновить базу
*ELSEIF,h,EQ,0.5e-5,stop
*ENDIF
*ELSEIF,SORTMAX,lt,PRED! Условие 2
/solu
ESEL,ALL ! Выделить все элементы
h=h+0.005E-5
DL,3, ,UY,h
/STATUS,SOLU
SOLVE ! Решить
FINISH
/POST1
ETABLE, REFL ! Обновить базу
FINISH
*ENDIF
*enddo
Eugeniya вне форума  
 
Непрочитано 22.09.2016, 17:22
#4
Stanum

Dr
 
Регистрация: 16.10.2011
Днепропетровск
Сообщений: 1,020
<phrase 1=


Цитата:
Сообщение от Eugeniya Посмотреть сообщение
*ELSEIF,h,EQ,0.5e-5,stop
вы об этом условии ?
возможно h~=0.5e-5, a h=0.5e-5+precision
попробуйтe *ELSEIF,h,LE,0.5e-5+precision,AND,h,GE,0.5e-5-precision,stop
Stanum вне форума  
 
Автор темы   Непрочитано 22.09.2016, 18:25
#5
Eugeniya


 
Регистрация: 20.09.2016
Пермь
Сообщений: 8


нет, не получилось, все равно не остановился

----- добавлено через ~56 мин. -----
Все, спасибо) Додумалась, как сделать)
Eugeniya вне форума  
 
Непрочитано 22.09.2016, 19:22
#6
Stanum

Dr
 
Регистрация: 16.10.2011
Днепропетровск
Сообщений: 1,020
<phrase 1=


Превратите h в массив *dim
И пишите значение в каждом цикле,на основе увиденного, делайте вывод.
Тяжело что-то сказать, так как у вас по коду h меняется внутри условия, то я не уверен что вы его меняете вообще,
Посчитали-треснуло-убили-h не изменилось, также не уверен что вы продолжаете расчёт таким образом, а не делаете на каждом шаге новый.
Stanum вне форума  
 
Автор темы   Непрочитано 22.09.2016, 20:10
#7
Eugeniya


 
Регистрация: 20.09.2016
Пермь
Сообщений: 8


немного не понимаю, зачем мне h превращать в массив? объясните поподробней.
h в моей задаче-это приложенное перемещение, которое изменяется при невыполнении условия if. И, прежде чем его приложить, я выделяю все элементы, те я прикладываю его ко всей конструкции, и, соответственно, я продолжаю расчет уже при большем перемещении. Вроде как, все логично.
Eugeniya вне форума  
 
Непрочитано 23.09.2016, 11:47
#8
Stanum

Dr
 
Регистрация: 16.10.2011
Днепропетровск
Сообщений: 1,020
<phrase 1=


Превратив в массив увидите как h меняется с каждой итерацией, ваш код по моему проскакивал этап наращивания h.
Могу и ошибаться, но по моему без доп команд, каждый раз вызывая solve вы запускаете новый расчёт из нас состояния без напряжений и деформаций. Если я правильно понял ваш алгоритм, то на каждом шаге вы проверяете элементы на разрушение, затем убиваете те что разрушились, затем продолжаете нагружать. Без продолжения расстегну с предыдущего места можно получить деформации конструкции в предположении что она была разрушена с самого начала нагруженная.
Stanum вне форума  
 
Автор темы   Непрочитано 23.09.2016, 13:04
#9
Eugeniya


 
Регистрация: 20.09.2016
Пермь
Сообщений: 8


Я изменила условия и у меня все заработало. Получилось так.

*IF,SORTMAX,GE,PRED,AND,h,LT,0.5E-5,THEN

тело цикла

*ELSEIF,h,EQ,0.5E-5,stop

*ELSEIF,SORTMAX,lt,PRED

тело цикла 2

*ENDIF

Сейчас этап наращивания перемещения не пропускается и за ним я буду следить через график сила-перемещение, который в дальнейшем построю, хотя, пока еще не придумала как.
Eugeniya вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Расчетные программы > ANSYS > Почему не работает внутреннее условие? ansys

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите почему не работает генерация ферм C@DbIK Лира / Лира-САПР 3 23.05.2013 14:20
Не могу понять, почему программа не работает? Помогите плз. dimon_hub Программирование 5 05.05.2013 02:25
Почему не работает entdel hydushko Программирование 1 18.04.2013 07:52
почему не работает lisp Jonas LISP 11 25.01.2012 18:41