Prezentarea unui program cu elemente finite capabil a fi folosit în ...

Prezentarea unui program cu elemente finite capabil a fi folosit în ... Prezentarea unui program cu elemente finite capabil a fi folosit în ...

resist.pub.ro
from resist.pub.ro More from this publisher
10.06.2014 Views

Y(1) = Z(1) = SEL(1) = I= NNODE= /GO ! resume printout Cel de-al doilea exemplu numit bilinear.mac, evaluează tensiunile dintr-un model deja rulat static şi atribuie materialul 1 elementelor supuse la întindere şi materialul 2 elementelor supuse la compresiune (aceste două materiale trebuie să fie deja definite în model şi pot avea proprietăŃi diferite la întindere şi compresiune) apoi mai rulează problema pentru a corecta eventual selecŃia elementelor şi soluŃia problemei. Acest macrou este util a fi rulat după rezolvarea unei analize statice. ARG1 este numărul de iteraŃii (implicit este 2). /nop _niter = arg1 ! set number of iterations *if,_niter,lt,2,then _Niter = 2 *endif *do,iter,1,_niter ! loop on number of iterations /post1 set,1,1 *get,ar11,elem,,num,maxd ! Get number of elements *dim,_s1,,ar11 ! array for element s1 *dim,_s3,,ar11 ! array for element s3 etable,sigmax,s,1 ! s1 is in element table sigmax etable,sigmin,s,3 ! s3 is in element table sigmin *vget,_s1(1),elem,1,etab,sigmax ! get element maximum stress in s1 *vget,_s3(1),elem,1,etab,sigmin ! get element minimum stress in s3 *dim,_mask,,ar11 ! array for mask vector *voper,_mask(1),_s1(1),lt,0 ! true if max. stress < 0 *vcum,1 ! accumulate compression elements *vabs,0,1 ! absolute value of s3 *voper,_mask(1),_s3(1),gt,_s1(1) ! true if abs(minstr) > maxstr finish /prep7 material mods mat,1 properties emod,all ! go to prep7 for element ! set all materials to tension *vput,_mask(1),elem,1,esel ! select compression elements mat,2 ! change selected elements to compression emod,all esel,all finish _s1(1)= _s3(1)= _mask(1)= ! select all elements ! clean up all vectors (set to zero)

solve solve finish *enddo _niter= _iter= /gop ! rerun the analysis ! end of iterations ! clean up iteration counters 1.1.13. Aspecte de interfaŃă în lucrul GUI Atunci când se rulează un macrou în modul de lucru GUI, programul ANSYS asigură o serie de facilităŃi suplimentare pentru lucrul cu macrouri. Astfel este posibil să: • Se introducă un parametru scalar de la tastatură folosind comanda *ASK; • Se creeze o fereastră de dialog pentru a introduce mai multe valori pentru o serie de parametri; • Se afişeze un mesaj folosind comanda *MSG; • Se selecteze anumite entităŃi cu ajutorul mousului; • Se deschidă orice fereastră de dialog. InformaŃii suplimentare legate de comenzile care lucrează cu parametri se găsesc în manualul APDL Programmer's Guide.

Y(1) =<br />

Z(1) =<br />

SEL(1) =<br />

I=<br />

NNODE=<br />

/GO<br />

! resume printout<br />

Cel de-al doilea exemplu numit bilinear.mac, evaluează tensiunile dintr-un model<br />

deja rulat static şi atribuie materialul 1 <strong>elemente</strong>lor supuse la întindere şi materialul 2<br />

<strong>elemente</strong>lor supuse la compresiune (aceste două materiale trebuie să <strong>fi</strong>e deja de<strong><strong>fi</strong>nite</strong> în model<br />

şi pot avea proprietăŃi diferite la întindere şi compresiune) apoi mai rulează problema pentru a<br />

corecta eventual selecŃia <strong>elemente</strong>lor şi soluŃia problemei. Acest macrou este util a <strong>fi</strong> rulat<br />

după rezolvarea unei analize statice. ARG1 este numărul de iteraŃii (implicit este 2).<br />

/nop<br />

_niter = arg1<br />

! set number of iterations<br />

*if,_niter,lt,2,then<br />

_Niter = 2<br />

*endif<br />

*do,iter,1,_niter ! loop on number of iterations<br />

/post1<br />

set,1,1<br />

*get,ar11,elem,,num,maxd ! Get number of elements<br />

*dim,_s1,,ar11<br />

! array for element s1<br />

*dim,_s3,,ar11<br />

! array for element s3<br />

etable,sigmax,s,1 ! s1 is in element table sigmax<br />

etable,sigmin,s,3 ! s3 is in element table sigmin<br />

*vget,_s1(1),elem,1,etab,sigmax ! get element maximum stress in<br />

s1<br />

*vget,_s3(1),elem,1,etab,sigmin ! get element minimum stress in<br />

s3<br />

*dim,_mask,,ar11 ! array for mask vector<br />

*voper,_mask(1),_s1(1),lt,0 ! true if max. stress &lt; 0<br />

*v<strong>cu</strong>m,1<br />

! ac<strong>cu</strong>mulate compression elements<br />

*vabs,0,1<br />

! absolute value of s3<br />

*voper,_mask(1),_s3(1),gt,_s1(1) ! true if abs(minstr) > maxstr<br />

<strong>fi</strong>nish<br />

/prep7<br />

material mods<br />

mat,1<br />

properties<br />

emod,all<br />

! go to prep7 for element<br />

! set all materials to tension<br />

*vput,_mask(1),elem,1,esel ! select compression elements<br />

mat,2<br />

! change selected elements to compression<br />

emod,all<br />

esel,all<br />

<strong>fi</strong>nish<br />

_s1(1)=<br />

_s3(1)=<br />

_mask(1)=<br />

! select all elements<br />

! clean up all vectors (set to zero)

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!