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

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

Зравствуйте, товарищи форумчане! Долго листал этот форум наблюдателем, но вот наконец и самому припёрло задать вопрос. 
Ввиду некоторой топорности воркбенча возникла необходимость проведения параметрической оптимизации посредством APDL. Для рассчёта точек планирования эксперимента написал скрипт (внизу приведён), предполагающий следующее:

  • Зачитывание в табличную переменную из текстового файла значений входных параметров;
  • Далее цикл:
  • Построение по параметрам геометрии;
  • Построение сетки и задание граничных условий;
  • Решение;
  • Сохранение значений всех переменных в файл *.parm;
  • Очистка бд;
  • Зачитывание паременных из файла *.parm;
  • Конец цикла.
  • Запись табличной переменной с результатами в другой текстовик.

И так n_exp раз. Задача - устойчивость оребрённой оболочки под действием крутящего момента в линейной постановке. Оболочка и рёбра смоделированы шеллами.

Скрипт до поры до времени работает исправно, но при крайнем прогоне завис на 666-й точке. Цикл Ланцоша #5 висел несколько часов (хотя, до этого на одну точку уходило порядка минуты). Модель была проверена именно с этим сочетанием параметров, а заодно и с предыдущим, и с последующим - считает штатно. У меня создалось впечатление, будто забивается какой-то файл, о котором я не знаю или по какой-то другой причине количество расчётов за сессию ограничено. Не могу понять, в чём дело. Если достаточно корректно описал проблему, очень надеюсь, что кто-то поможет.
К сожалению, в тексте скрипта по некоторым соображениям я вынужден пропустить модуль построения геометрии. В остальном текст такой, какой гружу в ансис. Заранее благодарю за ответы!
ЗЫ Ансис 18.2

 

 

finish
/clear 
/filname,***,1 !Создание файла с именем "***"
/RGB,INDEX,100,100,100, 0   !Выставим белый фон
/RGB,INDEX, 80, 80, 80,13   
/RGB,INDEX, 60, 60, 60,14   
/RGB,INDEX, 0, 0, 0,15  
/AUTO

n_exp=1755                                           !Число расчётов

*DIM,Param,TABLE,n_exp,11,1                 !Создание таблицы с n_exp строками и 11 столбцами. 
*DIM,ParamOut,TABLE,n_exp,2,1              !Создание таблицы с n_exp строками и 2 столбцами. 

*TREAD,Param,Design,TXT,,1                    !Зачитывание исходных данных в таблицу Param


*DO,i,1,n_exp,1 !Начало цикла оптимизации

/VIEW,1,0,1,0,0
/FOCUS,1,700,0,0
/AUTO
!/ZOOM,OFF

/prep7
  !!Задали материалы
MPTEMP,,,,,,,,  
MPTEMP,1,0  
MPDATA,EX,1,,101000 
MPDATA,PRXY,1,,0.3  
R,1,1,1,1,1,1,1,                    !    Задали массу точки


/prep7
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Исходные данные    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
hpol1=Param(i,1)    !Задание толщины
B1=Param(i,2)    !Задание толщины рёбер
N1=Param(i,3)    !Задание количества рёбер
Hrib1=Param(i,4)    !Задание высоты рёбер

hpol2=Param(i,5)    !Задание толщины
B2=Param(i,6)    !Задание толщины рёбер
N2=Param(i,7)    !Задание количества рёбер
Hrib2=Param(i,8)    !Задание высоты рёбер

B3=Param(i,9)     !Задание толщины рёбер
N3=Param(i,10)    !Задание количества рёбер
Hrib3=Param(i,11)    !Задание высоты рёбер

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Построение геометрии!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!=============ПРОПУСК============!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!Толщины 
sect,1,shell,,pol1       !!Задали толщину полотна
secdata,hpol1,1,0,0,3 
SECOFFSET,TOP
seccontrol,,,, , , ,

sect,2,shell,,pol2       !!Задали толщину полотна
secdata,hpol2,1,0,0,3
seccontrol,,,, , , ,


sect,3,shell,,flange       !!Задали толщину фланца
secdata,5,1,0,0,3 
seccontrol,,,, , , ,

sect,4,shell,,rib1       !!Задали толщину Ребра
secdata,B1,1,0,0,3 
seccontrol,,,, , , ,

sect,5,shell,,rib2       !!Задали толщину Ребра
secdata,B2,1,0,0,3 
seccontrol,,,, , , ,

sect,6,shell,,rib3       !!Задали толщину Ребра
secdata,B3,1,0,0,3 
seccontrol,,,, , , ,

!!!!!!!!!!Разделим геометрию на компоненты
!!!!!!!!!!!!!!!!!!!!!!=========ПРОПУСК=================!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Построение сетки!!!!!!!!!!!!!!!!!!!!!!!!!!
ET,1,SHELL281 !Объявили тип элемента шелл
ET,2,21       !Объявили тип точечной массы
ESIZE,12,,    !Задали размер элемента


CSYS, 6

TYPE,1
SECTYPE,1,SHELL          !Мешим полотно
SECOFFSET, BOT
CMSEL,S,Pol1,AREA
AMESH, ALL


TYPE,1
SECTYPE,2,SHELL          !Мешим полотно
CMSEL,S,Pol2,AREA
AMESH, ALL


TYPE,1
SECOFFSET,MID
SECNUM,3              !Мешим фланцы
CMSEL,S,Flanges,AREA
AMESH, ALL

TYPE,1
SECOFFSET,MID
SECNUM,4             !Мешим рёбра
CMSEL,S,Rib1,AREA
AMESH, ALL

TYPE,1
SECOFFSET,MID
SECNUM,5          !Мешим рёбра
CMSEL,S,Rib2,AREA
AMESH, ALL

TYPE,1
SECOFFSET,MID
SECNUM,6          !Мешим рёбра
CMSEL,S,Rib3,AREA
AMESH, ALL

*IF,N3,GE,6,THEN
TYPE,1
SECOFFSET,MID
SECNUM,6          !Мешим рёбра
CMSEL,S,Rib4,AREA
AMESH, ALL
*ENDIF

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Приложение нагрузок!!!!!!!!!!!!!!!!!!!!!!!!!!
CSYS,0
ASEL,S,LOC,X,!!!!!!!==пропуск===!!!!
NSLA,S
D,ALL,ALL

K,100500,0,0,0
TYPE,2
KSEL,S,,,100500
KMESH,ALL
NSLK,S
*GET,NODENUM,NODE,0,NUM,MIN !Получить номер выделенного узла и записать его в NODENUM

CSYS,0
ASEL,S,LOC,X,-1,1
NSLA,A
CERIG,NODENUM,ALL,ALL

CSYS,0
FK,100500,MX,1000000  

ASUM,FINE
*GET,vo,AREA,0,VOLU !Выписываем значение объёма
mass=vo*4430E-9        !Считаем массу

ALLSEL,ALL
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!РЕШЕНИЕ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
/SOLU
ANTYPE,STATIC
PSTR,ON
SOLVE
FINISH

/SOLU
ANTYPE,BUCKLE
MXPAND,1
SOLVE
FINISH
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Результаты и сохранение картинок!!!!!!!!!!!
/POST1
/ESHAPE,1,0
SET,LAST
*GET,Mkrit,ACTIVE,0,SET,FREQ  !Выписываем значение множителя нагрузки
Mkrit=ABS(Mkrit)

/VIEW,1,0,1,0,0
/FOCUS,1,700,0,0
/AUTO
PLNSOL, U,SUM, 0,1,0 !Выводим форму потери устойчивости на экран
/VIEW,1,0,1,0,0
/FOCUS,1,700,0,0
/AUTO

/SHOW,PNG,,0   !Сохраняем картинку с формой потери устойчивости
PNGR,COMP,1,-1  !Настройки  сохраняемой картинки
PNGR,ORIENT,HORIZ   
PNGR,COLOR,2
PNGR,TMOD,1 
/GFILE,800,   
/REPLOT
/SHOW,CLOSE 
/DEVICE,VECTOR,0
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!ЗАПИСЬ РЕЗУЛЬТАТОВ В ТАБЛИЦЫ И ПЕРЕХОД К СЛЕДУЮЩЕЙ ТОЧКЕ!!!!!!!!!!!!!!!!!!!!!!!!
ALLSEL,ALL

/prep7
ParamOut(i,1)=Mkrit
ParamOut(i,2)=mass


FINISH

PARSAV,ALL,Parameterset,parm !Сохранение параметров в файл перед очисткой БД
/clear !Очистка БД
PARRES,NEW,Parameterset,parm !Обратное зачитывание параметров

*ENDDO !Конец цикла оптимизации

!!!!!!!!!!!!!!!!!!!!!!!!!!!!КОНЕЦ ЦИКЛА!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Запись файла с таблицей результатов!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
*MWRITE,ParamOut(1,1),Output,txt
(2F15.5)

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


На 99% вы уперлись в потерю устойчивости. 

Попробуйте сделать что-то типа "Если i=666 то не считать." Или сделайте 2 захода 1-665, 667-1755, что бы убедиться в проблемности данной конкретной точки.

 

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

 

Засёр базы маловероятен.

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

@Борман , Спасибо за ответ! Да-да, отдельно точку i=666 проверял. И точку i=665 и точку i=667. Всё в порядке. Но на множитель посмотреть не догадался) По поводу пропустить эту точку - мысль интересная - попробую. 

  • Не понял вот это: 
53 минуты назад, Борман сказал:

На 99% вы уперлись в потерю устойчивости.

  • Вы имеете в виду потерю устойчивости уже при статическом расчёте? Это очень маловероятно, но проверю. Или я неправильно понимаю эту фразу?
  • Не могли бы Вы поподробнее рассказать, почему может иметь смысл смотреть не только на модуль множителя нагрузки? Я так понимаю, что при симметричной задаче всегда должно существовать два значения с противоположными знаками.
  • Ещё, кстати, интересно, что опытные расчётчики понимают по засёром базы?

P.S.
Сейчас исправил свой существенный косяк: поменял настройки решателя устойчивости. Блок ланцош сменил на сабспейс (ибо памяти-то хватает) и бонусом указал диапазон поиска решения. Пока считает. Завтра будет ясно, что получилось. Если будет кому-то интересно, буду отписывать сюда, что получается.

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

Не понял вот это: 

Я уже сам что то торможу. Перегрелся наверное.

7 минут назад, /prep7 сказал:

почему может иметь смысл смотреть не только на модуль множителя нагрузки? Я

Когда оно меняет знак, значит проходит через ноль, а ноль - это точка бифуркации. Потеря устойсивости. Сталкивался пару раз.

 

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

Ещё, кстати, интересно, что опытные расчётчики понимают по засёром базы?

Так этож вы сами грешили на файл, который забивается.

 

10 минут назад, /prep7 сказал:

Блок ланцош сменил на сабспейс (ибо памяти-то хватает)

Не поможет :)

Ссылка на сообщение
Поделиться на других сайтах
  • 3 недели спустя...
  • 4 месяца спустя...
В 13.05.2019 в 16:43, /prep7 сказал:

Если будет кому-то интересно, буду отписывать сюда, что получается.

ну и?

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • gudstartup
      считывание происходит при помощи вх\вых сигналов контроллера plc 
    • gudstartup
      @Maks Horhe так все таки скиньте бэкап эмулируем ваше чпу в cncguide и посмотрим куда поедет?  можете снять видео с фиксацией координатных позиций после каждого кадра. Выложу вашу программу пусть программисты посмотрят все ли в ней ок. %O0002 G40 G17 G94 G90 G49 G80 N1 G91 G28 Z0.0 N2 G91 G28 X0.0 Y0.0 N3 G91 G28 B0.0 C0.0 N4 M03 S200 N5 G90 G0 G53 B0.0 C0.0 N6 G54 N7 X0.0 Y0.0 N8 G90 G43 H01 N9 G90 G0 X0.0 Y0.0 N10 G90 G0 Z200.0 N11 G01 Z10.0 F1500. N12 M00 N13 G00 Z200.0 N14 G40 G49 G69 N15 G00 G53 Z0.0 N16 G00 G54 B0.0 C0.0 N17 G68.2 X0.0 Y0.0 Z0.0 1135. J39.2044 K-129.2315 N18 G53.1 N19 G01 X0.0 Y0.0 F1500 N20 G90 G43 H01 N21 G90 G01 X0.0 Y0.0 F1500 N22 G90 G01 Z200. F1500 N24 M00 N25 G00 Z200. N26 G40 G49 G69 N27 G91 G28 Z0.0 N28 G28 X0.0 Y0.0 N29 G91 G28 B0.0 C0.0 N30 M5 N31 M30
    • gudstartup
      @karlf 530 считывает ключ по специальному протоколу при помощи plc и получает его серийный номер а из него определяет возможные режимы доступа. там нет драйвера а есть plc модуль или несколько эти модули написаны на питоне  надпись smartkey исчезает с экрана при запуске чпу??
    • ДОБРЯК
      Для того, чтобы получить правильные высшие) формы при виртуальном эксперименте, нужно сделать грамотную КЭ модель. От разговора на эту тему вы постоянно уклоняетесь.  То нет компьютера под рукой, сделать простейший тест, то теряете интерес. :=) Сходимости энергии деформации при расчетах статики, недостаточно для точного определения высших собственных форм и частот.  Для того, чтобы грамотно использовать метод конечных элементов, нужно сделать много-много тестов в статике, динамике и ... Одной кнопки и двух конечных элементов в 3Д программе недостаточно для определения высших собственных форм...  У вас в качестве инструмента всего два конечных элемента, шести узловая несовместная оболочка Тимошенко и десяти узловой тетраэдр. И еще контакты при решении задачи на собственные числа. Вам ли говорить про правильность определения высших собственных форм для сложных изделий... :=)    
    • vad0000
      Покажите схему с разрешением на движение
    • vad0000
      Вход, а не выход Вытащить Аналоговый вход и все, как будто туда ничего не подключено И если мы подключим сигнал к энкодеру оси Х, то он стнтет одинаковый с аналоговым входом, который не подключен?
    • Snake 60
      @waze4534  Посмотрите вверх и прочитайте текст на красной полоске...
    • kkk
      Я так понимаю, что предупреждение про "касательные" не просто так выскакивает. Если скруглить прямую стыковку отрезков эскиза (минимальным радиусом) то все работает даже без объединенной кривой, достаточно эскиза.
    • karlf
      Подскажите пожалуйста, может кто сталкивался. Станок DMU-50 на стойке TNC 530, перестал определяться ключ доступа. Сам ключ вроде работает, если переключать на нём режимы, то в шкафу на соответствующих блоках лампочки тоже переключаются. Но изначально был уровень доступа 4, а теперь уровни доступа не активны. Ключ только один, запасных нет. Есть какой-то старый бэкап, пробовал его накатить, но какой-то он непонятный - станок грузится, но почти в конце загрузки выдаёт какую-то ошибку по параметрам. Может кто знает в каком из разделов и в какой папке искать установленные драйверы ключа?
    • YuriySt54
      В данной конструкции можно сразу одним телом делать и обрезать. Но меня интересовало, можно ли сразу при построении массива ограничить лишнее.
×
×
  • Создать...