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

Макросы ANSYS (в очередной раз)


Борман

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

Скопилось несколько полезных синтаксических конструкций :) Буду выкладывать по-тихоньку.

 

Давно хотел разобраться сэтой штукой.. и наконец сегодня разобрался.

Можно Ансису подсунуть СЛАУ, и он ее решит. Можно разреженные матрицы тоже подсовывать, но не разбирался с этим.

 

Матрица и правая часть кладутся в MTX_0 и RHS_0, ответ будет в векторе RES_0.

 

Спойлер

finish
/clear,start

*msg
==========================

N=500

*dim,MTX_0,,N,N
*dim,RHS_0,,N
*dim,RES_0,,N
*dim,ERR_0,,N

/nopr
*do,i,1,N,
	*do,j,1,N,
		MTX_0(i,j)=rand(-100,100)
	*enddo
	RHS_0(i)=rand(-100,100)
*enddo
/gopr

*dmat,MTX_1,D,import,apdl,MTX_0
*vec,VEC_1,D,import,apdl,RHS_0
*vec,RES_1,D,alloc,N

*lsengine,lapack,ENG_1,MTX_1
*lsfactor,ENG_1,invert
*lsbac,ENG_1,VEC_1,RES_1

*export,RES_1,apdl,RES_0

/nopr
norm=0
*do,i,1,N,
	tmp=0
	*do,j,1,N,
		tmp=tmp+MTX_0(i,j)*RES_0(j)
	*enddo
	ERR_0(i)=tmp-RHS_0(i)
	norm=norm+abs(ERR_0(i))
*enddo
/gopr

*msg,,norm
ERR NORM = %e

 

 

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


UnPinned posts

Мой шаблон для файла-задачи

Спойлер

finish
/clear,start

*create,MODEL

/triad,lbot

pi=4*atan(1)
*afun,deg

! ==== ИСПОЛНЯЕМЫЙ БЛОК КОМАНД ======
....

*go,:stop

! === НЕИСПОЛНЯЕМЫЙ БЛОК КОМАНД =====
....

:stop

*end

*use,MODEL

! === ИСПОЛНЯЕМЫЙ БЛОК КОМАНД =======
....

gplot
/dev,font,2,Courier*New,400,0,-13,0,0,,,

 

 

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

Самый полезный макрос в моей повседневной работе. Представить сложно, на сколько он ускоряет написание командного файла.

 

Макрос преобразует выбранное множество объектов (точки, линии, узлы... см. первый аргумент макроса) в последовательность команд xsel,s ... xsel,a

Спойлер

/com,****************************************

/nopr

*if,arg1,eq,1,then
	ent='kp'
*endif

*if,arg1,eq,2,then
	ent='line'
*endif

*if,arg1,eq,3,then
	ent='area'
*endif

*if,arg1,eq,4,then
	ent='volu'
*endif

*if,arg1,eq,5,then
	ent='node'
*endif

*if,arg1,eq,6,then
	ent='elem'
*endif

*get,n_ent,%ent%,0,count
*dim,ar_ent,table,n_ent,4

ne=0

*do,i,0,4
	ar_ent(0,i)=i
*enddo

i=1

*dowhile,i
	*get,ne,%ent%,ne,nxth
	*if,ne,eq,0,then
		*exit
	*endif
	ar_ent(i,0)=i
	ar_ent(i,1)=ne
	ar_ent(i,3)=0
	ar_ent(i,4)=0
	*if,i,gt,1,then
		ar_ent(i,2)=ar_ent(i,1)-ar_ent(i-1,1)
		
		*if,ar_ent(i,2),eq,1,then
			ar_ent(i,3)=ar_ent(i-1,3)
		*else
			ar_ent(i,3)=ar_ent(i,1)
		*endif

		*if,ar_ent(i,3),ne,ar_ent(i-1,3),then
			ar_ent(i-1,4)=ar_ent(i-1,1)
		*endif		
	*else
		ar_ent(i,3)=ar_ent(i,1)
	*endif	
	i=i+1
*enddo

*if,ar_ent(n_ent,4),eq,0,then
	ar_ent(n_ent,4)=ar_ent(n_ent,1)
*endif

*cfopen,tmp_sel,txt

seltype='s'
enttype=strsub(lwcase(ent),1,1) 

*do,i,1,n_ent
	ent1=ar_ent(i,3)
	ent2=ar_ent(i,4)	
	*if,ent2,ne,0,then
		*if,ent1,ne,ent2,then
			*vwrite,enttype,seltype,ent1,ent2
%csel,%c,,,%i,%i,1
		*else	
			*vwrite,enttype,seltype,ent1
%csel,%c,,,%i
		*endif
		seltype='a'
	*endif
*enddo

*cfclos

ar_ent=
n_ent=
seltype=
enttype=
ne=
i=
ent=
ent1=
ent2=

/sys,start notepad tmp_sel.txt

/gopr

 

 

 

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

Самый полезный макрос в моей повседневной работе. Представить сложно, на сколько он ускоряет написание командного файла.

 

Макрос преобразует выбранное множество объектов (точки, линии, узлы... см. первый аргумент макроса) в последовательность команд xsel,s ... xsel,a

  Hide contents


/com,****************************************

/nopr

*if,arg1,eq,1,then
	ent='kp'
*endif

*if,arg1,eq,2,then
	ent='line'
*endif

*if,arg1,eq,3,then
	ent='area'
*endif

*if,arg1,eq,4,then
	ent='volu'
*endif

*if,arg1,eq,5,then
	ent='node'
*endif

*if,arg1,eq,6,then
	ent='elem'
*endif

*get,n_ent,%ent%,0,count
*dim,ar_ent,table,n_ent,4

ne=0

*do,i,0,4
	ar_ent(0,i)=i
*enddo

i=1

*dowhile,i
	*get,ne,%ent%,ne,nxth
	*if,ne,eq,0,then
		*exit
	*endif
	ar_ent(i,0)=i
	ar_ent(i,1)=ne
	ar_ent(i,3)=0
	ar_ent(i,4)=0
	*if,i,gt,1,then
		ar_ent(i,2)=ar_ent(i,1)-ar_ent(i-1,1)
		
		*if,ar_ent(i,2),eq,1,then
			ar_ent(i,3)=ar_ent(i-1,3)
		*else
			ar_ent(i,3)=ar_ent(i,1)
		*endif

		*if,ar_ent(i,3),ne,ar_ent(i-1,3),then
			ar_ent(i-1,4)=ar_ent(i-1,1)
		*endif		
	*else
		ar_ent(i,3)=ar_ent(i,1)
	*endif	
	i=i+1
*enddo

*if,ar_ent(n_ent,4),eq,0,then
	ar_ent(n_ent,4)=ar_ent(n_ent,1)
*endif

*cfopen,tmp_sel,txt

seltype='s'
enttype=strsub(lwcase(ent),1,1) 

*do,i,1,n_ent
	ent1=ar_ent(i,3)
	ent2=ar_ent(i,4)	
	*if,ent2,ne,0,then
		*if,ent1,ne,ent2,then
			*vwrite,enttype,seltype,ent1,ent2
%csel,%c,,,%i,%i,1
		*else	
			*vwrite,enttype,seltype,ent1
%csel,%c,,,%i
		*endif
		seltype='a'
	*endif
*enddo

*cfclos

ar_ent=
n_ent=
seltype=
enttype=
ne=
i=
ent=
ent1=
ent2=

/sys,start notepad tmp_sel.txt

/gopr

 

 

 

блин..классно! надо будет на досуге потестить :) хочется конечно логику отследить, но без коментариев мне довольно тяжело читать... какие там индексы куда идут, чего где склеивается. Если будет несколько минут свободных и желание, то хоть пара слов очень бы облегчила чтение и понимание кода.

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

пара слов

Макрос писался давно, и, поскольку, он вспомогательный, оптимизации не подлежит :)

Вытянуть множество в последовательность единичных селектов не сложно. Все эти циклы направлены на оптимизацию, чтобы часть селектов привести к виду xsel,a,,,x1,x2,1

У меня это все висит на кнопках

*ABBR, K_L , SUPERSEL,1
*ABBR, L_L , SUPERSEL,2
*ABBR, A_L , SUPERSEL,3
*ABBR, V_L , SUPERSEL,4
*ABBR, N_L , SUPERSEL,5
*ABBR, E_L , SUPERSEL,6

L - от слова list.

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

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

Я тут с такой штукой столкнулся. В классике генерируется автоматом 2D сетка в прицнипе произвольная, нерегулярная (пусть из PLANE42). Нужно из сетки сделать совокупность разделенных элементов. Короче говоря, нужно "отделить" элементы друг от друга, но сохранить расположение элементов. Потом уже между разделенными элементами будут всобачиваться cohesive elements. Может кто-то что-то подсказать по этой теме? 

 

Уже есть мысли, как сделать это в APDL макросе, но не хочется изобретать велосипед.

Ссылка на сообщение
Поделиться на других сайтах
В ‎22‎.‎09‎.‎2020 в 07:10, Борман сказал:

Самый полезный макрос в моей повседневной работе. Представить сложно, на сколько он ускоряет написание командного файла.

 

Макрос преобразует выбранное множество объектов (точки, линии, узлы... см. первый аргумент макроса) в последовательность команд xsel,s ... xsel,a

 

 

А не проще  работать со столбиками в  Notepad++ или ультраэдите  ?  Забрать множество туда и подкорректировать все как один и вставить назад  …

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

У меня подобные операции занимают секунды. Ctrl+C  корректировка столбиками прямо в коде APDL   … 

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

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

в хелпе есть пример и листинг

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

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

в хелпе есть пример и листинг

Cпасибо!

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

 

Если есть минутка, можете ткнуть меня мордой в ссылку, пожалуйста?

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

VM248

все что выделите для операции с CZMESH все будет покрыто кохезивными элементами

то что не будет выделено не будет участвовать в генерации.

еще проще сделать тоже самое в LS-Prepost

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • Рома калужский
      это код подключения шпинделя как ось "С" но при этом он не перемещает револьверку, т.е. не работает по программе
    • Горыныч
      Еще совет: строить нужно только половину, если модель симметричная, тогда Солид меньше "косячит". И соглашусь с коллегами, идеальный вариант для гладкого построения - два сечения и две направляющие кривые, т.е. 4 управляющие кривые (кромки). При необходимости можно добавлять не только промежуточное сечение, но и направление. Не нужно пятаться построить всю поверхность одним фичером.  Пусть поверхности будут лоскутами, но соединяются по касанию или кривизне. 
    • ДОБРЯК
      Откуда появится смещение центра масс колеса, если колесо сбалансировано.  Жесткий сбалансированный вал, это условие данной задачи. На 4000 оборотах эти силы будут минимальны. Это разговор ни о чем в данной задаче. :=) Но даже если вы абсолютно точно определите эти частоты, с учетом всех сил. Что дальше с этими частотами делать? На основании чего делать вывод о работоспособности изделия? Это в учебной работе получили число, работу приняли и сдали в архив. Какая практическая ценность всех этих уточнений в данном случае?:=)  
    • Борман
      Если еще не поздно... я и сам погрузился бы. Физика такая, для вала с одним колесом... F - это понятно, центробежное смещение центра масс колеса M - момент от центробежных сил, который не появится, если колесо не повернется при изгибе вала. Обрати внимание, что BW-момент выворачивает ось в сторону действия силы F, т.е. при обратной прецессии они действуют сообща, и в этом опасность.   Отсюда будут разные собственные частоты при прямой и обратной прецессиях.  Теперь осталось понять, что такое прямая и обратная прецессии :), и почему момент при них направлен в разные стороны. По первой части вопроса см. мою картинку в этой теме от 27 августа 2013. По второй части вопроса - нужно включать воображение и усердно рисовать на бумажке. Мне пока сложно.    Физика именно такая. Нужно как то оценить величину этого момента и приложить его в софте, который не умеет ДК. А с тестовыми значениями можно и так порешать, и на выходе должна быть вилка. Т.е. F - задает типа "биссектрису" вилки (престресс-модальник), а момент - угол вилки.  
    • boomeeeer
      @anykeyto Я не оператор. Настраивал работу этой функции на токарно-фрезерном, где нужно было позиционировать шпиндель, для нарезания пазов. Что такое G07 не знаю. Вот такой пример для фрезерного станка нашёл   G108 B0; переключение на ось B для управления положением; G68.2 X10 Y10 Z20 I0 J90 K0 Положение заготовки (10,10,20) Угол Эйлера для определения характеристической системы координат; G53.2 Управление направлением инструмента   G109 B0 - отключит режим
    • anykeyto
      Ага, спасибо... А в связке с G07.1 это как работает? Есть детали ,кольца, на которых надо делать по 4 паза. Сейчас программист написал прогу под шаровую фрезу. Там рабочие движеня происходят через одновременное смещение по оси Х и Z... фреза убивается буквально на третьем кольце, да и обработка получаестя фиговой.. На сколько я понимаю надо стремиться к тому, чтобы на 5ти осном станке фреза всегда была перпендикулярна касательной ли самой поверхности. Мне посоветовал как раз цилндрческую интерполяцию, когда ось С преобразуется в плоскость. В мануале к HNC описано эт криво, но в примерах программ как раз сначала включается CTOS и потом G07.1. но дальше как запрограммировать понимания пока нет...  P.S. хочу добавить, что на 5-снике раньше работал только как оператор по готовым программам  на Хенденхайне. А сейчас на новом предприятии на новой для меня стойке нужно все делать с нуля и самостоятельно. С одной стороны интересно, с другой стороны спросить не у кого, в инете инфы по стойке нет от слова совсем, уж тем более видео....  чем это отличается от просто G0 C180? Или это уже будет шпиндель позиционироваться, а не стол?
    • AlexKaz
      Различают жёсткие и гибкие ротора. В данном случае вал жёсткий. Для него соответствуюшая формула. 4000 об/мин = 66.67 Гц, это ни о чём, эффекты для такой частоты почти не скажутся на жёстком роторе. Но проблема в том, что в лопаточных машинах (а насос на скрине наверное лопаточная?) собственные кратны числу лопаток. Я не разбирался в вопросе чтобы что-то здесь советовать. Лучше не спешить и внимательно почитать про модальный в лопаточных. Заодно проверить, а какое нагружение идёт в деталях насоса чтобы корректно выполнить престресс.
    • ДОБРЯК
      Хотите еще и матрицу масс изменить. :=) И сколько килограмм воды будете присоединять?  Опыт правильного моделирования, опыт расчета таких конструкций накапливается десятилетиями. Маловероятно, что кто-то на форуме будет вам объяснять как правильно моделировать, какие КЭ использовать, какие граничные условия задавать и т. д. Вы же всегда уклоняетесь от разговора на эти темы, даже для простых моделей.  Даже если перейдете на Ансис и не разберётесь в том, что он считает это не поможет вам написать грамотный отчет и объяснить грамотному заказчику, что вы там насчитали. Считает расчетчик, а программа это инструмент. Это только в рекламе пишут, что купите программу трехмерного моделирования, сделайте трехмерную модель, потом нажмите одну кнопку и на обычном игровом компьютере все посчитаете. Только в жизни все немножко иначе...:=)
    • Jesse
      Вот что у Биргера: Центробежные силы и индуцированный гироскопический момент зависят от квадрата частоты вращения вала   Хотя уже сама критическая частота зависит только от момента инерции колеса (альфа, бэта, гамма - это прогибы, углы поворота и прочая шелуха), т.е. частота вращения в формулу не входит, а всё определяется только моментом инерции Jm Ну у него рассматривается простая одномассовая система (фактически грузик на пружинке). Думаю поискать публикации.. мб где то раскопали аналитическую зависимость первой и высшей СЧ от частоты вращения для сложных систем. Хотя если выяснится что зависит,  всё равно обоснование придумывать придётся.  Эхх...
    • Fedor
      https://www.litres.ru/book/v-n-faddeeva/vychislitelnye-metody-lineynoy-algebry-65999878/  Ну и классику жанра :) 
×
×
  • Создать...