The TL Plane Bar Element: · PDF fileOnce we squeeze all juice from the equilibrium analysis,...

30
Nonlinear FEM 10 The TL Plane Bar Element: Truss Analysis NFEM Ch 10 – Slide 1

Transcript of The TL Plane Bar Element: · PDF fileOnce we squeeze all juice from the equilibrium analysis,...

Page 1: The TL Plane Bar Element: · PDF fileOnce we squeeze all juice from the equilibrium analysis, its time to go to the stiffness level. To start, we need to code three modules again.

Nonlinear FEM

10The TL Plane Bar

Element: Truss Analysis

NFEM Ch 10 – Slide 1

Page 2: The TL Plane Bar Element: · PDF fileOnce we squeeze all juice from the equilibrium analysis, its time to go to the stiffness level. To start, we need to code three modules again.

Nonlinear FEM

The Example Structure: Mises Truss(after Richard Edler von Mises, 1883-1953)

����

����

α α

X, x

Y, y (2)(1)

1

2

3

uX

uY

fY = λ

0

Here λ > 0 means crownload is applied upward

E, A 0E, A

S

H

NFEM Ch 10 – Slide 2

Page 3: The TL Plane Bar Element: · PDF fileOnce we squeeze all juice from the equilibrium analysis, its time to go to the stiffness level. To start, we need to code three modules again.

Nonlinear FEM

Implementation LevelsIn Nonlinear Analysis

In Linear FEM, there is only one level (equilibrium andincremental coalesce). But in nonlinear FEM there are two

Equilibrium: internal and external forces

Incremental (a.k.a. rate): stiffness and incremental load

Which one do we do first?

NFEM Ch 10 – Slide 3

Page 4: The TL Plane Bar Element: · PDF fileOnce we squeeze all juice from the equilibrium analysis, its time to go to the stiffness level. To start, we need to code three modules again.

Nonlinear FEM

Which Level Should Be Done First?

Answer: equilibrium

For example structure, external forces are trivial

So, focus is on internal forces

NFEM Ch 10 – Slide 4

Page 5: The TL Plane Bar Element: · PDF fileOnce we squeeze all juice from the equilibrium analysis, its time to go to the stiffness level. To start, we need to code three modules again.

Nonlinear FEM

For Equilibrium Analysis, Three Modules Are Required to Start

Form internal forces of Mises Truss: AssembleIntForceOfMisesTruss

Form internal forces of TL plane bar element: TLPlaneBarIntForce Merge element into master force vector: MergeElemIntoMasterIntForce

NFEM Ch 10 – Slide 5

Page 6: The TL Plane Bar Element: · PDF fileOnce we squeeze all juice from the equilibrium analysis, its time to go to the stiffness level. To start, we need to code three modules again.

Nonlinear FEM

Element Internal Force Module

TLPlaneBarIntForce[XYcoor_,Em_,A0_,s0_,uXY_,numer_]:= Module[{X1,Y1,X2,Y2,X21,Y21,uX1,uY1,uX2,uY2,uX21,uY21, x21,y21,LL0,LL,L0,L,e,s,cx,cy,pe}, {{X1,Y1},{X2,Y2}}=XYcoor; X21=X2-X1; Y21=Y2-Y1; LL0=X21^2+Y21^2; L0=Sqrt[LL0]; {{uX1,uY1},{uX2,uY2}}=uXY; uX21=uX2-uX1; uY21=uY2-uY1; x21=X21+uX21; y21=Y21+uY21; LL=x21^2+y21^2; L=Sqrt[LL]; e=(LL-LL0)/(2*LL0); s=s0+Em*e; cx=x21/L0; cy=y21/L0; pe=A0*s*Transpose[{{-cx,-cy,cx,cy}}]; If [!numer,pe=Simplify[pe]]; If [numer,pe=N[pe]]; Return[pe]];

ClearAll[X1,Y1,X2,Y2,uX,uY,Em,A0,s0]; pe=TLPlaneBarIntForce[{{X1,Y1},{X2,Y2}},Em,A0,0, {{uX,uY},{uX,uY}},False];Print["pe=",Transpose[pe]//MatrixForm];pe=TLPlaneBarIntForce[{{1,2},{5,2}},160,6,25, {{2,-1},{1,-5}},False];Print["pe=",Transpose[pe]//MatrixForm];

pe = (0 0 0 0)pe = ( −315 420 315 −420)

NFEM Ch 10 – Slide 6

Page 7: The TL Plane Bar Element: · PDF fileOnce we squeeze all juice from the equilibrium analysis, its time to go to the stiffness level. To start, we need to code three modules again.

Nonlinear FEM

Internal Force Assembler For Mises Truss

AssembleIntForceOfMisesTruss[S_,H_,Em_,A0_,s0_,uXY_,numer_]:= Module[{XY1,XY2,XY3,uXY1,uXY2,uXY3,pe1,pe2,p}, XY1={-S/2,0}; XY2={0,H}; XY3={S/2,0}; uXY1={0,0}; uXY2=uXY; uXY3={0,0}; p=Table[0,{2},{1}]; pe1=TLPlaneBarIntForce[{XY1,XY2},Em,A0,s0,{uXY1,uXY2},numer]; p=MergeElemIntoMasterIntForce[pe1,{0,0,1,2},p]; pe2=TLPlaneBarIntForce[{XY2,XY3},Em,A0,s0,{uXY2,uXY3},numer]; p=MergeElemIntoMasterIntForce[pe2,{1,2,0,0},p]; If [!numer,p=Simplify[p]]; If[numer,p=N[p]]; Return[p]]; MergeElemIntoMasterIntForce[pe_,eftab_,p_]:= Module[{i,ii,neldof,pinp}, pinp=p; neldof=Length[eftab]; For [i=1, i<=neldof, i++, ii=eftab[[i]]; If [ii>0,pinp[[ii,1]]+=pe[[i,1]]] ]; Return[pinp]]; ClearAll[Em,A0,S,H,s0,uX,uY,p,numer];p=AssembleIntForceOfMisesTruss[2,2.5,10,0.75,0,{-0.4,0.25},True];Print["p=",p//MatrixForm];p=AssembleIntForceOfMisesTruss[S,H,Em,A0,0,{uX,uY},False];Print["p=",p//MatrixForm];

NFEM Ch 10 – Slide 7

Page 8: The TL Plane Bar Element: · PDF fileOnce we squeeze all juice from the equilibrium analysis, its time to go to the stiffness level. To start, we need to code three modules again.

Nonlinear FEM

Test Results For Int Force Assembler

NFEM Ch 10 – Slide 8

Page 9: The TL Plane Bar Element: · PDF fileOnce we squeeze all juice from the equilibrium analysis, its time to go to the stiffness level. To start, we need to code three modules again.

Nonlinear FEM

Getting the Load-Deflection Response

ClearAll[Em,A0,S,H,uX,uY,pX,pY,lambda];pX = (4*A0*Em*uX*(S^2+2*uX^2+4*H*uY+2*uY^2))/(4*H^2+ S^2)^(3/2);pY = (8*A0*Em*(H+uY)*(uX^2+2*H*uY+uY^2))/(4*H^2+S^2)^(3/2); roots=Solve[pX==0, uX];Print["roots of pX=0 are ",roots//InputForm];Print["lambda=",Simplify[pY/.roots]//InputForm];

Solve for uX by saying pX = 0. Then replace into pY to get the load

λ versus vertical deflection. Cubic equation gives 3 solutions:

NFEM Ch 10 – Slide 9

Page 10: The TL Plane Bar Element: · PDF fileOnce we squeeze all juice from the equilibrium analysis, its time to go to the stiffness level. To start, we need to code three modules again.

Nonlinear FEM

Which Solution is Fundamental?

ClearAll[Em,A0,S,H,uX,uY,pX,pY,lambda];lambdaP=( 8*A0*Em*uY* (H+uY)*(2*H+uY))/(4*H^2+S^2)^(3/2); lambdaS=(-4*A0*Em*S^2*(H+uY))/(4*H^2+S^2)^(3/2); case1={H->Sqrt[3]/3,S->2,A0->1,Em->1};case2={H->Sqrt[2], S->2,A0->1,Em->1};case3={H->Sqrt[3], S->2,A0->1,Em->1};case4={H->3, S->2,A0->1,Em->1};pstyle={{AbsoluteThickness[2],RGBColor[0,0,0]}, {AbsoluteThickness[2],Dashing[{0.02,0.02}],RGBColor[1,0,0]}};Plot[{lambdaP/.case1,lambdaS/.case1},{uY,0,-2*H/.case1}, PlotStyle->pstyle, Frame->True, ImageSize->300, AxesLabel->{"uY","lambda"},PlotLabel->"Case 1: H=Sqrt[3]/3"];Plot[{lambdaP/.case2,lambdaS/.case2},{uY,0,-2*H/.case2}, PlotStyle->pstyle, Frame->True, ImageSize->300, AxesLabel->{"uY","lambda"},PlotLabel->"Case 2: H=Sqrt[2]"];Plot[{lambdaP/.case3,lambdaS/.case3},{uY,0,-2*H/.case3}, PlotStyle->pstyle, Frame->True, ImageSize->300, AxesLabel->{"uY","lambda"},PlotLabel->"Case 3: H=Sqrt[3]"];Plot[{lambdaP/.case4,lambdaS/.case4},{uY,0,-2*H/.case4}, PlotStyle->pstyle, Frame->True, ImageSize->300, AxesLabel->{"uY","lambda"},PlotLabel->"Case 4: H=3"];

One solution is the primary or fundamental path; the other two compose the secondary path. Now plot them:

NFEM Ch 10 – Slide 10

Page 11: The TL Plane Bar Element: · PDF fileOnce we squeeze all juice from the equilibrium analysis, its time to go to the stiffness level. To start, we need to code three modules again.

Nonlinear FEM

Plots Cover Four Cases, FromShallow Arches Through Deep Ones

−1 −0.8 −0.6 −0.4 −0.2 0−0.2

−0.1

0

0.1

0.2

−2.5 −2 −1.5 −1 −0.5 0

−0.4

−0.2

0

0.2

0.4

−3.5 −3 −2.5 −2 −1.5 −1 −0.5 0−0.4

−0.2

0

0.2

0.4

−6 −5 −4 −3 −2 −1 0−0.3−0.2−0.1

00.10.20.3

Case 1: H = Sqrt[3]/3 Case 2: H = Sqrt[2]

Case 3: H = Sqrt[3] Case 4: H = 3

uY uY

uY uY

Black is primary path, red is secondary one

NFEM Ch 10 – Slide 11

Page 12: The TL Plane Bar Element: · PDF fileOnce we squeeze all juice from the equilibrium analysis, its time to go to the stiffness level. To start, we need to code three modules again.

Nonlinear FEMFancier 3D Plotting: 2 StateVariables + One Control Variable

ClearAll[S,H,Em,A0,uX,uY]; H=Sqrt[3.];λmax[S_,H_,Em_,A0_]:=3.0792*A0*Em*H^3/(4*H^2+S^2)^(3/2);style1={AbsoluteThickness[2],RGBColor[0,0,0]};style2={AbsoluteThickness[2],RGBColor[1,0,0]};style3={AbsoluteThickness[2],RGBColor[1,0,0]};pripath[S_,H_,Em_,A0_,uY_]:=Module[{}, Return[{0,uY,8*A0*Em*uY*(H+uY)*(2*H+uY)/(4*H^2+S^2)^(3/2),style1}]];secpath1[S_,H_,Em_,A0_,uY_]:=Module[{c,uYB1,uYB2}, uYB1=Re[N[-H+Sqrt[H^2-S^2/2]]]; uYB2=Re[N[-H-Sqrt[H^2-S^2/2]]]; c=4*A0*Em*S^2/(4*H^2+S^2)^(3/2); If [N[uY]>=uYB1, Return[{0,uYB1,-c*(H+uYB1)}]]; If [N[uY]<=uYB2, Return[{0,uYB2,-c*(H+uYB2)}]]; Return[{Sqrt[-S^2/2-2*H*uY-uY^2],uY,-c*(H+uY),style2}]];secpath2[S_,H_,Em_,A0_,uY_]:=Module[{c,uYB1,uYB2}, uYB1=Re[N[-H+Sqrt[H^2-S^2/2]]]; uYB2=Re[N[-H-Sqrt[H^2-S^2/2]]]; c=4*A0*Em*S^2/(4*H^2+S^2)^(3/2); If [N[uY]>=uYB1, Return[{0,uYB1,-c*(H+uYB1)}]]; If [N[uY]<=uYB2, Return[{0,uYB2,-c*(H+uYB2)}]]; Return[{-Sqrt[-S^2/2-2*H*uY-uY^2],uY,-c*(H+uY),style3}]];λrange=1.1*{-λmax[2,H,1,1],λmax[2,H,1,1]};pp=ParametricPlot3D[pripath[2,H,1,1,uY], {uY,0,-2*H}, PlotPoints->201, PlotRange->{{-H,H},{0,-2*H},λrange}, BoxRatios->{1,2,1},AxesLabel->{"uX","uY","λ"}, Compiled->False,DisplayFunction->Identity];ps1=ParametricPlot3D[secpath1[2,H,1,1,uY], {uY,0,-2*H}, PlotPoints->201, PlotRange->{{-H,H},{0,-2*H},λrange}, BoxRatios->{1,2,1},AxesLabel->{"uX","uY","λ"}, Compiled->False,DisplayFunction->Identity];ps2=ParametricPlot3D[secpath2[2,H,1,1,uY], {uY,0,-2*H}, PlotPoints->201, PlotRange->{{-H,H},{0,-2*H},λrange}, BoxRatios->{1,2,1},AxesLabel->{"uX","uY","λ"}, Compiled->False,DisplayFunction->Identity];Show[pp,ps1,ps2, ViewPoint->{3,1,2},DisplayFunction->$DisplayFunction];

NFEM Ch 10 – Slide 12

Page 13: The TL Plane Bar Element: · PDF fileOnce we squeeze all juice from the equilibrium analysis, its time to go to the stiffness level. To start, we need to code three modules again.

Nonlinear FEM

Interesting Case: Rise Angle of 60 Degrees

−10

1uX−3

−2−1

0uY

−0.2

0

0.2

λ

01

−0.2

Limit point snap-through and bifurcation bucklingoccur simultaneously. This is a common occurrence whenoptimizing perfect structures under stability constraints

NFEM Ch 10 – Slide 13

Page 14: The TL Plane Bar Element: · PDF fileOnce we squeeze all juice from the equilibrium analysis, its time to go to the stiffness level. To start, we need to code three modules again.

Nonlinear FEM

Animation Script

ClearAll[S,H,Em,A0,uX,uY,a,c,d]; S=2.; H=3.; A0=1; Em=1;nmax =20; c=N[4*A0*Em/(4*H^2+S^2)^(3/2)];pelem1=Table[0,{nmax+1}];pelem2=Table[0,{nmax+1}];pload =Table[0,{nmax+1}];parrow=Table[0,{nmax+1}];Do [uY=-2.5*n*H/nmax; d= N[-S^2/2-2*H*uY-uY^2]; If[d <=0., uX=0; λ= N[2*c*uY*(H+uY)*(2*H+uY)], uX=Sqrt[d]; λ= N[-c*S^2*(H+uY)]]; pelem1[[n+1]]=Graphics[Line[{{-S/2,0},{uX,H+uY}}]]; pelem2[[n+1]]=Graphics[Line[{{ uX,H+uY},{S/2,0}}]]; pload[[n+1]] =Graphics[Line[{{ uX,H+uY},{uX,H+uY-λ}}]]; a = Min[.5*Abs[λ],0.2*H]; If [λ>0, parrow[[n+1]]=Graphics[{ Line[{{ uX,H+uY},{uX-a/2,H+uY-a}}], Line[{{ uX,H+uY},{uX+a/2,H+uY-a}}]} ], parrow[[n+1]]=Graphics[{ Line[{{ uX,H+uY},{uX-a/2,H+uY+a}}], Line[{{ uX,H+uY},{uX+a/2,H+uY+a}}]} ] ], {n,0,nmax}];Show[Graphics[Thickness[.004]],pelem1,pelem2, Graphics[Thickness[.005]],Graphics[RGBColor[1,0,1]], pload,parrow,ImageSize->300, PlotRange->{{-2*H,2*H},{-2*H,2*H}},AspectRatio->1];

NFEM Ch 10 – Slide 14

Page 15: The TL Plane Bar Element: · PDF fileOnce we squeeze all juice from the equilibrium analysis, its time to go to the stiffness level. To start, we need to code three modules again.

Nonlinear FEM

Animation in One Frame: Deep Arch

NFEM Ch 10 – Slide 15

Page 16: The TL Plane Bar Element: · PDF fileOnce we squeeze all juice from the equilibrium analysis, its time to go to the stiffness level. To start, we need to code three modules again.

Nonlinear FEM

Animation With Multiple Frames

ClearAll[S,H,Em,A0,uX,uY,a,c,d]; S=2; H=.8; A0=1; Em=1;nmax =20; c= N[4*A0*Em/(4*H^2+S^2)^(3/2)];Do [uY=-2.5*n*H/nmax; d= N[-S^2/2-2*H*uY-uY^2]; If[d <=0., uX=0; λ= N[2*c*uY*(H+uY)*(2*H+uY)], uX=Sqrt[d]; λ= N[-c*S^2*(H+uY)]]; pelem1=Graphics[Line[{{-S/2,0},{uX,H+uY}}]]; pelem2=Graphics[Line[{{ uX,H+uY},{S/2,0}}]]; pload =Graphics[Line[{{ uX,H+uY},{uX,H+uY-λ}}]]; a = Min[.5*Abs[λ],0.2*H]; If [λ>0, parrow=Graphics[{ Line[{{ uX,H+uY},{uX-a/2,H+uY-a}}], Line[{{ uX,H+uY},{uX+a/2,H+uY-a}}]} ], parrow=Graphics[{ Line[{{ uX,H+uY},{uX-a/2,H+uY+a}}], Line[{{ uX,H+uY},{uX+a/2,H+uY+a}}]} ] ]; Show[Graphics[Thickness[.012]],pelem1,pelem2, Graphics[Thickness[.005]],Graphics[RGBColor[1,0,1]], pload,parrow,ImageSize->250, PlotRange->{{-2*H,2*H},{-2*H,2*H}},AspectRatio->1], {n,0,nmax}];

Will have to demo this one from computer

NFEM Ch 10 – Slide 16

Page 17: The TL Plane Bar Element: · PDF fileOnce we squeeze all juice from the equilibrium analysis, its time to go to the stiffness level. To start, we need to code three modules again.

Nonlinear FEM

Stiffness Level

Once we squeeze all juice from the equilibrium analysis,

its time to go to the stiffness level. To start, we need to

code three modules again.

NFEM Ch 10 – Slide 17

Page 18: The TL Plane Bar Element: · PDF fileOnce we squeeze all juice from the equilibrium analysis, its time to go to the stiffness level. To start, we need to code three modules again.

Nonlinear FEM

Tangent Stiffness Matrix of TL Plane Bar Element

TLPlaneBarTanStiff[XYcoor_,Em_,A0_,s0_,uXY_,numer_]:= Module[{X1,Y1,X2,Y2,X21,Y21,uX1,uY1,uX2,uY2,uX21,uY21, x21,y21,LL0,LL,L0,L,e,s,cx,cy,KeM,KeG}, {{X1,Y1},{X2,Y2}}=XYcoor; X21=X2-X1; Y21=Y2-Y1; LL0=X21^2+Y21^2; L0=Sqrt[LL0]; {{uX1,uY1},{uX2,uY2}}=uXY; uX21=uX2-uX1; uY21=uY2-uY1; x21=X21+uX21; y21=Y21+uY21; LL=x21^2+y21^2; L=Sqrt[LL]; e=(LL-LL0)/(2*LL0); s=s0+Em*e; cx=x21/L0; cy=y21/L0; KeM=(Em*A0/L0)*{{ cx*cx, cx*cy,-cx*cx,-cx*cy}, { cx*cy, cy*cy,-cy*cx,-cy*cy}, {-cx*cx,-cy*cx, cx*cx, cy*cx}, {-cx*cy,-cy*cy, cy*cx, cy*cy}}; KeG=(A0*s/L0)*{{1,0,-1,0},{0,1,0,-1},{-1,0,1,0},{0,-1,0,1}}; If [!numer,{KeM,KeG}=Simplify[{KeM,KeG}]]; If [ numer,{KeM,KeG}=N[{KeM,KeG}]]; Return[{KeM,KeG}]]; {KeM,KeG}=TLPlaneBarTanStiff[{{1,2},{5,2}},160,6,25, {{2,-1},{1,-5}},True]; Ke=KeM+KeG;Print["KeM=",KeM//MatrixForm," KeG=",KeG//MatrixForm];Print["Ke=",Ke//MatrixForm]; Print["eigenvalues=",Chop[{Eigenvalues[N[KeM]],Eigenvalues[N[KeG]], Eigenvalues[N[Ke]]}]];

NFEM Ch 10 – Slide 18

Page 19: The TL Plane Bar Element: · PDF fileOnce we squeeze all juice from the equilibrium analysis, its time to go to the stiffness level. To start, we need to code three modules again.

Nonlinear FEM

Assembler Modules To Form Tangent Stiffness Matrix of Mises Truss

AssembleTanStiffOfMisesTruss[S_,H_,Em_,A0_,s0_,uXY_,numer_]:= Module[{XY1,XY2,XY3,uXY1,uXY2,uXY3,KeM1,KeG1,KeM2,KeG2,p}, XY1={-S/2,0}; XY2={0,H}; XY3={S/2,0}; uXY1={0,0}; uXY2=uXY; uXY3={0,0}; K=Table[0,{2},{2}]; {KeM1,KeG1}=TLPlaneBarTanStiff[{XY1,XY2},Em,A0,s0,{uXY1,uXY2},numer]; K=MergeElemIntoMasterStiff[KeM1+KeG1,{0,0,1,2},K]; {KeM2,KeG2}=TLPlaneBarTanStiff[{XY2,XY3},Em,A0,s0,{uXY2,uXY3},numer]; K=MergeElemIntoMasterStiff[KeM2+KeG2,{1,2,0,0},K]; If [!numer,K=Simplify[K]]; If[numer,K=N[K]]; Return[K]];

MergeElemIntoMasterStiff[Ke_,eftab_,Km_]:=Module[ {i,j,ii,jj,neldof=Length[Ke],K}, K=Km; For[i=1, i<=neldof, i++, ii=eftab[[i]]; For[j=i, j<=neldof, j++, jj=eftab[[j]]; If [ii>0 && jj>0, K[[jj,ii]]=K[[ii,jj]]+=Ke[[i,j]]]]; ]; Return[K] ]; ClearAll[S,H,Em,A0,s0,uX,uY]; s0=0; uXY={0,uY};K=AssembleTanStiffOfMisesTruss[S,H,Em,A0,s0,uXY,False];Print["K= ",K//MatrixForm];ClearAll[S,H,Em,A0,s0,uX,uY]; uXY={uX,uY};K=AssembleTanStiffOfMisesTruss[S,H,Em,A0,s0,uXY,False];Print["K= ",K//MatrixForm];

NFEM Ch 10 – Slide 19

Page 20: The TL Plane Bar Element: · PDF fileOnce we squeeze all juice from the equilibrium analysis, its time to go to the stiffness level. To start, we need to code three modules again.

Nonlinear FEM

Here Are The Three Modules We Need

Form tangent stiffness of Mises Truss: AssembletanStiffOfMisesTruss

Form tangent stiffness of TL plane bar element: TLPlaneBarTanStiff Merge element into master force vector: MergeElemIntoMasterTanStiff

NFEM Ch 10 – Slide 20

Page 21: The TL Plane Bar Element: · PDF fileOnce we squeeze all juice from the equilibrium analysis, its time to go to the stiffness level. To start, we need to code three modules again.

Nonlinear FEM

Output From Test Statements

NFEM Ch 10 – Slide 21

Page 22: The TL Plane Bar Element: · PDF fileOnce we squeeze all juice from the equilibrium analysis, its time to go to the stiffness level. To start, we need to code three modules again.

Nonlinear FEM

Finding Zeros of the Stiffness Determinant

ClearAll[µ,c,s,α];detK=-((2+6*µ+3*µ^2)*c^2*(-2-2*µ-µ^2+(-2+2*µ+µ^2)*(c^2-s^2))*s^2)/2;detK=Simplify[detK/.c^2->1-s^2]; Print["detK=",detK];sol=Simplify[Solve[detK==0,µ],α>0]; {µ1,µ2,µ3,µ4}=µ/.sol;{µ1,µ2,µ3,µ4}=Simplify[{µ1,µ2,µ3,µ4}/.s->Sin[α]]; Print["roots µ1,µ2,µ3,µ4=",TrigExpand[{µ1,µ2,µ3,µ4}]];Print["roots µ1,µ2 (numeric)=",N[{µ1,µ2}]];{µ1,µ2,µ3,µ4}=Simplify[{µ1,µ2,µ3,µ4}/.α->angdeg*(Pi/180)];pstyleL={AbsoluteThickness[2],RGBColor[0,0,0]};pstyleB={AbsoluteThickness[2],RGBColor[1,0,0]};pstyle= {pstyleL,pstyleL,pstyleB,pstyleB}; Off[Plot::plnr]; Plot[{µ1,µ2,µ3,µ4},{angdeg,0,90},PlotStyle->pstyle, Frame->True,ImageSize->300];

NFEM Ch 10 – Slide 22

Page 23: The TL Plane Bar Element: · PDF fileOnce we squeeze all juice from the equilibrium analysis, its time to go to the stiffness level. To start, we need to code three modules again.

Nonlinear FEM

There Are Four CP On The Primary Path

NFEM Ch 10 – Slide 23

Page 24: The TL Plane Bar Element: · PDF fileOnce we squeeze all juice from the equilibrium analysis, its time to go to the stiffness level. To start, we need to code three modules again.

Nonlinear FEM

And Here is Their Locus on the Rise Angle Versus Dimensionless State Parameter Plane

0 20 40 60 80−2

−1.5

−1

−0.5

0

Rise angle α in degrees

Dim

ensi

onle

ss v

erti

cal

defl

ecti

on µ

= u

/H

Y

Limit point 1

Limit point 2

Bifurcation point 1

Bifurcation point 2

NFEM Ch 10 – Slide 24

Page 25: The TL Plane Bar Element: · PDF fileOnce we squeeze all juice from the equilibrium analysis, its time to go to the stiffness level. To start, we need to code three modules again.

Nonlinear FEM

And Here is the Final & Most Important Plot: Load Capacity Versus Rise Angle

1 2 3 4 5

0.05

0.1

0.15

0.2

0.25

0.3

0.35

Bifurcation ptfirst

Limit ptfirst

λL1

λL1

λB1

λB1

√2

√3

H

H =λ at critical

point

Height H

Result for S = 2, A = 1, E = 10

NFEM Ch 10 – Slide 25

Page 26: The TL Plane Bar Element: · PDF fileOnce we squeeze all juice from the equilibrium analysis, its time to go to the stiffness level. To start, we need to code three modules again.

Nonlinear FEM

Space Bar Benchmark Problem:Pyramidal Trusses

X,x

Z,z

Y,y

R

H

1

5

3

4

SupportCircle

Groundφ = 90

9090

90

Apex

2

L0

(1)(2)(3) (4)

NFEM Ch 10 – Slide 26

Page 27: The TL Plane Bar Element: · PDF fileOnce we squeeze all juice from the equilibrium analysis, its time to go to the stiffness level. To start, we need to code three modules again.

Nonlinear FEM

A Pyramidal Truss (m=4) Application:Explosive Energy Absorber

����������������������������������������

NFEM Ch 10 – Slide 27

Page 28: The TL Plane Bar Element: · PDF fileOnce we squeeze all juice from the equilibrium analysis, its time to go to the stiffness level. To start, we need to code three modules again.

Nonlinear FEM

ClearAll[m,φ,α,R,H,Em,A0,L0,µX,µY,µZ,c,s]; m=3; numnod=m+1; numele=m; R=Cos[α]*L0; H=Sin[α]*L0;uX=µX*H; uY=µY*H; uZ=µZ*H; nodxyz=Table[0,{numnod}]; elenod=Table[0,{numele}];φ=2*Pi/m; ang=0; nodxyz[[1]]={0,0,H};For [i=1,i<=m,i++, nodxyz[[i+1]]=R*{Cos[ang],Sin[ang],0}; elenod[[i]]={1,i+1}; ang+=φ]; elemat=Table[Em,{numele}]; elefab=Table[A0,{numele}]; elestr=Table[0,{numele}]; rep1={Cos[α]->c,Sin[α]->s,Cos[2*α]->c^2-s^2,Sin[2*α]->2*s*c};rep2={c^2->1-s^2,Em->1,A0->1,L0->1};noddis=Table[{0,0,0},{numnod}]; noddis[[1]]={uX,uY,uZ};nodtag=Table[{1,1,1},{numnod}]; nodtag[[1]]={0,0,0};p=TLSpaceTrussMasterIntForce[nodxyz,elenod,elemat,elefab, elestr,noddis,False];pred=ReducedForceVector[nodtag,p]; pred=TrigExpand[pred];pred=Simplify[pred/.rep1]; pred=Simplify[pred/.rep2]; Print["pred=",pred//MatrixForm]; {KM,KG}=TLSpaceTrussMasterTanStiff[nodxyz,elenod,elemat,elefab, elestr,noddis,False]; K=Simplify[KM+KG]; Kred=ReducedStiffMatrix[nodtag,K]; Kred=TrigExpand[Kred];Kred=Simplify[Kred/.rep1]; Kred=Simplify[Kred/.rep2]; Print["Kred=",Kred//MatrixForm];

Pyramidal Truss Solution Script for Three Members (m=3)

NFEM Ch 10 – Slide 28

Page 29: The TL Plane Bar Element: · PDF fileOnce we squeeze all juice from the equilibrium analysis, its time to go to the stiffness level. To start, we need to code three modules again.

Nonlinear FEM

Pyramidal Truss Solution Script for One Member (m=1)

ClearAll[m,φ,θ,α,R,H,Em,A0,L0,uX,uY,uZ,µX,µY,µZ,c,s,cθ,sθ]; m=1; numnod=m+1; numele=m; R=Cos[α]*L0; H=Sin[α]*L0;uX=µX*H; uY=µY*H; uZ=µZ*H; nodxyz=Table[0,{numnod}]; elenod=Table[0,{numele}];φ=2*Pi/m; ang=θ; nodxyz[[1]]={0,0,H};For [i=1,i<=m,i++, nodxyz[[i+1]]=R*{Cos[ang],Sin[ang],0}; elenod[[i]]={1,i+1}; ang+=φ]; elemat=Table[Em,{numele}]; elefab=Table[A0,{numele}]; elestr=Table[0,{numele}]; rep1={Cos[α]->c,Sin[α]->s,Cos[2*α]->c^2-s^2,Sin[2*α]->2*s*c};rep2={c^2->1-s^2,Em->1,A0->1,L0->1};rep3={Cos[θ]->cθ,Sin[θ]->sθ,Cos[2*θ]->cθ^2-sθ^2,Sin[2*θ]->2*cθ*sθ};noddis=Table[{0,0,0},{numnod}]; noddis[[1]]={uX,uY,uZ};nodtag=Table[{1,1,1},{numnod}]; nodtag[[1]]={0,0,0};p=TLSpaceTrussMasterIntForce[nodxyz,elenod,elemat,elefab, elestr,noddis,False];pred=ReducedForceVector[nodtag,p]; pred=TrigExpand[pred];pred=Simplify[pred/.rep1]; pred=Simplify[(pred/.rep2)/.rep3]; Print["pred=",pred//MatrixForm]; {KM,KG}=TLSpaceTrussMasterTanStiff[nodxyz,elenod,elemat,elefab, elestr,noddis,False]; K=Simplify[KM+KG]; Kred=ReducedStiffMatrix[nodtag,K]; Kred=TrigExpand[Kred];Kred=Simplify[Kred/.rep1]; Kred=Simplify[(Kred/.rep2)/.rep3]; Print["Kred=",Kred//MatrixForm];

NFEM Ch 10 – Slide 29

Page 30: The TL Plane Bar Element: · PDF fileOnce we squeeze all juice from the equilibrium analysis, its time to go to the stiffness level. To start, we need to code three modules again.

Nonlinear FEM

Pyramidal Truss Final Script

ClearAll[m,Em,A0,L0,µX,µY,µZ,c,s,cθ,sθ];pθ=(Em*A0/2)*{ s*(-c*cθ+s*µX)*(-2*c*(cθ*µX+sθ*µY)+s*(µX^2+µY^2+µZ*(2+µZ))), s*(-c*sθ+s*µY)*(-2*c*(cθ*µX+sθ*µY)+s*(µX^2+µY^2+µZ*(2+µZ))), s^2*(1+µZ)*(-2*c*(cθ*µX+sθ*µY)+s*(µX^2+µY^2+µZ*(2+µZ)))};Kθ=(Em*A0/(2*L0))*{{1-cθ^2*(s^2-1)-sθ^2-6*c*cθ*s*µX-2*c*s*sθ*µY+s^2*(-1+sθ^2+3*µX^2+ µY^2+2*µZ+µZ^2),2*(c*cθ-s*µX)*(c*sθ-s*µY),2*s*(-c*cθ+s*µX)*(1+µZ)},{2*(c*cθ-s*µX)*(c*sθ-s*µY),1+cθ^2*(s^2-1)+sθ^2-2*c*cθ*s*µX-6*c*s*sθ*µY+ s^2*(-1-sθ^2+µX^2+3*µY^2+2*µZ+µZ^2),2*s*(-c*sθ+s*µY)*(1+µZ)},{2*s*(-c*cθ+s*µX)*(1+µZ),2*s*(-c*sθ+s*µY)*(1+µZ), s*(-2*c*(cθ*µX+sθ*µY)+s*(2+µX^2+µY^2+6*µZ+3*µZ^2))}};Cp00=pθ/.{cθ->0,sθ->0}; Cp20=Coefficient[pθ,cθ^2];Cp02=Coefficient[pθ,sθ^2]; CK00=Kθ/.{cθ->0,sθ->0};CK20=Coefficient[Kθ,cθ^2]; CK02=Coefficient[Kθ,sθ^2];p=m*Simplify[Cp00+(Cp20+Cp02)/2]; Print["p=",p//MatrixForm];K=m*Simplify[CK00+(CK20+CK02)/2]; Print["K=",K//MatrixForm];

NFEM Ch 10 – Slide 30