Você está na página 1de 21

CHAPTER TWO

Analysis of Elastic Solids

MATLAB implementation 2.1: Elasticity problem using


Tetrahedrals

The following ElasticTetElement and ElasticTetFaceNormalLoad generate element stiffness matrix and
equivalent load vector due to normal loads on faces of the tetrahedral. After the nodal displacements are
known, the second ElasticTetElement function computes element results.

MatlabFiles\Chap02\ElasticTetElement.m

function @ke, reD = ElasticTetElementHe, nu, alpha, deltaT, ...


bx, by, bz, coordL
2

% @ke, reD = ElasticTetElementHe, nu, alpha, dt, bx, by, bz, coordL
% Computes elements equations for a tetrahedral element
% e = Modulus of elasticity
% nu = Poisson's ratio
% h = Thickness
% alpha = coefficient of thermal expansion
% deltaT = temperature change
% bx, by, bz = components of the body force
% coord = coordinates at the element ends
e0 = alpha*deltaT*@1; 1; 1; 0; 0; 0D;
c = eêHH1 + nuL*H1 - 2*nuLL*@1 - nu, nu, nu, 0, 0, 0;
nu, 1 - nu, nu, 0, 0, 0;
nu, nu, 1 - nu, 0, 0, 0;
0, 0, 0, H1 - 2*nuLê2, 0, 0;
0, 0, 0, 0, H1 - 2*nuLê2, 0;
0, 0, 0, 0, 0, H1 - 2*nuLê2D;
@a1, a2, a3, a4, b1, b2, b3, b4, c1, c2, c3, c4, d1, d2, d3, d4, VD = ...

B = H1êH6*VLL*@b1, 0, 0, c1, 0, d1;


TetInterpolationConstantsHcoordL;

0, c1, 0, b1, d1, 0;


0, 0, d1, 0, c1, b1;
b2, 0, 0, c2, 0, d2;
0, c2, 0, b2, d2, 0;
0, 0, d2, 0, c2, b2;
b3, 0, 0, c3, 0, d3;
0, c3, 0, b3, d3, 0;
0, 0, d3, 0, c3, b3;
b4, 0, 0, c4, 0, d4;
0, c4, 0, b4, d4, 0;
0, 0, d4, 0, c4, b4D;
BT = B';
ke = V*B*c*BT;
rb = Vê4 *@bx, by, bz, bx, by, bz, bx, by, bz, bx, by, bzD';
re0 = V * B*c*e0; re = rb + re0;

function @a1, a2, a3, a4, b1, b2, b3, b4, c1, c2, c3, ...
end

c4, d1, d2, d3, d4, VD = TetInterpolationConstantsHcoordL


x1=coordH1,1L; y1=coordH1,2L; z1=coordH1,3L;
x2=coordH2,1L; y2=coordH2,2L; z2=coordH2,3L;
3

x3=coordH3,1L; y3=coordH3,2L; z3=coordH3,3L;

V = Hx3*y2*z1 - x4*y2*z1 - x2*y3*z1 + x4*y3*z1 + ...


x4=coordH4,1L; y4=coordH4,2L; z4=coordH4,3L;

x2*y4*z1 - x3*y4*z1 - x3*y1*z2 + x4*y1*z2 + ...


x1*y3*z2 - x4*y3*z2 - x1*y4*z2 + x3*y4*z2 + ...
x2*y1*z3 - x4*y1*z3 - x1*y2*z3 + x4*y2*z3 +...
x1*y4*z3 - x2*y4*z3 - x2*y1*z4 + x3*y1*z4 +...
x1*y2*z4 - x3*y2*z4 - x1*y3*z4 + x2*y3*z4Lê6;
a1 = -Hx4*y3*z2L + x3*y4*z2 + x4*y2*z3 - x2*y4*z3 - x3*y2*z4 +...
x2*y3*z4;
a2 = x4*y3*z1 - x3*y4*z1 - x4*y1*z3 + ...
x1*y4*z3 + x3*y1*z4 - x1*y3*z4;
a3 = -Hx4*y2*z1L + x2*y4*z1 + x4*y1*z2 - ...
x1*y4*z2 - x2*y1*z4 + x1*y2*z4;
a4 = x3*y2*z1 - x2*y3*z1 - x3*y1*z2 + x1*y3*z2 +...
x2*y1*z3 - x1*y2*z3;
b1 = y4*H-z2 + z3L + y3*Hz2 - z4L + y2*H-z3 + z4L;
b2 = y4*Hz1 - z3L + y1*Hz3 - z4L + y3*H-z1 + z4L;
b3 = y4*H-z1 + z2L + y2*Hz1 - z4L + y1*H-z2 + z4L;
b4 = y3*Hz1 - z2L + y1*Hz2 - z3L + y2*H-z1 + z3L;
c1 = x4*Hz2 - z3L + x2*Hz3 - z4L + x3*H-z2 + z4L;
c2 = x4*H-z1 + z3L + x3*Hz1 - z4L + x1*H-z3 + z4L;
c3 = x4*Hz1 - z2L + x1*Hz2 - z4L + x2*H-z1 + z4L;
c4 = x3*H-z1 + z2L + x2*Hz1 - z3L + x1*H-z2 + z3L;
d1 = x4*H-y2 + y3L + x3*Hy2 - y4L + x2*H-y3 + y4L;
d2 = x4*Hy1 - y3L + x1*Hy3 - y4L + x3*H-y1 + y4L;
d3 = x4*H-y1 + y2L + x2*Hy1 - y4L + x1*H-y2 + y4L;
d4 = x3*Hy1 - y2L + x1*Hy2 - y3L + x2*H-y1 + y3L;
end

MatlabFiles\Chap02\ElasticTetFaceNormalLoad.m

function rq = ElasticTetFaceNormalLoadHface, qn, coordL


% ElasticTetFaceNormalLoadHface, qn, coordL
% Generates equivalent load vector for a tetrahedral element
% face = face over which the load is specified
% qn = normal load
4

% coord = coordinates at the element ends


x1=coordH1,1L; y1=coordH1,2L; z1=coordH1,3L;
x2=coordH2,1L; y2=coordH2,2L; z2=coordH2,3L;
x3=coordH3,1L; y3=coordH3,2L; z3=coordH3,3L;

switch HfaceL
x4=coordH4,1L; y4=coordH4,2L; z4=coordH4,3L;

case 1

v1 = @x2-x1, y2-y1, z2-z1D; v2 = @x3-x1, y3-y1, z3-z1D;


%Face 1 : 1 - 2 - 3

va = crossHv2, v1L; nva = normHvaL;


n = vaênva; A = nvaê2;
@qx, qy, qzD = qn * n;
rq = Aê3 *@qx, qy, qz, qx, qy, qz, qx, qy, qz, 0, 0, 0D';
case 2

v1 = @x4-x1, y4-y1, z4-z1D; v2 = @x2-x1, y2-y1, z2-z1D;


%Face 2 : 1 - 2 - 4

va = crossHv2, v1L; nva = normHvaL;


n = vaênva; A = nvaê2;
@qx, qy, qzD = qn * n;
rq = Aê3 *@qx, qy, qz, qx, qy, qz, 0, 0, 0, qx, qy, qzD';
case 3

v1 = @x4-x2, y4-y2, z4-z2D; v2 = @x3-x2, y3-y2, z3-z2D;


%Face 3 : 2 - 3 - 4

va = crossHv2, v1L; nva = normHvaL;

@qx, qy, qzD = qn * n;


n = vaênva; A = nvaê2;

rq = Aê3 *@0, 0, 0, qx, qy, qz, qx, qy, qz, qx, qy, qzD';
case 4

v1 = @x3-x1, y3-y1, z3-z1D; v2 = @x4-x1, y4-y1, z4-z1D;


%Face 4 : 3 - 4 - 1

va = crossHv2, v1L; nva = normHvaL;


n = vaênva; A = nvaê2;
@qx, qy, qzD = qn * n;
rq = Aê3 *@qx, qy, qz, 0, 0, 0, qx, qy, qz, qx, qy, qzD';
end

MatlabFiles\Chap02\TetElementResults.m
5

function se = TetElementResultsHe, nu, alpha, deltaT, coord, dnL


% se = TetElementResultsHe, nu, alpha, deltaT, coord, dnL
% Computes element solution for a plane stressêstrain triangular element
% e = modulus of elasticity
% nu = Poisson's ratio
% alpha = coefficient of thermal expansion
% deltaT = temperature change
% coord = nodal coordinates
% dn = nodal displacements

% 8strains, stresses, principal stresses, effective stress<


% Following are the output variables are at element center

e0 = alpha*deltaT*@1; 1; 1; 0; 0; 0D;
C = eêHH1 + nuL*H1 - 2*nuLL*@1 - nu, nu, nu, 0, 0, 0;
nu, 1 - nu, nu, 0, 0, 0;
nu, nu, 1 - nu, 0, 0, 0;
0, 0, 0, H1 - 2*nuLê2, 0, 0;
0, 0, 0, 0, H1 - 2*nuLê2, 0;
0, 0, 0, 0, 0, H1 - 2*nuLê2D;
@a1, a2, a3, a4, b1, b2, b3, b4, c1, c2, c3, c4, d1, d2, d3, d4, VD = ...

B = H1êH6*VLL*@b1, 0, 0, c1, 0, d1;


TetInterpolationConstantsHcoordL;

0, c1, 0, b1, d1, 0;


0, 0, d1, 0, c1, b1;
b2, 0, 0, c2, 0, d2;
0, c2, 0, b2, d2, 0;
0, 0, d2, 0, c2, b2;
b3, 0, 0, c3, 0, d3;
0, c3, 0, b3, d3, 0;
0, 0, d3, 0, c3, b3;
b4, 0, 0, c4, 0, d4;
0, c4, 0, b4, d4, 0;
0, 0, d4, 0, c4, b4D;
eps = B'*dn;
sig = C*Heps-e0L
ps = eigH@sigH1L, sigH4L, sigH6L;
sigH4L, sigH2L, sigH5L;
sigH6L, sigH5L, sigH3LDL;
6

se = sqrtHHHpsH1L - psH2LL^2 + HpsH2L - psH3LL^2 + HpsH3L - psH1LL^2Lê2L;

function @a1, a2, a3, a4, b1, b2, b3, b4, c1, c2, c3, ...
end

c4, d1, d2, d3, d4, VD = TetInterpolationConstantsHcoordL


x1=coordH1,1L; y1=coordH1,2L; z1=coordH1,3L;
x2=coordH2,1L; y2=coordH2,2L; z2=coordH2,3L;
x3=coordH3,1L; y3=coordH3,2L; z3=coordH3,3L;

V = Hx3*y2*z1 - x4*y2*z1 - x2*y3*z1 + x4*y3*z1 + ...


x4=coordH4,1L; y4=coordH4,2L; z4=coordH4,3L;

x2*y4*z1 - x3*y4*z1 - x3*y1*z2 + x4*y1*z2 + ...


x1*y3*z2 - x4*y3*z2 - x1*y4*z2 + x3*y4*z2 + ...
x2*y1*z3 - x4*y1*z3 - x1*y2*z3 + x4*y2*z3 +...
x1*y4*z3 - x2*y4*z3 - x2*y1*z4 + x3*y1*z4 +...
x1*y2*z4 - x3*y2*z4 - x1*y3*z4 + x2*y3*z4Lê6;
a1 = -Hx4*y3*z2L + x3*y4*z2 + x4*y2*z3 - x2*y4*z3 - x3*y2*z4 +...
x2*y3*z4;
a2 = x4*y3*z1 - x3*y4*z1 - x4*y1*z3 + ...
x1*y4*z3 + x3*y1*z4 - x1*y3*z4;
a3 = -Hx4*y2*z1L + x2*y4*z1 + x4*y1*z2 - ...
x1*y4*z2 - x2*y1*z4 + x1*y2*z4;
a4 = x3*y2*z1 - x2*y3*z1 - x3*y1*z2 + x1*y3*z2 +...
x2*y1*z3 - x1*y2*z3;
b1 = y4*H-z2 + z3L + y3*Hz2 - z4L + y2*H-z3 + z4L;
b2 = y4*Hz1 - z3L + y1*Hz3 - z4L + y3*H-z1 + z4L;
b3 = y4*H-z1 + z2L + y2*Hz1 - z4L + y1*H-z2 + z4L;
b4 = y3*Hz1 - z2L + y1*Hz2 - z3L + y2*H-z1 + z3L;
c1 = x4*Hz2 - z3L + x2*Hz3 - z4L + x3*H-z2 + z4L;
c2 = x4*H-z1 + z3L + x3*Hz1 - z4L + x1*H-z3 + z4L;
c3 = x4*Hz1 - z2L + x1*Hz2 - z4L + x2*H-z1 + z4L;
c4 = x3*H-z1 + z2L + x2*Hz1 - z3L + x1*H-z2 + z3L;
d1 = x4*H-y2 + y3L + x3*Hy2 - y4L + x2*H-y3 + y4L;
d2 = x4*Hy1 - y3L + x1*Hy3 - y4L + x3*H-y1 + y4L;
d3 = x4*H-y1 + y2L + x2*Hy1 - y4L + x1*H-y2 + y4L;
d4 = x3*Hy1 - y2L + x1*Hy2 - y3L + x2*H-y1 + y3L;
end

à Example 2.1 p. 51
7

z
4
y
3

2
x

MatlabFiles\Chap02\TetSolidSoln.m
8

% Solve the one tetrahedral element model shown in Figure 2.2


e=22*10^3; nu=0.15; alpha=11*10^H-6L; deltaT=50;
nodes=@10,0,0; 40,0,0; 25,25,0; 25,0,25D;
bx=0; by=0; bz =0; deltaT = 50;
conn = @@1, 2,3,4DD;
nel=sizeHconn,1L; dof=3*sizeHnodes,1L;
lmm=@D;

lm = @D;
for i=1:nel

lm = @lm, @3*connHi,jL-2, 3*connHi,jL-1, 3*connHi,jLDD;


for j=1:4

lmm = @lmm; lmD;


end

end
K=zerosHdofL; R = zerosHdof,1L;
% Generate equations for each element and assemble them.
for i=1:nel
con = connHi,:L;
lm = lmmHi,:L;
@k, rD = ElasticTetElementHe, nu, alpha, deltaT,...
bx, by, bz, nodesHcon,:LL;
KHlm, lmL = KHlm, lmL + k;
RHlmL = RHlmL + r;
end
K
R

debc = @1:1:9D; ebcVals=zerosHlengthHdebcL,1L;


% Nodal solution and reactions

@d, reactionsD = NodalSolnHK, R, debc, ebcValsL


for i=1:nel
fprintfH1,'Results for element %3.0g \n',iL
EffectiveStress=TetElementResultsHe, nu, alpha, deltaT, ...
nodesHconnHi,:L,:L, dHlmmHi,:LLL
end

>> TetSolidSoln

K=
9

1.0e+005 *

Columns 1 through 6

1.0457 0.2847 0.2847 -0.5675 -0.1139 -0.1139


0.2847 0.7421 0.1708 0.1139 0.0778 0.1708
0.2847 0.1708 0.7421 0.1139 0.1708 0.0778
-0.5675 0.1139 0.1139 1.0457 -0.2847 -0.2847
-0.1139 0.0778 0.1708 -0.2847 0.7421 0.1708
-0.1139 0.1708 0.0778 -0.2847 0.1708 0.7421
-0.2391 -0.3986 0 -0.2391 0.3986 0
-0.1708 -0.5807 -0.1025 0.1708 -0.5807 -0.1025
0 -0.2391 -0.2391 0 -0.2391 -0.2391
-0.2391 0 -0.3986 -0.2391 0 0.3986
0 -0.2391 -0.2391 0 -0.2391 -0.2391
-0.1708 -0.1025 -0.5807 0.1708 -0.1025 -0.5807

Columns 7 through 12

-0.2391 -0.1708 0 -0.2391 0 -0.1708


-0.3986 -0.5807 -0.2391 0 -0.2391 -0.1025
0 -0.1025 -0.2391 -0.3986 -0.2391 -0.5807
-0.2391 0.1708 0 -0.2391 0 0.1708
0.3986 -0.5807 -0.2391 0 -0.2391 -0.1025
0 -0.1025 -0.2391 0.3986 -0.2391 -0.5807
0.4783 0 0 0 0 0
0 1.1615 0 0 0 0.2050
0 0 0.4783 0 0.4783 0
0 0 0 0.4783 0 0
0 0 0.4783 0 0.4783 0
0 0.2050 0 0 0 1.1615

R=

1.0e+003 *

-1.8006
-1.0804
-1.0804
1.8006
-1.0804
-1.0804
0
2.1607
10

0
0
0
2.1607

d=

0
0
0
0
0
0
0
0
0
0
0
0.0186

reactions =

1.0e+003 *

1.4828
0.8897
0
-1.4828
0.8897
0
0
-1.7794
0

Results for element 1

sig =

-14.2353
-14.2353
0.0000
0
0
0
11

ps =

-14.2353
-14.2353
0.0000

EffectiveStress =

14.2353

MATLAB implementation 2.2: Elasticity problem using


mapped solid element

MatlabFiles\Chap02\Solid8ElasElement.m

function @ke, reD = Solid8ElasElementHe, nu, alpha, deltaT, ...

% @k, rD = Solid8ElasElementHe, nu, alpha, deltaT, bx, by, bz, coordL


bx, by, bz, coordL

% Generates equations for an 8 node solid element


% e = Modulus of elasticity
% nu = Poisson's ratio
% alpha = coefficient of thermal expansion
% deltaT = temperature change
% bx, by, bz = components of the body force
% coord = coordinates at the element ends
e0 = alpha*deltaT*@1; 1; 1; 0; 0; 0D;
c = eêHH1 + nuL*H1 - 2*nuLL*@1 - nu, nu, nu, 0, 0, 0;
nu, 1 - nu, nu, 0, 0, 0;
nu, nu, 1 - nu, 0, 0, 0;
0, 0, 0, H1 - 2*nuLê2, 0, 0;
0, 0, 0, 0, H1 - 2*nuLê2, 0;
0, 0, 0, 0, 0, H1 - 2*nuLê2D;
% Use 2x2 integration. Gauss point locations and weights
12

gpLocs = @-pt, -pt, -pt; -pt, -pt, pt; -pt, pt, -pt;...
pt=1êsqrtH3L;

gpWts = @1,1,1,1,1,1,1,1D;
-pt, pt, pt; pt, -pt, -pt; pt, -pt, pt; pt, pt, -pt; pt, pt, ptD;

ke=zerosH24L; re=zerosH24,1L;
for i=1:lengthHgpWtsL
r = gpLocsHi, 1L; s = gpLocsHi, 2L; t = gpLocsHi, 3L;
w = gpWtsHiL;
n = @H1ê8L*H1 - rL*H1 - sL*H1 - tL, H1ê8L*Hr + 1L*H1 - sL*H1 - tL,...
H1ê8L*Hr + 1L*Hs + 1L*H1 - tL, H1ê8L*H1 - rL*Hs + 1L*H1 - tL,...
H1ê8L*H1 - rL*H1 - sL*Ht + 1L, H1ê8L*Hr + 1L*H1 - sL*Ht + 1L,...
H1ê8L*Hr + 1L*Hs + 1L*Ht + 1L, H1ê8L*H1 - rL*Hs + 1L*Ht + 1LD;
dnr = @-HH1 - sL*H1 - tLLê8, HH1 - sL*H1 - tLLê8, ...
HH1 + sL*H1 - tLLê8, -HH1 + sL*H1 - tLLê8,...
-HH1 - sL*H1 + tLLê8, HH1 - sL*H1 + tLLê8,...
HH1 + sL*H1 + tLLê8, -HH1 + sL*H1 + tLLê8D;
dns=@-HH1 - rL*H1 - tLLê8, -HH1 + rL*H1 - tLLê8, ...
HH1 + rL*H1 - tLLê8, HH1 - rL*H1 - tLLê8, -HH1 - rL*H1 + tLLê8,...
-HH1 + rL*H1 + tLLê8, HH1 + rL*H1 + tLLê8, HH1 - rL*H1 + tLLê8D;
dnt=@-HH1 - rL*H1 - sLLê8, -HH1 + rL*H1 - sLLê8, ...

HH1 - rL*H1 - sLLê8, HH1 + rL*H1 - sLLê8, ...


-HH1 + rL*H1 + sLLê8, -HH1 - rL*H1 + sLLê8, ...

HH1 + rL*H1 + sLLê8, HH1 - rL*H1 + sLLê8D;


x = n*coordH:,1L; y = n*coordH:,2L; z = n*coordH:,3L;
dxr = dnr*coordH:,1L; dxs = dns*coordH:,1L; dxt = dnt*coordH:,1L;
dyr = dnr*coordH:,2L; dys = dns*coordH:,2L; dyt = dnt*coordH:,2L;
dzr = dnr*coordH:,3L; dzs = dns*coordH:,3L; dzt = dnt*coordH:,3L;
JT = @dxr, dxs, dxt; dyr, dys, dyt; dzr, dzs, dztD';
detJ = detHJTL;
dnxyz = invHJTL*@dnr; dns; dntD;
dnx = dnxyzH1,:L; dny = dnxyzH2,:L; dnz = dnxyzH3,:L;
b=@D;nn=@D;

b = @b; dnxHjL, 0, 0, dnyHjL, 0, dnzHjL;


for j=1:8

0, dnyHjL, 0, dnxHjL, dnzHjL, 0;

nn = @nn; nHjL,0,0; 0,nHjL,0; 0,0,nHjLD;


0, 0, dnzHjL, 0, dnyHjL, dnxHjLD;

end
13

ke = ke + detJ*w* b*c*b';
re = re + detJ*w*nn*@bx; by; bzD+ detJ*w*b*c*e0;
end

MatlabFiles\Chap02\Solid8ElasFaceLoad.m

function rq = Solid8ElasFaceLoadHface, qn, coordL


% rq = Solid8ElasFaceLoadHface, qn, coordL
% Generates equivalent load vector for a triangular element
% face = face over which the load is specified
% qn = load component in the normal direction
% coord = coordinates at the element ends
% Use 2x2 point integration. Gauss point locations and weights

gpLocs = @pt, pt; -pt, pt; pt, -pt; -pt, -ptD;


pt=-1êsqrtH3L;

gpWts = @1,1,1,1D;
rq=zerosH24,1L;
for i=1:lengthHgpWtsL
a = gpLocsHi,1L; b = gpLocsHi,2L; w = gpWtsHiL;
switch HfaceL

n = @HH1 - aL*H1 - bLLê4, HH1 - aL*H1 + bLLê4, ...


case 1

HH1 + aL*H1 + bLLê4,...


HH1 + aL*H1 - bLLê4, 0, 0, 0, 0D;
dna = @H-1 + bLê4, H-1 - bLê4, H1 + bLê4, H1 - bLê4,...

dnb = @H-1 + aLê4, H1 - aLê4, H1 + aLê4, H-1 - aLê4, ...


0, 0, 0, 0D;

0, 0, 0, 0D;

n = @HH1 - aL*H1 - bLLê4, HH1 + aL*H1 - bLLê4, 0,...


case 2

0, HH1 - aL*H1 + bLLê4, HH1 + aL*H1 + bLLê4, 0, 0D;


dna = @H-1 + bLê4, H1 - bLê4, 0, 0, H-1 - bLê4, ...
H1 + bLê4, 0, 0D;
dnb = @H-1 + aLê4, H-1 - aLê4, 0, 0, ...
H1 - aLê4, H1 + aLê4, 0, 0D;

n = @0, HH1 -aL*H1 - bLLê4, HH1 + aL*H1 - bLLê4,...


case 3
14

0, 0, HH1 - aL*H1 + bLLê4, HH1 + aL*H1 + bLLê4, 0D;


dna = @0, H-1 + bLê4, H1 - bLê4, 0, 0, H-1 - bLê4,...
H1 +bLê4, 0D;
dnb = @0, H-1 + aLê4, H-1 - aLê4, 0, 0, H1 - aLê4,...
H1 + aLê4, 0D;

n = @0, 0, HH1 - aL*H1 + bLLê4, HH1 - aL*H1 - bLLê4,...


case 4

0, 0, HH1 + aL*H1 + bLLê4, HH1 + aL*H1 - bLLê4D;


dna = @0, 0, H-1 - bLê4, H-1 + bLê4, 0, 0, ...
H1 + bLê4, H1 - bLê4D;
dnb = @0, 0, H1 - aLê4, H-1 + aLê4, 0, 0, ...
H1 + aLê4, H-1 - aLê4D;

n = @HH1 - aL*H1 - bLLê4, 0, 0, HH1 - aL*H1 + bLLê4,...


case 5

HH1 + aL*H1 - bLLê4, 0, 0, HH1 + aL*H1 + bLLê4D;


dna = @H-1 + bLê4,0, 0, H-1 - bLê4, H1 - bLê4, ...
0, 0, H1 + bLê4D;
dnb = @H-1 + aLê4, 0, 0, H1 - aLê4, H-1 - aLê4,...
0, 0, H1 + aLê4D;

n = @0, 0, 0, 0, HH1 - aL*H1 - bLLê4, ...


case 6

HH1 + aL*H1 - bLLê4, HH1 + aL*H1 +bLLê4, ...


HH1 - aL*H1 + bLLê4D;
dna = @0, 0,0, 0, H-1 + bLê4, H1 -bLê4,...
H1 + bLê4, H-1 - bLê4D;
dnb = @0, 0, 0, 0, H-1 + aLê4, H-1 -aLê4, ...
H1 + aLê4, H1 - aLê4D;

v1 = @dna*coordH:,1L; dna*coordH:,2L; dna*coordH:,3LD;


end

v2 = @dnb*coordH:,1L; dnb*coordH:,2L; dnb*coordH:,3LD;


va = crossHv1,v2L; Js=normHvaL; nv = vaêJs;
nn=@D;

nn = @nn; nHjL,0,0; 0,nHjL,0; 0,0,nHjLD;


for j=1:8

end
rq = rq + Js*w*qn*nn*nv;
end
15

MatlabFiles\Chap02\Solid8ElasEdgeLoad.m

function rq = Solid8ElasEdgeLoadHedge, q, coordL


% rq = Solid8ElasEdgeLoadHside, q, coordL
% Generates equivalent load vector for a triangular element
% edge = edge over which the load is specified
% q = load components
% coord = coordinates at the element ends
% Use 2 point integration. Gauss point locations and weights

gpLocs = @-pt, ptD;


pt=-1êsqrtH3L;

gpWts = @1,1D;
rq=zerosH24,1L;
for i=1:lengthHgpWtsL
a = gpLocsHiL; w = gpWtsHiL;
switch HedgeL

n = @H1 - aLê2, H1 + aLê2, 0, 0, 0, 0, 0, 0D;


case 1

dna = @-1ê2, 1ê2, 0, 0, 0, 0, 0, 0D;

n = @0, H1 - aLê2, H1 + aLê2, 0, 0, 0, 0, 0D;


case 2

dna = @0, -1ê2, 1ê2, 0, 0, 0, 0, 0D;

n = @0, 0, H1 - aLê2, H1 + aLê2, 0, 0, 0, 0D;


case 3

dna = @0, 0, -1ê2, 1ê2, 0, 0, 0, 0D;

n = @H1 + aLê2, 0, 0, H1 - aLê2, 0, 0, 0, 0D;


case 4

dna = @1ê2, 0, 0, -1ê2, 0, 0, 0, 0D;

n = @H1 - aLê2, 0, 0, 0, H1 + aLê2, 0, 0, 0D;


case 5

dna = @-1ê2, 0, 0, 0, 1ê2, 0, 0, 0D;

n = @0, H1 - aLê2, 0, 0, 0, H1 + aLê2, 0, 0D;


case 6

dna = @0, -1ê2, 0, 0, 0, 1ê2, 0, 0D;

n = @0, 0, H1 - aLê2, 0, 0, 0, H1 + aLê2, 0D;


case 7

dna = @0, 0, -1ê2, 0, 0, 0, 1ê2, 0D;


16

n = @0, 0, 0, H1 - aLê2, 0, 0, 0, H1 + aLê2D;


case 8

dna = @0, 0, 0, -1ê2, 0, 0, 0, 1ê2D;

n = @0, 0, 0, 0, H1 - aLê2, H1 + aLê2, 0, 0D;


case 9

dna = @0, 0, 0, 0, -1ê2, 1ê2, 0, 0D;

n = @0, 0, 0, 0, 0, H1 - aLê2, H1 + aLê2, 0D;


case 10

dna = @0, 0, 0, 0, 0, -1ê2, 1ê2, 0D;

n = @0, 0, 0, 0, 0, 0, H1 - aLê2, H1 + aLê2D;


case 11

dna = @0, 0, 0, 0, 0, 0, -1ê2, 1ê2D;

n = @0, 0, 0, 0, H1 + aLê2, 0, 0, H1 - aLê2D;


case 12

dna = @0, 0, 0, 0, 1ê2, 0, 0, -1ê2D;

v = @dna*coordH:,1L; dna*coordH:,2L; dna*coordH:,3LD;


end

Jc=normHvL;
nn=@D;

nn = @nn; nHjL,0,0; 0,nHjL,0; 0,0,nHjLD;


for j=1:8

end
rq = rq + Jc*w*nn*q;
end

MatlabFiles\Chap02\Solid8ElasResults.m

function se = Solid8ElasResultsHe, nu, alpha, deltaT, coord, dnL


% se = Solid8ElasResultsHe, nu, alpha, deltaT, coord, dnL
% Computes element solution for a plane stressêstrain quad element
% e = modulus of elasticity
% nu = Poisson's ratio
% alpha = coefficient of thermal expansion
% deltaT = temperature change
% coord = nodal coordinates
% dn = nodal displacements
% Following are the output variables are at element center
17

% 8strains, stresses, principal stresses, effective stress<


e0 = alpha*deltaT*@1; 1; 1; 0; 0; 0D;
c = eêHH1 + nuL*H1 - 2*nuLL*@1 - nu, nu, nu, 0, 0, 0;
nu, 1 - nu, nu, 0, 0, 0;
nu, nu, 1 - nu, 0, 0, 0;
0, 0, 0, H1 - 2*nuLê2, 0, 0;
0, 0, 0, 0, H1 - 2*nuLê2, 0;
0, 0, 0, 0, 0, H1 - 2*nuLê2D;
r=0; s = 0; t = 0;
n = @H1ê8L*H1 - rL*H1 - sL*H1 - tL, H1ê8L*Hr + 1L*H1 - sL*H1 - tL,...
H1ê8L*Hr + 1L*Hs + 1L*H1 - tL, H1ê8L*H1 - rL*Hs + 1L*H1 - tL,...
H1ê8L*H1 - rL*H1 - sL*Ht + 1L, H1ê8L*Hr + 1L*H1 - sL*Ht + 1L,...
H1ê8L*Hr + 1L*Hs + 1L*Ht + 1L, H1ê8L*H1 - rL*Hs + 1L*Ht + 1LD;
dnr = @-HH1 - sL*H1 - tLLê8, HH1 - sL*H1 - tLLê8, ...
HH1 + sL*H1 - tLLê8, -HH1 + sL*H1 - tLLê8,...
-HH1 - sL*H1 + tLLê8, HH1 - sL*H1 + tLLê8,...
HH1 + sL*H1 + tLLê8, -HH1 + sL*H1 + tLLê8D;
dns=@-HH1 - rL*H1 - tLLê8, -HH1 + rL*H1 - tLLê8, ...
HH1 + rL*H1 - tLLê8, HH1 - rL*H1 - tLLê8, -HH1 - rL*H1 + tLLê8,...
-HH1 + rL*H1 + tLLê8, HH1 + rL*H1 + tLLê8, HH1 - rL*H1 + tLLê8D;
dnt=@-HH1 - rL*H1 - sLLê8, -HH1 + rL*H1 - sLLê8, ...
-HH1 + rL*H1 + sLLê8, -HH1 - rL*H1 + sLLê8, ...
HH1 - rL*H1 - sLLê8, HH1 + rL*H1 - sLLê8, ...
HH1 + rL*H1 + sLLê8, HH1 - rL*H1 + sLLê8D;
x = n*coordH:,1L; y = n*coordH:,2L; z = n*coordH:,3L;
dxr = dnr*coordH:,1L; dxs = dns*coordH:,1L; dxt = dnt*coordH:,1L;
dyr = dnr*coordH:,2L; dys = dns*coordH:,2L; dyt = dnt*coordH:,2L;
dzr = dnr*coordH:,3L; dzs = dns*coordH:,3L; dzt = dnt*coordH:,3L;
JT = @dxr, dxs, dxt; dyr, dys, dyt; dzr, dzs, dztD';
detJ = detHJTL;
dnxyz = invHJTL*@dnr; dns; dntD;
dnx = dnxyzH1,:L; dny = dnxyzH2,:L; dnz = dnxyzH3,:L;
b=@D;nn=@D;

b = @b; dnxHjL, 0, 0, dnyHjL, 0, dnzHjL;


for j=1:8

0, dnyHjL, 0, dnxHjL, dnzHjL, 0;


0, 0, dnzHjL, 0, dnyHjL, dnxHjLD;
end
eps = b'*dn;
18

sig = c*Heps-e0L
ps = eigH@sigH1L, sigH4L, sigH6L;
sigH4L, sigH2L, sigH5L;

se = sqrtHHHpsH1L - psH2LL^2 + HpsH2L - psH3LL^2 + HpsH3L - psH1LL^2Lê2L;


sigH6L, sigH5L, sigH3LDL;

end

à Example p. 75

z Pressure
y
8

7
5
6

3
1
2

MatlabFiles\Chap02\Solid8BeamEx.m

% Cantilever beam using one 8 node solid element


e = 200*10^3; nu = 0.3; q = 10;
nodes = 100*@0, 0, 0; 4, 1, 0; 4, 2, 0; 0, 2, 0;...

conn = @@1:8DD;
0, 0, 1; 4, 1, 1; 4, 2, 1; 0, 2, 1D;

bx=0; by=0; bz=0; alpha=0; deltaT = 0;


nel=sizeHconn,1L; dof=3*sizeHnodes,1L;
lmm=@D;
for i=1:nel
lm=@D;
19

lm=@lm, @3*connHi,jL-2, 3*connHi,jL-1, 3*connHi,jLDD;


for j=1:8

end
lmm=@lmm; lmD;
end
K=zerosHdofL; R = zerosHdof,1L;
% Generate equations for each element and assemble them.
for i=1:nel
con = connHi,:L;
lm = lmmHi,:L;
@k, rD = Solid8ElasElementHe, nu, alpha, deltaT, ...
bx, by, bz, nodesHcon,:LL;
KHlm, lmL = KHlm, lmL + k;
RHlmL = RHlmL + r;
end
% Add the distributed load contributions
for i=1:nel
con = connHi,:L;
lm = lmmHi,:L;
r = Solid8ElasFaceLoadH6, -q, nodesHcon,:LL;
RHlmL = RHlmL + r;
end

debc = @1, 2, 3, 10, 11, 12, 13, 14, 15, 22, 23, 24D;
% Nodal solution and reactions

@d, reactionsD = NodalSolnHK, R, debc, ebcValsL


ebcVals=zerosHlengthHdebcL,1L;

for i=1:nel
fprintfH1,'Results for element %3.0g \n',iL
EffectiveStress=Solid8ElasResultsHe, nu, alpha, deltaT, ...
nodesHconnHi,:L,:L, dHlmmHi,:LLL
end

>> Solid8BeamEx

d=

0
0
0
-0.0492
-0.0044
20

-0.2780
-0.0526
0.0042
-0.2799
0
0
0
0
0
0
0.0533
0.0038
-0.2819
0.0564
-0.0016
-0.2837
0
0
0

reactions =

1.0e+005 *

5.2482
0.2763
0.6959
5.4185
-0.2479
1.3485
-5.2482
-0.2913
1.6516
-5.4185
0.2629
2.3039

Results for element 1

sig =

-0.2468
-0.1966
-3.9833
-0.0000
21

0.0058
-13.2558

EffectiveStress =

23.2659

Você também pode gostar