Вы находитесь на странице: 1из 7

h.

tanriover

Example 3.2 from Hutton: Fundamentals of


Finite Element Analysis
nn = number of nodes
ne=number of elements

nn = 3;

ne = 2;

x[1] = 0;
x[2] = 0;
x[3] = 40;

y[1] = 0;
y[2] = 40;
y[3] = 40;

Element Connectivity: gives ith and jth node numbers for the element
ec[elnum]={i,j}
ec[1] = {1, 3};
ec[2] = {2, 3};

x[ec[2][[1]]]
0

x[ec[2][[2]]]
40

Compute lengths of the elements

DoLen[elnum] = Sqrtx[ec[elnum][[2]]] - x[ec[elnum][[1]]] ^ 2 +


y[ec[elnum][[2]]] - y[ec[elnum][[1]]] ^ 2, {elnum, 1, ne}

Len[1]
40 2

Len[2]
40

Elasticity Modulus : em
Cross sectional area: A

em[1] = 10 10 ^ 6;
em[2] = em[1];
2 truss_stiffness.nb

A[1] = 1.5;
A[2] = 1.5;

Do[k[i] = em[i] A[i] / Len[i], {i, 1, ne}]

k[1]
265 165.

k[2]
375 000.

Angles between the x axes of the elements and reference X coord


t1 = Pi / 4

4

t2 = 0
0

Transformation matrix : Tm

Tm = {{Cos[], - Sin[], 0, 0},


{Sin[], Cos[], 0, 0},
{0, 0, Cos[], - Sin[]},
{0, 0, Sin[], Cos[]}}
{{Cos[], - Sin[], 0, 0}, {Sin[], Cos[], 0, 0},
{0, 0, Cos[], - Sin[]}, {0, 0, Sin[], Cos[]}}

MatrixForm[Tm]
Cos[] - Sin[] 0 0
Sin[] Cos[] 0 0
0 0 Cos[] - Sin[]
0 0 Sin[] Cos[]

inverse of Tm

iTm = Simplify[Inverse[Tm]]
{{Cos[], Sin[], 0, 0}, {- Sin[], Cos[], 0, 0},
{0, 0, Cos[], Sin[]}, {0, 0, - Sin[], Cos[]}}

local stiffness matrix


Kloc = {{k, 0, - k, 0},
{0, 0, 0, 0}, {- k, 0, k, 0}, {0, 0, 0, 0}}
{{k, 0, - k, 0}, {0, 0, 0, 0}, {- k, 0, k, 0}, {0, 0, 0, 0}}

MatrixForm[Kloc]
k 0 -k 0
0 0 0 0
-k 0 k 0
0 0 0 0
truss_stiffness.nb 3

Ke := Simplify[Tm.Kloc.iTm]

MatrixForm[Ke]
k Cos[]2 k Cos[] Sin[] - k Cos[]2 - k Cos[] Sin[]
k Cos[] Sin[] k Sin[]2 - k Cos[] Sin[] - k Sin[]2
- k Cos[]2 - k Cos[] Sin[] k Cos[]2 k Cos[] Sin[]
- k Cos[] Sin[] - k Sin[]2 k Cos[] Sin[] k Sin[]2

kf = Ke
k Cos[]2 , k Cos[] Sin[], - k Cos[]2 , - k Cos[] Sin[],
k Cos[] Sin[], k Sin[]2 , - k Cos[] Sin[], - k Sin[]2 ,
- k Cos[]2 , - k Cos[] Sin[], k Cos[]2 , k Cos[] Sin[],
- k Cos[] Sin[], - k Sin[]2 , k Cos[] Sin[], k Sin[]2

Element stiffness matrix in reference coordinate system as a function of k and teta.

Kef[k_, _] = kf
k Cos[]2 , k Cos[] Sin[], - k Cos[]2 , - k Cos[] Sin[],
k Cos[] Sin[], k Sin[]2 , - k Cos[] Sin[], - k Sin[]2 ,
- k Cos[]2 , - k Cos[] Sin[], k Cos[]2 , k Cos[] Sin[],
- k Cos[] Sin[], - k Sin[]2 , k Cos[] Sin[], k Sin[]2

Ke1 = Kef[k[1], t1]


{{132 583., 132 583., - 132 583., - 132 583.},
{132 583., 132 583., - 132 583., - 132 583.},
{- 132 583., - 132 583., 132 583., 132 583.},
{- 132 583., - 132 583., 132 583., 132 583.}}

Ke2 = Kef[k[2], t2]


{{375 000., 0., - 375 000., 0.}, {0., 0., 0., 0.},
{- 375 000., 0., 375 000., 0.}, {0., 0., 0., 0.}}

MatrixForm[Kef[1, t1]]
1 1
2 2
- 12 - 12
1 1
2 2
- 12 - 12
- 12 - 12 1
2
1
2
- 12 - 12 1
2
1
2

MatrixForm[Kef[1, t2]]
1 0 -1 0
0 0 0 0
-1 0 1 0
0 0 0 0

Ke1[[1, 1]]
132 583.
4 truss_stiffness.nb

Kg1 = {{Ke1[[1, 1]], Ke1[[1, 2]], 0, 0, Ke1[[1, 3]], Ke1[[1, 4]]},


{Ke1[[2, 1]], Ke1[[2, 2]], 0, 0, Ke1[[2, 3]], Ke1[[2, 4]]},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{Ke1[[3, 1]], Ke1[[3, 2]], 0, 0, Ke1[[3, 3]], Ke1[[3, 4]]},
{Ke1[[4, 1]], Ke1[[4, 2]], 0, 0, Ke1[[4, 3]], Ke1[[4, 4]]}}
{{132 583., 132 583., 0, 0, - 132 583., - 132 583.},
{132 583., 132 583., 0, 0, - 132 583., - 132 583.}, {0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0}, {- 132 583., - 132 583., 0, 0, 132 583., 132 583.},
{- 132 583., - 132 583., 0, 0, 132 583., 132 583.}}

MatrixForm[Kg1]
132 583. 132 583. 0 0 - 132 583. - 132 583.
132 583. 132 583. 0 0 - 132 583. - 132 583.
0 0 0 0 0 0
0 0 0 0 0 0
- 132 583. - 132 583. 0 0 132 583. 132 583.
- 132 583. - 132 583. 0 0 132 583. 132 583.

Kg2 = {{0, 0, 0, 0, 0, 0},


{0, 0, 0, 0, 0, 0},
{0, 0, Ke2[[1, 1]], Ke2[[1, 2]], Ke2[[1, 3]], Ke2[[1, 4]]},
{0, 0, Ke2[[2, 1]], Ke2[[2, 2]], Ke2[[2, 3]], Ke2[[2, 4]]},
{0, 0, Ke2[[3, 1]], Ke2[[3, 2]], Ke2[[3, 3]], Ke2[[3, 4]]},
{0, 0, Ke2[[4, 1]], Ke2[[4, 2]], Ke2[[4, 3]], Ke2[[4, 4]]}}
{{0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 375 000., 0., - 375 000., 0.},
{0, 0, 0., 0., 0., 0.}, {0, 0, - 375 000., 0., 375 000., 0.}, {0, 0, 0., 0., 0., 0.}}

MatrixForm[Kg2]
0 0 0 0 0 0
0 0 0 0 0 0
0 0 375 000. 0. - 375 000. 0.
0 0 0. 0. 0. 0.
0 0 - 375 000. 0. 375 000. 0.
0 0 0. 0. 0. 0.

and global stiffness matrix :


Kg = Kg1 + Kg2
{{132 583., 132 583., 0, 0, - 132 583., - 132 583.},
{132 583., 132 583., 0, 0, - 132 583., - 132 583.}, {0, 0, 375 000., 0., - 375 000., 0.},
{0, 0, 0., 0., 0., 0.}, {- 132 583., - 132 583., - 375 000., 0., 507 583., 132 583.},
{- 132 583., - 132 583., 0., 0., 132 583., 132 583.}}

store the global stiffness matrix for later calculations (reaction forces)

Kgo = Kg;
truss_stiffness.nb 5

MatrixForm[Kg]
132 583. 132 583. 0 0 - 132 583. - 132 583.
132 583. 132 583. 0 0 - 132 583. - 132 583.
0 0 375 000. 0. - 375 000. 0.
0 0 0. 0. 0. 0.
- 132 583. - 132 583. - 375 000. 0. 507 583. 132 583.
- 132 583. - 132 583. 0. 0. 132 583. 132 583.

Apply Loading and Boundary Conditions

Force vector : f

f = {0, 0, 0, 0, 500, 300}


{0, 0, 0, 0, 500, 300}

Clear[u]

Displacement vector: u

uv = Array[u, 6]
{u[1], u[2], u[3], u[4], u[5], u[6]}

Apply Boundary Conditions

Do[Kg[[i, j]] = 0, {i, 1, 4}, {j, 1, 6}];


Do[Kg[[i, i]] = 1, {i, 1, 4}];

Kg
{{1, 0, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0}, {0, 0, 1, 0, 0, 0},
{0, 0, 0, 1, 0, 0}, {- 132 583., - 132 583., - 375 000., 0., 507 583., 132 583.},
{- 132 583., - 132 583., 0., 0., 132 583., 132 583.}}

MatrixForm[Kg]
1 0 0 0 0 0
0 1 0 0 0 0
0 0 1 0 0 0
0 0 0 1 0 0
- 132 583. - 132 583. - 375 000. 0. 507 583. 132 583.
- 132 583. - 132 583. 0. 0. 132 583. 132 583.

Solve the Equation System


us = Solve[Kg.uv f, uv]
{{u[1] 0., u[2] 0., u[3] 0., u[4] 0., u[5] 0.000533333, u[6] 0.00172941}}

Assign displacements to displacement vector


dv = uv /. us[[1]]
{0., 0., 0., 0., 0.000533333, 0.00172941}
6 truss_stiffness.nb

Calculating Reaction Forces


Use Global Stiffness Matrix (Kg) without modification
{R} = [K] {u} - {F}

R = Kgo.dv - f
{- 300., - 300., - 200., 0., 0., 0.}

Element Stresses
form inverse of T as a function of teta

iTmf[_] = iTm
{{Cos[], Sin[], 0, 0}, {- Sin[], Cos[], 0, 0},
{0, 0, Cos[], Sin[]}, {0, 0, - Sin[], Cos[]}}

Stress for Element 1


iTm1 = iTmf[t1]
1 1 1 1 1 1 1 1
, , 0, 0, - , , 0, 0, 0, 0, , , 0, 0, - ,
2 2 2 2 2 2 2 2

displacement vector for element 1

dve1 = {dv[[1]], dv[[2]], dv[[5]], dv[[6]]}


{0., 0., 0.000533333, 0.00172941}

dveloc1 = iTm1.dve1
{0., 0., 0.0016, 0.000845753}

u1xi = dveloc1[[1]]
0.

u1xj = dveloc1[[3]]
0.0016

elstress1 = em[1] u1xj - u1xi Len[1]


282.843

Stress for Element 2


iTm2 = iTmf[t2]
{{1, 0, 0, 0}, {0, 1, 0, 0}, {0, 0, 1, 0}, {0, 0, 0, 1}}

displacement vector for element 2


truss_stiffness.nb 7

dve2 = {dv[[3]], dv[[4]], dv[[5]], dv[[6]]}


{0., 0., 0.000533333, 0.00172941}

dveloc2 = iTm2.dve2
{0., 0., 0.000533333, 0.00172941}

u2xi = dveloc2[[1]]
0.

u2xj = dveloc2[[3]]
0.000533333

elstress2 = em[2] u2xj - u2xi Len[2]


133.333

Вам также может понравиться