Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

  • Congratulations waross on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

FEM Programming for inclined frame elements

Status
Not open for further replies.

CivilTanju

Structural
May 2, 2006
33
0
0
TR
hi all community members,

I'm studying a book(Programming the Finite Element Method by Ian M. Smith and D. V. Griffiths) about fem for frame elements. But examples in that book especially for space frames are comprised only for orthogonal elements in 3D space. There are no implementation for inclined frame elements. I'm not looking the direct asnwer here I know that this topic is quite specific so even any entry-point will be appreciated.

Regards,
 
Replies continue below

Recommended for you

a frame's a frame, inclined or not, no?

what usual thing do you think will happen in a non-orthogonal frame ?

i'd've thought the key points about a frame relate to moments, and moment continuity ... moment capability at the joints and the foundations, which implies moment capability within the frame elements.
 
> a frame's a frame, inclined or not, no?

Basically the frame is a frame, but how am I supposed to deal with the local axes orientations related to global axes? One way or the other I should provide the input for how the local to global orientation is.

The book's approach is the gamma variable (in degrees) which deals with orientation,
for vertical elements gamma is: rotation of its own longitidual local axis(vertical), around global vertical axis
for non vertical elements gamma is: rotation of its own longitidual axis (horizontal) to global horizontal plane.

How to figure out the gamma(keeping the right hand rule) ,say for element which makes 30deg with global X axis and 60deg with global Y axis?

Regards,
 
wth is "the gamma variable" ? what FE code are you using ? i think you're using a structural code (no slight intended) ... once you tell us the code, someone knowledgable might answer ! intuitively there are two angles needed to specify the direction of a beam in relation to a co-ordinate system.
 
wot if you define your co-ordinate system in the plane of the frame, then resolve you applied forces into this co-ordinate system (so you'll have out-of-plane forces applied to the frame) ?
 
Yes two angles will define a beam direction, but a third angle is required to define the position of the beam element's major and minor cross-sectional axes.

This is achieved using a transformation matrix. I find it extremely hard to believe that any book on frame elements will omit this.

try googling - beam transformation matrix
 
it sounds to me as though the code assumes that the elements are aligned to global axes, so maybe the "gamma" angle is the local major axes ?
 
>wth is "the gamma variable" ?
As I mentioned in my previous posts gamma is angle in degrees for orientation from local to global coordinates, the ,issue here is gamma is related just only one angle per element, that is, elements are assumed just only vertical or horizontal not for inclined.

>what FE code are you using ? i think you're using a >structural code (no slight intended) ... once you tell us >the code, someone knowledgable might
Yes it's structural code intended for structural analyse.
Posting codes here I think doesn't make sense at all, bcoz there are so many uninnteligible functions/procedures etc..

The problem in question is in 1st attachment, 2nd is element orientation.
 
 http://img37.imageshack.us/i/structure.png/][IMG]http://img37.imageshack.us/img37/5041/structure.th.png
Thnx in advance,

Sorry probably I couldn't expressed my problem well, but I think we are on right spot, there should be a transformation matrix to convert loc to global coordinates.

Actually the program uses the trans. matrixes but just only with one angle and assumes that elements are globaly aligned , shouldn't be at least 3 angles?
 
attmts still not there ?

i didn't want you to post the code, only it's name (STAAD, RISA, ...). it sounds like it's an in-house code with very limited capabilities ... ie assumes elements in global axes. if it is an in-house code, then no-one outside of the house will be able to help you; if it's a commercial code then someone else is using it and will be able to help.

if it assumes the frame elements are orthogonal, then it won't solve a non-orthogonal frame (will it ?) ... mostly 'cause you can't describe the non-orthogonal frame to it ... it'll just sit there muttering to itself "crazy, just crazy talk ..."
 
It's neither a in-box application nor in-house code, conversely a public-house :).It is published in book and I want it to improve a little further.

:( Where the hell has gone these attachments this time. Something is ill-conditioned with this server. ok I upload them to different location.



Code is below:

Program 4.4 Analysis of elastic rigid-jointed frames using 2-node beam/rod elements in 2- or 3-dimensions.
USE main; IMPLICIT NONE
INTEGER,PARAMETER::iwp=SELECTED_REAL_KIND(15)
INTEGER::fixed_freedoms,i,iel,k,loaded_nodes,ndim,ndof,nels,neq,nod=2,
nodof,nn,nprops,np_types,nr REAL(iwp)::penalty=l.0e2 0_iwp,zero=0.0_iwp
i dynami c arrays
INTEGER,ALLOCATABLE::etype{:),g:)),g_g:),:),g_num:),:),kdiag:)),nf:),:)
no:)),node:)),num{:),sense:)) REAL(iwp),ALLOCATABLE::action:)),coord:),:),eld{:),gamma:)),g_coord:),:
km:),:),kv:)),loads:)) ,prop:),:),value:))
i input and initialisation
OPEN(10,FILE=»fe95.dat'); OPEN(11,FILE='fe95.res')
READ(10,*)nels,nn,ndim,nprops,np_types
IF(ndim==2)nodof=3; IF(ndim==3)nodof=6; ndof=nod*nodof
ALLOCATE(nf(nodof,nn),km(ndof,ndof),coord(nod,ndim),g_coord(ndim,nn),
eld(ndof),action(ndof),g_num(nod,nels),num(nod),g(ndof),gamma(nels),
g_g(ndof,nels),prop(nprops,np_types),etype(nels)) READ(10,*)prop; etype=l; IF(np_types>l)READ(10,*)etype; IF(ndim==3)READ(10,*)gamma READ (10 , *) g_coord; READ (10, *) g__num
nf=l; READ(10,*)nr,(k,nf:),k),i=l,nr); CALL formnf(nf); neq=MAXVAL(nf) ALLOCATE(kdiag(neq),loads(0:neq)); kdiag=0 i loop the elements to find global array sizes
STATIC EQUILIBRIUM OF STRUCTURES
129
elements_l: DO iel=l,nels
num=g__num :) , iel) ; CALL num_to_g (num, nf, g) ; g_g :) , iel) =g
CALL fkdiag(kdiag,g) END DO elements__l
D0 i=2,neq; kdiag(i)=kdiag(i)+kdiag(i-1); END DO; ALLOCATE(kv(kdiag(neq))) WRITE(11, ' (2(A,15)) ') &
« There are",neq," equations and the skyline storage is",kdiag(neq)
i global stiffness matrix assembly
jcv^zero
elements_2: DO iel=l,nels
num=g_num :) , iel) ; coord=TRANSPOSE (g__coord :) , num) )
CALL rigid_jointed(km,prop,gamma,etype,iel,coord); g=g_g:),iel)
CALL fsparv(kv,km,g,kdiag) END DO elements_2
i read loads and/or displacements
loads=zero; READ(10,*)loaded_nodes,(k,loads(nf:),k)),i=l,loaded_nodes)
READ(10,*)fixed_freedoms
IF(fixed_freedoms/=0)THEN
ALLOCATE (node (fixed__f reedoms) , no (f ixed_f reedoms) , &
sense (fixed_f reedoms) , value (fixed_f reedoms) )
READ(10,*)(node(i),sense(i),value(i),i=l,fixed_freedoms)
DO i=l,fixed_freedoms; no(i)=nf(sense(i),node(i)); END DO
kv(kdiag(no))=kv(kdiag(no))+penalty; loads(no)=kv(kdiag(no))*value END IF
i equation solution
CALL sparin(kv,kdiag); CALL spabac(kv,loads,kdiag); loads(0)=zero WRITE(11, ' (/A) ') " Node Displacements and Rotation(s)" DO k=l,nn; WRITE(11,'(15,6E12.4)?)k,loads(nf:),k)); END DO
i retrieve element end actions
WRITE(11,'(/A)')" Element Actions" elements_3: DO iel=l,nels
num=g_num:),iel); coord=TRANSPOSE(g_coord:),num))
CALL rigid_jointed(km,prop,gamma,etype,iel,coord); g=g_g:),iel)
eld=loads(g); action=MATMUL(km,eld)
IF(ndim<3)THEN; WRITE(11,•(15,6E12.4)')iel,action; ELSE WRITE(11,« (I5,6E12.4)')iel, action(l: 6) WRITE(11,'(A,6E12.4)')» ",action(7:12)
END IF END DO elements_3 STOP END PROGRAM p44
 
Which edition of Smith & Griffiths are you using?

The example given for beam 3D beam elements has orthogonal beams, but the program should work with any 3D frame. Figures 4.22 to 4.24 in my copy (Edition 3) seem to cover what you are asking about.

Doug Jenkins
Interactive Design Services
 
You will need to transform your elementary stiffness matrix which is a function of the length of the element and transform it so stiffness matrix is in global coordinates, the transformation matrix should be a 12 x 12 matrix so to transform from your elementary coordinates to global coordinates is as follows:

kglobal=T'*kelementary*T

where T is your transformation matrix
 
Status
Not open for further replies.
Back
Top