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

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

Как найти сумму значений в столбце макроса? ANSYS11

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

Здравствуйте)
Начинаю осваивать программирование в APDL и столкнулась вот с такой проблемой.
Допустим у меня есть макрос со значениями и мне необходимо просуммировать весь первый столбец. Как мне это сделать? Есть какая-то специальная функция для этого? Макрос примерно имеет такой вид:
*dim,data,array,5,2
data(1,1)=2
data(2,1)=3
data(3,1)=6
data(4,1)=8
data(5,1)=1
Просмотров: 2087
 
Непрочитано 20.09.2016, 19:32
#2
ETCartman


 
Регистрация: 09.12.2008
Сообщений: 4,649


просто цикл как на фортране
sum=0
*do ...
и так далее.
от первого до последнего значения
в цикле sum=sum+data(i,1)
В справке есть инфо по команде
ETCartman вне форума  
 
Непрочитано 21.09.2016, 00:12
#3
Stanum

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


*VSCFUN, par_res,sum, data(1,1)
Stanum вне форума  
 
Автор темы   Непрочитано 21.09.2016, 09:01
#4
Eugeniya


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


Спасибо большое, все получилось)

----- добавлено через ~15 мин. -----
Но теперь у меня другая проблема. Не могу понять, с чем она связана. пишу алгоритм по разрушению путем "выключения" элементов. В качестве завершения работы алгоритма является достижение равнодействующей силы какого-то минимального значения, но при запуске программы у меня показывает наличие 960 предупреждений (a check of your load data produced 960 warnings )и каждый шаг бесконечно долго решается. Почему так? Алгоритм такой

!ГЕОМЕТРИЯ
/PREP7
K,1, 0.0,0.0
K,2, 0.0, 0.14E-1
K,3, 0.122E-1, 0.14E-1
K,4, 0.122E-1, 0.0

K,5, 0.0, 0.75E-2
K,6, 0.0, 0.55E-2
K,7, 0.1E-2, 0.65E-2
K,8, 0.0, 0.65E-2

L,1,6 !Линия 1
L,5,2 !Линия 2
L,2,3 !Линия 3
L,3,4 !Линия 4
L,4,1 !Линия 5

LARC,6,7,8,0.001, !Линия 6
LARC,7,5,8,0.001, !Линия 7

AL,1,2,3,4,5,6,7 ! Поверхность 1

KDELE, 8 ! Удалила точку 8


/PNUM,KP,1
/PNUM,LINE,1
/PNUM,AREA,1
/PNUM,VOLU,0
/PNUM,NODE,0
/PNUM,TABN,0
/PNUM,SVAL,0
/NUMBER,0
/REPLOT

LPLOT

!МАТЕРИАЛ

ET,1,PLANE182
MPTEMP,,,,,,,,
MPTEMP,1,0
MPDATA,EX,1,,2.1E11
MPDATA,PRXY,1,,0.3

! СЕТКА


ACLEAR, 1
APLOT
ESIZE,0.0015,0,
MSHAPE,1,2D
!*
CM,_Y,AREA
ASEL, , , , 1
CM,_Y1,AREA
CHKMSH,'AREA'
CMSEL,S,_Y
!*
AMESH,_Y1
!*
CMDELE,_Y
CMDELE,_Y1
CMDELE,_Y2
!*

Finish



/SOLU
/GO
h=0.48E-5
DL,3, ,UY,h! Перемещение линии
DL,5, ,UY,
DK,1, , , ,0,ALL, , , , , , !Перемещение точки
Finish

/SOLU
ANTYPE,STATIC
NLGEOM,ON
NROPT,FULL

/STATUS,SOLU
SOLVE

Finish

/POST1

AVPRIN,0, ,
ETABLE,SEQV,S,EQV

PRED=0.150E9

ESEL,S,ETAB,SEQV,PRED,, ,0 !Критерий прочности

FINISH


*do,m,1,50


!Макрос для равнодействующей силы

LSEL,S, , , 5 !выделила линию 1
NSLL,S,5 !выделила все узлы на линии 1


*get,nc,node,0,count ! узнала количество узлов
*dim,data,array,nc,2 ! создала массив, nc-количество строк, 2-столбцы

*get,n_num,node,0,num,min ! взяла узел с наименьшим номером


! цикл

*do,i,1,nc ! цикл по всем выделенным узлам от 1 до nc

*GET,data(i, 1),node,n_num,rf,fy !взяла данные равнодействующей силы
! для узла и записала их во второй столбец массива

n_num=NDNEXT(n_num) ! перешла к следующему номеру от n_num

*enddo

*vscfun,par_res,sum,data(1,1) !суммирование равнодействующей силы
fsum=abs(par_res) ! абсолютное значение равнодействующей силы



/solu
ESEL,ALL

Finish

/POST1
ESORT,ETAB,SEQV,1,0, ,
*GET,SORTMAX,SORT,,MAX


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


/POST1
*GET,SORTMA,SORT,,IMAX
esel,s,,,SORTMA,,,0


/solu
EKILL,ALL ! Убить элемент
ESEL,ALL ! Выделить все элементы

/STATUS,SOLU
SOLVE ! Решить
FINISH

/POST1
ETABLE, REFL ! Обновить базу
FINISH


*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

*ELSEIF,fsum,LT,5e-9,stop

*ENDIF
!CONTINUE

*enddo

/POST1

ESEL,S,LIVE
PLESOL, S,EQV, 0,1,0
Eugeniya вне форума  
 
Непрочитано 28.09.2016, 16:46
#5
Graf Kim

Инженер, преподаватель
 
Регистрация: 18.01.2012
Красногорск
Сообщений: 77
Отправить сообщение для Graf Kim с помощью Skype™


Разбирайтесь.
Код:
[Выделить все]
lx=1.22e-2
ly=1.4e-2
d=2e-3
Eel=2.1e11
mu=0.3
h=0.48E-5
dh=0.005E-5
ult_stress=0.150E9	!PRED - зарезервированное имя команды
t=1
j=101+NINT(50*(2*lx/ly-1))
!ГЕОМЕТРИЯ
/PREP7
RECTNG,0,lx,0,0.5*ly
RECTNG,0,0.5*ly,0,0.5*ly
PCIRC,0.5*d,,0,90
APTN,ALL
ASEL,S,LOC,X,0,0.5*d
ADELE,ALL,,,1
ALLSEL
!МАТЕРИАЛ
ET,1,PLANE182 
MP,EX,1,Eel 
MP,PRXY,1,mu
!СЕТКА
LSEL,S,LOC,X,0,0.5*d
LSEL,R,LOC,Y,0,0.5*d
LESIZE,ALL,,,100
LSEL,S,LOC,Y,0
LSEL,R,LOC,X,0,0.5*ly
LESIZE,ALL,,,100,0.1
LSEL,S,LOC,X,0
LESIZE,ALL,,,100,0.1
LSEL,S,LOC,X,0.45*ly+0.1*lx,0.9*lx-0.05*ly
LESIZE,ALL,,,NINT(50*(2*lx/ly-1))
LSEL,S,LOC,Y,0.5*ly
LSEL,R,LOC,X,0,0.5*ly
LESIZE,ALL,,,50
LSEL,S,LOC,x,0.5*ly
LSEL,A,LOC,X,lx
LESIZE,ALL,,,50
ALLSEL
AMAP,,KP(1e-3,0,0),KP(0.5*ly,0,0),KP(0,0.5*ly,0),KP(0,0.5*d,0)
ASEL,S,LOC,X,0.5*ly,lx
MSHAPE,0,2D
MSHKEY,0
AMESH,ALL
/SOLU
LSEL,S,LOC,Y,0
NSLL,S,1
D,ALL,UY,0
LSEL,S,LOC,Y,0.5*ly
NSLL,S,1
CP,1,UY,ALL
*GET,master,node,0,num,min
D,master,UY,h		!Перемещение линии
D,NODE(lx,0,0),UX,0	!Перемещение точки
ALLSEL
ANTYPE,STATIC
NLGEOM,ON
NROPT,FULL
OUTRES,ALL,ALL
TIME,t
NSUBST,1,1e9,1
RESCONTRL,DEFINE,ALL,LAST,1
SOLVE
/POST1 
AVPRIN,0			!Точно нужно? 
ETABLE,SEQV,S,EQV
ESORT,ETAB,SEQV,1,0
*GET,SORTMAX,SORT,,MAX
*GET,SORTMA,SORT,,IMAX
*DIM,DEAD_ELEMS,ARRAY,j+1
*DO,i,1,j+1
	DEAD_ELEMS(i)=0
*ENDDO
*DO,m,1,j
	*GET,par_res,NODE,master,RF,FY
	fsum=ABS(par_res)				!абсолютное значение равнодействующей силы
	*IF,SORTMAX,GE,ult_stress,THEN			!Условие 1
		/SOLU
		PARSAV,ALL,params,par
		ANTYPE,STATIC,RESTART
		PARRES,,params,par
		i=0
		elnum=1
		ESEL,S,,,SORTMA
		*DOWHILE,elnum
			i=i+1
			elnum=DEAD_ELEMS(i)
			ESEL,A,,,DEAD_ELEMS(i)
		*ENDDO
		DEAD_ELEMS(i)=SORTMA
		EKILL,ALL				! Убить элемент
		ALLSEL
		t=t+1
		NLGEOM,ON
		NROPT,FULL
		OUTRES,ALL,ALL
		TIME,t
		NSUBST,1,1e9,1
		RESCONTRL,DEFINE,ALL,LAST,1
		SOLVE					! Решить
		/POST1
		SET,LAST
		ETABLE,SEQV,S,EQV
		ESORT,ETAB,SEQV,1,0
		*GET,SORTMAX,SORT,,MAX
		*GET,SORTMA,SORT,,IMAX
	*ELSEIF,SORTMAX,lt,ult_stress! Условие 2
		/SOLU
		PARSAV,ALL,params,par
		ANTYPE,STATIC,RESTART
		PARRES,,params,par
		ALLSEL
		h=h+dh
		D,master,UY,h
		t=t+1
		NLGEOM,ON
		NROPT,FULL
		OUTRES,ALL,ALL
		TIME,t
		NSUBST,1,1e9,1
		RESCONTRL,DEFINE,ALL,LAST,1
		i=0
		elnum=1
		ESEL,NONE
		*DOWHILE,elnum
			i=i+1
			elnum=DEAD_ELEMS(i)
			ESEL,A,,,DEAD_ELEMS(i)
		*ENDDO
		EKILL,ALL
		ALLSEL
		SOLVE
		/POST1
		ETABLE,REFL				! Обновить базу 
	*ENDIF
	!CONTINUE
*ENDDO
/POST1 
ESEL,S,LIVE 
PLESOL,S,EQV,0,1,0

Последний раз редактировалось Graf Kim, 28.09.2016 в 17:49.
Graf Kim вне форума  
 
Автор темы   Непрочитано 28.09.2016, 19:51
#6
Eugeniya


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


Вау! Спасибо огромное)
Eugeniya вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Расчетные программы > ANSYS > Как найти сумму значений в столбце макроса? ANSYS11

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как найти нагрузку от лестничного марша. Anton333S Прочее. Архитектура и строительство 3 02.03.2016 14:01
Как найти файл в Архикад15? aleksei_vp ArchiCAD 2 18.07.2015 12:15
Теплоснабжения помещений здания исправительной колонии, СП-17-02 Минюста России, помогите найти sokovv Поиск литературы, чертежей, моделей и прочих материалов 0 28.05.2015 12:51
Нужны вот такие регулируемые стойки//Где их можно найти? Laa911 Прочее. Архитектура и строительство 9 08.07.2013 16:38
Как найти сортамент европейский с двутавром 226х120 мм proteirei Металлические конструкции 2 18.02.2013 18:20