Finite Elements¶
CalcpadCE implements transparent finite-element method solvers in worksheet form — every stiffness matrix, load vector and post-processing step is plain code rather than a black-box routine.
The deep-beam plane-stress model discretises a 2D elastic continuum with rectangular 8-DOF elements and handles elastic supports through a distributed-stiffness function. The rectangular slab uses a 16-DOF Bogner–Fox–Schmit (BFS) plate element on a simply-supported plan, while the multi-span flat slab extends the same BFS element to irregular column grids with point supports. The analytically integrated variant swaps numerical Gauss integration for closed-form element matrices, cutting solve time on dense meshes by an order of magnitude.
Mesh density, geometry and material constants are parametric, so each worksheet doubles as a benchmark for convergence studies and for cross-checking commercial FEA results.
Deep Beam FEA¶
Plane-stress FEA of a deep beam using rectangular 8-DOF elements, with a partial uniform load and elastic supports modelled by a distributed-stiffness function. Recovers the \(σ_x\), \(σ_y\) and \(τ_{xy}\) stress fields and the deflected shape on a parametric mesh.
'<h3>Input data</h3>
'<table><tr><td style="padding:0;">
'Length -'l = 4'm, Height -'h = 2'm
'Thickness -'t = 0.1'm
'Distributed load -'q = 100'kN/m
'<p><b>Loads</b></p>
'Load length -'b = 0.8'm
'Load position -'a = (l - b)/2'm
'Load function -'q(x) = q*(x ≥ a ∧ x ≤ a + b)
'</td><td><img src="./deep-beam-fea.png" style="width:140; height:160pt; margin-left:20pt;"></td></tr></table>
'<p><b>Supports</b></p>
'Support length -'d = 0.4'm
'Support elastic stiffness -'k_s = 50000'MN/m²
'Support function -'s(x) = k_s*t*(x ≤ d ∨ x ≥ l - d)
'<p><b>Material properties</b></p>
'Modulus of elasticity -'E = 20000'MPa
'Poisson`s ratio -'ν = 0.2
'<h3>Finite element mesh</h3>
'We will use rectangular finite element with'n = 8'DOFs
'Number of elements along <var>l</var> and <var>h</var> -'n_l = 20', 'n_h = 10
'Total number of elements -'n_e = n_l*n_h
'Total number of joints -'n_j = (n_l + 1)*(n_h + 1)
'Element dimensions -'l_1 = l/n_l', 'h_1 = h/n_h
#hide
x_j = vector(n_j)','y_j = vector(n_j)
x = 0', 'y = 0
#for j = 1 : n_j
x_j.j = x
y_j.j = y
y = y + h_1
#if y > h
y = 0
x = x + l_1
#end if
#loop
e_j = matrix(n_e; 4)
#for i_l = 1 : n_l
#for i_h = 1 : n_h
e = i_h + n_h*(i_l - 1)
j = e + i_l - 1
e_j.(e; 1) = j
e_j.(e; 2) = j + 1
e_j.(e; 3) = j + n_h + 1
e_j.(e; 4) = j + n_h + 2
#loop
#loop
#show
'Joint coordinates
x_j'm
y_j'm
'Joint numbers for elements
transp(e_j)
'Coordinates of element centers
j_e(e) = row(e_j; e)
x_c(e) = sum(extract(x_j; j_e(e)))/4',' _
y_c(e) = sum(extract(y_j; j_e(e)))/4
#hide
x_c = vector(n_e)', 'y_c = vector(n_e)
$Repeat{x_c.e = x_c(e) @ e = 1 : n_e}
$Repeat{y_c.e = y_c(e) @ e = 1 : n_e}
#show
x_c'm
y_c'm
'Elements along the bottom (supported) edge
e_S = find_lt(y_c; h_1; 1)
'Elements along the top (loaded) edge
e_L = find_gt(y_c; h - h_1; 1)
#val
#hide
W = 400
k = W/l
δ = 20
H = h/l*W
r = 0.02*k
#show
'<svg viewbox="'-δ/2' '-3*δ' 'W + 2*δ' 'H + 5*δ'" xmlns="http://www.w3.org/2000/svg" version="1.1" style="font-family: Segoe UI; font-size:8px; width:'W + δ'pt; height:'H + 5*δ'pt">
'<style>.joint{fill:orangeRed;} .support{stroke:red; stroke-width:1; fill:lightpink;} .element{stroke:seaGreen; stroke-width:1; fill:lime; fill-opacity:0.1; stroke-opacity:0.5;} .struct{fill:yellow; fill-opacity:0.25;stroke:goldenRod; stroke-opacity:0.5;}</style>
'<rect x="'0'" y="'0'" width="'W'" height="'H'" class="struct"/>
'<rect x="'0'" y="'H'" width="'d*k'" height="'1.5*δ'" class="struct"/>
'<rect x="'W - d*k'" y="'H'" width="'d*k'" height="'1.5*δ'" class="struct"/>
'<rect x="'a*k'" y="'-1.5*δ'" width="'b*k'" height="'1.5*δ'" style="fill:cyan; fill-opacity:0.15; stroke:darkCyan; stroke-opacity:0.5;"/>
'<text x="'(a + b/2)*k + r'" y="'-1.8*δ'" text-anchor="middle" style="font-size:11px;">q='q' kN/m</text>
#for e = 1 : n_e
#hide
x = x_c.e*k
y = y_c.e*k
#show
'<text x="'x'" y="'H - y'" text-anchor="middle">'e'</text>
'<rect x="'x - l_1/2*k'" y="'H - y - h_1/2*k'" width="'l_1*k'" height="'h_1*k'" class="element" />
#loop
#for j = 1 : n_j
#hide
x = x_j.j*k
y = H - y_j.j*k
#show
'<circle cx="'x'" cy="'y'" r="'r'" class="joint" />
'<text x="'x + r'" y="'y - r'" text-anchor="start">'j'</text>
#loop
'</svg>
#noc
'<h3>Finite element formation</h3>
'<p><b>Shape functions</b></p>
'They are defined in relative coordinates to the center of the element:
'<img src="./plane-element.png" alt="plane-elemen.png" style="float:right; width:150pt;" />
ξ = 2*(x - x_c)/l_1'∈ (-1; 1),'η = 2*(y - y_c)/h_1'∈ (-1; 1)
#equ
'Base functions -'Φ_1(ξ) = (1 - ξ)/2', 'Φ_2(ξ) = (1 + ξ)/2
'First derivatives -'Φ′_1(ξ) = -1/2', 'Φ′_2(ξ) = 1/2
'Shape functions for joints at elements` corners
N_1(ξ; η) = Φ_1(ξ)*Φ_1(η)', 'N_2(ξ; η) = Φ_1(ξ)*Φ_2(η)
N_3(ξ; η) = Φ_2(ξ)*Φ_1(η)', 'N_4(ξ; η) = Φ_2(ξ)*Φ_2(η)
'<p><b>Constitutive matrix</b> (stress-strain relationship)</p>
D = E*t/(1 - ν^2)*[1; ν; 0|ν; 1; 0|0; 0; (1 - ν)/2]
'<p><b>Strain-displacement matrix</b></p>
B_1(j; η) = (1/l_1)*take(j; -Φ_1(η); 0; -Φ_2(η); 0; Φ_1(η); 0; Φ_2(η); 0)
B_2(j; ξ) = (1/h_1)*take(j; 0; -Φ_1(ξ); 0; Φ_1(ξ); 0; -Φ_2(ξ); 0; Φ_2(ξ))
B_3(j; ξ; η) = take(j; _
-Φ_1(ξ)/h_1; -Φ_1(η)/l_1; Φ_1(ξ)/h_1; -Φ_2(η)/l_1; _
-Φ_2(ξ)/h_1; Φ_1(η)/l_1; Φ_2(ξ)/h_1; Φ_2(η)/l_1)
B(j; ξ; η) = [B_1(j; η); B_2(j; ξ); B_3(j; ξ; η)]
'The elements of the stiffness matrix will be calculated by using direct integration
#noc
K_e,ij = l_1*h_1/4*$Area{$Area{B_i(ξ; η)^T*D*B_j(ξ; η) @ ξ = -1 : 1} @ η = -1 : 1}
#equ
'<p><b>Element stiffness matrix</b> (above the main diagonal only)</p>
#hide
K_e = utriang(8)
Precision = 10^-4
e = 1
#show
BTDB_e(i; j; ξ; η) = transp(B(i; ξ; η))*D*B(j; ξ; η)
K_e(i; j) = l_1*h_1/4*$Area{$Area{BTDB_e(i; j; ξ; η) @ ξ = -1 : 1} @ η = -1 : 1}
$Repeat{$Repeat{K_e.(i; j) = K_e(i; j) @ j = i : n} @ i = 1 : n}
K_e'MN/m
'Boundary conditions
'Supports
'Number of elements along the supported edge -'n_S = len(e_S)
'Element′s joint springs stiffness factors
#noc
K_s,j(e) = l_1/2*$Area{N_j(ξ; -1)*s(x_c.e + ξ*l_1/2) @ ξ = -1 : 1}', 'j = 1', '3
#equ
'Results for element 1
K_s,1(e) = l_1/2*$Area{N_1(ξ; -1)*s(x_c.e + ξ*l_1/2) @ ξ = -1 : 1}','K_s,1(1)'MN/m
K_s,3(e) = l_1/2*$Area{N_3(ξ; -1)*s(x_c.e + ξ*l_1/2) @ ξ = -1 : 1}','K_s,3(1)'MN/m
'Number of elements along the loaded edge -'n_L = len(e_L)
'Element load vector
#noc
F_j(e) = l_1/2*$Area{N_j(ξ; 1)*q(x_c.e + ξ*l_1/2) @ ξ = -1 : 1}', 'j = 2', '4
#val
'Results for element 'e = e_L.(n_l/2)
#equ
F_2(e) = l_1/2*$Area{N_2(ξ; 1)*q(x_c.e + ξ*l_1/2) @ ξ = -1 : 1}','F_2(e)'kN
F_4(e) = l_1/2*$Area{N_4(ξ; 1)*q(x_c.e + ξ*l_1/2) @ ξ = -1 : 1}','F_4(e)'kN
'<h3>Solution</h3>
'Global stiffness matrix
#hide
k_1 = n/4
n = k_1*n_j
K = symmetric(n)
'Addition of element stiffness matrix coefficients
#for e = 1 : n_e
#for i = 1 : 4
#for j = i : 4
j_1 = e_j.(e; i)', 'i_1 = k_1*(j_1 - 1) + 1
j_2 = e_j.(e; j)', 'i_2 = k_1*(j_2 - 1) + 1
k_ij = submatrix(K_e; k_1*(i - 1) + 1; k_1*i; k_1*(j - 1) + 1; k_1*j)
#if j_1 > j_2
add(transp(k_ij); K; i_2; i_1)
#else
add(k_ij; K; i_1; i_2)
#end if
#loop
#loop
#loop
'Addition of supports
#for i = 1 : n_S
e = e_S.i
K_se,1 = K_s,1(e)
K_se,3 = K_s,3(e)
j_1 = e_j.(e; 1)', 'i_1 = k_1*(j_1 - 1) + 2
j_3 = e_j.(e; 3)', 'i_3 = k_1*(j_3 - 1) + 2
K.(i_1; i_1) = K.(i_1; i_1) + K_se,1
K.(i_3; i_3) = K.(i_3; i_3) + K_se,3
#loop
j_M = find(x_j; l/2; 1)
n_M = len(j_M)
#for i = 1 : n_M
j = j_M.i', 'i_1 = k_1*(j - 1) + 1
K.(i_1; i_1) = K.(i_1; i_1) + k_s
#loop
#show
K
'Global load vector
#hide
F = vector(n)
#for i = 1 : n_L
e = e_L.i
F_e,2 = F_2(e)
F_e,4 = F_4(e)
j_2 = e_j.(e; 2)', 'i_2 = k_1*(j_2 - 1) + 2
j_4 = e_j.(e; 4)', 'i_4 = k_1*(j_4 - 1) + 2
F.i_2 = F.i_2 + F_e,2
F.i_4 = F.i_4 + F_e,4
#loop
#show
F
sum(F)'kN
'Solution of the system of equations
Z = clsolve(K; F)'mm
'<h3>Results</h3>
#hide
'Joint displacements
u = matrix(n_l + 1; n_h + 1)
u(j) = Z.(k_1*(j - 1) + 1)
$Repeat{$Repeat{u.(i; j) = round(u((i - 1)*(n_h + 1) + j)*1000000)/1000 @ j = 1 : n_h + 1} @ i = 1 : n_l + 1}
u(x; y) = spline(1 + x/l_1; 1 + y/h_1; u)
v = matrix(n_l + 1; n_h + 1)
v(j) = Z.(k_1*(j - 1) + 2)
$Repeat{$Repeat{v.(i; j) = round(v((i - 1)*(n_h + 1) + j)*1000000)/1000 @ j = 1 : n_h + 1} @ i = 1 : n_l + 1}
v(x; y) = spline(1 + x/l_1; 1 + y/h_1; v)
PlotWidth = 100*l
PlotHeight = 100*h
PlotStep = 10
#show
'Horizontal joint displacements, ·10<sup>-3</sup>mm
transp(u)
$Map{u(x; y) @ x = 0 : l & y = 0 : h}
'Vertical joint displacements, ·10<sup>-3</sup>mm
transp(v)
$Map{v(x; y) @ x = 0 : l & y = 0 : h}
'Calculation of internal forces
'Displacements for joint - 'Z_j(j) = slice(Z; k_1*(j - 1) + 1; k_1*j)
'Displacements for element - 'Z_e(e) = [Z_j(e_j.(e; 1)); Z_j(e_j.(e; 2)); Z_j(e_j.(e; 3)); Z_j(e_j.(e; 4))]
#hide
B(ξ; η) = [ _
B_1(1; η); B_1(2; η); B_1(3; η); B_1(4; η); _
B_1(5; η); B_1(6; η); B_1(7; η); B_1(8; η)| _
B_2(1; ξ); B_2(2; ξ); B_2(3; ξ); B_2(4; ξ); _
B_2(5; ξ); B_2(6; ξ); B_2(7; ξ); B_2(8; ξ)| _
B_3(1; ξ; η); B_3(2; ξ; η); B_3(3; ξ; η); B_3(4; ξ; η); _
B_3(5; ξ; η); B_3(6; ξ; η); B_3(7; ξ; η); B_3(8; ξ; η)]
#show
'Membrane forces in element -'N_e(e; x; y) = -D*B(2*x/l_1; 2*y/h_1)*Z_e(e)
#hide
N_j = matrix(3; n_j)
c_j = vector(n_j)
#for e = 1 : n_e
Z_е = Z_e(e)
j_1 = e_j.(e; 1)
x_1 = x_c.e
y_1 = y_c.e
#for i = 1 : 4
j = e_j.(e; i)
c_j.j = c_j.j + 1
x = x_j.j - x_1
y = y_j.j - y_1
N_e = N_e(e; x; y)
add(N_e; N_j; 1; j)
#loop
#loop
#for j = 1 : n_j
N_j.(1; j) = N_j.(1; j)/c_j.j
N_j.(2; j) = N_j.(2; j)/c_j.j
N_j.(3; j) = N_j.(3; j)/c_j.j
#loop
Nx = matrix(n_l + 1; n_h + 1)
Ny = matrix(n_l + 1; n_h + 1)
Nxy = matrix(n_l + 1; n_h + 1)
#for i = 1 : n_l + 1
#for k = 1 : n_h + 1
j = (i - 1)*(n_h + 1) + k
Nx.(i; k) = N_j.(1; j)
Ny.(i; k) = N_j.(2; j)
Nxy.(i; k) = N_j.(3; j)
#loop
#loop
N_x(x; y) = spline(1 + x/l_1; 1 + y/h_1; Nx)
N_y(x; y) = spline(1 + x/l_1; 1 + y/h_1; Ny)
N_xy(x; y) = spline(1 + x/l_1; 1 + y/h_1; Nxy)
i = round(n_l/2)
j = round(n_h/2)
e = e_S.(n_l/2 + 1)
j = e_j.(e; 1)
x = -l_1/2
y = -h_1/2
#show
#val
'Results for element 'e' and joint 'j':
#equ
Z_e = Z_e(e)'mm
N_e = N_e(e; x; y)'kN/m
'Average membrane forces at joints, kN/m
N_j
'Membrane forces for the structure
'Normal membrane forces - <var>N</var><sub>x</sub>, kN/m
transp(Nx)
'<!--'k = round(abs(N_x(l/2; h))/20)*50'-->
$Map{N_x(x; y) @ x = 0 : l & y = 0 : h}
'Plot for <var>N</var><sub>x</sub>, kN/m at <var>x</var> = <var>l</var>/2
$Plot{N_x(l/2; y)|y & -k|0 & k|0 @ y = 0 : h}
'Bottom value -'N_x(l/2; 0)'kN/m
'Top value -'N_x(l/2; h)'kN/m
'Normal membrane forces - <var>N</var><sub>y</sub>, kN/m
transp(Ny)
$Map{N_y(x; y) @ x = 0 : l & y = 0 : h}
'<!--'k = round(abs(N_y(l/2; h))/20)*50'-->
$Plot{N_y(l/2; y)|y & -k|0 & k|0 @ y = 0 : h}
'Top value -'N_y(l/2; h)'kN/m
'Shear membrane forces - <var>N</var><sub>xy</sub>, kN/m
transp(Nxy)
$Map{N_xy(x; y) @ x = 0 : l & y = 0 : h}
'Max. value at 3/4 of span -'N_xy(3*l/4; h/2)'kN/m
'Principal membrane forces, kN/m
N_m(x; y) = 0.5*(N_x(x; y) + N_y(x; y))
ΔN(x; y) = 0.5*sqr((N_x(x; y) - N_y(x; y))^2 + 4*N_xy(x; y)^2)
N_max(x; y) = N_m(x; y) + ΔN(x; y)'kN/m
$Map{N_max(x; y) @ x = 0 : l & y = 0 : h}
N_min(x; y) = N_m(x; y) - ΔN(x; y)'kN/m
$Map{N_min(x; y) @ x = 0 : l & y = 0 : h}
|
Length - l = 4 m, Height - h = 2 m Thickness - t = 0.1 m Distributed load - q = 100 kN/m Loads Load length - b = 0.8 m Load position - a = l − b2 = 4 − 0.82 = 1.6 m Load function - q ( x ) = q · ( x ≥ a and x ≤ a + b ) | ![]() |
Supports
Support length - d = 0.4 m
Support elastic stiffness - ks = 50000 MN/m²
Support function - s ( x ) = ks · t · ( x ≤ d or x ≥ l − d )
Material properties
Modulus of elasticity - E = 20000 MPa
Poisson`s ratio - ν = 0.2
We will use rectangular finite element with n = 8 DOFs
Number of elements along l and h - nl = 20 , nh = 10
Total number of elements - ne = nl · nh = 20 · 10 = 200
Total number of joints - nj = ( nl + 1 ) · ( nh + 1 ) = ( 20 + 1 ) · ( 10 + 1 ) = 231
Element dimensions - l1 = lnl = 420 = 0.2 , h1 = hnh = 210 = 0.2
Joint coordinates
⃗xj = [0 0 0 0 0 0 0 0 0 0 0 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 ... 4] m
⃗yj = [0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 ... 2] m
Joint numbers for elements
transp ( ej ) = 1234567891012131415161718192021⋯219 23456789101113141516171819202122⋯220 1213141516171819202123242526272829303132⋯230 1314151617181920212224252627282930313233⋯231
Coordinates of element centers
je ( e ) = row ( ej; e )
xc ( e ) = sum ( extract ( ⃗xj; je ( e ) ) ) 4 , yc ( e ) = sum ( extract ( ⃗yj; je ( e ) ) ) 4
⃗xc = [0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 ... 3.9] m
⃗yc = [0.1 0.3 0.5 0.7 0.9 1.1 1.3 1.5 1.7 1.9 0.1 0.3 0.5 0.7 0.9 1.1 1.3 1.5 1.7 1.9 ... 1.9] m
Elements along the bottom (supported) edge
⃗eS = findlt ( ⃗yc; h1; 1 ) = findlt ( ⃗yc; 0.2; 1 ) = [1 11 21 31 41 51 61 71 81 91 101 111 121 131 141 151 161 171 181 191]
Elements along the top (loaded) edge
⃗eL = findgt ( ⃗yc; h − h1; 1 ) = findgt ( ⃗yc; 2 − 0.2; 1 ) = [10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200]
Shape functions
They are defined in relative coordinates to the center of the element:
ξ = 2 · ( x − ⃗xc ) l1 ∈ (-1; 1), η = 2 · ( y − ⃗yc ) h1 ∈ (-1; 1)
Base functions - Φ1 ( ξ ) = 1 − ξ2 , Φ2 ( ξ ) = 1 + ξ2
First derivatives - Φ′1 ( ξ ) = -12 , Φ′2 ( ξ ) = 12
Shape functions for joints at elements` corners
N1 ( ξ; η ) = Φ1 ( ξ ) · Φ1 ( η ) , N2 ( ξ; η ) = Φ1 ( ξ ) · Φ2 ( η )
N3 ( ξ; η ) = Φ2 ( ξ ) · Φ1 ( η ) , N4 ( ξ; η ) = Φ2 ( ξ ) · Φ2 ( η )
Constitutive matrix (stress-strain relationship)
D = E · t1 − ν2 · [1; ν; 0 | ν; 1; 0 | 0; 0; 1 − ν2] = 20000 · 0.11 − 0.22 · [1; 0.2; 0 | 0.2; 1; 0 | 0; 0; 1 − 0.22] = 2083.33416.670 416.672083.330 00833.33
Strain-displacement matrix
B1 ( j; η ) = 1l1 · take ( j; -Φ1 ( η ) ; 0; -Φ2 ( η ) ; 0; Φ1 ( η ) ; 0; Φ2 ( η ) ; 0 )
B2 ( j; ξ ) = 1h1 · take ( j; 0; -Φ1 ( ξ ) ; 0; Φ1 ( ξ ) ; 0; -Φ2 ( ξ ) ; 0; Φ2 ( ξ ) )
B3 ( j; ξ; η ) = take(j; -Φ1 ( ξ ) h1; -Φ1 ( η ) l1; Φ1 ( ξ ) h1; -Φ2 ( η ) l1; -Φ2 ( ξ ) h1; Φ1 ( η ) l1; Φ2 ( ξ ) h1; Φ2 ( η ) l1)
B ( j; ξ; η ) = [B1 ( j; η ) ; B2 ( j; ξ ) ; B3 ( j; ξ; η ) ]
The elements of the stiffness matrix will be calculated by using direct integration
Ke,ij = l1 · h14 · 1∫-1 1∫-1 Bi ( ξ; η ) T · D · Bj ( ξ; η ) dξ dη
Element stiffness matrix (above the main diagonal only)
BTDBe ( i; j; ξ; η ) = transp ( B ( i; ξ; η ) ) · D · B ( j; ξ; η )
Ke ( i; j ) = l1 · h14 · 1∫-1 1∫-1 BTDBe ( i; j; ξ; η ) dξ dη
$Repeat{$Repeat{Ke.i,j = Ke ( i; j ) for j = i...n} for i = 1...n} = 972.22
Ke = 972.22312.569.44104.17-555.56-104.17-486.11-312.5 0972.22-104.17-555.56104.1769.44-312.5-486.11 00972.22-312.5-486.11312.5-555.56104.17 000972.22312.5-486.11-104.1769.44 0000972.22-312.569.44-104.17 00000972.22104.17-555.56 000000972.22312.5 0000000972.22 MN/m
Boundary conditions
Supports
Number of elements along the supported edge - nS = len ( ⃗eS ) = 20
Element′s joint springs stiffness factors
Ks,j ( e ) = l12 · 1∫-1 Nj ( ξ; -1 ) · s (⃗xc.e + ξ · l12) dξ , j = 1 , 3
Results for element 1
Ks,1 ( e ) = l12 · 1∫-1 N1 ( ξ; -1 ) · s (⃗xc.e + ξ · l12) dξ , Ks,1 ( 1 ) = 500 MN/m
Ks,3 ( e ) = l12 · 1∫-1 N3 ( ξ; -1 ) · s (⃗xc.e + ξ · l12) dξ , Ks,3 ( 1 ) = 500 MN/m
Number of elements along the loaded edge - nL = len ( ⃗eL ) = 20
Element load vector
Fj ( e ) = l12 · 1∫-1 Nj ( ξ; 1 ) · q (⃗xc.e + ξ · l12) dξ , j = 2 , 4
Results for element 100F2 ( e ) = l12 · 1∫-1 N2 ( ξ; 1 ) · q (⃗xc.e + ξ · l12) dξ , F2 ( e ) = F2 ( 100 ) = 10 kN
F4 ( e ) = l12 · 1∫-1 N4 ( ξ; 1 ) · q (⃗xc.e + ξ · l12) dξ , F4 ( e ) = F4 ( 100 ) = 10 kN
Global stiffness matrix
K = 972.22312.569.44104.170000000000000000⋯0 312.51472.22-104.17-555.560000000000000000⋯0 69.44-104.171944.44069.44104.1700000000000000⋯0 104.17-555.5601944.44-104.17-555.5600000000000000⋯0 0069.44-104.171944.44069.44104.17000000000000⋯0 00104.17-555.5601944.44-104.17-555.56000000000000⋯0 000069.44-104.171944.44069.44104.170000000000⋯0 0000104.17-555.5601944.44-104.17-555.560000000000⋯0 00000069.44-104.171944.44069.44104.1700000000⋯0 000000104.17-555.5601944.44-104.17-555.5600000000⋯0 0000000069.44-104.171944.44069.44104.17000000⋯0 00000000104.17-555.5601944.44-104.17-555.56000000⋯0 000000000069.44-104.171944.44069.44104.170000⋯0 0000000000104.17-555.5601944.44-104.17-555.560000⋯0 00000000000069.44-104.171944.44069.44104.1700⋯0 000000000000104.17-555.5601944.44-104.17-555.5600⋯0 0000000000000069.44-104.171944.44069.44104.17⋯0 00000000000000104.17-555.5601944.44-104.17-555.56⋯0 000000000000000069.44-104.171944.440⋯0 0000000000000000104.17-555.5601944.44⋯0 ⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋱⋮00000000000000000000⋯972.22
Global load vector
⃗F = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ... 0]
sum ( ⃗F ) = 80 kN
Solution of the system of equations
⃗Z = clsolve ( K; ⃗F ) = [0.0543 0.00979 0.0429 0.0144 0.0296 0.0215 0.0185 0.0288 0.00958 0.0348 0.00188 0.0391 -0.00543 0.0419 -0.013 0.0433 -0.0212 0.0438 -0.0302 0.0438 ... 0.0438] mm
Horizontal joint displacements, ·10-3mm
transp ( u ) = 54.354.3955.2252.9747.4241.1334.1726.4718.099.190-9.19-18.09-26.47-34.17-41.13-47.42-52.97-55.22-54.39⋯-54.3 42.9140.9137.6735.333.2129.5724.8819.4113.316.770-6.77-13.31-19.41-24.88-29.57-33.21-35.3-37.67-40.91⋯-42.91 29.5627.7725.6823.7722.1320.1117.2513.659.464.840-4.84-9.46-13.65-17.25-20.11-22.13-23.77-25.68-27.77⋯-29.56 18.4917.215.9514.8213.8312.7111.169.046.373.30-3.3-6.37-9.04-11.16-12.71-13.83-14.82-15.95-17.2⋯-18.49 9.588.657.947.437.16.796.255.313.892.070-2.07-3.89-5.31-6.25-6.79-7.1-7.43-7.94-8.65⋯-9.58 1.881.270.9250.9071.191.632.032.141.811.050-1.05-1.81-2.14-2.03-1.63-1.19-0.907-0.925-1.27⋯-1.88 -5.43-5.76-5.82-5.44-4.6-3.41-2.08-0.893-0.1280.1160-0.1160.1280.8932.083.414.65.445.825.76⋯5.43 -12.99-13.1-12.92-12.22-10.93-9.05-6.74-4.34-2.31-0.91500.9152.314.346.749.0510.9312.2212.9213.1⋯12.99 -21.19-21.16-20.82-19.94-18.38-16.04-12.84-9.07-5.42-2.4202.425.429.0712.8416.0418.3819.9420.8221.16⋯21.19 -30.16-30.09-29.75-28.91-27.4-25.04-21.59-16.6-10.82-5.4805.4810.8216.621.5925.0427.428.9129.7530.09⋯30.16 -39.62-39.67-39.67-39.29-38.21-36.28-33.46-29.67-23.25-12.73012.7323.2529.6733.4636.2838.2139.2939.6739.67⋯39.62
Vertical joint displacements, ·10-3mm
transp ( v ) = 9.7917.9334.3562.3679.3793.17104.42113.38119.96124.01125.37124.01119.96113.38104.4293.1779.3762.3634.3517.93⋯9.79 14.4526.7742.8362.8680.3894.24105.67114.8121.52125.65127.04125.65121.52114.8105.6794.2480.3862.8642.8326.77⋯14.45 21.4734.1948.8565.2481.1595.02106.6115.93122.83127.09128.53127.09122.83115.93106.695.0281.1565.2448.8534.19⋯21.47 28.7739.9853.2967.8182.3495.77107.44117.01124.18128.63130.14128.63124.18117.01107.4495.7782.3467.8153.2939.98⋯28.77 34.7844.5956.770.0383.6396.63108.34118.22125.77130.53132.16130.53125.77118.22108.3496.6383.6370.0356.744.59⋯34.78 39.1348.0959.3171.8184.7797.5109.34119.67127.79133.01134.82133.01127.79119.67109.3497.584.7771.8159.3148.09⋯39.13 41.8850.5461.273.185.6198.2110.33121.34130.33136.31138.41136.31130.33121.34110.3398.285.6173.161.250.54⋯41.88 43.352.0962.4373.8986.0698.58111.11123.07133.41140.59143.18140.59133.41123.07111.1198.5886.0673.8962.4352.09⋯43.3 43.7952.9163.0974.2386.1198.52111.37124.52136.88146.02149.4146.02136.88124.52111.3798.5286.1174.2363.0952.91⋯43.79 43.853.2363.3274.2485.8898.1110.9125.06140.48152.68157.05152.68140.48125.06110.998.185.8874.2463.3253.23⋯43.8 43.7553.363.3374.1185.5697.58110.24124.05143.81160.41164.51160.41143.81124.05110.2497.5885.5674.1163.3353.3⋯43.75
Calculation of internal forces
Displacements for joint - Zj ( j ) = slice ( ⃗Z; k1 · ( j − 1 ) + 1; k1 · j )
Displacements for element - Ze ( e ) = [Zj ( ej.e,1 ) ; Zj ( ej.e,2 ) ; Zj ( ej.e,3 ) ; Zj ( ej.e,4 ) ]
Membrane forces in element - Ne ( e; x; y ) = -D · B (2 · xl1; 2 · yh1) · Ze ( e )
Results for element 101 and joint 111:⃗Ze = Ze ( e ) = Ze ( 101 ) = [0 0.125 0 0.127 -0.00919 0.124 -0.00677 0.126] mm
⃗Ne = Ne ( e; x; y ) = Ne ( 101; -0.1; -0.1 ) = [92.26 1.73 5.68] kN/m
Average membrane forces at joints, kN/m
Nj = -10.658.693.69-0.36-1.12-1.08-0.904-0.815-0.841-0.7520.592-23.1910.356.472.410.122-1.24-2.17-2.82-3.09⋯0.592 -48.71-56.68-70.86-66.62-52.02-35.69-21.04-9.71-2.660.02120.584-93.05-79.26-64.78-51.47-40.48-30.04-20.44-12.39-6.35⋯0.584 13.550.204-2.13-5.1-6.23-6.04-5.13-3.79-2.23-0.9-0.3765-3.67-7.63-11.24-12.49-12.01-10.32-7.8-4.84⋯0.376
Membrane forces for the structure
Normal membrane forces - Nx, kN/m
transp ( Nx ) = -10.65-23.19-10.2639.5659.5666.8273.7380.7686.7890.8392.2690.8386.7880.7673.7366.8259.5639.56-10.26-23.19⋯-10.65 8.6910.3514.1420.2227.9941.4750.6557.6462.8366.0967.2166.0962.8357.6450.6541.4727.9920.2214.1410.35⋯8.69 3.696.479.9613.31723.8131.8138.3243.1446.1447.1646.1443.1438.3231.8123.811713.39.966.47⋯3.69 -0.362.414.26.068.3912.2217.3422.5626.8229.6130.5829.6126.8222.5617.3412.228.396.064.22.41⋯-0.36 -1.120.1220.08040.1870.8442.655.729.513.1215.7116.6515.7113.129.55.722.650.8440.1870.08040.122⋯-1.12 -1.08-1.24-2.79-4.56-5.84-6-4.7-2.140.933.434.393.430.93-2.14-4.7-6-5.84-4.56-2.79-1.24⋯-1.08 -0.904-2.17-4.96-8.51-11.89-14.27-14.96-13.7-11.11-8.56-7.49-8.56-11.11-13.7-14.96-14.27-11.89-8.51-4.96-2.17⋯-0.904 -0.815-2.82-6.55-11.57-17.05-22.13-25.57-26.37-24.69-22.16-20.98-22.16-24.69-26.37-25.57-22.13-17.05-11.57-6.55-2.82⋯-0.815 -0.841-3.09-7.25-13.08-20.15-28.34-36.09-40.74-42.01-40.81-39.61-40.81-42.01-40.74-36.09-28.34-20.15-13.08-7.25-3.09⋯-0.841 -0.752-2.58-6.36-12.07-19.61-29.3-42.76-55.56-65.15-71.38-72.8-71.38-65.15-55.56-42.76-29.3-19.61-12.07-6.36-2.58⋯-0.752 0.5920.122-2-7.34-15.02-23.66-33.05-51.1-95.19-137.19-148.15-137.19-95.19-51.1-33.05-23.66-15.02-7.34-20.122⋯0.592
Plot for Nx, kN/m at x = l/2
Bottom value - Nx (l2; 0) = Nx (42; 0) = 92.26 kN/m
Top value - Nx (l2; h) = Nx (42; 2) = -148.15 kN/m
Normal membrane forces - Ny, kN/m
transp ( Ny ) = -48.71-93.05-86.82.921.762.72.221.851.761.731.761.8522.22.71.762.92-86.8-93.05⋯-48.71 -56.68-79.26-69.65-10.32-3.3-0.933-0.794-1.23-1.78-2.2-2.36-2.2-1.78-1.23-0.794-0.933-3.3-10.32-69.65-79.26⋯-56.68 -70.86-64.78-50.3-22.09-6.41-2.88-2.47-3.41-4.68-5.69-6.07-5.69-4.68-3.41-2.47-2.88-6.41-22.09-50.3-64.78⋯-70.86 -66.62-51.47-38.41-22.78-10.75-5.63-5.24-6.94-9.32-11.26-12.01-11.26-9.32-6.94-5.24-5.63-10.75-22.78-38.41-51.47⋯-66.62 -52.02-40.48-30.1-19.93-11.95-8.11-8.38-11.4-15.44-18.78-20.08-18.78-15.44-11.4-8.38-8.11-11.95-19.93-30.1-40.48⋯-52.02 -35.69-30.04-23.07-16.21-11.05-9.07-10.89-15.99-22.62-28.21-30.39-28.21-22.62-15.99-10.89-9.07-11.05-16.21-23.07-30.04⋯-35.69 -21.04-20.44-16.6-12.13-8.84-8.3-11.8-19.72-30.32-39.58-43.26-39.58-30.32-19.72-11.8-8.3-8.84-12.13-16.6-20.44⋯-21.04 -9.71-12.39-10.77-8-5.93-5.98-10.27-21.2-37.7-52.98-59.15-52.98-37.7-21.2-10.27-5.98-5.93-8-10.77-12.39⋯-9.71 -2.66-6.35-5.89-4.35-3.11-3.23-6.19-18.09-43.78-68.64-77.28-68.64-43.78-18.09-6.19-3.23-3.11-4.35-5.89-6.35⋯-2.66 0.0212-2.5-2.47-1.77-1.17-1.16-2.94-8.75-47.68-86.25-90.13-86.25-47.68-8.75-2.94-1.16-1.17-1.77-2.47-2.5⋯0.0212 0.584-0.693-0.515-0.1410.1390.461-0.0283-0.167-52.35-104.7-104.3-104.7-52.35-0.167-0.02830.4610.139-0.141-0.515-0.693⋯0.584
Top value - Ny (l2; h) = Ny (42; 2) = -104.3 kN/m
Shear membrane forces - Nxy, kN/m
transp ( Nxy ) = 13.555-19.47-20.12-4.98-4.01-3.42-2.94-2.18-1.1701.172.182.943.424.014.9820.1219.47-5⋯-13.55 0.204-3.67-13.65-17.4-12.68-8.91-7.6-6.3-4.6-2.4402.444.66.37.68.9112.6817.413.653.67⋯-0.204 -2.13-7.63-19.42-24.62-21.66-17.92-14.99-12.21-8.8-4.6404.648.812.2114.9917.9221.6624.6219.427.63⋯2.13 -5.1-11.24-21.03-26.5-26.93-24.52-21.33-17.48-12.62-6.66-3.8×10-136.6612.6217.4821.3324.5226.9326.521.0311.24⋯5.1 -6.23-12.49-21.72-27.13-29.07-28.4-25.95-21.93-16.14-8.6108.6116.1421.9325.9528.429.0727.1321.7212.49⋯6.23 -6.04-12.01-20.76-26.22-29.13-29.95-28.85-25.51-19.42-10.6010.619.4225.5128.8529.9529.1326.2220.7612.01⋯6.04 -5.13-10.32-18.14-23.5-27.07-29.26-29.93-28.15-22.59-12.74012.7422.5928.1529.9329.2627.0723.518.1410.32⋯5.13 -3.79-7.8-14.17-19.01-22.74-25.88-28.59-29.43-25.49-15.08015.0825.4929.4328.5925.8822.7419.0114.177.8⋯3.79 -2.23-4.84-9.37-13.18-16.26-19.3-23.25-27.63-27.04-16.57016.5727.0427.6323.2519.316.2613.189.374.84⋯2.23 -0.9-2.1-4.48-6.68-8.38-9.95-13.2-18.7-20.41-13.02013.0220.4118.713.29.958.386.684.482.1⋯0.9 -0.376-0.852-1.96-3.06-3.85-4.56-5.67-15.47-23.98-12.91012.9123.9815.475.674.563.853.061.960.852⋯0.376
Max. value at 3/4 of span - Nxy (3 · l4; h2) = Nxy (3 · 44; 22) = 29.95 kN/m
Principal membrane forces, kN/m
Nm ( x; y ) = 0.5 · ( Nx ( x; y ) + Ny ( x; y ) )
ΔN ( x; y ) = 0.5 ·   √  ( Nx ( x; y ) − Ny ( x; y ) ) 2 + 4 · Nxy ( x; y ) 2
Nmax ( x; y ) = Nm ( x; y ) + ΔN ( x; y ) kN/m
Nmin ( x; y ) = Nm ( x; y ) − ΔN ( x; y ) kN/m
Flat Slab FEA¶
Multi-span flat-slab analysis with the 16-DOF Bogner–Fox–Schmit plate element using numerical Gauss integration of the stiffness matrix. Handles arbitrary column grids and returns deflection together with the \(M_x\) and \(M_y\) bending-moment fields.
'Using numerical formulation of Bogner-Fox-Schmit (BFS) plate element
'<h4>Input data</h4>
'Span lengths
a = hp([3.6; 4.2; 4.2; 3.6])'m
b = hp([3; 3.6; 3])'m
'Number of axes -'n_sa = len(a) + 1', 'n_sb = len(b) + 1
'<img src="./flat-slab.png" width="360">
#hide
x_s = vector_hp(n_sa)','y_s = vector_hp(n_sb)
$Repeat{x_s.(k + 1) = x_s.k + a.k @ k = 1 : n_sa - 1}
$Repeat{y_s.(k + 1) = y_s.k + b.k @ k = 1 : n_sb - 1}
#show
'Axis coordinates -'x_s'm, 'y_s'm
'Slab dimensions -'l_a = x_s.n_sa'm, 'l_b = y_s.n_sb'm
'Thickness -'t = 0.2'm
'Load -'q = 10'kN/m²
'Modulus of elasticity -'E = 35000'MPa
'Poisson`s ratio -'ν = 0.2
'<h4>Finite element mesh</h4>
'We will use Bogner-Fox-Schmit rectangular finite element with'n_DOFs = 16
'Element dimensions -'a_1 = 0.6'm, 'b_1 = 0.6'm
'Number of elements and joints along <var>a</var> and <var>b</var> -'
n_a = ceiling(a/a_1)', 'n_ea = sum(n_a)', 'n_ja = n_ea + 1
n_b = ceiling(b/b_1)', 'n_eb = sum(n_b)', 'n_jb = n_eb + 1
#if count(a ≡ a_1*n_a; 0; 1) + count(b ≡ b_1*n_b; 0; 1) > 0
'<p class="err">Error! All span lengts must be multiples of element size.</p>
#break
#end if
'Total number of elements -'n_e = n_ea*n_eb
'Total number of joints -'n_j = n_ja*n_jb
'Supported joints count -'n_s = n_sa*n_sb
#hide
x_j = vector_hp(n_j)','y_j = vector_hp(n_j)
x = 0', 'y = 0', 'j = 0
#for j_a = 1 : n_ja
#for j_b = 1 : n_jb
j = j + 1
x_j.j = x
y_j.j = y
y = y + b_1
#if y > l_b
y = 0
i_b = 1
x = x + a_1
#end if
#loop
#loop
e_j = matrix_hp(n_e; 4)
#for e_a = 1 : n_ea
#for e_b = 1 : n_eb
e = e_b + n_eb*(e_a - 1)
j = e + e_a - 1
e_j.(e; 1) = j
e_j.(e; 2) = j + n_eb + 1
e_j.(e; 3) = j + n_eb + 2
e_j.(e; 4) = j + 1
#loop
#loop
s_j = vector(n_s)', 'j_s = 0', 'j = 1', 's_a = 0
#for i_a = 1 : n_sa
s_b = 0
#for i_b = 1 : n_sb
j = j + s_b
j_s = j_s + 1
s_j.j_s = j
#if i_b < n_sb
s_b = n_b.i_b
#end if
#loop
#if i_a < n_sa
s_a = n_a.i_a
j = j + (s_a - 1)*n_jb + 1
#end if
#loop
#show
'Joint coordinates
x_j'm
y_j'm
'Numbers of joints at elements'' corners
transp(e_j)
'Supported joints
s_j
'Joints for element e -'j_e(e) = row(e_j; e)
#val
#hide
w = 400
k = w/l_a
d = 10
h = l_b/l_a*w
r = 0.04*k
#show
'<svg viewbox="'-d' '-d' 'w + 2*d' 'h + 2*d'" xmlns="http://www.w3.org/2000/svg" version="1.1" style=" font-family: Segoe UI; font-size:5px; width:'w'pt; height:'h'pt">
'<style>.joint{fill:orangeRed;} .support{stroke:red; stroke-width:1; fill:lightpink;} .element{stroke:seaGreen; stroke-width:1; fill:lime; fill-opacity:0.1; stroke-opacity:0.5}</style>
'<rect x="'0'" y="'0'" width="'w'" height="'h'" style="fill:yellow; fill-opacity:0.2" />
#for e = 1 : n_e
#hide
j_e = j_e(e)
j1 = j_e.1
x1 = x_j.j1*k
y1 = y_j.j1*k
j2 = j_e.3
x2 = x_j.j2*k
y2 = y_j.j2*k
x = (x1 + x2)/2
y = (y1 + y2)/2
#show
'<text x="'x'" y="'h - y'" text-anchor="middle">'e'</text>
'<rect x="'x1'" y="'h - y2'" width="'x2 - x1'" height="'y2 - y1'" class="element" />
#loop
#for i = 1 : n_s
j = s_j.i
#hide
x = x_j.j*k
y = h - y_j.j*k
#show
'<circle cx="'x'" cy="'y'" r="'2*r'" class="support"/>
#loop
#for j = 1 : n_j
#hide
x = x_j.j*k
y = h - y_j.j*k
#show
'<circle cx="'x'" cy="'y'" r="'r'" class="joint" />
'<text x="'x + 2*r'" y="'y - r'" text-anchor="start">'j'</text>
#loop
'</svg>
#equ
'<h4>Finite element formulation</h4>
'<p><b>Shape functions</b></p>
#def FI$(x$; l$)
'<table><tr><td>Base functions
Φ_1l$(x$) = 1 - x$^2*(3 - 2*x$)
Φ_2l$(x$) = x$*l$_1*(1 - x$*(2 - x$))
Φ_3l$(x$) = x$^2*(3 - 2*x$)
Φ_4l$(x$) = x$^2*l$_1*(-1 + x$)
'</td><td>First derivatives
Φ′_1l$(x$) = -6*(x$/l$_1)*(1 - x$)
Φ′_2l$(x$) = 1 - x$*(4 - 3*x$)
Φ′_3l$(x$) = 6*(x$/l$_1)*(1 - x$)
Φ′_4l$(x$) = -x$*(2 - 3*x$)
'</td><td>Second derivatives
Φ″_1l$(x$) = -(6/l$_1^2)*(1 - 2*x$)
Φ″_2l$(x$) = -(2/l$_1)*(2 - 3*x$)
Φ″_3l$(x$) = 6/l$_1^2*(1 - 2*x$)
Φ″_4l$(x$) = -(2/l$_1)*(1 - 3*x$)
'</td></tr></table>
#end def
'Along dimension <var>a</var>
FI$(ξ; a)
'Along dimension <var>b</var>
FI$(η; b)
'<table><tr><td>For vertical displacements <var>w</var>
N_1,w(ξ; η) = Φ_1a(ξ)*Φ_1b(η)
N_2,w(ξ; η) = Φ_3a(ξ)*Φ_1b(η)
N_3,w(ξ; η) = Φ_3a(ξ)*Φ_3b(η)
N_4,w(ξ; η) = Φ_1a(ξ)*Φ_3b(η)
'</td><td>For rotations <var>θ</var>ₓ
N_1,θₓ(ξ; η) = Φ_2a(ξ)*Φ_1b(η)
N_2,θₓ(ξ; η) = Φ_4a(ξ)*Φ_1b(η)
N_3,θₓ(ξ; η) = Φ_4a(ξ)*Φ_3b(η)
N_4,θₓ(ξ; η) = Φ_2a(ξ)*Φ_3b(η)
'</td><td>For rotations <var>θ</var>ᵧ
N_1,θᵧ(ξ; η) = Φ_1a(ξ)*Φ_2b(η)
N_2,θᵧ(ξ; η) = Φ_3a(ξ)*Φ_2b(η)
N_3,θᵧ(ξ; η) = Φ_3a(ξ)*Φ_4b(η)
N_4,θᵧ(ξ; η) = Φ_1a(ξ)*Φ_4b(η)
'</td></tr><tr><td>
'For twist ψ
N_1,ψ(ξ; η) = Φ_2a(ξ)*Φ_2b(η)
N_2,ψ(ξ; η) = Φ_4a(ξ)*Φ_2b(η)
N_3,ψ(ξ; η) = Φ_4a(ξ)*Φ_4b(η)
N_4,ψ(ξ; η) = Φ_2a(ξ)*Φ_4b(η)
'</td><td colspan="2" style="width:160pt; text-align:center;">
'<img src="./plate-element.png" alt="plane-elemen.png" style="width:160pt;" />
'</td></tr></table>
'<!--'PlotSVG = 1''PlotWidth = 160''PlotHeight = PlotWidth''PlotPalette = 7'-->
'<table><tr><td>
'<p><var>N</var><sub>1,w</sub> shape function plot</p>
$Map{N_1,w(ξ; η) @ ξ = 0 : 1 & η = 0 : 1}
'</td><td>
'<p><var>N</var><sub>1,θₓ</sub> shape function plot</p>
$Map{N_1,θₓ(ξ; η) @ ξ = 0 : 1 & η = 0 : 1}
'</td></tr><tr><td>
'<!--'PlotHeight = 50'-->
$Plot{N_1,w(ξ; 0) @ ξ = 0 : 1}
'</td><td>
$Plot{N_1,θₓ(ξ; 0) @ ξ = 0 : 1}
'</td></tr></table>
'Shape functions vector
N(i; ξ; η) = take(i; _
N_1,w(ξ; η); N_1,θₓ(ξ; η); N_1,θᵧ(ξ; η); N_1,ψ(ξ; η); _
N_2,w(ξ; η); N_2,θₓ(ξ; η); N_2,θᵧ(ξ; η); N_2,ψ(ξ; η); _
N_3,w(ξ; η); N_3,θₓ(ξ; η); N_3,θᵧ(ξ; η); N_3,ψ(ξ; η); _
N_4,w(ξ; η); N_4,θₓ(ξ; η); N_4,θᵧ(ξ; η); N_4,ψ(ξ; η))
'<p><b>Constitutive matrix</b> (stress - strain relationship)</p>
D = E*t^3/(12*(1 - ν^2))*hp([1; ν; 0|ν; 1; 0|0; 0; (1 - ν)/2])'kNm
'<p><b>Strain-displacement matrix</b></p>
B_1(j; ξ; η) = take(j; _
Φ″_1a(ξ)*Φ_1b(η); Φ″_2a(ξ)*Φ_1b(η); Φ″_1a(ξ)*Φ_2b(η); Φ″_2a(ξ)*Φ_2b(η); _
Φ″_3a(ξ)*Φ_1b(η); Φ″_4a(ξ)*Φ_1b(η); Φ″_3a(ξ)*Φ_2b(η); Φ″_4a(ξ)*Φ_2b(η); _
Φ″_3a(ξ)*Φ_3b(η); Φ″_4a(ξ)*Φ_3b(η); Φ″_3a(ξ)*Φ_4b(η); Φ″_4a(ξ)*Φ_4b(η); _
Φ″_1a(ξ)*Φ_3b(η); Φ″_2a(ξ)*Φ_3b(η); Φ″_1a(ξ)*Φ_4b(η); Φ″_2a(ξ)*Φ_4b(η))
B_2(j; ξ; η) = take(j; _
Φ_1a(ξ)*Φ″_1b(η); Φ_2a(ξ)*Φ″_1b(η); Φ_1a(ξ)*Φ″_2b(η); Φ_2a(ξ)*Φ″_2b(η); _
Φ_3a(ξ)*Φ″_1b(η); Φ_4a(ξ)*Φ″_1b(η); Φ_3a(ξ)*Φ″_2b(η); Φ_4a(ξ)*Φ″_2b(η); _
Φ_3a(ξ)*Φ″_3b(η); Φ_4a(ξ)*Φ″_3b(η); Φ_3a(ξ)*Φ″_4b(η); Φ_4a(ξ)*Φ″_4b(η); _
Φ_1a(ξ)*Φ″_3b(η); Φ_2a(ξ)*Φ″_3b(η); Φ_1a(ξ)*Φ″_4b(η); Φ_2a(ξ)*Φ″_4b(η))
B_3(j; ξ; η) = 2*take(j; _
Φ′_1a(ξ)*Φ′_1b(η); Φ′_2a(ξ)*Φ′_1b(η); Φ′_1a(ξ)*Φ′_2b(η); Φ′_2a(ξ)*Φ′_2b(η); _
Φ′_3a(ξ)*Φ′_1b(η); Φ′_4a(ξ)*Φ′_1b(η); Φ′_3a(ξ)*Φ′_2b(η); Φ′_4a(ξ)*Φ′_2b(η); _
Φ′_3a(ξ)*Φ′_3b(η); Φ′_4a(ξ)*Φ′_3b(η); Φ′_3a(ξ)*Φ′_4b(η); Φ′_4a(ξ)*Φ′_4b(η); _
Φ′_1a(ξ)*Φ′_3b(η); Φ′_2a(ξ)*Φ′_3b(η); Φ′_1a(ξ)*Φ′_4b(η); Φ′_2a(ξ)*Φ′_4b(η))
B(j; ξ; η) = hp([B_1(j; ξ; η); B_2(j; ξ; η); B_3(j; ξ; η)])
'The coefficients of the stiffness matrix will be calculated by using the equation
#noc
K_e,ij = a_1*b_1*$Integral{$Integral{B_i(ξ; η)^T*D*B_j(ξ; η) @ ξ = 0 : 1} @ η = 0 : 1}
#equ
'<p><b>Element stiffness matrix</b></p> (above the main diagonal only)
#hide
n = n_DOFs
Precision = 10^-4
K_e = utriang_hp(n)
#show
BTDB_e(i; j; ξ; η) = transp(B(i; ξ; η))*D*B(j; ξ; η)
K_e(i; j) = a_1*b_1*$Integral{$Integral{BTDB_e(i; j; ξ; η) @ η = 0 : 1} @ ξ = 0 : 1}
$Repeat{$Repeat{K_e.(i; j) = K_e(i; j) @ j = i : n} @ i = 1 : n}
K_e
'Element load vector
#noc
F_e,i = a_1*b_1*$Integral{$Integral{N_i(ξ; η)^T*q @ ξ = 0 : 1} @ η = 0 : 1}
#equ
#hide
F_e = vector_hp(n)
#for i = 1 : n
F_e.i = a_1*b_1*$Integral{$Integral{N(i; ξ; η)*q @ ξ = 0 : 1} @ η = 0 : 1}
#loop
#show
F_e'kN
'<h4>Solution</h4>
'Global stiffness matrix
#hide
k_1 = n/4
n = k_1*n_j
K = symmetric_hp(n)
'Addition of element stiffness matrix coefficients
#for e = 1 : n_e
#for i = 1 : 4
#for j = i : 4
j_1 = e_j.(e; i)
j_2 = e_j.(e; j)
i_1 = k_1*(j_1 - 1) + 1
i_2 = k_1*(j_2 - 1) + 1
k_ij = submatrix(K_e; k_1*(i - 1) + 1; k_1*i; k_1*(j - 1) + 1; k_1*j)
#if j_1 > j_2
add(transp(k_ij); K; i_2; i_1)
#else
add(k_ij; K; i_1; i_2)
#end if
#loop
#loop
#loop
k_s = 10^20
'Addition of supports
#for i = 1 : n_s
j = k_1*(s_j.i - 1) + 1
K.(j; j) = K.(j; j) + k_s
#loop
#show
K
'Global load vector
#hide
F = vector_hp(n)
#for e = 1 : n_e
#for i = 1 : 4
j = e_j.(e; i)
#for k = 1 : 4
l = k_1*(j - 1) + k
F.l = F.l + F_e.(k_1*(i - 1) + k)
#loop
#loop
#loop
#show
F'kN
'Solution of the system of equations<!--'Tol = 10^-2'-->
Z = slsolve(K; F)'mm
'<h4>Results</h4>
'Joint displacements
#hide
W_z = matrix_hp(n_ja; n_jb)
w(j) = Z.(4*j - 3)
$Repeat{$Repeat{W_z.(i; j) = round(w((i - 1)*n_jb + j)*1000)/1000 @ j = 1 : n_jb} @ i = 1 : n_ja}
w(x; y) = spline(1 + x/a_1; 1 + y/b_1; W_z)
PlotWidth = 450', 'PlotHeight = PlotWidth*l_b/l_a
PlotPalette = 2', 'PlotShadows = 1
PlotLightDir = 7', 'PlotStep = 2
#show
transp(W_z)'mm
$Map{-w(x; y) @ x = 0 : l_a & y = 0 : l_b}
'Bending moments
Z_j(j) = slice(Z; k_1*(j - 1) + 1; k_1*j)
Z_e(e) = hp([Z_j(e_j.(e; 1)); Z_j(e_j.(e; 2)); Z_j(e_j.(e; 3)); Z_j(e_j.(e; 4))])
#hide
B(ξ; η) = hp([ _
B_1(1; ξ; η); B_1(2; ξ; η); B_1(3; ξ; η); B_1(4; ξ; η); _
B_1(5; ξ; η); B_1(6; ξ; η); B_1(7; ξ; η); B_1(8; ξ; η); _
B_1(9; ξ; η); B_1(10; ξ; η); B_1(11; ξ; η); B_1(12; ξ; η); _
B_1(13; ξ; η); B_1(14; ξ; η); B_1(15; ξ; η); B_1(16; ξ; η)| _
B_2(1; ξ; η); B_2(2; ξ; η); B_2(3; ξ; η); B_2(4; ξ; η); _
B_2(5; ξ; η); B_2(6; ξ; η); B_2(7; ξ; η); B_2(8; ξ; η); _
B_2(9; ξ; η); B_2(10; ξ; η); B_2(11; ξ; η); B_2(12; ξ; η); _
B_2(13; ξ; η); B_2(14; ξ; η); B_2(15; ξ; η); B_2(16; ξ; η)| _
B_3(1; ξ; η); B_3(2; ξ; η); B_3(3; ξ; η); B_3(4; ξ; η); _
B_3(5; ξ; η); B_3(6; ξ; η); B_3(7; ξ; η); B_3(8; ξ; η); _
B_3(9; ξ; η); B_3(10; ξ; η); B_3(11; ξ; η); B_3(12; ξ; η); _
B_3(13; ξ; η); B_3(14; ξ; η); B_3(15; ξ; η); B_3(16; ξ; η)])
M_j = matrix_hp(3; n_j)
c_j = vector_hp(n_j)
#for e = 1 : n_e
Z_е = Z_e(e)
j_1 = e_j.(e; 1)
x_1 = x_j.j_1
y_1 = y_j.j_1
M_e(x; y) = -D*B(x/a_1; y/b_1)*Z_е
#for i = 1 : 4
j = e_j.(e; i)
c_j.j = c_j.j + 1
x = x_j.j - x_1
y = y_j.j - y_1
M_e = M_e(x; y)
add(M_e; M_j; 1; j)
#loop
#loop
#for j = 1 : n_j
M_j.(1; j) = M_j.(1; j)/c_j.j
M_j.(2; j) = M_j.(2; j)/c_j.j
M_j.(3; j) = M_j.(3; j)/c_j.j
#loop
Mx = matrix_hp(n_ja; n_jb)
My = matrix_hp(n_ja; n_jb)
Mxy = matrix_hp(n_ja; n_jb)
#for i = 1 : n_ja
#for k = 1 : n_jb
j = (i - 1)*n_jb + k
Mx.(i; k) = M_j.(1; j)
My.(i; k) = M_j.(2; j)
Mxy.(i; k) = M_j.(3; j)
#loop
#loop
M_x(x; y) = spline(1 + x/a_1; 1 + y/b_1; Mx)
M_y(x; y) = spline(1 + x/a_1; 1 + y/b_1; My)
M_xy(x; y) = spline(1 + x/a_1; 1 + y/b_1; Mxy)
PlotShadows = 0
#show
'Average bending moments at joints, kNm/m
M_j
'Bending moments for the plate
'Bending moments - <var>M</var><sub>x</sub>
transp(Mx)'kNm/m
$Map{M_x(x; y) @ x = 0 : l_a & y = 0 : l_b}
'Bending moments <var>M</var><sub>y</sub>
transp(My)'kNm/m
$Map{M_y(x; y) @ x = 0 : l_a & y = 0 : l_b}
'Bending moments <var>M</var><sub>xy</sub>
transp(Mxy)'kNm/m
$Map{M_xy(x; y) @ x = 0 : l_a & y = 0 : l_b}
Using numerical formulation of Bogner-Fox-Schmit (BFS) plate element
Span lengths
⃗a = hp ( [3.6; 4.2; 4.2; 3.6] ) = [3.6 4.2 4.2 3.6] m
⃗b = hp ( [3; 3.6; 3] ) = [3 3.6 3] m
Number of axes - nsa = len ( ⃗a ) + 1 = 5 , nsb = len ( ⃗b ) + 1 = 4
Axis coordinates - ⃗xs = [0 3.6 7.8 12 15.6] m, ⃗ys = [0 3 6.6 9.6] m
Slab dimensions - la = ⃗xs.5 = 15.6 m, lb = ⃗ys.4 = 9.6 m
Thickness - t = 0.2 m
Load - q = 10 kN/m²
Modulus of elasticity - E = 35000 MPa
Poisson`s ratio - ν = 0.2
We will use Bogner-Fox-Schmit rectangular finite element with nDOFs = 16
Element dimensions - a1 = 0.6 m, b1 = 0.6 m
Number of elements and joints along a and b -
⃗na = ceiling(⃗aa1) = ceiling(⃗a0.6) = [6 7 7 6] , nea = sum ( ⃗na ) = 26 , nja = nea + 1 = 26 + 1 = 27
⃗nb = ceiling(⃗bb1) = ceiling(⃗b0.6) = [5 6 5] , neb = sum ( ⃗nb ) = 16 , njb = neb + 1 = 16 + 1 = 17
Total number of elements - ne = nea · neb = 26 · 16 = 416
Total number of joints - nj = nja · njb = 27 · 17 = 459
Supported joints count - ns = nsa · nsb = 5 · 4 = 20
Joint coordinates
⃗xj = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.6 0.6 0.6 ... 15.6] m
⃗yj = [0 0.6 1.2 1.8 2.4 3 3.6 4.2 4.8 5.4 6 6.6 7.2 7.8 8.4 9 9.6 0 0.6 1.2 ... 9.6] m
Numbers of joints at elements' corners
transp ( ej ) = 1234567891011121314151618192021⋯441 1819202122232425262728293031323335363738⋯458 1920212223242526272829303132333436373839⋯459 23456789101112131415161719202122⋯442
Supported joints
⃗sj = [1 6 12 17 103 108 114 119 222 227 233 238 341 346 352 357 443 448 454 459]
Joints for element e - je ( e ) = row ( ej; e )
Shape functions
Along dimension a
| Base functions
Φ1a ( ξ ) = 1 − ξ2 · ( 3 − 2 · ξ ) Φ2a ( ξ ) = ξ · a1 · ( 1 − ξ · ( 2 − ξ ) ) Φ3a ( ξ ) = ξ2 · ( 3 − 2 · ξ ) Φ4a ( ξ ) = ξ2 · a1 · ( -1 + ξ ) | First derivatives
Φ′1a ( ξ ) = -6 · ξa1 · ( 1 − ξ ) Φ′2a ( ξ ) = 1 − ξ · ( 4 − 3 · ξ ) Φ′3a ( ξ ) = 6 · ξa1 · ( 1 − ξ ) Φ′4a ( ξ ) = -ξ · ( 2 − 3 · ξ ) | Second derivatives
Φ″1a ( ξ ) = - 6a12 · ( 1 − 2 · ξ ) Φ″2a ( ξ ) = - 2a1 · ( 2 − 3 · ξ ) Φ″3a ( ξ ) = 6a12 · ( 1 − 2 · ξ ) Φ″4a ( ξ ) = - 2a1 · ( 1 − 3 · ξ ) |
Along dimension b
| Base functions
Φ1b ( η ) = 1 − η2 · ( 3 − 2 · η ) Φ2b ( η ) = η · b1 · ( 1 − η · ( 2 − η ) ) Φ3b ( η ) = η2 · ( 3 − 2 · η ) Φ4b ( η ) = η2 · b1 · ( -1 + η ) | First derivatives
Φ′1b ( η ) = -6 · ηb1 · ( 1 − η ) Φ′2b ( η ) = 1 − η · ( 4 − 3 · η ) Φ′3b ( η ) = 6 · ηb1 · ( 1 − η ) Φ′4b ( η ) = -η · ( 2 − 3 · η ) | Second derivatives
Φ″1b ( η ) = - 6b12 · ( 1 − 2 · η ) Φ″2b ( η ) = - 2b1 · ( 2 − 3 · η ) Φ″3b ( η ) = 6b12 · ( 1 − 2 · η ) Φ″4b ( η ) = - 2b1 · ( 1 − 3 · η ) |
| For vertical displacements w
N1,w ( ξ; η ) = Φ1a ( ξ ) · Φ1b ( η ) N2,w ( ξ; η ) = Φ3a ( ξ ) · Φ1b ( η ) N3,w ( ξ; η ) = Φ3a ( ξ ) · Φ3b ( η ) N4,w ( ξ; η ) = Φ1a ( ξ ) · Φ3b ( η ) | For rotations θₓ
N1,θₓ ( ξ; η ) = Φ2a ( ξ ) · Φ1b ( η ) N2,θₓ ( ξ; η ) = Φ4a ( ξ ) · Φ1b ( η ) N3,θₓ ( ξ; η ) = Φ4a ( ξ ) · Φ3b ( η ) N4,θₓ ( ξ; η ) = Φ2a ( ξ ) · Φ3b ( η ) | For rotations θᵧ
N1,θᵧ ( ξ; η ) = Φ1a ( ξ ) · Φ2b ( η ) N2,θᵧ ( ξ; η ) = Φ3a ( ξ ) · Φ2b ( η ) N3,θᵧ ( ξ; η ) = Φ3a ( ξ ) · Φ4b ( η ) N4,θᵧ ( ξ; η ) = Φ1a ( ξ ) · Φ4b ( η ) |
|
For twist ψ N1,ψ ( ξ; η ) = Φ2a ( ξ ) · Φ2b ( η ) N2,ψ ( ξ; η ) = Φ4a ( ξ ) · Φ2b ( η ) N3,ψ ( ξ; η ) = Φ4a ( ξ ) · Φ4b ( η ) N4,ψ ( ξ; η ) = Φ2a ( ξ ) · Φ4b ( η ) |
| |
|
N1,w shape function plot |
N1,θₓ shape function plot |
Shape functions vector
N ( i; ξ; η ) = take ( i; N1,w ( ξ; η ) ; N1,θₓ ( ξ; η ) ; N1,θᵧ ( ξ; η ) ; N1,ψ ( ξ; η ) ; N2,w ( ξ; η ) ; N2,θₓ ( ξ; η ) ; N2,θᵧ ( ξ; η ) ; N2,ψ ( ξ; η ) ; N3,w ( ξ; η ) ; N3,θₓ ( ξ; η ) ; N3,θᵧ ( ξ; η ) ; N3,ψ ( ξ; η ) ; N4,w ( ξ; η ) ; N4,θₓ ( ξ; η ) ; N4,θᵧ ( ξ; η ) ; N4,ψ ( ξ; η ) )
Constitutive matrix (stress - strain relationship)
D = E · t312 · ( 1 − ν2 ) · hp([1; ν; 0 | ν; 1; 0 | 0; 0; 1 − ν2]) = 35000 · 0.2312 · ( 1 − 0.22 ) · hp([1; 0.2; 0 | 0.2; 1; 0 | 0; 0; 1 − 0.22]) = 24.314.860 4.8624.310 009.72 kNm
Strain-displacement matrix
B1 ( j; ξ; η ) = take ( j; Φ″1a ( ξ ) · Φ1b ( η ) ; Φ″2a ( ξ ) · Φ1b ( η ) ; Φ″1a ( ξ ) · Φ2b ( η ) ; Φ″2a ( ξ ) · Φ2b ( η ) ; Φ″3a ( ξ ) · Φ1b ( η ) ; Φ″4a ( ξ ) · Φ1b ( η ) ; Φ″3a ( ξ ) · Φ2b ( η ) ; Φ″4a ( ξ ) · Φ2b ( η ) ; Φ″3a ( ξ ) · Φ3b ( η ) ; Φ″4a ( ξ ) · Φ3b ( η ) ; Φ″3a ( ξ ) · Φ4b ( η ) ; Φ″4a ( ξ ) · Φ4b ( η ) ; Φ″1a ( ξ ) · Φ3b ( η ) ; Φ″2a ( ξ ) · Φ3b ( η ) ; Φ″1a ( ξ ) · Φ4b ( η ) ; Φ″2a ( ξ ) · Φ4b ( η ) )
B2 ( j; ξ; η ) = take ( j; Φ1a ( ξ ) · Φ″1b ( η ) ; Φ2a ( ξ ) · Φ″1b ( η ) ; Φ1a ( ξ ) · Φ″2b ( η ) ; Φ2a ( ξ ) · Φ″2b ( η ) ; Φ3a ( ξ ) · Φ″1b ( η ) ; Φ4a ( ξ ) · Φ″1b ( η ) ; Φ3a ( ξ ) · Φ″2b ( η ) ; Φ4a ( ξ ) · Φ″2b ( η ) ; Φ3a ( ξ ) · Φ″3b ( η ) ; Φ4a ( ξ ) · Φ″3b ( η ) ; Φ3a ( ξ ) · Φ″4b ( η ) ; Φ4a ( ξ ) · Φ″4b ( η ) ; Φ1a ( ξ ) · Φ″3b ( η ) ; Φ2a ( ξ ) · Φ″3b ( η ) ; Φ1a ( ξ ) · Φ″4b ( η ) ; Φ2a ( ξ ) · Φ″4b ( η ) )
B3 ( j; ξ; η ) = 2 · take ( j; Φ′1a ( ξ ) · Φ′1b ( η ) ; Φ′2a ( ξ ) · Φ′1b ( η ) ; Φ′1a ( ξ ) · Φ′2b ( η ) ; Φ′2a ( ξ ) · Φ′2b ( η ) ; Φ′3a ( ξ ) · Φ′1b ( η ) ; Φ′4a ( ξ ) · Φ′1b ( η ) ; Φ′3a ( ξ ) · Φ′2b ( η ) ; Φ′4a ( ξ ) · Φ′2b ( η ) ; Φ′3a ( ξ ) · Φ′3b ( η ) ; Φ′4a ( ξ ) · Φ′3b ( η ) ; Φ′3a ( ξ ) · Φ′4b ( η ) ; Φ′4a ( ξ ) · Φ′4b ( η ) ; Φ′1a ( ξ ) · Φ′3b ( η ) ; Φ′2a ( ξ ) · Φ′3b ( η ) ; Φ′1a ( ξ ) · Φ′4b ( η ) ; Φ′2a ( ξ ) · Φ′4b ( η ) )
B ( j; ξ; η ) = hp ( [B1 ( j; ξ; η ) ; B2 ( j; ξ; η ) ; B3 ( j; ξ; η ) ] )
The coefficients of the stiffness matrix will be calculated by using the equation
Ke,ij = a1 · b1 · 1∫0 1∫0 Bi ( ξ; η ) T · D · Bj ( ξ; η ) dξ dη
Element stiffness matrix
(above the main diagonal only)BTDBe ( i; j; ξ; η ) = transp ( B ( i; ξ; η ) ) · D · B ( j; ξ; η )
Ke ( i; j ) = a1 · b1 · 1∫0 1∫0 BTDBe ( i; j; ξ; η ) dη dξ
$Repeat{$Repeat{Ke.i,j = Ke ( i; j ) for j = i...n} for i = 1...n} = 0.978
Ke = 796.3135.19135.1916.74-391.284.95-13.664.1-13.8936.5736.57-8.54-391.2-13.6684.954.1 046.6721.64.67-84.9514.03-4.090.708-36.5710.288.54-1.62-13.661.944.1-0.583 0046.674.67-13.664.091.94-0.583-36.578.5410.28-1.62-84.95-4.114.030.708 0000.978-4.10.7080.583-0.161-8.541.621.62-0.231-4.10.5830.708-0.161 0000796.3-135.19135.19-16.74-391.213.6684.95-4.1-13.89-36.5736.578.54 0000046.67-21.64.6713.661.94-4.1-0.58336.5710.28-8.54-1.62 00000046.67-4.67-84.954.114.03-0.708-36.57-8.5410.281.62 00000000.9784.10.583-0.708-0.1618.541.62-1.62-0.231 00000000796.3-135.19-135.1916.74-391.2-84.9513.664.1 00000000046.6721.6-4.6784.9514.03-4.09-0.708 000000000046.67-4.6713.664.091.940.583 000000000000.978-4.1-0.708-0.583-0.161 000000000000796.3135.19-135.19-16.74 000000000000046.67-21.6-4.67 0000000000000046.674.67 0000000000000000.978
Element load vector
Fe,i = a1 · b1 · 1∫0 1∫0 Ni ( ξ; η ) T · q dξ dη
⃗Fe = [0.9 0.09 0.09 0.009 0.9 -0.09 0.09 -0.009 0.9 -0.09 -0.09 0.009 0.9 0.09 -0.09 -0.009] kN
Global stiffness matrix
K = 1020135.19135.1916.74-391.2-13.6684.954.1000000000000⋯0 135.1946.6721.64.67-13.661.944.1-0.583000000000000⋯0 135.1921.646.674.67-84.95-4.114.030.708000000000000⋯0 16.744.674.670.978-4.10.5830.708-0.161000000000000⋯0 -391.2-13.66-84.95-4.11592.59270.3700-391.2-13.6684.954.100000000⋯0 -13.661.94-4.10.583270.3793.3300-13.661.944.1-0.58300000000⋯0 84.954.114.030.7080093.339.33-84.95-4.114.030.70800000000⋯0 4.1-0.5830.708-0.161009.331.96-4.10.5830.708-0.16100000000⋯0 0000-391.2-13.66-84.95-4.11592.59270.3700-391.2-13.6684.954.10000⋯0 0000-13.661.94-4.10.583270.3793.3300-13.661.944.1-0.5830000⋯0 000084.954.114.030.7080093.339.33-84.95-4.114.030.7080000⋯0 00004.1-0.5830.708-0.161009.331.96-4.10.5830.708-0.1610000⋯0 00000000-391.2-13.66-84.95-4.11592.59270.3700-391.2-13.6684.954.1⋯0 00000000-13.661.94-4.10.583270.3793.3300-13.661.944.1-0.583⋯0 0000000084.954.114.030.7080093.339.33-84.95-4.114.030.708⋯0 000000004.1-0.5830.708-0.161009.331.96-4.10.5830.708-0.161⋯0 000000000000-391.2-13.66-84.95-4.11592.59270.3700⋯0 000000000000-13.661.94-4.10.583270.3793.3300⋯0 00000000000084.954.114.030.7080093.339.33⋯0 0000000000004.1-0.5830.708-0.161009.331.96⋯0 ⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋱⋮00000000000000000000⋯0.978
Global load vector
⃗F = [0.9 0.09 0.09 0.009 1.8 0.18 0 0 1.8 0.18 0 0 1.8 0.18 0 0 1.8 0.18 0 0 ... 0.009] kN
Solution of the system of equations
⃗Z = slsolve ( K; ⃗F ) = [0 0.552 0.383 -0.416 0.203 0.373 0.265 -0.194 0.299 0.309 0.0483 -0.025 0.261 0.343 -0.165 0.128 0.121 0.468 -0.267 0.229 ... -0.416] mm
Joint displacements
transp ( Wz ) = 00.3030.4880.5120.3830.16500.1390.340.4690.4720.3470.14600.1460.3470.4720.4690.340.139⋯0 0.2030.4190.5620.5810.4850.3370.250.310.4380.5310.5330.4430.3110.2420.3110.4430.5330.5310.4380.31⋯0.203 0.2990.4820.6050.620.5370.4170.350.3870.4850.5620.5640.4890.3870.3380.3870.4890.5640.5620.4850.387⋯0.299 0.2610.4610.5930.6080.5130.3750.2990.3420.4550.5420.5440.460.3450.2890.3450.460.5440.5420.4550.342⋯0.261 0.1210.3860.550.5650.4430.2530.1380.2170.3810.4930.4970.3890.2250.1340.2250.3890.4970.4930.3810.217⋯0.121 00.340.5270.5420.4040.17300.1350.3360.4630.4670.3450.14500.1450.3450.4670.4630.3360.135⋯0 0.1390.3980.5560.5660.440.2470.1290.2060.3670.4780.4810.3740.2110.1210.2110.3740.4810.4780.3670.206⋯0.139 0.2990.4870.6080.6120.5110.3690.2870.3250.4330.5160.5190.4370.3240.270.3240.4370.5190.5160.4330.325⋯0.299 0.3630.5260.6320.6350.5440.420.350.3760.4640.5360.5380.4670.3730.3290.3730.4670.5380.5360.4640.376⋯0.363 0.2990.4870.6080.6120.5110.3690.2870.3250.4330.5160.5190.4370.3240.270.3240.4370.5190.5160.4330.325⋯0.299 0.1390.3980.5560.5660.440.2470.1290.2060.3670.4780.4810.3740.2110.1210.2110.3740.4810.4780.3670.206⋯0.139 00.340.5270.5420.4040.17300.1350.3360.4630.4670.3450.14500.1450.3450.4670.4630.3360.135⋯0 0.1210.3860.550.5650.4430.2530.1380.2170.3810.4930.4970.3890.2250.1340.2250.3890.4970.4930.3810.217⋯0.121 0.2610.4610.5930.6080.5130.3750.2990.3420.4550.5420.5440.460.3450.2890.3450.460.5440.5420.4550.342⋯0.261 0.2990.4820.6050.620.5370.4170.350.3870.4850.5620.5640.4890.3870.3380.3870.4890.5640.5620.4850.387⋯0.299 0.2030.4190.5620.5810.4850.3370.250.310.4380.5310.5330.4430.3110.2420.3110.4430.5330.5310.4380.31⋯0.203 00.3030.4880.5120.3830.16500.1390.340.4690.4720.3470.14600.1460.3470.4720.4690.340.139⋯0 mm
Bending moments
Zj ( j ) = slice ( ⃗Z; k1 · ( j − 1 ) + 1; k1 · j )
Ze ( e ) = hp ( [Zj ( ej.e,1 ) ; Zj ( ej.e,2 ) ; Zj ( ej.e,3 ) ; Zj ( ej.e,4 ) ] )
Average bending moments at joints, kNm/m
Mj = 1.50.310.220.1560.1570.9980.1560.1520.1940.1520.1560.9980.1570.1560.220.311.58.56.485.78⋯1.5 1.577.819.347.673.33-28.363.157.328.97.323.15-28.363.337.679.347.811.570.3215.387.13⋯1.57 8.093.770.486-2.48-4.460.1554.782.841.19×10-8-2.84-4.78-0.1554.462.48-0.486-3.77-8.094.112.570.367⋯8.09
Bending moments for the plate
Bending moments - Mx
transp ( Mx ) = 1.58.511.0710.486.80.884-31.240.3025.648.788.885.920.685-30.130.6855.928.888.785.640.302⋯1.5 0.316.489.438.884.92-2.7-10.24-3.263.817.257.364.13-2.76-9.73-2.764.137.367.253.81-3.26⋯0.31 0.225.788.728.144.04-2.26-6.06-2.822.936.526.643.29-2.29-5.62-2.293.296.646.522.93-2.82⋯0.22 0.1565.999.138.494.06-3.26-7.99-3.832.916.86.933.3-3.21-7.38-3.213.36.936.82.91-3.83⋯0.156 0.1577.2710.379.564.97-5.27-16.12-5.873.777.717.844.16-5.1-15.09-5.14.167.847.713.77-5.87⋯0.157 0.9989.0411.0810.125.76-2.14-38.65-2.754.528.198.324.9-2.09-36.54-2.094.98.328.194.52-2.75⋯0.998 0.1567.2210.289.444.85-5.36-16.18-5.963.627.567.74.05-5.14-15.09-5.144.057.77.563.62-5.96⋯0.156 0.1525.878.938.233.77-3.42-8.03-4.012.596.476.633.06-3.27-7.31-3.273.066.636.472.59-4.01⋯0.152 0.1945.518.387.693.47-2.49-5.74-3.072.315.986.142.79-2.38-5.12-2.382.796.145.982.31-3.07⋯0.194 0.1525.878.938.233.77-3.42-8.03-4.012.596.476.633.06-3.27-7.31-3.273.066.636.472.59-4.01⋯0.152 0.1567.2210.289.444.85-5.36-16.18-5.963.627.567.74.05-5.14-15.09-5.144.057.77.563.62-5.96⋯0.156 0.9989.0411.0810.125.76-2.14-38.65-2.754.528.198.324.9-2.09-36.54-2.094.98.328.194.52-2.75⋯0.998 0.1577.2710.379.564.97-5.27-16.12-5.873.777.717.844.16-5.1-15.09-5.14.167.847.713.77-5.87⋯0.157 0.1565.999.138.494.06-3.26-7.99-3.832.916.86.933.3-3.21-7.38-3.213.36.936.82.91-3.83⋯0.156 0.225.788.728.144.04-2.26-6.06-2.822.936.526.643.29-2.29-5.62-2.293.296.646.522.93-2.82⋯0.22 0.316.489.438.884.92-2.7-10.24-3.263.817.257.364.13-2.76-9.73-2.764.137.367.253.81-3.26⋯0.31 1.58.511.0710.486.80.884-31.240.3025.648.788.885.920.685-30.130.6855.928.888.785.640.302⋯1.5 kNm/m
Bending moments My
transp ( My ) = 1.570.3210.2330.2150.1680.181.020.1790.1670.210.2090.1660.1780.9890.1780.1660.2090.210.1670.179⋯1.57 7.815.384.314.134.746.348.236.284.613.893.874.536.127.996.124.533.873.894.616.28⋯7.81 9.347.135.85.556.418.129.058.016.195.145.126.097.828.787.826.095.125.146.198.01⋯9.34 7.675.424.263.924.235.426.345.33.983.483.483.975.226.185.223.973.483.483.985.3⋯7.67 3.33-0.3280.540.406-1.17-3.41-0.33-3.53-1.40.09960.161-1.21-3.23-0.218-3.23-1.210.1610.0996-1.4-3.53⋯3.33 -28.36-7.04-1.94-1.65-4.99-13.64-36.32-13.77-5.22-1.86-1.76-4.89-13.03-34.57-13.03-4.89-1.76-1.86-5.22-13.77⋯-28.36 3.15-0.5070.3490.18-1.46-3.76-0.723-3.92-1.77-0.252-0.197-1.6-3.66-0.666-3.66-1.6-0.197-0.252-1.77-3.92⋯3.15 7.325.093.913.493.684.695.54.483.252.792.793.214.355.244.353.212.792.793.254.48⋯7.32 8.96.745.354.965.616.917.576.695.144.184.155.036.467.216.465.034.154.185.146.69⋯8.9 7.325.093.913.493.684.695.54.483.252.792.793.214.355.244.353.212.792.793.254.48⋯7.32 3.15-0.5070.3490.18-1.46-3.76-0.723-3.92-1.77-0.252-0.197-1.6-3.66-0.666-3.66-1.6-0.197-0.252-1.77-3.92⋯3.15 -28.36-7.04-1.94-1.65-4.99-13.64-36.32-13.77-5.22-1.86-1.76-4.89-13.03-34.57-13.03-4.89-1.76-1.86-5.22-13.77⋯-28.36 3.33-0.3280.540.406-1.17-3.41-0.33-3.53-1.40.09960.161-1.21-3.23-0.218-3.23-1.210.1610.0996-1.4-3.53⋯3.33 7.675.424.263.924.235.426.345.33.983.483.483.975.226.185.223.973.483.483.985.3⋯7.67 9.347.135.85.556.418.129.058.016.195.145.126.097.828.787.826.095.125.146.198.01⋯9.34 7.815.384.314.134.746.348.236.284.613.893.874.536.127.996.124.533.873.894.616.28⋯7.81 1.570.320.2330.2150.1680.181.020.1790.1670.210.2090.1660.1780.9890.1780.1660.2090.210.1670.179⋯1.57 kNm/m
Bending moments Mxy
transp ( Mxy ) = 8.094.111.42-0.946-3.23-4.780.02184.843.341.14-1.03-3.2-4.688.2×10-94.683.21.03-1.14-3.34-4.84⋯-8.09 3.772.570.983-0.516-2.06-3.230.05823.352.210.731-0.67-2.12-3.23-1.92×10-83.232.120.67-0.731-2.21-3.35⋯-3.77 0.4860.3670.210.0857-0.12-0.3140.07350.4610.2670.0568-0.0799-0.274-0.4324.14×10-90.4320.2740.0799-0.0568-0.267-0.461⋯-0.486 -2.48-1.8-0.6010.6171.752.090.0763-1.95-1.63-0.5810.4921.541.88-9.4×10-10-1.88-1.54-0.4920.5811.631.95⋯2.48 -4.46-3.24-0.8980.6832.374.520.0758-4.38-2.26-0.6820.6012.154.212.35×10-10-4.21-2.15-0.6010.6822.264.38⋯4.46 0.1550.1610.1490.1250.09640.0780.07390.06990.05130.0211-0.00841-0.0266-0.0234-6.05×10-110.02340.02660.00841-0.0211-0.0513-0.0699⋯-0.155 4.783.571.19-0.451-2.21-4.40.06354.542.380.725-0.626-2.23-4.281.58×10-114.282.230.626-0.725-2.38-4.54⋯-4.78 2.842.130.868-0.438-1.68-2.080.03782.171.80.63-0.542-1.68-2.04-4.74×10-122.041.680.542-0.63-1.8-2.17⋯-2.84 1.19×10-8-6.58×10-9-7.02×10-101.24×10-102.19×10-10-7.5×10-111.9×10-11-1.18×10-133.05×10-121.09×10-12-4.78×10-125.44×10-12-3.55×10-123.23×10-12-2.99×10-121.38×10-12-1.3×10-127.49×10-132.94×10-12-1.45×10-11⋯-3.84×10-9 -2.84-2.13-0.8680.4381.682.08-0.0378-2.17-1.8-0.630.5421.682.04-7.62×10-12-2.04-1.68-0.5420.631.82.17⋯2.84 -4.78-3.57-1.190.4512.214.4-0.0635-4.54-2.38-0.7250.6262.234.282.76×10-11-4.28-2.23-0.6260.7252.384.54⋯4.78 -0.155-0.161-0.149-0.125-0.0964-0.078-0.0739-0.0699-0.0513-0.02110.008410.02660.0234-1.06×10-10-0.0234-0.0266-0.008410.02110.05130.0699⋯0.155 4.463.240.898-0.683-2.37-4.52-0.07584.382.260.682-0.601-2.15-4.214.09×10-104.212.150.601-0.682-2.26-4.38⋯-4.46 2.481.80.601-0.617-1.75-2.09-0.07631.951.630.581-0.492-1.54-1.88-1.61×10-91.881.540.492-0.581-1.63-1.95⋯-2.48 -0.486-0.367-0.21-0.08570.120.314-0.0735-0.461-0.267-0.05680.07990.2740.4326.85×10-9-0.432-0.274-0.07990.05680.2670.461⋯0.486 -3.77-2.57-0.9830.5162.063.23-0.0582-3.35-2.21-0.7310.672.123.23-3.13×10-8-3.23-2.12-0.670.7312.213.35⋯3.77 -8.09-4.11-1.420.9463.234.78-0.0218-4.84-3.34-1.141.033.24.681.25×10-8-4.68-3.2-1.031.143.344.84⋯8.09 kNm/m
Flat Slab FEA Optimized¶
Same Bogner–Fox–Schmit flat-slab model, but with closed-form analytically integrated element matrices instead of Gauss quadrature. An order of magnitude faster on dense meshes — well suited for parametric studies and mesh-refinement sweeps.
'Using analytical formulation of Bogner-Fox-Schmit (BFS) plate element
'<h4>Input data</h4>
'Span lengths
a = hp([3.6; 4.2; 4.2; 3.6])'m
b = hp([3; 3.6; 3])'m
'Number of axes -'n_sa = len(a) + 1', 'n_sb = len(b) + 1
'<img src="./flat-slab.png" width="360">
#hide
x_s = vector_hp(n_sa)','y_s = vector_hp(n_sb)
$Repeat{x_s.(k + 1) = x_s.k + a.k @ k = 1 : n_sa - 1}
$Repeat{y_s.(k + 1) = y_s.k + b.k @ k = 1 : n_sb - 1}
#show
'Axis coordinates -'x_s'm, 'y_s'm
'Slab dimensions -'l_a = x_s.n_sa'm, 'l_b = y_s.n_sb'm
'Thickness -'t = 0.2'm
'Load -'q = 10'kN/m²
'Modulus of elasticity -'E = 35000'MPa
'Poisson`s ratio -'ν = 0.2
'<h4>Finite element mesh</h4>
'We will use BFS rectangular finite element with'n_DOFs = 16
'Element dimensions -'a_1 = 0.6'm, 'b_1 = 0.6'm
'Number of elements and joints along <var>a</var> and <var>b</var> -'
n_a = ceiling(a/a_1)', 'n_ea = sum(n_a)', 'n_ja = n_ea + 1
n_b = ceiling(b/b_1)', 'n_eb = sum(n_b)', 'n_jb = n_eb + 1
#if count(a ≡ a_1*n_a; 0; 1) + count(b ≡ b_1*n_b; 0; 1) > 0
'<p class="err">Error! All span lengts must be multiples of element size.</p>
#break
#end if
'Total number of elements -'n_e = n_ea*n_eb
'Total number of joints -'n_j = n_ja*n_jb
'Supported joints count -'n_s = n_sa*n_sb
#hide
x_j = vector_hp(n_j)','y_j = vector_hp(n_j)
x = 0', 'y = 0', 'j = 0
#for j_a = 1 : n_ja
#for j_b = 1 : n_jb
j = j + 1
x_j.j = x
y_j.j = y
y = y + b_1
#if y > l_b
y = 0
i_b = 1
x = x + a_1
#end if
#loop
#loop
e_j = matrix_hp(n_e; 4)
#for e_a = 1 : n_ea
#for e_b = 1 : n_eb
e = e_b + n_eb*(e_a - 1)
j = e + e_a - 1
e_j.(e; 1) = j
e_j.(e; 2) = j + n_eb + 1
e_j.(e; 3) = j + n_eb + 2
e_j.(e; 4) = j + 1
#loop
#loop
s_j = vector(n_s)', 'j_s = 0', 'j = 1', 's_a = 0
#for i_a = 1 : n_sa
s_b = 0
#for i_b = 1 : n_sb
j = j + s_b
j_s = j_s + 1
s_j.j_s = j
#if i_b < n_sb
s_b = n_b.i_b
#end if
#loop
#if i_a < n_sa
s_a = n_a.i_a
j = j + (s_a - 1)*n_jb + 1
#end if
#loop
#show
'Joint coordinates
x_j'm
y_j'm
'Numbers of joints at elements'' corners
transp(e_j)
'Supported joints
s_j
'Joints for element e -'j_e(e) = row(e_j; e)
#val
#hide
w = 400
k = w/l_a
d = 10
h = l_b/l_a*w
r = 0.04*k
#show
'<svg viewbox="'-d' '-d' 'w + 2*d' 'h + 2*d'" xmlns="http://www.w3.org/2000/svg" version="1.1" style=" font-family: Segoe UI; font-size:5px; width:'w'pt; height:'h'pt">
'<style>.joint{fill:orangeRed;} .support{stroke:red; stroke-width:1; fill:lightpink;} .element{stroke:seaGreen; stroke-width:1; fill:lime; fill-opacity:0.1; stroke-opacity:0.5}</style>
'<rect x="'0'" y="'0'" width="'w'" height="'h'" style="fill:yellow; fill-opacity:0.2" />
#for e = 1 : n_e
#hide
j_e = j_e(e)
j1 = j_e.1
x1 = x_j.j1*k
y1 = y_j.j1*k
j2 = j_e.3
x2 = x_j.j2*k
y2 = y_j.j2*k
x = (x1 + x2)/2
y = (y1 + y2)/2
#show
'<text x="'x'" y="'h - y'" text-anchor="middle">'e'</text>
'<rect x="'x1'" y="'h - y2'" width="'x2 - x1'" height="'y2 - y1'" class="element" />
#loop
#for i = 1 : n_s
j = s_j.i
#hide
x = x_j.j*k
y = h - y_j.j*k
#show
'<circle cx="'x'" cy="'y'" r="'2*r'" class="support"/>
#loop
#for j = 1 : n_j
#hide
x = x_j.j*k
y = h - y_j.j*k
#show
'<circle cx="'x'" cy="'y'" r="'r'" class="joint" />
'<text x="'x + 2*r'" y="'y - r'" text-anchor="start">'j'</text>
#loop
'</svg>
#equ
'<h4>Finite element formulation</h4>
'<p><b>Shape functions</b></p>
#def FI$(x$; l$)
'<table><tr><td>Base functions
Φ_1l$(x$) = 1 - x$^2*(3 - 2*x$)
Φ_2l$(x$) = x$*l$_1*(1 - x$*(2 - x$))
Φ_3l$(x$) = x$^2*(3 - 2*x$)
Φ_4l$(x$) = x$^2*l$_1*(-1 + x$)
'</td><td>First derivatives
Φ′_1l$(x$) = -6*(x$/l$_1)*(1 - x$)
Φ′_2l$(x$) = 1 - x$*(4 - 3*x$)
Φ′_3l$(x$) = 6*(x$/l$_1)*(1 - x$)
Φ′_4l$(x$) = -x$*(2 - 3*x$)
'</td><td>Second derivatives
Φ″_1l$(x$) = -(6/l$_1^2)*(1 - 2*x$)
Φ″_2l$(x$) = -(2/l$_1)*(2 - 3*x$)
Φ″_3l$(x$) = 6/l$_1^2*(1 - 2*x$)
Φ″_4l$(x$) = -(2/l$_1)*(1 - 3*x$)
'</td></tr></table>
#end def
'Along dimension <var>a</var>
FI$(ξ; a)
'Along dimension <var>b</var>
FI$(η; b)
'<table><tr><td>For vertical displacements <var>w</var>
N_1,w(ξ; η) = Φ_1a(ξ)*Φ_1b(η)
N_2,w(ξ; η) = Φ_3a(ξ)*Φ_1b(η)
N_3,w(ξ; η) = Φ_3a(ξ)*Φ_3b(η)
N_4,w(ξ; η) = Φ_1a(ξ)*Φ_3b(η)
'</td><td>For rotations <var>θ</var>ₓ
N_1,θₓ(ξ; η) = Φ_2a(ξ)*Φ_1b(η)
N_2,θₓ(ξ; η) = Φ_4a(ξ)*Φ_1b(η)
N_3,θₓ(ξ; η) = Φ_4a(ξ)*Φ_3b(η)
N_4,θₓ(ξ; η) = Φ_2a(ξ)*Φ_3b(η)
'</td><td>For rotations <var>θ</var>ᵧ
N_1,θᵧ(ξ; η) = Φ_1a(ξ)*Φ_2b(η)
N_2,θᵧ(ξ; η) = Φ_3a(ξ)*Φ_2b(η)
N_3,θᵧ(ξ; η) = Φ_3a(ξ)*Φ_4b(η)
N_4,θᵧ(ξ; η) = Φ_1a(ξ)*Φ_4b(η)
'</td></tr><tr><td>
'For twist ψ
N_1,ψ(ξ; η) = Φ_2a(ξ)*Φ_2b(η)
N_2,ψ(ξ; η) = Φ_4a(ξ)*Φ_2b(η)
N_3,ψ(ξ; η) = Φ_4a(ξ)*Φ_4b(η)
N_4,ψ(ξ; η) = Φ_2a(ξ)*Φ_4b(η)
'</td><td colspan="2" style="width:160pt; text-align:center;">
'<img src="./plate-element.png" alt="plane-elemen.png" style="width:160pt;" />
'</td></tr></table>
'<!--'PlotSVG = 1''PlotWidth = 160''PlotHeight = PlotWidth''PlotPalette = 7'-->
'<table><tr><td>
'<p><var>N</var><sub>1,w</sub> shape function plot</p>
$Map{N_1,w(ξ; η) @ ξ = 0 : 1 & η = 0 : 1}
'</td><td>
'<p><var>N</var><sub>1,θₓ</sub> shape function plot</p>
$Map{N_1,θₓ(ξ; η) @ ξ = 0 : 1 & η = 0 : 1}
'</td></tr><tr><td>
'<!--'PlotHeight = 40'-->
$Plot{N_1,w(ξ; 0) @ ξ = 0 : 1}
'</td><td>
$Plot{N_1,θₓ(ξ; 0) @ ξ = 0 : 1}
'</td></tr></table>
'<p><b>Constitutive matrix</b> (stress - strain relationship)</p>
D_1,1 = E*t^3/(12*(1 - ν^2))'kNm
D = D_1,1*hp([1; ν; 0|ν; 1; 0|0; 0; (1 - ν)/2])'kNm
#hide
'<p><b>Strain-displacement matrix</b></p>
B_1(j; ξ; η) = take(j; _
Φ″_1a(ξ)*Φ_1b(η); Φ″_2a(ξ)*Φ_1b(η); Φ″_1a(ξ)*Φ_2b(η); Φ″_2a(ξ)*Φ_2b(η); _
Φ″_3a(ξ)*Φ_1b(η); Φ″_4a(ξ)*Φ_1b(η); Φ″_3a(ξ)*Φ_2b(η); Φ″_4a(ξ)*Φ_2b(η); _
Φ″_3a(ξ)*Φ_3b(η); Φ″_4a(ξ)*Φ_3b(η); Φ″_3a(ξ)*Φ_4b(η); Φ″_4a(ξ)*Φ_4b(η); _
Φ″_1a(ξ)*Φ_3b(η); Φ″_2a(ξ)*Φ_3b(η); Φ″_1a(ξ)*Φ_4b(η); Φ″_2a(ξ)*Φ_4b(η))
B_2(j; ξ; η) = take(j; _
Φ_1a(ξ)*Φ″_1b(η); Φ_2a(ξ)*Φ″_1b(η); Φ_1a(ξ)*Φ″_2b(η); Φ_2a(ξ)*Φ″_2b(η); _
Φ_3a(ξ)*Φ″_1b(η); Φ_4a(ξ)*Φ″_1b(η); Φ_3a(ξ)*Φ″_2b(η); Φ_4a(ξ)*Φ″_2b(η); _
Φ_3a(ξ)*Φ″_3b(η); Φ_4a(ξ)*Φ″_3b(η); Φ_3a(ξ)*Φ″_4b(η); Φ_4a(ξ)*Φ″_4b(η); _
Φ_1a(ξ)*Φ″_3b(η); Φ_2a(ξ)*Φ″_3b(η); Φ_1a(ξ)*Φ″_4b(η); Φ_2a(ξ)*Φ″_4b(η))
B_3(j; ξ; η) = 2*take(j; _
Φ′_1a(ξ)*Φ′_1b(η); Φ′_2a(ξ)*Φ′_1b(η); Φ′_1a(ξ)*Φ′_2b(η); Φ′_2a(ξ)*Φ′_2b(η); _
Φ′_3a(ξ)*Φ′_1b(η); Φ′_4a(ξ)*Φ′_1b(η); Φ′_3a(ξ)*Φ′_2b(η); Φ′_4a(ξ)*Φ′_2b(η); _
Φ′_3a(ξ)*Φ′_3b(η); Φ′_4a(ξ)*Φ′_3b(η); Φ′_3a(ξ)*Φ′_4b(η); Φ′_4a(ξ)*Φ′_4b(η); _
Φ′_1a(ξ)*Φ′_3b(η); Φ′_2a(ξ)*Φ′_3b(η); Φ′_1a(ξ)*Φ′_4b(η); Φ′_2a(ξ)*Φ′_4b(η))
n = n_DOFs
K_e = utriang_hp(n)
#show
'<div class="fold">
'<h5>Element stiffness matrix calculation</h5>
α = b_1/a_1
#hide
α² = α^2
A_1 = a_1*b_1
#show
K_e.(1; 1) = 156/35*(α/a_1^2 + 1/(α*b_1^2)) + 72/(25*A_1)
K_e.(5; 5) = K_e.(1; 1)', ' _
K_e.(9; 9) = K_e.(1; 1)', ' _
K_e.(13; 13) = K_e.(1; 1)
K_e.(1; 2) = 2/35*(39*α/a_1 + 11/(α²*b_1)) + (30*ν + 6)/(25*b_1)
K_e.(5; 6) = -K_e.(1; 2)', ' _
K_e.(9; 10) = -K_e.(1; 2)', ' _
K_e.(13; 14) = K_e.(1; 2)
K_e.(1; 3) = 2/35*(11*α²/a_1 + 39/(α*b_1)) + (30*ν + 6)/(25*a_1)
K_e.(5; 7) = K_e.(1; 3)', ' _
K_e.(9; 11) = -K_e.(1; 3)', ' _
K_e.(13; 15) = -K_e.(1; 3)
K_e.(1; 4) = 11/35*(α² + 1/α²) + (10*ν + 1)/50
K_e.(5; 8) = -K_e.(1; 4)', ' _
K_e.(9; 12) = K_e.(1; 4)', ' _
K_e.(13; 16) = -K_e.(1; 4)
K_e.(1; 5) = 2/35*(27/(α*b_1^2) - 78*α/a_1^2) - 72/(25*A_1)
K_e.(9; 13) = K_e.(1; 5)
K_e.(1; 6) = 13/35*(6*α/a_1 - 1/(α²*b_1)) + 6/(25*b_1)
K_e.(2; 5) = -K_e.(1; 6)', ' _
K_e.(9; 14) = -K_e.(1; 6)', ' _
K_e.(10; 13) = K_e.(1; 6)
K_e.(1; 7) = 1/35*(27/(α*b_1) - 22*α²/a_1) - (30*ν + 6)/(25*a_1)
K_e.(3; 5) = K_e.(1; 7)', ' _
K_e.(9; 15) = -K_e.(1; 7)', ' _
K_e.(11; 13) = -K_e.(1; 7)
K_e.(2; 4) = 2/35*(11*α*b_1/3 + a_1/α²) + 2*a_1*(5*ν + 1)/75
K_e.(6; 8) = K_e.(2; 4)', ' _
K_e.(10; 12) = -K_e.(2; 4)', ' _
K_e.(14; 16) = -K_e.(2; 4)
K_e.(2; 6) = 1/35*(26*α - 3/α^3) - 2/(25*α)
K_e.(10; 14) = K_e.(2; 6)
K_e.(2; 8) = 1/35*(11*α*b_1/3 - 3*a_1/(2*α²)) - a_1*(5*ν + 1)/150
K_e.(4; 6) = K_e.(2; 8)', ' _
K_e.(10; 16) = -K_e.(2; 8)', ' _
K_e.(12; 14) = -K_e.(2; 8)
K_e.(2; 10) = 3/35*(1/α^3 + 3*α) + 2/(25*α)
K_e.(6; 14) = K_e.(2; 10)
K_e.(2; 12) = -(1/70)*(3*a_1/α² + 13*α*b_1/3) - a_1/150
K_e.(4; 10) = -K_e.(2; 12)', ' _
K_e.(6; 16) = K_e.(2; 12)', ' _
K_e.(8; 14) = -K_e.(2; 12)
K_e.(2; 14) = 2/35*(9*α - 2/α^3) - 8/(25*α)
K_e.(6; 10) = K_e.(2; 14)
K_e.(2; 15) = 1/35*(11/α² - 13*α²/2) + (5*ν + 1)/50
K_e.(3; 14) = -K_e.(2; 15)', ' _
K_e.(6; 11) = -K_e.(2; 15)', ' _
K_e.(7; 10) = K_e.(2; 15)
K_e.(1; 14) = 1/35*(27*α/a_1 - 22/(α²*b_1)) - (30*ν + 6)/(25*b_1)
K_e.(2; 13) = K_e.(1; 14)', ' _
K_e.(5; 10) = -K_e.(1; 14)', ' _
K_e.(6; 9) = -K_e.(1; 14)
K_e.(1; 15) = 13/35*(6/(α*b_1) - α²/a_1) + 6/(25*a_1)
K_e.(3; 13) = -K_e.(1; 15)', ' _
K_e.(5; 11) = K_e.(1; 15)', ' _
K_e.(7; 9) = -K_e.(1; 15)
K_e.(1; 16) = 1/35*(11/α² - 13*α²/2) + (5*ν + 1)/50
K_e.(4; 13) = -K_e.(1; 16)', ' _
K_e.(8; 9) = K_e.(1; 16)', ' _
K_e.(5; 12) = -K_e.(1; 16)
K_e.(2; 2) = 4/35*(13*α + 1/α^3) + 8/(25*α)
K_e.(6; 6) = K_e.(2; 2)', ' _
K_e.(10; 10) = K_e.(2; 2)', ' _
K_e.(14; 14) = K_e.(2; 2)
K_e.(2; 3) = 11/35*(α² + 1/α²) + (60*ν + 1)/50
K_e.(6; 7) = -K_e.(2; 3)', ' _
K_e.(10; 11) = K_e.(2; 3)', ' _
K_e.(14; 15) = -K_e.(2; 3)
K_e.(3; 16) = -(1/35)*(3*α²*b_1/2 - 11*a_1/(3*α)) - b_1*(5*ν + 1)/150
K_e.(4; 15) = K_e.(3; 16)', ' _
K_e.(7; 12) = -K_e.(3; 16)', ' _
K_e.(8; 11) = -K_e.(3; 16)
K_e.(4; 4) = 4/105*(α*b_1^2 + a_1^2/α) + 8*A_1/225
K_e.(8; 8) = K_e.(4; 4)', ' _
K_e.(12; 12) = K_e.(4; 4)', ' _
K_e.(16; 16) = K_e.(4; 4)
K_e.(4; 8) = 1/35*(2*α*b_1^2/3 - a_1^2/α) - 2*A_1/225
K_e.(12; 16) = K_e.(4; 8)
K_e.(4; 12) = -(1/70)*(a_1^2/α + α*b_1^2) + A_1/450
K_e.(8; 16) = K_e.(4; 12)
K_e.(4; 16) = 1/35*(2*a_1^2/(3*α) - α*b_1^2) - 2*A_1/225
K_e.(8; 12) = K_e.(4; 16)
K_e.(1; 8) = (1/35)*(11*α² - 13/(2*α²)) + (5*ν + 1)/50
K_e.(2; 7) = -K_e.(1; 8)', ' _
K_e.(3; 6) = K_e.(1; 8)', ' _
K_e.(4; 5) = -K_e.(1; 8)', ' _
K_e.(9; 16) = K_e.(1; 8)
K_e.(10; 15) = -K_e.(1; 8)', ' _
K_e.(11; 14) = K_e.(1; 8)', ' _
K_e.(12; 13) = -K_e.(1; 8)
K_e.(1; 9) = -(54/35)*(α/a_1^2 + 1/(α*b_1^2)) + 72/(25*A_1)
K_e.(5; 13) = K_e.(1; 9)
K_e.(1; 10) = 1/35*(27*α/a_1 + 13/(α²*b_1)) - 6/(25*b_1)
K_e.(2; 9) = -K_e.(1; 10)', ' _
K_e.(5; 14) = -K_e.(1; 10)', ' _
K_e.(6; 13) = K_e.(1; 10)
K_e.(1; 11) = 1/35*(13*α²/a_1 + 27/(α*b_1)) - 6/(25*a_1)
K_e.(3; 9) = -K_e.(1; 11)', ' _
K_e.(5; 15) = K_e.(1; 11)', ' _
K_e.(7; 13) = -K_e.(1; 11)
K_e.(1; 12) = -(13/70)*(α² + 1/α²) + 1/50
K_e.(2; 11) = -K_e.(1; 12)', ' _
K_e.(3; 10) = -K_e.(1; 12)', ' _
K_e.(4; 9) = K_e.(1; 12)', ' _
K_e.(5; 16) = -K_e.(1; 12)
K_e.(6; 15) = K_e.(1; 12)', ' _
K_e.(7; 14) = K_e.(1; 12)', ' _
K_e.(8; 13) = -K_e.(1; 12)
K_e.(1; 13) = 2/35*(27*α/a_1^2 - 78/(α*b_1^2)) - 72/(25*A_1)
K_e.(5; 9) = K_e.(1; 13)
K_e.(2; 16) = 1/35*(2*a_1/α² - 13*α*b_1/3) + 2*a_1/75
K_e.(4; 14) = -K_e.(2; 16)', ' _
K_e.(6; 12) = K_e.(2; 16)', ' _
K_e.(8; 10) = -K_e.(2; 16)
K_e.(3; 3) = 4/35*(α^3 + 13/α) + 8*α/25
K_e.(7; 7) = K_e.(3; 3)', ' _
K_e.(11; 11) = K_e.(3; 3)', ' _
K_e.(15; 15) = K_e.(3; 3)
K_e.(3; 4) = 2/35*(α²*b_1 + 11*a_1/(3*α)) + 2*b_1*(5*ν + 1)/75
K_e.(7; 8) = -K_e.(3; 4)', ' _
K_e.(11; 12) = -K_e.(3; 4)', ' _
K_e.(15; 16) = K_e.(3; 4)
K_e.(3; 7) = 2/35*(-2*α^3 + 9/α) - 8*α/25
K_e.(11; 15) = K_e.(3; 7)
K_e.(3; 8) = 1/35*(2*α²*b_1 - 13*a_1/(3*α)) + 2*b_1/75
K_e.(4; 7) = -K_e.(3; 8)', ' _
K_e.(11; 16) = -K_e.(3; 8)', ' _
K_e.(12; 15) = K_e.(3; 8)
K_e.(3; 11) = 3/35*(α^3 + 3/α) + 2*α/25
K_e.(7; 15) = K_e.(3; 11)
K_e.(3; 12) = -(1/70)*(3*α²*b_1 + 13*a_1/(3*α)) - b_1/150
K_e.(4; 11) = -K_e.(3; 12)', ' _
K_e.(7; 16) = -K_e.(3; 12)', ' _
K_e.(8; 15) = K_e.(3; 12)
K_e.(3; 15) = 1/35*(26/α - 3*α^3) - 2*α/25
K_e.(7; 11) = K_e.(3; 15)
'</div>
'Element stiffness matrix coefficients (above the main diagonal only)
K_e = D_1,1*K_e
'<p><strong>Element load vector</strong></p>
F_e = q*A_1/24*hp([6; a_1; b_1; A_1/6; 6; -a_1; b_1; -A_1/6; 6; -a_1; -b_1; A_1/6; 6; a_1; -b_1; -A_1/6])'kN
'<h4>Solution</h4>
'Global stiffness matrix
#hide
k_1 = n/4
k_1,1 = submatrix(K_e; 1; 4; 1; 4)
k_1,2 = submatrix(K_e; 1; 4; 5; 8)
k_1,3 = submatrix(K_e; 1; 4; 9; 12)
k_1,4 = submatrix(K_e; 1; 4; 13; 16)
k_2,2 = submatrix(K_e; 5; 8; 5; 8)
k_2,3 = submatrix(K_e; 5; 8; 9; 12)
k_2,4 = submatrix(K_e; 5; 8; 13; 16)
k_3,3 = submatrix(K_e; 9; 12; 9; 12)
k_3,4 = submatrix(K_e; 9; 12; 13; 16)
k_4,4 = submatrix(K_e; 13; 16; 13; 16)
n = k_1*n_j
K = symmetric_hp(n)
'Addition of element stiffness matrix coefficients
#for e = 1 : n_e
#for i = 1 : 4
#for j = i : 4
j_1 = e_j.(e; i)
j_2 = e_j.(e; j)
i_1 = k_1*(j_1 - 1) + 1
i_2 = k_1*(j_2 - 1) + 1
#if i ≡ 1
#if j ≡ 1
k_ij = k_1,1
#else if j ≡ 2
k_ij = k_1,2
#else if j ≡ 3
k_ij = k_1,3
#else
k_ij = k_1,4
#end if
#else if i ≡ 2
#if j ≡ 2
k_ij = k_2,2
#else if j ≡ 3
k_ij = k_2,3
#else
k_ij = k_2,4
#end if
#else if i ≡ 3
#if j ≡ 3
k_ij = k_3,3
#else
k_ij = k_3,4
#end if
#else
k_ij = k_4,4
#end if
#if j_1 > j_2
add(transp(k_ij); K; i_2; i_1)
#else
add(k_ij; K; i_1; i_2)
#end if
#loop
#loop
#loop
k_s = 10^20
'Addition of supports
#for i = 1 : n_s
j = k_1*(s_j.i - 1) + 1
K.(j; j) = K.(j; j) + k_s
#loop
#show
K
'Global load vector
#hide
F = vector_hp(n)
#for e = 1 : n_e
#for i = 1 : 4
j = e_j.(e; i)
#for k = 1 : 4
l = k_1*(j - 1) + k
F.l = F.l + F_e.(k_1*(i - 1) + k)
#loop
#loop
#loop
#show
F'kN
'Solution of the system of equations<!--'Tol = 10^-2'-->
Z = slsolve(K; F)'mm
'<h4>Results</h4>
'Joint displacements
#hide
W_z = matrix_hp(n_ja; n_jb)
w(j) = Z.(4*j - 3)
$Repeat{$Repeat{W_z.(i; j) = round(w((i - 1)*n_jb + j)*1000)/1000 @ j = 1 : n_jb} @ i = 1 : n_ja}
w(x; y) = spline(1 + x/a_1; 1 + y/b_1; W_z)
PlotWidth = 450', 'PlotHeight = PlotWidth*l_b/l_a
PlotPalette = 2', 'PlotShadows = 1
PlotLightDir = 7', 'PlotStep = 5
#show
transp(W_z)'mm
$Map{-w(x; y) @ x = 0 : l_a & y = 0 : l_b}
'Bending moments
Z_j(j) = slice(Z; k_1*(j - 1) + 1; k_1*j)
Z_e(e) = hp([Z_j(e_j.(e; 1)); Z_j(e_j.(e; 2)); Z_j(e_j.(e; 3)); Z_j(e_j.(e; 4))])
#hide
B_0,0 = matrix_hp(3; n_DOFs)
B_1,0 = matrix_hp(3; n_DOFs)
B_1,1 = matrix_hp(3; n_DOFs)
B_0,1 = matrix_hp(3; n_DOFs)
#for j = 1 : n_DOFs
B_0,0.(1; j) = B_1(j; 0; 0)
B_0,0.(2; j) = B_2(j; 0; 0)
B_0,0.(3; j) = B_3(j; 0; 0)
B_1,0.(1; j) = B_1(j; 1; 0)
B_1,0.(2; j) = B_2(j; 1; 0)
B_1,0.(3; j) = B_3(j; 1; 0)
B_1,1.(1; j) = B_1(j; 1; 1)
B_1,1.(2; j) = B_2(j; 1; 1)
B_1,1.(3; j) = B_3(j; 1; 1)
B_0,1.(1; j) = B_1(j; 0; 1)
B_0,1.(2; j) = B_2(j; 0; 1)
B_0,1.(3; j) = B_3(j; 0; 1)
#loop
M_j = matrix_hp(3; n_j)
c_j = vector_hp(n_j)
j = vector_hp(4)
#for e = 1 : n_e
#for i = 1 : 4
j.i = e_j.(e; i)
c_j.j.i = c_j.j.i + 1
#loop
Z_е = Z_e(e)
add(-D*B_0,0*Z_е; M_j; 1; j.1)
add(-D*B_1,0*Z_е; M_j; 1; j.2)
add(-D*B_1,1*Z_е; M_j; 1; j.3)
add(-D*B_0,1*Z_е; M_j; 1; j.4)
#loop
#for j = 1 : n_j
M_j.(1; j) = M_j.(1; j)/c_j.j
M_j.(2; j) = M_j.(2; j)/c_j.j
M_j.(3; j) = M_j.(3; j)/c_j.j
#loop
Mx = matrix_hp(n_ja; n_jb)
My = matrix_hp(n_ja; n_jb)
Mxy = matrix_hp(n_ja; n_jb)
#for i = 1 : n_ja
#for k = 1 : n_jb
j = (i - 1)*n_jb + k
Mx.(i; k) = M_j.(1; j)
My.(i; k) = M_j.(2; j)
Mxy.(i; k) = M_j.(3; j)
#loop
#loop
M_x(x; y) = spline(1 + x/a_1; 1 + y/b_1; Mx)
M_y(x; y) = spline(1 + x/a_1; 1 + y/b_1; My)
M_xy(x; y) = spline(1 + x/a_1; 1 + y/b_1; Mxy)
PlotShadows = 0
#show
'Average bending moments at joints, kNm/m
M_j
'Bending moments for the plate
'Bending moments - <var>M</var><sub>x</sub>
transp(Mx)'kNm/m
$Map{M_x(x; y) @ x = 0 : l_a & y = 0 : l_b}
'Bending moments <var>M</var><sub>y</sub>
transp(My)'kNm/m
$Map{M_y(x; y) @ x = 0 : l_a & y = 0 : l_b}
'Bending moments <var>M</var><sub>xy</sub>
transp(Mxy)'kNm/m
$Map{M_xy(x; y) @ x = 0 : l_a & y = 0 : l_b}
Using analytical formulation of Bogner-Fox-Schmit (BFS) plate element
Span lengths
⃗a = hp ( [3.6; 4.2; 4.2; 3.6] ) = [3.6 4.2 4.2 3.6] m
⃗b = hp ( [3; 3.6; 3] ) = [3 3.6 3] m
Number of axes - nsa = len ( ⃗a ) + 1 = 5 , nsb = len ( ⃗b ) + 1 = 4
Axis coordinates - ⃗xs = [0 3.6 7.8 12 15.6] m, ⃗ys = [0 3 6.6 9.6] m
Slab dimensions - la = ⃗xs.5 = 15.6 m, lb = ⃗ys.4 = 9.6 m
Thickness - t = 0.2 m
Load - q = 10 kN/m²
Modulus of elasticity - E = 35000 MPa
Poisson`s ratio - ν = 0.2
We will use BFS rectangular finite element with nDOFs = 16
Element dimensions - a1 = 0.6 m, b1 = 0.6 m
Number of elements and joints along a and b -
⃗na = ceiling(⃗aa1) = ceiling(⃗a0.6) = [6 7 7 6] , nea = sum ( ⃗na ) = 26 , nja = nea + 1 = 26 + 1 = 27
⃗nb = ceiling(⃗bb1) = ceiling(⃗b0.6) = [5 6 5] , neb = sum ( ⃗nb ) = 16 , njb = neb + 1 = 16 + 1 = 17
Total number of elements - ne = nea · neb = 26 · 16 = 416
Total number of joints - nj = nja · njb = 27 · 17 = 459
Supported joints count - ns = nsa · nsb = 5 · 4 = 20
Joint coordinates
⃗xj = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.6 0.6 0.6 ... 15.6] m
⃗yj = [0 0.6 1.2 1.8 2.4 3 3.6 4.2 4.8 5.4 6 6.6 7.2 7.8 8.4 9 9.6 0 0.6 1.2 ... 9.6] m
Numbers of joints at elements' corners
transp ( ej ) = 1234567891011121314151618192021⋯441 1819202122232425262728293031323335363738⋯458 1920212223242526272829303132333436373839⋯459 23456789101112131415161719202122⋯442
Supported joints
⃗sj = [1 6 12 17 103 108 114 119 222 227 233 238 341 346 352 357 443 448 454 459]
Joints for element e - je ( e ) = row ( ej; e )
Shape functions
Along dimension a
| Base functions
Φ1a ( ξ ) = 1 − ξ2 · ( 3 − 2 · ξ ) Φ2a ( ξ ) = ξ · a1 · ( 1 − ξ · ( 2 − ξ ) ) Φ3a ( ξ ) = ξ2 · ( 3 − 2 · ξ ) Φ4a ( ξ ) = ξ2 · a1 · ( -1 + ξ ) | First derivatives
Φ′1a ( ξ ) = -6 · ξa1 · ( 1 − ξ ) Φ′2a ( ξ ) = 1 − ξ · ( 4 − 3 · ξ ) Φ′3a ( ξ ) = 6 · ξa1 · ( 1 − ξ ) Φ′4a ( ξ ) = -ξ · ( 2 − 3 · ξ ) | Second derivatives
Φ″1a ( ξ ) = - 6a12 · ( 1 − 2 · ξ ) Φ″2a ( ξ ) = - 2a1 · ( 2 − 3 · ξ ) Φ″3a ( ξ ) = 6a12 · ( 1 − 2 · ξ ) Φ″4a ( ξ ) = - 2a1 · ( 1 − 3 · ξ ) |
Along dimension b
| Base functions
Φ1b ( η ) = 1 − η2 · ( 3 − 2 · η ) Φ2b ( η ) = η · b1 · ( 1 − η · ( 2 − η ) ) Φ3b ( η ) = η2 · ( 3 − 2 · η ) Φ4b ( η ) = η2 · b1 · ( -1 + η ) | First derivatives
Φ′1b ( η ) = -6 · ηb1 · ( 1 − η ) Φ′2b ( η ) = 1 − η · ( 4 − 3 · η ) Φ′3b ( η ) = 6 · ηb1 · ( 1 − η ) Φ′4b ( η ) = -η · ( 2 − 3 · η ) | Second derivatives
Φ″1b ( η ) = - 6b12 · ( 1 − 2 · η ) Φ″2b ( η ) = - 2b1 · ( 2 − 3 · η ) Φ″3b ( η ) = 6b12 · ( 1 − 2 · η ) Φ″4b ( η ) = - 2b1 · ( 1 − 3 · η ) |
| For vertical displacements w
N1,w ( ξ; η ) = Φ1a ( ξ ) · Φ1b ( η ) N2,w ( ξ; η ) = Φ3a ( ξ ) · Φ1b ( η ) N3,w ( ξ; η ) = Φ3a ( ξ ) · Φ3b ( η ) N4,w ( ξ; η ) = Φ1a ( ξ ) · Φ3b ( η ) | For rotations θₓ
N1,θₓ ( ξ; η ) = Φ2a ( ξ ) · Φ1b ( η ) N2,θₓ ( ξ; η ) = Φ4a ( ξ ) · Φ1b ( η ) N3,θₓ ( ξ; η ) = Φ4a ( ξ ) · Φ3b ( η ) N4,θₓ ( ξ; η ) = Φ2a ( ξ ) · Φ3b ( η ) | For rotations θᵧ
N1,θᵧ ( ξ; η ) = Φ1a ( ξ ) · Φ2b ( η ) N2,θᵧ ( ξ; η ) = Φ3a ( ξ ) · Φ2b ( η ) N3,θᵧ ( ξ; η ) = Φ3a ( ξ ) · Φ4b ( η ) N4,θᵧ ( ξ; η ) = Φ1a ( ξ ) · Φ4b ( η ) |
|
For twist ψ N1,ψ ( ξ; η ) = Φ2a ( ξ ) · Φ2b ( η ) N2,ψ ( ξ; η ) = Φ4a ( ξ ) · Φ2b ( η ) N3,ψ ( ξ; η ) = Φ4a ( ξ ) · Φ4b ( η ) N4,ψ ( ξ; η ) = Φ2a ( ξ ) · Φ4b ( η ) |
| |
|
N1,w shape function plot |
N1,θₓ shape function plot |
Constitutive matrix (stress - strain relationship)
D1,1 = E · t312 · ( 1 − ν2 ) = 35000 · 0.2312 · ( 1 − 0.22 ) = 24.31 kNm
D = D1,1 · hp([1; ν; 0 | ν; 1; 0 | 0; 0; 1 − ν2]) = 24.31 · hp([1; 0.2; 0 | 0.2; 1; 0 | 0; 0; 1 − 0.22]) = 24.314.860 4.8624.310 009.72 kNm
α = b1a1 = 0.60.6 = 1
Ke.1,1 = 15635 · (αa12 + 1α · b12) + 7225 · A1 = 15635 · (10.62 + 11 · 0.62) + 7225 · 0.36 = 32.76
Ke.5,5 = Ke.1,1 = 32.76 , Ke.9,9 = Ke.1,1 = 32.76 , Ke.13,13 = Ke.1,1 = 32.76
Ke.1,2 = 235 · (39 · αa1 + 11α² · b1) + 30 · ν + 625 · b1 = 235 · (39 · 10.6 + 111 · 0.6) + 30 · 0.2 + 625 · 0.6 = 5.56
Ke.5,6 = -Ke.1,2 = -5.56 , Ke.9,10 = -Ke.1,2 = -5.56 , Ke.13,14 = Ke.1,2 = 5.56
Ke.1,3 = 235 · (11 · α²a1 + 39α · b1) + 30 · ν + 625 · a1 = 235 · (11 · 10.6 + 391 · 0.6) + 30 · 0.2 + 625 · 0.6 = 5.56
Ke.5,7 = Ke.1,3 = 5.56 , Ke.9,11 = -Ke.1,3 = -5.56 , Ke.13,15 = -Ke.1,3 = -5.56
Ke.1,4 = 1135 · (α² + 1α²) + 10 · ν + 150 = 1135 · (1 + 11) + 10 · 0.2 + 150 = 0.689
Ke.5,8 = -Ke.1,4 = -0.689 , Ke.9,12 = Ke.1,4 = 0.689 , Ke.13,16 = -Ke.1,4 = -0.689
Ke.1,5 = 235 · (27α · b12 − 78 · αa12) − 7225 · A1 = 235 · (271 · 0.62 − 78 · 10.62) − 7225 · 0.36 = -16.1
Ke.9,13 = Ke.1,5 = -16.1
Ke.1,6 = 1335 · (6 · αa1 − 1α² · b1) + 625 · b1 = 1335 · (6 · 10.6 − 11 · 0.6) + 625 · 0.6 = 3.5
Ke.2,5 = -Ke.1,6 = -3.5 , Ke.9,14 = -Ke.1,6 = -3.5 , Ke.10,13 = Ke.1,6 = 3.5
Ke.1,7 = 135 · (27α · b1 − 22 · α²a1) − 30 · ν + 625 · a1 = 135 · (271 · 0.6 − 22 · 10.6) − 30 · 0.2 + 625 · 0.6 = -0.562
Ke.3,5 = Ke.1,7 = -0.562 , Ke.9,15 = -Ke.1,7 = 0.562 , Ke.11,13 = -Ke.1,7 = 0.562
Ke.2,4 = 235 · (11 · α · b13 + a1α²) + 2 · a1 · ( 5 · ν + 1 ) 75 = 235 · (11 · 1 · 0.63 + 0.61) + 2 · 0.6 · ( 5 · 0.2 + 1 ) 75 = 0.192
Ke.6,8 = Ke.2,4 = 0.192 , Ke.10,12 = -Ke.2,4 = -0.192 , Ke.14,16 = -Ke.2,4 = -0.192
Ke.2,6 = 135 · (26 · α − 3α3) − 225 · α = 135 · (26 · 1 − 313) − 225 · 1 = 0.577
Ke.10,14 = Ke.2,6 = 0.577
Ke.2,8 = 135 · (11 · α · b13 − 3 · a12 · α²) − a1 · ( 5 · ν + 1 ) 150 = 135 · (11 · 1 · 0.63 − 3 · 0.62 · 1) − 0.6 · ( 5 · 0.2 + 1 ) 150 = 0.0291
Ke.4,6 = Ke.2,8 = 0.0291 , Ke.10,16 = -Ke.2,8 = -0.0291 , Ke.12,14 = -Ke.2,8 = -0.0291
Ke.2,10 = 335 · (1α3 + 3 · α) + 225 · α = 335 · (113 + 3 · 1) + 225 · 1 = 0.423
Ke.6,14 = Ke.2,10 = 0.423
Ke.2,12 = - 170 · (3 · a1α² + 13 · α · b13) − a1150 = - 170 · (3 · 0.61 + 13 · 1 · 0.63) − 0.6150 = -0.0669
Ke.4,10 = -Ke.2,12 = 0.0669 , Ke.6,16 = Ke.2,12 = -0.0669 , Ke.8,14 = -Ke.2,12 = 0.0669
Ke.2,14 = 235 · (9 · α − 2α3) − 825 · α = 235 · (9 · 1 − 213) − 825 · 1 = 0.08
Ke.6,10 = Ke.2,14 = 0.08
Ke.2,15 = 135 · (11α² − 13 · α²2) + 5 · ν + 150 = 135 · (111 − 13 · 12) + 5 · 0.2 + 150 = 0.169
Ke.3,14 = -Ke.2,15 = -0.169 , Ke.6,11 = -Ke.2,15 = -0.169 , Ke.7,10 = Ke.2,15 = 0.169
Ke.1,14 = 135 · (27 · αa1 − 22α² · b1) − 30 · ν + 625 · b1 = 135 · (27 · 10.6 − 221 · 0.6) − 30 · 0.2 + 625 · 0.6 = -0.562
Ke.2,13 = Ke.1,14 = -0.562 , Ke.5,10 = -Ke.1,14 = 0.562 , Ke.6,9 = -Ke.1,14 = 0.562
Ke.1,15 = 1335 · (6α · b1 − α²a1) + 625 · a1 = 1335 · (61 · 0.6 − 10.6) + 625 · 0.6 = 3.5
Ke.3,13 = -Ke.1,15 = -3.5 , Ke.5,11 = Ke.1,15 = 3.5 , Ke.7,9 = -Ke.1,15 = -3.5
Ke.1,16 = 135 · (11α² − 13 · α²2) + 5 · ν + 150 = 135 · (111 − 13 · 12) + 5 · 0.2 + 150 = 0.169
Ke.4,13 = -Ke.1,16 = -0.169 , Ke.8,9 = Ke.1,16 = 0.169 , Ke.5,12 = -Ke.1,16 = -0.169
Ke.2,2 = 435 · (13 · α + 1α3) + 825 · α = 435 · (13 · 1 + 113) + 825 · 1 = 1.92
Ke.6,6 = Ke.2,2 = 1.92 , Ke.10,10 = Ke.2,2 = 1.92 , Ke.14,14 = Ke.2,2 = 1.92
Ke.2,3 = 1135 · (α² + 1α²) + 60 · ν + 150 = 1135 · (1 + 11) + 60 · 0.2 + 150 = 0.889
Ke.6,7 = -Ke.2,3 = -0.889 , Ke.10,11 = Ke.2,3 = 0.889 , Ke.14,15 = -Ke.2,3 = -0.889
Ke.3,16 = - 135 · (3 · α² · b12 − 11 · a13 · α) − b1 · ( 5 · ν + 1 ) 150 = - 135 · (3 · 1 · 0.62 − 11 · 0.63 · 1) − 0.6 · ( 5 · 0.2 + 1 ) 150 = 0.0291
Ke.4,15 = Ke.3,16 = 0.0291 , Ke.7,12 = -Ke.3,16 = -0.0291 , Ke.8,11 = -Ke.3,16 = -0.0291
Ke.4,4 = 4105 · (α · b12 + a12α) + 8 · A1225 = 4105 · (1 · 0.62 + 0.621) + 8 · 0.36225 = 0.0402
Ke.8,8 = Ke.4,4 = 0.0402 , Ke.12,12 = Ke.4,4 = 0.0402 , Ke.16,16 = Ke.4,4 = 0.0402
Ke.4,8 = 135 · (2 · α · b123 − a12α) − 2 · A1225 = 135 · (2 · 1 · 0.623 − 0.621) − 2 · 0.36225 = -0.00663
Ke.12,16 = Ke.4,8 = -0.00663
Ke.4,12 = - 170 · (a12α + α · b12) + A1450 = - 170 · (0.621 + 1 · 0.62) + 0.36450 = -0.00949
Ke.8,16 = Ke.4,12 = -0.00949
Ke.4,16 = 135 · (2 · a123 · α − α · b12) − 2 · A1225 = 135 · (2 · 0.623 · 1 − 1 · 0.62) − 2 · 0.36225 = -0.00663
Ke.8,12 = Ke.4,16 = -0.00663
Ke.1,8 = 135 · (11 · α² − 132 · α²) + 5 · ν + 150 = 135 · (11 · 1 − 132 · 1) + 5 · 0.2 + 150 = 0.169
Ke.2,7 = -Ke.1,8 = -0.169 , Ke.3,6 = Ke.1,8 = 0.169 , Ke.4,5 = -Ke.1,8 = -0.169 , Ke.9,16 = Ke.1,8 = 0.169
Ke.10,15 = -Ke.1,8 = -0.169 , Ke.11,14 = Ke.1,8 = 0.169 , Ke.12,13 = -Ke.1,8 = -0.169
Ke.1,9 = - 5435 · (αa12 + 1α · b12) + 7225 · A1 = - 5435 · (10.62 + 11 · 0.62) + 7225 · 0.36 = -0.571
Ke.5,13 = Ke.1,9 = -0.571
Ke.1,10 = 135 · (27 · αa1 + 13α² · b1) − 625 · b1 = 135 · (27 · 10.6 + 131 · 0.6) − 625 · 0.6 = 1.5
Ke.2,9 = -Ke.1,10 = -1.5 , Ke.5,14 = -Ke.1,10 = -1.5 , Ke.6,13 = Ke.1,10 = 1.5
Ke.1,11 = 135 · (13 · α²a1 + 27α · b1) − 625 · a1 = 135 · (13 · 10.6 + 271 · 0.6) − 625 · 0.6 = 1.5
Ke.3,9 = -Ke.1,11 = -1.5 , Ke.5,15 = Ke.1,11 = 1.5 , Ke.7,13 = -Ke.1,11 = -1.5
Ke.1,12 = - 1370 · (α² + 1α²) + 150 = - 1370 · (1 + 11) + 150 = -0.351
Ke.2,11 = -Ke.1,12 = 0.351 , Ke.3,10 = -Ke.1,12 = 0.351 , Ke.4,9 = Ke.1,12 = -0.351 , Ke.5,16 = -Ke.1,12 = 0.351
Ke.6,15 = Ke.1,12 = -0.351 , Ke.7,14 = Ke.1,12 = -0.351 , Ke.8,13 = -Ke.1,12 = 0.351
Ke.1,13 = 235 · (27 · αa12 − 78α · b12) − 7225 · A1 = 235 · (27 · 10.62 − 781 · 0.62) − 7225 · 0.36 = -16.1
Ke.5,9 = Ke.1,13 = -16.1
Ke.2,16 = 135 · (2 · a1α² − 13 · α · b13) + 2 · a175 = 135 · (2 · 0.61 − 13 · 1 · 0.63) + 2 · 0.675 = -0.024
Ke.4,14 = -Ke.2,16 = 0.024 , Ke.6,12 = Ke.2,16 = -0.024 , Ke.8,10 = -Ke.2,16 = 0.024
Ke.3,3 = 435 · (α3 + 13α) + 8 · α25 = 435 · (13 + 131) + 8 · 125 = 1.92
Ke.7,7 = Ke.3,3 = 1.92 , Ke.11,11 = Ke.3,3 = 1.92 , Ke.15,15 = Ke.3,3 = 1.92
Ke.3,4 = 235 · (α² · b1 + 11 · a13 · α) + 2 · b1 · ( 5 · ν + 1 ) 75 = 235 · (1 · 0.6 + 11 · 0.63 · 1) + 2 · 0.6 · ( 5 · 0.2 + 1 ) 75 = 0.192
Ke.7,8 = -Ke.3,4 = -0.192 , Ke.11,12 = -Ke.3,4 = -0.192 , Ke.15,16 = Ke.3,4 = 0.192
Ke.3,7 = 235 · (-2 · α3 + 9α) − 8 · α25 = 235 · (-2 · 13 + 91) − 8 · 125 = 0.08
Ke.11,15 = Ke.3,7 = 0.08
Ke.3,8 = 135 · (2 · α² · b1 − 13 · a13 · α) + 2 · b175 = 135 · (2 · 1 · 0.6 − 13 · 0.63 · 1) + 2 · 0.675 = -0.024
Ke.4,7 = -Ke.3,8 = 0.024 , Ke.11,16 = -Ke.3,8 = 0.024 , Ke.12,15 = Ke.3,8 = -0.024
Ke.3,11 = 335 · (α3 + 3α) + 2 · α25 = 335 · (13 + 31) + 2 · 125 = 0.423
Ke.7,15 = Ke.3,11 = 0.423
Ke.3,12 = - 170 · (3 · α² · b1 + 13 · a13 · α) − b1150 = - 170 · (3 · 1 · 0.6 + 13 · 0.63 · 1) − 0.6150 = -0.0669
Ke.4,11 = -Ke.3,12 = 0.0669 , Ke.7,16 = -Ke.3,12 = 0.0669 , Ke.8,15 = Ke.3,12 = -0.0669
Ke.3,15 = 135 · (26α − 3 · α3) − 2 · α25 = 135 · (261 − 3 · 13) − 2 · 125 = 0.577
Ke.7,11 = Ke.3,15 = 0.577
Element stiffness matrix coefficients (above the main diagonal only)
Ke = D1,1 · Ke = 24.31 · Ke = 796.3135.19135.1916.74-391.284.95-13.664.1-13.8936.5736.57-8.54-391.2-13.6684.954.1 046.6721.64.67-84.9514.03-4.10.708-36.5710.288.54-1.63-13.661.944.1-0.583 0046.674.67-13.664.11.94-0.583-36.578.5410.28-1.63-84.95-4.114.030.708 0000.978-4.10.7080.583-0.161-8.541.631.63-0.231-4.10.5830.708-0.161 0000796.3-135.19135.19-16.74-391.213.6684.95-4.1-13.89-36.5736.578.54 0000046.67-21.64.6713.661.94-4.1-0.58336.5710.28-8.54-1.63 00000046.67-4.67-84.954.114.03-0.708-36.57-8.5410.281.63 00000000.9784.10.583-0.708-0.1618.541.63-1.63-0.231 00000000796.3-135.19-135.1916.74-391.2-84.9513.664.1 00000000046.6721.6-4.6784.9514.03-4.1-0.708 000000000046.67-4.6713.664.11.940.583 000000000000.978-4.1-0.708-0.583-0.161 000000000000796.3135.19-135.19-16.74 000000000000046.67-21.6-4.67 0000000000000046.674.67 0000000000000000.978
Element load vector
⃗Fe = q · A124 · hp([6; a1; b1; A16; 6; -a1; b1; -A16; 6; -a1; -b1; A16; 6; a1; -b1; -A16]) = 10 · 0.3624 · hp([6; 0.6; 0.6; 0.366; 6; -0.6; 0.6; -0.366; 6; -0.6; -0.6; 0.366; 6; 0.6; -0.6; -0.366]) = [0.9 0.09 0.09 0.009 0.9 -0.09 0.09 -0.009 0.9 -0.09 -0.09 0.009 0.9 0.09 -0.09 -0.009] kN
Global stiffness matrix
K = 1020135.19135.1916.74-391.2-13.6684.954.1000000000000⋯0 135.1946.6721.64.67-13.661.944.1-0.583000000000000⋯0 135.1921.646.674.67-84.95-4.114.030.708000000000000⋯0 16.744.674.670.978-4.10.5830.708-0.161000000000000⋯0 -391.2-13.66-84.95-4.11592.59270.3700-391.2-13.6684.954.100000000⋯0 -13.661.94-4.10.583270.3793.3300-13.661.944.1-0.58300000000⋯0 84.954.114.030.7080093.339.33-84.95-4.114.030.70800000000⋯0 4.1-0.5830.708-0.161009.331.96-4.10.5830.708-0.16100000000⋯0 0000-391.2-13.66-84.95-4.11592.59270.3700-391.2-13.6684.954.10000⋯0 0000-13.661.94-4.10.583270.3793.3300-13.661.944.1-0.5830000⋯0 000084.954.114.030.7080093.339.33-84.95-4.114.030.7080000⋯0 00004.1-0.5830.708-0.161009.331.96-4.10.5830.708-0.1610000⋯0 00000000-391.2-13.66-84.95-4.11592.59270.3700-391.2-13.6684.954.1⋯0 00000000-13.661.94-4.10.583270.3793.3300-13.661.944.1-0.583⋯0 0000000084.954.114.030.7080093.339.33-84.95-4.114.030.708⋯0 000000004.1-0.5830.708-0.161009.331.96-4.10.5830.708-0.161⋯0 000000000000-391.2-13.66-84.95-4.11592.59270.3700⋯0 000000000000-13.661.94-4.10.583270.3793.3300⋯0 00000000000084.954.114.030.7080093.339.33⋯0 0000000000004.1-0.5830.708-0.161009.331.96⋯0 ⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋱⋮00000000000000000000⋯0.978
Global load vector
⃗F = [0.9 0.09 0.09 0.009 1.8 0.18 0 0 1.8 0.18 0 0 1.8 0.18 0 0 1.8 0.18 0 0 ... 0.009] kN
Solution of the system of equations
⃗Z = slsolve ( K; ⃗F ) = [0 0.552 0.383 -0.416 0.203 0.373 0.265 -0.194 0.299 0.309 0.0483 -0.025 0.261 0.343 -0.165 0.128 0.121 0.468 -0.267 0.229 ... -0.416] mm
Joint displacements
transp ( Wz ) = 00.3030.4880.5120.3830.16500.1390.340.4690.4720.3470.14600.1460.3470.4720.4690.340.139⋯0 0.2030.4190.5620.5810.4850.3370.250.310.4380.5310.5330.4430.3110.2420.3110.4430.5330.5310.4380.31⋯0.203 0.2990.4820.6050.620.5370.4170.350.3870.4850.5620.5640.4890.3870.3380.3870.4890.5640.5620.4850.387⋯0.299 0.2610.4610.5930.6080.5130.3750.2990.3420.4550.5420.5440.460.3450.2890.3450.460.5440.5420.4550.342⋯0.261 0.1210.3860.550.5650.4430.2530.1380.2170.3810.4930.4970.3890.2250.1340.2250.3890.4970.4930.3810.217⋯0.121 00.340.5270.5420.4040.17300.1350.3360.4630.4670.3450.14500.1450.3450.4670.4630.3360.135⋯0 0.1390.3980.5560.5660.440.2470.1290.2060.3670.4780.4810.3740.2110.1210.2110.3740.4810.4780.3670.206⋯0.139 0.2990.4870.6080.6120.5110.3690.2870.3250.4330.5160.5190.4370.3240.270.3240.4370.5190.5160.4330.325⋯0.299 0.3630.5260.6320.6350.5440.420.350.3760.4640.5360.5380.4670.3730.3290.3730.4670.5380.5360.4640.376⋯0.363 0.2990.4870.6080.6120.5110.3690.2870.3250.4330.5160.5190.4370.3240.270.3240.4370.5190.5160.4330.325⋯0.299 0.1390.3980.5560.5660.440.2470.1290.2060.3670.4780.4810.3740.2110.1210.2110.3740.4810.4780.3670.206⋯0.139 00.340.5270.5420.4040.17300.1350.3360.4630.4670.3450.14500.1450.3450.4670.4630.3360.135⋯0 0.1210.3860.550.5650.4430.2530.1380.2170.3810.4930.4970.3890.2250.1340.2250.3890.4970.4930.3810.217⋯0.121 0.2610.4610.5930.6080.5130.3750.2990.3420.4550.5420.5440.460.3450.2890.3450.460.5440.5420.4550.342⋯0.261 0.2990.4820.6050.620.5370.4170.350.3870.4850.5620.5640.4890.3870.3380.3870.4890.5640.5620.4850.387⋯0.299 0.2030.4190.5620.5810.4850.3370.250.310.4380.5310.5330.4430.3110.2420.3110.4430.5330.5310.4380.31⋯0.203 00.3030.4880.5120.3830.16500.1390.340.4690.4720.3470.14600.1460.3470.4720.4690.340.139⋯0 mm
Bending moments
Zj ( j ) = slice ( ⃗Z; k1 · ( j − 1 ) + 1; k1 · j )
Ze ( e ) = hp ( [Zj ( ej.e,1 ) ; Zj ( ej.e,2 ) ; Zj ( ej.e,3 ) ; Zj ( ej.e,4 ) ] )
Average bending moments at joints, kNm/m
Mj = 1.50.310.220.1560.1570.9980.1560.1520.1940.1520.1560.9980.1570.1560.220.311.58.56.485.78⋯1.5 1.567.819.347.673.33-28.363.157.328.97.323.15-28.363.337.679.347.811.560.3225.387.13⋯1.56 8.093.770.486-2.48-4.460.1554.782.84-2.41×10-8-2.84-4.78-0.1554.462.48-0.486-3.77-8.094.112.570.367⋯8.09
Bending moments for the plate
Bending moments - Mx
transp ( Mx ) = 1.58.511.0710.486.80.884-31.230.3025.648.788.885.920.686-30.130.6865.928.888.785.640.302⋯1.5 0.316.489.438.884.92-2.7-10.24-3.263.817.257.364.13-2.76-9.73-2.764.137.367.253.81-3.26⋯0.31 0.225.788.728.134.04-2.26-6.06-2.822.936.526.643.29-2.29-5.62-2.293.296.646.522.93-2.82⋯0.22 0.1565.999.138.494.06-3.26-7.99-3.832.916.86.933.3-3.21-7.38-3.213.36.936.82.91-3.83⋯0.156 0.1577.2710.379.564.97-5.27-16.12-5.873.777.717.844.16-5.1-15.09-5.14.167.847.713.77-5.87⋯0.157 0.9989.0411.0810.125.76-2.14-38.65-2.754.528.198.324.9-2.09-36.54-2.094.98.328.194.52-2.75⋯0.998 0.1567.2210.289.444.85-5.36-16.18-5.963.627.567.74.05-5.14-15.09-5.144.057.77.563.62-5.96⋯0.156 0.1525.878.938.233.77-3.42-8.03-4.012.596.476.633.06-3.27-7.31-3.273.066.636.472.59-4.01⋯0.152 0.1945.518.387.693.47-2.49-5.74-3.072.315.986.142.79-2.38-5.12-2.382.796.145.982.31-3.07⋯0.194 0.1525.878.938.233.77-3.42-8.03-4.012.596.476.633.06-3.27-7.31-3.273.066.636.472.59-4.01⋯0.152 0.1567.2210.289.444.85-5.36-16.18-5.963.627.567.74.05-5.14-15.09-5.144.057.77.563.62-5.96⋯0.156 0.9989.0411.0810.125.76-2.14-38.65-2.754.528.198.324.9-2.09-36.54-2.094.98.328.194.52-2.75⋯0.998 0.1577.2710.379.564.97-5.27-16.12-5.873.777.717.844.16-5.1-15.09-5.14.167.847.713.77-5.87⋯0.157 0.1565.999.138.494.06-3.26-7.99-3.832.916.86.933.3-3.21-7.38-3.213.36.936.82.91-3.83⋯0.156 0.225.788.728.134.04-2.26-6.06-2.822.936.526.643.29-2.29-5.62-2.293.296.646.522.93-2.82⋯0.22 0.316.489.438.884.92-2.7-10.24-3.263.817.257.364.13-2.76-9.73-2.764.137.367.253.81-3.26⋯0.309 1.58.511.0710.486.80.884-31.230.3025.648.788.885.920.686-30.130.6865.928.888.785.640.302⋯1.5 kNm/m
Bending moments My
transp ( My ) = 1.560.3220.2350.2170.1690.1791.010.1780.1680.2110.2110.1670.1760.9860.1760.1670.2110.2110.1680.178⋯1.56 7.815.384.314.144.746.348.236.284.613.893.874.536.127.996.124.533.873.894.616.28⋯7.81 9.347.135.85.556.428.129.058.016.195.155.126.097.828.787.826.095.125.156.198.01⋯9.34 7.675.424.263.924.235.426.345.33.983.483.483.975.226.185.223.973.483.483.985.3⋯7.67 3.33-0.3280.540.406-1.17-3.41-0.33-3.53-1.40.09980.161-1.21-3.23-0.218-3.23-1.210.1610.0998-1.4-3.53⋯3.33 -28.36-7.04-1.94-1.65-4.99-13.64-36.32-13.77-5.22-1.86-1.76-4.89-13.03-34.57-13.03-4.89-1.76-1.86-5.22-13.77⋯-28.36 3.15-0.5070.3490.18-1.46-3.76-0.723-3.92-1.77-0.252-0.197-1.6-3.66-0.666-3.66-1.6-0.197-0.252-1.77-3.92⋯3.15 7.325.093.913.493.684.695.54.483.252.792.793.214.355.244.353.212.792.793.254.48⋯7.32 8.96.745.354.965.616.917.576.695.144.184.155.036.467.216.465.034.154.185.146.69⋯8.9 7.325.093.913.493.684.695.54.483.252.792.793.214.355.244.353.212.792.793.254.48⋯7.32 3.15-0.5070.3490.18-1.46-3.76-0.723-3.92-1.77-0.252-0.197-1.6-3.66-0.666-3.66-1.6-0.197-0.252-1.77-3.92⋯3.15 -28.36-7.04-1.94-1.65-4.99-13.64-36.32-13.77-5.22-1.86-1.76-4.89-13.03-34.57-13.03-4.89-1.76-1.86-5.22-13.77⋯-28.36 3.33-0.3280.540.406-1.17-3.41-0.33-3.53-1.40.09980.161-1.21-3.23-0.218-3.23-1.210.1610.0998-1.4-3.53⋯3.33 7.675.424.263.924.235.426.345.33.983.483.483.975.226.185.223.973.483.483.985.3⋯7.67 9.347.135.85.556.428.129.058.016.195.155.126.097.828.787.826.095.125.156.198.01⋯9.34 7.815.384.314.144.746.348.236.284.613.893.874.536.127.996.124.533.873.894.616.28⋯7.81 1.560.3220.2350.2170.1690.1791.010.1780.1680.2110.2110.1670.1760.9860.1760.1670.2110.2110.1680.178⋯1.56 kNm/m
Bending moments Mxy
transp ( Mxy ) = 8.094.111.42-0.945-3.23-4.780.02184.843.331.14-1.03-3.19-4.679.79×10-94.673.191.03-1.14-3.33-4.84⋯-8.09 3.772.570.983-0.516-2.06-3.230.05833.352.210.731-0.67-2.12-3.23-2.24×10-83.232.120.67-0.731-2.21-3.35⋯-3.77 0.4860.3670.210.0858-0.119-0.3140.07350.4610.2670.0568-0.0798-0.274-0.4324.76×10-90.4320.2740.0798-0.0568-0.267-0.461⋯-0.486 -2.48-1.8-0.6010.6171.752.090.0763-1.95-1.63-0.5820.4921.541.88-1.03×10-9-1.88-1.54-0.4920.5821.631.95⋯2.48 -4.46-3.24-0.8980.6832.374.530.0758-4.38-2.26-0.6820.6012.154.212.4×10-10-4.21-2.15-0.6010.6822.264.38⋯4.46 0.1550.1610.1490.1250.09640.07790.07390.06990.05120.021-0.00841-0.0266-0.0234-5.8×10-110.02340.02660.00841-0.021-0.0512-0.0699⋯-0.155 4.783.571.19-0.451-2.21-4.40.06354.542.380.725-0.626-2.23-4.281.44×10-114.282.230.626-0.725-2.38-4.54⋯-4.78 2.842.130.868-0.438-1.68-2.080.03782.171.80.63-0.542-1.68-2.04-3.55×10-122.041.680.542-0.63-1.8-2.17⋯-2.84 -2.41×10-83.06×10-8-4.4×10-93.07×10-10-8.13×10-113.64×10-11-1.33×10-114.76×10-12-7.15×10-131.79×10-13-3.8×10-132.91×10-1301.38×10-13-9.95×10-132.39×10-12-3.71×10-122.38×10-123.03×10-12-1.39×10-11⋯3.94×10-8 -2.84-2.13-0.8680.4381.682.08-0.0378-2.17-1.8-0.630.5421.682.044.13×10-12-2.04-1.68-0.5420.631.82.17⋯2.84 -4.78-3.57-1.190.4512.214.4-0.0635-4.54-2.38-0.7250.6262.234.28-1.91×10-11-4.28-2.23-0.6260.7252.384.54⋯4.78 -0.155-0.161-0.149-0.125-0.0964-0.0779-0.0739-0.0699-0.0512-0.0210.008410.02660.02347.95×10-11-0.0234-0.0266-0.008410.0210.05120.0699⋯0.155 4.463.240.898-0.683-2.37-4.53-0.07584.382.260.682-0.601-2.15-4.21-3.34×10-104.212.150.601-0.682-2.26-4.38⋯-4.46 2.481.80.601-0.617-1.75-2.09-0.07631.951.630.582-0.492-1.54-1.881.41×10-91.881.540.492-0.582-1.63-1.95⋯-2.48 -0.486-0.367-0.21-0.08580.1190.314-0.0735-0.461-0.267-0.05680.07980.2740.432-6.34×10-9-0.432-0.274-0.07980.05680.2670.461⋯0.486 -3.77-2.57-0.9830.5162.063.23-0.0583-3.35-2.21-0.7310.672.123.232.94×10-8-3.23-2.12-0.670.7312.213.35⋯3.77 -8.09-4.11-1.420.9453.234.78-0.0218-4.84-3.33-1.141.033.194.67-1.25×10-8-4.67-3.19-1.031.143.334.84⋯8.09 kNm/m
Rectangular Slab FEA¶
Single-panel simply-supported rectangular slab solved with the 16-DOF Bogner–Fox–Schmit plate element under uniform load. Returns deflection plus the bending moments \(M_x\) and \(M_y\) on a user-defined mesh — a compact testbed for convergence studies.
'<h4>Input data</h4>
'<table><tr><td>
'Slab dimensions -'a = 6'm,'b = 4'm
'Thickness -'t = 0.1'm
'Load -'q = 10'kN/m²
'Modulus of elasticity -'E = 35000'MPa
'Poisson`s ratio -'ν = 0.15
'</td><td><img src="../../Images/mechanics/elastic/slab.png" style="height:110pt; margin-left:40pt;"></td></tr></table>
'<h4>Finite element mesh</h4>
'We will use rectangular finite element with 'n = 16' DOFs
'Number of elements along <var>a</var> and <var>b</var> -'n_a = 6', 'n_b = 4
'Total number of elements -'n_e = n_a*n_b
'Total number of joints -'n_j = (n_a + 1)*(n_b + 1)
'Element dimensions -'a_1 = a/n_a', 'b_1 = b/n_b
'Supported joints count -'n_s = 2*(n_a + n_b)
#hide
x_j = vector(n_j)','y_j = vector(n_j)
x = 0', 'y = 0
#for j = 1 : n_j
x_j.j = x
y_j.j = y
y = y + b_1
#if y > b
y = 0
x = x + a_1
#end if
#loop
e_j = matrix(n_e; 4)
#for i_a = 1 : n_a
#for i_b = 1 : n_b
e = i_b + n_b*(i_a - 1)
j = e + i_a - 1
e_j.(e; 1) = j
e_j.(e; 2) = j + n_b + 1
e_j.(e; 3) = j + n_b + 2
e_j.(e; 4) = j + 1
#loop
#loop
s_j = vector(n_s)
i_s = 0
#for i = 1 : n_a + 1
j = (n_b + 1)*i - n_b
i_s = i_s + 1
s_j.i_s = j
#loop
#for i = 1 : n_a + 1
j = (n_b + 1)*i
i_s = i_s + 1
s_j.i_s = j
#loop
#for i = 2 : n_b
j = i
i_s = i_s + 1
s_j.i_s = j
#loop
#for i = 2 : n_b
j = n_a*(n_b + 1) + i
i_s = i_s + 1
s_j.i_s = j
#loop
#show
'Joint coordinates
x_j'm
y_j'm
'Numbers of elements joints
transp(e_j)
'Supported joints
s_j
'Coordinates of elements centers
j_e(e) = row(e_j; e)
x_c(e) = sum(extract(x_j; j_e(e)))/4', ' _
y_c(e) = sum(extract(y_j; j_e(e)))/4
#val
#hide
w = 400
k = w/a
d = 20
h = b/a*w
r = 0.04*k
#show
'<svg viewbox="'-d' '-d' 'w + 2*d' 'h + 2*d'" xmlns="http://www.w3.org/2000/svg" version="1.1" style=" font-family: Segoe UI; font-size:10px; width:'w'pt; height:'h'pt">
'<style>.joint{fill:orangeRed;} .support{stroke:red; stroke-width:1; fill:lightpink;} .element{stroke:seaGreen; stroke-width:1; fill:lime; fill-opacity:0.1; stroke-opacity:0.5}</style>
'<rect x="'0'" y="'0'" width="'w'" height="'h'" style="fill:yellow; fill-opacity:0.2" />
#for e = 1 : n_e
#hide
x = x_c(e)*k
y = y_c(e)*k
#show
'<text x="'x'" y="'h - y'" text-anchor="middle">'e'</text>
'<rect x="'x - a_1/2*k'" y="'h - y - b_1/2*k'" width="'a_1*k'" height="'b_1*k'" class="element" />
#loop
#for i = 1 : n_s
j = s_j.i
#hide
x = x_j.j*k
y = h - y_j.j*k
#show
#if y_j.j ≡ 0 ∨ y_j.j ≡ b
'<line x1="'x - 4*r'" y1="'y'" x2="'x + 4*r'" y2="'y'" class="support"/>
#end if
#if x_j.j ≡ 0 ∨ x_j.j ≡ a
'<line x1="'x'" y1="'y - 4*r'" x2="'x'" y2="'y + 4*r'" class="support"/>
#end if
'<circle cx="'x'" cy="'y'" r="'2*r'" class="support"/>
#loop
#for j = 1 : n_j
#hide
x = x_j.j*k
y = h - y_j.j*k
#show
'<circle cx="'x'" cy="'y'" r="'r'" class="joint" />
'<text x="'x + 2*r'" y="'y - r'" text-anchor="start">'j'</text>
#loop
'</svg>
#equ
'<h4>Finite element formulation</h4>
'<p><b>Shape functions</b></p>
#def FI$(x$; l$)
'<table><tr><td>Base functions
Φ_1l$(x$) = 1 - x$^2*(3 - 2*x$)
Φ_2l$(x$) = x$*l$_1*(1 - x$*(2 - x$))
Φ_3l$(x$) = x$^2*(3 - 2*x$)
Φ_4l$(x$) = x$^2*l$_1*(-1 + x$)
'</td><td>First derivatives
Φ′_1l$(x$) = -6*(x$/l$_1)*(1 - x$)
Φ′_2l$(x$) = 1 - x$*(4 - 3*x$)
Φ′_3l$(x$) = 6*(x$/l$_1)*(1 - x$)
Φ′_4l$(x$) = -x$*(2 - 3*x$)
'</td><td>Second derivatives
Φ″_1l$(x$) = -(6/l$_1^2)*(1 - 2*x$)
Φ″_2l$(x$) = -(2/l$_1)*(2 - 3*x$)
Φ″_3l$(x$) = 6/l$_1^2*(1 - 2*x$)
Φ″_4l$(x$) = -(2/l$_1)*(1 - 3*x$)
'</td></tr></table>
#end def
'Along dimension <var>a</var>
FI$(ξ; a)
'Along dimension <var>b</var>
FI$(η; b)
'<table><tr><td>For vertical displacements <var>w</var>
N_1,w(ξ; η) = Φ_1a(ξ)*Φ_1b(η)
N_2,w(ξ; η) = Φ_3a(ξ)*Φ_1b(η)
N_3,w(ξ; η) = Φ_3a(ξ)*Φ_3b(η)
N_4,w(ξ; η) = Φ_1a(ξ)*Φ_3b(η)
'</td><td>For rotations <var>θ</var>ₓ
N_1,θₓ(ξ; η) = Φ_2a(ξ)*Φ_1b(η)
N_2,θₓ(ξ; η) = Φ_4a(ξ)*Φ_1b(η)
N_3,θₓ(ξ; η) = Φ_4a(ξ)*Φ_3b(η)
N_4,θₓ(ξ; η) = Φ_2a(ξ)*Φ_3b(η)
'</td><td>For rotations <var>θ</var>ᵧ
N_1,θᵧ(ξ; η) = Φ_1a(ξ)*Φ_2b(η)
N_2,θᵧ(ξ; η) = Φ_3a(ξ)*Φ_2b(η)
N_3,θᵧ(ξ; η) = Φ_3a(ξ)*Φ_4b(η)
N_4,θᵧ(ξ; η) = Φ_1a(ξ)*Φ_4b(η)
'</td></tr></table>
'<img src="./plate-element.png" alt="plane-elemen.png" style="float:right; width:200pt;" />
'For twist ψ
N_1,ψ(ξ; η) = Φ_2a(ξ)*Φ_2b(η)
N_2,ψ(ξ; η) = Φ_4a(ξ)*Φ_2b(η)
N_3,ψ(ξ; η) = Φ_4a(ξ)*Φ_4b(η)
N_4,ψ(ξ; η) = Φ_2a(ξ)*Φ_4b(η)
'Shape functions vector
N(i; ξ; η) = take(i; _
N_1,w(ξ; η); N_1,θₓ(ξ; η); N_1,θᵧ(ξ; η); N_1,ψ(ξ; η); _
N_2,w(ξ; η); N_2,θₓ(ξ; η); N_2,θᵧ(ξ; η); N_2,ψ(ξ; η); _
N_3,w(ξ; η); N_3,θₓ(ξ; η); N_3,θᵧ(ξ; η); N_3,ψ(ξ; η); _
N_4,w(ξ; η); N_4,θₓ(ξ; η); N_4,θᵧ(ξ; η); N_4,ψ(ξ; η))
'<p><b>Constitutive matrix</b> (stress - strain relationship)</p>
D = E*t^3/(12*(1 - ν^2))*[1; ν; 0|ν; 1; 0|0; 0; (1 - ν)/2]
'<p><b>Strain-displacement matrix</b></p>
B_1(j; ξ; η) = take(j; _
Φ″_1a(ξ)*Φ_1b(η); Φ″_2a(ξ)*Φ_1b(η); Φ″_1a(ξ)*Φ_2b(η); Φ″_2a(ξ)*Φ_2b(η); _
Φ″_3a(ξ)*Φ_1b(η); Φ″_4a(ξ)*Φ_1b(η); Φ″_3a(ξ)*Φ_2b(η); Φ″_4a(ξ)*Φ_2b(η); _
Φ″_3a(ξ)*Φ_3b(η); Φ″_4a(ξ)*Φ_3b(η); Φ″_3a(ξ)*Φ_4b(η); Φ″_4a(ξ)*Φ_4b(η); _
Φ″_1a(ξ)*Φ_3b(η); Φ″_2a(ξ)*Φ_3b(η); Φ″_1a(ξ)*Φ_4b(η); Φ″_2a(ξ)*Φ_4b(η))
B_2(j; ξ; η) = take(j; _
Φ_1a(ξ)*Φ″_1b(η); Φ_2a(ξ)*Φ″_1b(η); Φ_1a(ξ)*Φ″_2b(η); Φ_2a(ξ)*Φ″_2b(η); _
Φ_3a(ξ)*Φ″_1b(η); Φ_4a(ξ)*Φ″_1b(η); Φ_3a(ξ)*Φ″_2b(η); Φ_4a(ξ)*Φ″_2b(η); _
Φ_3a(ξ)*Φ″_3b(η); Φ_4a(ξ)*Φ″_3b(η); Φ_3a(ξ)*Φ″_4b(η); Φ_4a(ξ)*Φ″_4b(η); _
Φ_1a(ξ)*Φ″_3b(η); Φ_2a(ξ)*Φ″_3b(η); Φ_1a(ξ)*Φ″_4b(η); Φ_2a(ξ)*Φ″_4b(η))
B_3(j; ξ; η) = 2*take(j; _
Φ′_1a(ξ)*Φ′_1b(η); Φ′_2a(ξ)*Φ′_1b(η); Φ′_1a(ξ)*Φ′_2b(η); Φ′_2a(ξ)*Φ′_2b(η); _
Φ′_3a(ξ)*Φ′_1b(η); Φ′_4a(ξ)*Φ′_1b(η); Φ′_3a(ξ)*Φ′_2b(η); Φ′_4a(ξ)*Φ′_2b(η); _
Φ′_3a(ξ)*Φ′_3b(η); Φ′_4a(ξ)*Φ′_3b(η); Φ′_3a(ξ)*Φ′_4b(η); Φ′_4a(ξ)*Φ′_4b(η); _
Φ′_1a(ξ)*Φ′_3b(η); Φ′_2a(ξ)*Φ′_3b(η); Φ′_1a(ξ)*Φ′_4b(η); Φ′_2a(ξ)*Φ′_4b(η))
B(j; ξ; η) = [B_1(j; ξ; η); B_2(j; ξ; η); B_3(j; ξ; η)]
x_1(e) = x_j.e_j.(e; 1)','y_1(e) = y_j.e_j.(e; 1)
'The elements of the stiffness matrix will be calculated by using the equation
#noc
K_e,ij = a_1*b_1*$Area{$Area{B_i(ξ; η)^T*D*B_j(ξ; η) @ ξ = 0 : 1} @ η = 0 : 1}
#equ
'<p><b>Element stiffness matrix</b></p> (above the main diagonal only)
#hide
K_e = utriang(n)
Precision = 10^-4
e = 1
#show
BTDB_e(i; j; ξ; η) = transp(B(i; ξ; η))*D*B(j; ξ; η)
K_e(i; j) = a_1*b_1*$Area{$Area{BTDB_e(i; j; ξ; η) @ η = 0 : 1} @ ξ = 0 : 1}
$Repeat{$Repeat{K_e.(i; j) = K_e(i; j) @ j = i : n} @ i = 1 : n}
K_e
'Element load vector
#noc
F_e,i = a_1*b_1*$Area{$Area{N_i(ξ; η)^T*q @ ξ = 0 : 1} @ η = 0 : 1}
#equ
#hide
F_e = vector(n)
#for i = 1 : n
F_e.i = a_1*b_1*$Area{$Area{N(i; ξ; η)*q @ ξ = 0 : 1} @ η = 0 : 1}
#loop
#show
F_e'kN
'<h4>Solution</h4>
'Global stiffness matrix
#hide
k_1 = n/4
n = k_1*n_j
K = symmetric(n)
'Addition of element stiffness matrix coefficients
#for e = 1 : n_e
#for i = 1 : 4
#for j = i : 4
j_1 = e_j.(e; i)
j_2 = e_j.(e; j)
i_1 = k_1*(j_1 - 1) + 1
i_2 = k_1*(j_2 - 1) + 1
k_ij = submatrix(K_e; k_1*(i - 1) + 1; k_1*i; k_1*(j - 1) + 1; k_1*j)
#if j_1 > j_2
add(transp(k_ij); K; i_2; i_1)
#else
add(k_ij; K; i_1; i_2)
#end if
#loop
#loop
#loop
k_s = 10^20
'Addition of supports
#for i = 1 : n_s
j = k_1*(s_j.i - 1) + 1
K.(j; j) = K.(j; j) + k_s
j = j + 1
#if y_j.s_j.i ≡ 0 ∨ y_j.s_j.i ≡ b
K.(j; j) = K.(j; j) + k_s
#end if
j = j + 1
#if x_j.s_j.i ≡ 0 ∨ x_j.s_j.i ≡ a
K.(j; j) = K.(j; j) + k_s
#end if
#loop
#show
K
'Global load vector
#hide
F = vector(n)
#for e = 1 : n_e
#for i = 1 : 4
j = e_j.(e; i)
#for k = 1 : 4
l = k_1*(j - 1) + k
F.l = F.l + F_e.(k_1*(i - 1) + k)
#loop
#loop
#loop
#show
F'kN
'Solution of the system of equations
Z = clsolve(K; F)'mm
'<h4>Results</h4>
'Joint displacements
#hide
W_z = matrix(n_a + 1; n_b + 1)
w(j) = Z.(4*j - 3)
$Repeat{$Repeat{W_z.(i; j) = round(w((i - 1)*(n_b + 1) + j)*1000)/1000 @ j = 1 : n_b + 1} @ i = 1 : n_a + 1}
w(x; y) = spline(1 + x/a_1; 1 + y/b_1; W_z)
PlotWidth = 50*a
PlotHeight = 50*b
PlotStep = 10
#show
transp(W_z)'mm
$Map{-w(x; y) @ x = 0 : a & y = 0 : b}
w(a/2; b/2)'mm
'Bending moments
Z_j(j) = slice(Z; k_1*(j - 1) + 1; k_1*j)
Z_e(e) = [Z_j(e_j.(e; 1)); Z_j(e_j.(e; 2)); Z_j(e_j.(e; 3)); Z_j(e_j.(e; 4))]
#hide
B(ξ; η) = [ _
B_1(1; ξ; η); B_1(2; ξ; η); B_1(3; ξ; η); B_1(4; ξ; η); _
B_1(5; ξ; η); B_1(6; ξ; η); B_1(7; ξ; η); B_1(8; ξ; η); _
B_1(9; ξ; η); B_1(10; ξ; η); B_1(11; ξ; η); B_1(12; ξ; η); _
B_1(13; ξ; η); B_1(14; ξ; η); B_1(15; ξ; η); B_1(16; ξ; η)| _
B_2(1; ξ; η); B_2(2; ξ; η); B_2(3; ξ; η); B_2(4; ξ; η); _
B_2(5; ξ; η); B_2(6; ξ; η); B_2(7; ξ; η); B_2(8; ξ; η); _
B_2(9; ξ; η); B_2(10; ξ; η); B_2(11; ξ; η); B_2(12; ξ; η); _
B_2(13; ξ; η); B_2(14; ξ; η); B_2(15; ξ; η); B_2(16; ξ; η)| _
B_3(1; ξ; η); B_3(2; ξ; η); B_3(3; ξ; η); B_3(4; ξ; η); _
B_3(5; ξ; η); B_3(6; ξ; η); B_3(7; ξ; η); B_3(8; ξ; η); _
B_3(9; ξ; η); B_3(10; ξ; η); B_3(11; ξ; η); B_3(12; ξ; η); _
B_3(13; ξ; η); B_3(14; ξ; η); B_3(15; ξ; η); B_3(16; ξ; η)]
M_j = matrix(3; n_j)
c_j = vector(n_j)
#for e = 1 : n_e
Z_е = Z_e(e)
j_1 = e_j.(e; 1)
x_1 = x_j.j_1
y_1 = y_j.j_1
M_e(x; y) = -D*B(x/a_1; y/b_1)*Z_е
#for i = 1 : 4
j = e_j.(e; i)
c_j.j = c_j.j + 1
x = x_j.j - x_1
y = y_j.j - y_1
M_e = M_e(x; y)
add(M_e; M_j; 1; j)
#loop
#loop
#for j = 1 : n_j
M_j.(1; j) = M_j.(1; j)/c_j.j
M_j.(2; j) = M_j.(2; j)/c_j.j
M_j.(3; j) = M_j.(3; j)/c_j.j
#loop
Mx = matrix(n_a + 1; n_b + 1)
My = matrix(n_a + 1; n_b + 1)
Mxy = matrix(n_a + 1; n_b + 1)
#for i = 1 : n_a + 1
#for k = 1 : n_b + 1
j = (i - 1)*(n_b + 1) + k
Mx.(i; k) = M_j.(1; j)
My.(i; k) = M_j.(2; j)
Mxy.(i; k) = M_j.(3; j)
#loop
#loop
M_x(x; y) = spline(1 + x/a_1; 1 + y/b_1; Mx)
M_y(x; y) = spline(1 + x/a_1; 1 + y/b_1; My)
M_xy(x; y) = spline(1 + x/a_1; 1 + y/b_1; Mxy)
i = round(n_a/2)
j = round(n_b/2)
e = (i - 1)*n_a + j + 1
j = e_j.(e; 1)
x = 0
y = 0
#show
#val
'Results for element 'e' and joint 'j':
#equ
Z_e = Z_e(e)'mm
M_e(x; y) = -D*B(x/a_1; y/b_1)*Z_e(e)
M_e = M_e(0; 0)'kNm/m
'Average bending moments at joints, kNm/m
M_j
'Bending moments for the plate
'Bending moments - <var>M</var><sub>x</sub>
transp(Mx)'kNm/m
$Map{M_x(x; y) @ x = 0 : a & y = 0 : b}
'Maximal value -'M_x(a/2; b/2)'kNm/m
'Bending moments <var>M</var><sub>y</sub>
transp(My)'kNm/m
$Map{M_y(x; y) @ x = 0 : a & y = 0 : b}
'Maximal value -'M_y(a/2; b/2)'kNm/m
'Bending moments <var>M</var><sub>xy</sub>
transp(Mxy)'kNm/m
$Map{M_xy(x; y) @ x = 0 : a & y = 0 : b}
'Maximal value -'M_xy(0; 0)'kNm/m
|
Slab dimensions - a = 6 m, b = 4 m Thickness - t = 0.1 m Load - q = 10 kN/m² Modulus of elasticity - E = 35000 MPa Poisson`s ratio - ν = 0.15 | ![]() |
We will use rectangular finite element with n = 16 DOFs
Number of elements along a and b - na = 6 , nb = 4
Total number of elements - ne = na · nb = 6 · 4 = 24
Total number of joints - nj = ( na + 1 ) · ( nb + 1 ) = ( 6 + 1 ) · ( 4 + 1 ) = 35
Element dimensions - a1 = ana = 66 = 1 , b1 = bnb = 44 = 1
Supported joints count - ns = 2 · ( na + nb ) = 2 · ( 6 + 4 ) = 20
Joint coordinates
⃗xj = [0 0 0 0 0 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 ... 6] m
⃗yj = [0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 ... 4] m
Numbers of elements joints
transp ( ej ) = 12346789111213141617181921222324⋯29 678911121314161718192122232426272829⋯34 7891012131415171819202223242527282930⋯35 234578910121314151718192022232425⋯30
Supported joints
⃗sj = [1 6 11 16 21 26 31 5 10 15 20 25 30 35 2 3 4 32 33 34]
Coordinates of elements centers
je ( e ) = row ( ej; e )
xc ( e ) = sum ( extract ( ⃗xj; je ( e ) ) ) 4 , yc ( e ) = sum ( extract ( ⃗yj; je ( e ) ) ) 4
Shape functions
Along dimension a
| Base functions
Φ1a ( ξ ) = 1 − ξ2 · ( 3 − 2 · ξ ) Φ2a ( ξ ) = ξ · a1 · ( 1 − ξ · ( 2 − ξ ) ) Φ3a ( ξ ) = ξ2 · ( 3 − 2 · ξ ) Φ4a ( ξ ) = ξ2 · a1 · ( -1 + ξ ) | First derivatives
Φ′1a ( ξ ) = -6 · ξa1 · ( 1 − ξ ) Φ′2a ( ξ ) = 1 − ξ · ( 4 − 3 · ξ ) Φ′3a ( ξ ) = 6 · ξa1 · ( 1 − ξ ) Φ′4a ( ξ ) = -ξ · ( 2 − 3 · ξ ) | Second derivatives
Φ″1a ( ξ ) = - 6a12 · ( 1 − 2 · ξ ) Φ″2a ( ξ ) = - 2a1 · ( 2 − 3 · ξ ) Φ″3a ( ξ ) = 6a12 · ( 1 − 2 · ξ ) Φ″4a ( ξ ) = - 2a1 · ( 1 − 3 · ξ ) |
Along dimension b
| Base functions
Φ1b ( η ) = 1 − η2 · ( 3 − 2 · η ) Φ2b ( η ) = η · b1 · ( 1 − η · ( 2 − η ) ) Φ3b ( η ) = η2 · ( 3 − 2 · η ) Φ4b ( η ) = η2 · b1 · ( -1 + η ) | First derivatives
Φ′1b ( η ) = -6 · ηb1 · ( 1 − η ) Φ′2b ( η ) = 1 − η · ( 4 − 3 · η ) Φ′3b ( η ) = 6 · ηb1 · ( 1 − η ) Φ′4b ( η ) = -η · ( 2 − 3 · η ) | Second derivatives
Φ″1b ( η ) = - 6b12 · ( 1 − 2 · η ) Φ″2b ( η ) = - 2b1 · ( 2 − 3 · η ) Φ″3b ( η ) = 6b12 · ( 1 − 2 · η ) Φ″4b ( η ) = - 2b1 · ( 1 − 3 · η ) |
| For vertical displacements w
N1,w ( ξ; η ) = Φ1a ( ξ ) · Φ1b ( η ) N2,w ( ξ; η ) = Φ3a ( ξ ) · Φ1b ( η ) N3,w ( ξ; η ) = Φ3a ( ξ ) · Φ3b ( η ) N4,w ( ξ; η ) = Φ1a ( ξ ) · Φ3b ( η ) | For rotations θₓ
N1,θₓ ( ξ; η ) = Φ2a ( ξ ) · Φ1b ( η ) N2,θₓ ( ξ; η ) = Φ4a ( ξ ) · Φ1b ( η ) N3,θₓ ( ξ; η ) = Φ4a ( ξ ) · Φ3b ( η ) N4,θₓ ( ξ; η ) = Φ2a ( ξ ) · Φ3b ( η ) | For rotations θᵧ
N1,θᵧ ( ξ; η ) = Φ1a ( ξ ) · Φ2b ( η ) N2,θᵧ ( ξ; η ) = Φ3a ( ξ ) · Φ2b ( η ) N3,θᵧ ( ξ; η ) = Φ3a ( ξ ) · Φ4b ( η ) N4,θᵧ ( ξ; η ) = Φ1a ( ξ ) · Φ4b ( η ) |
For twist ψ
N1,ψ ( ξ; η ) = Φ2a ( ξ ) · Φ2b ( η )
N2,ψ ( ξ; η ) = Φ4a ( ξ ) · Φ2b ( η )
N3,ψ ( ξ; η ) = Φ4a ( ξ ) · Φ4b ( η )
N4,ψ ( ξ; η ) = Φ2a ( ξ ) · Φ4b ( η )
Shape functions vector
N ( i; ξ; η ) = take ( i; N1,w ( ξ; η ) ; N1,θₓ ( ξ; η ) ; N1,θᵧ ( ξ; η ) ; N1,ψ ( ξ; η ) ; N2,w ( ξ; η ) ; N2,θₓ ( ξ; η ) ; N2,θᵧ ( ξ; η ) ; N2,ψ ( ξ; η ) ; N3,w ( ξ; η ) ; N3,θₓ ( ξ; η ) ; N3,θᵧ ( ξ; η ) ; N3,ψ ( ξ; η ) ; N4,w ( ξ; η ) ; N4,θₓ ( ξ; η ) ; N4,θᵧ ( ξ; η ) ; N4,ψ ( ξ; η ) )
Constitutive matrix (stress - strain relationship)
D = E · t312 · ( 1 − ν2 ) · [1; ν; 0 | ν; 1; 0 | 0; 0; 1 − ν2] = 35000 · 0.1312 · ( 1 − 0.152 ) · [1; 0.15; 0 | 0.15; 1; 0 | 0; 0; 1 − 0.152] = 2.980.4480 0.4482.980 001.27
Strain-displacement matrix
B1 ( j; ξ; η ) = take ( j; Φ″1a ( ξ ) · Φ1b ( η ) ; Φ″2a ( ξ ) · Φ1b ( η ) ; Φ″1a ( ξ ) · Φ2b ( η ) ; Φ″2a ( ξ ) · Φ2b ( η ) ; Φ″3a ( ξ ) · Φ1b ( η ) ; Φ″4a ( ξ ) · Φ1b ( η ) ; Φ″3a ( ξ ) · Φ2b ( η ) ; Φ″4a ( ξ ) · Φ2b ( η ) ; Φ″3a ( ξ ) · Φ3b ( η ) ; Φ″4a ( ξ ) · Φ3b ( η ) ; Φ″3a ( ξ ) · Φ4b ( η ) ; Φ″4a ( ξ ) · Φ4b ( η ) ; Φ″1a ( ξ ) · Φ3b ( η ) ; Φ″2a ( ξ ) · Φ3b ( η ) ; Φ″1a ( ξ ) · Φ4b ( η ) ; Φ″2a ( ξ ) · Φ4b ( η ) )
B2 ( j; ξ; η ) = take ( j; Φ1a ( ξ ) · Φ″1b ( η ) ; Φ2a ( ξ ) · Φ″1b ( η ) ; Φ1a ( ξ ) · Φ″2b ( η ) ; Φ2a ( ξ ) · Φ″2b ( η ) ; Φ3a ( ξ ) · Φ″1b ( η ) ; Φ4a ( ξ ) · Φ″1b ( η ) ; Φ3a ( ξ ) · Φ″2b ( η ) ; Φ4a ( ξ ) · Φ″2b ( η ) ; Φ3a ( ξ ) · Φ″3b ( η ) ; Φ4a ( ξ ) · Φ″3b ( η ) ; Φ3a ( ξ ) · Φ″4b ( η ) ; Φ4a ( ξ ) · Φ″4b ( η ) ; Φ1a ( ξ ) · Φ″3b ( η ) ; Φ2a ( ξ ) · Φ″3b ( η ) ; Φ1a ( ξ ) · Φ″4b ( η ) ; Φ2a ( ξ ) · Φ″4b ( η ) )
B3 ( j; ξ; η ) = 2 · take ( j; Φ′1a ( ξ ) · Φ′1b ( η ) ; Φ′2a ( ξ ) · Φ′1b ( η ) ; Φ′1a ( ξ ) · Φ′2b ( η ) ; Φ′2a ( ξ ) · Φ′2b ( η ) ; Φ′3a ( ξ ) · Φ′1b ( η ) ; Φ′4a ( ξ ) · Φ′1b ( η ) ; Φ′3a ( ξ ) · Φ′2b ( η ) ; Φ′4a ( ξ ) · Φ′2b ( η ) ; Φ′3a ( ξ ) · Φ′3b ( η ) ; Φ′4a ( ξ ) · Φ′3b ( η ) ; Φ′3a ( ξ ) · Φ′4b ( η ) ; Φ′4a ( ξ ) · Φ′4b ( η ) ; Φ′1a ( ξ ) · Φ′3b ( η ) ; Φ′2a ( ξ ) · Φ′3b ( η ) ; Φ′1a ( ξ ) · Φ′4b ( η ) ; Φ′2a ( ξ ) · Φ′4b ( η ) )
B ( j; ξ; η ) = [B1 ( j; ξ; η ) ; B2 ( j; ξ; η ) ; B3 ( j; ξ; η ) ]
x1 ( e ) = ⃗xj.ej.e,1 , y1 ( e ) = ⃗yj.ej.e,1
The elements of the stiffness matrix will be calculated by using the equation
Ke,ij = a1 · b1 · 1∫0 1∫0 Bi ( ξ; η ) T · D · Bj ( ξ; η ) dξ dη
Element stiffness matrix
(above the main diagonal only)BTDBe ( i; j; ξ; η ) = transp ( B ( i; ξ; η ) ) · D · B ( j; ξ; η )
Ke ( i; j ) = a1 · b1 · 1∫0 1∫0 BTDBe ( i; j; ξ; η ) dη dξ
$Repeat{$Repeat{Ke.i,j = Ke ( i; j ) for j = i...n} for i = 1...n} = 0.333
Ke = 35.199.789.782.02-17.296.26-0.8270.488-0.6142.692.69-1.05-17.29-0.8276.260.488 05.732.470.935-6.261.72-0.4880.15-2.691.261.05-0.332-0.8270.2390.488-0.119 005.730.935-0.8270.4880.239-0.119-2.691.051.26-0.332-6.26-0.4881.720.15 0000.333-0.4880.150.119-0.0549-1.050.3320.332-0.0786-0.4880.1190.15-0.0549 000035.19-9.789.78-2.02-17.290.8276.26-0.488-0.614-2.692.691.05 000005.73-2.470.9350.8270.239-0.488-0.1192.691.26-1.05-0.332 0000005.73-0.935-6.260.4881.72-0.15-2.69-1.051.260.332 00000000.3330.4880.119-0.15-0.05491.050.332-0.332-0.0786 0000000035.19-9.78-9.782.02-17.29-6.260.8270.488 0000000005.732.47-0.9356.261.72-0.488-0.15 00000000005.73-0.9350.8270.4880.2390.119 000000000000.333-0.488-0.15-0.119-0.0549 00000000000035.199.78-9.78-2.02 00000000000005.73-2.47-0.935 000000000000005.730.935 0000000000000000.333
Element load vector
Fe,i = a1 · b1 · 1∫0 1∫0 Ni ( ξ; η ) T · q dξ dη
⃗Fe = [2.5 0.417 0.417 0.0694 2.5 -0.417 0.417 -0.0694 2.5 -0.417 -0.417 0.0694 2.5 0.417 -0.417 -0.0694] kN
Global stiffness matrix
K = 10209.789.782.02-17.29-0.8276.260.488000000000000⋯0 9.7810202.470.935-0.8270.2390.488-0.119000000000000⋯0 9.782.4710200.935-6.26-0.4881.720.15000000000000⋯0 2.020.9350.9350.333-0.4880.1190.15-0.0549000000000000⋯0 -17.29-0.827-6.26-0.488102019.5600-17.29-0.8276.260.48800000000⋯0 -0.8270.239-0.4880.11919.5611.4600-0.8270.2390.488-0.11900000000⋯0 6.260.4881.720.150010201.87-6.26-0.4881.720.1500000000⋯0 0.488-0.1190.15-0.0549001.870.667-0.4880.1190.15-0.054900000000⋯0 0000-17.29-0.827-6.26-0.488102019.5600-17.29-0.8276.260.4880000⋯0 0000-0.8270.239-0.4880.11919.5611.4600-0.8270.2390.488-0.1190000⋯0 00006.260.4881.720.150010201.87-6.26-0.4881.720.150000⋯0 00000.488-0.1190.15-0.0549001.870.667-0.4880.1190.15-0.05490000⋯0 00000000-17.29-0.827-6.26-0.488102019.5600-17.29-0.8276.260.488⋯0 00000000-0.8270.239-0.4880.11919.5611.4600-0.8270.2390.488-0.119⋯0 000000006.260.4881.720.150010201.87-6.26-0.4881.720.15⋯0 000000000.488-0.1190.15-0.0549001.870.667-0.4880.1190.15-0.0549⋯0 000000000000-17.29-0.827-6.26-0.48810209.78-9.78-2.02⋯0 000000000000-0.8270.239-0.4880.1199.781020-2.47-0.935⋯0 0000000000006.260.4881.720.15-9.78-2.4710200.935⋯0 0000000000000.488-0.1190.15-0.0549-2.02-0.9350.9350.333⋯0 ⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋮⋱⋮00000000000000000000⋯0.333
Global load vector
⃗F = [2.5 0.417 0.417 0.0694 5 0.833 0 0 5 0.833 0 0 5 0.833 0 0 2.5 0.417 -0.417 -0.0694 ... 0.0694] kN
Solution of the system of equations
⃗Z = clsolve ( K; ⃗F ) = [0 0 0 3.3 0 2.84 0 2.09 0 3.91 0 0 0 2.84 0 -2.09 0 0 0 -3.3 ... 3.3] mm
Joint displacements
transp ( Wz ) = 0000000 02.584.214.754.212.580 03.595.876.635.873.590 02.584.214.754.212.580 0000000 mm
w (a2; b2) = w (62; 42) = 6.63 mm
Bending moments
Zj ( j ) = slice ( ⃗Z; k1 · ( j − 1 ) + 1; k1 · j )
Ze ( e ) = [Zj ( ej.e,1 ) ; Zj ( ej.e,2 ) ; Zj ( ej.e,3 ) ; Zj ( ej.e,4 ) ]
Results for element 15 and joint 18:⃗Ze = Ze ( e ) = Ze ( 15 ) = [6.63 0 0 0 5.87 -1.52 0 0 4.21 -1.08 -3.2 0.84 4.75 0 -3.62 0] mm
Me ( x; y ) = -D · B (xa1; yb1) · Ze ( e ) !!!
⃗Me = Me ( 0; 0 ) = [6.28 12.74 0] kNm/m
Average bending moments at joints, kNm/m
Mj = 00.5280.5940.52800.08454.115.454.110.08450.1014.66.254.60.1010.1054.66.284.60.105⋯0 00.07920.08920.079200.5635.847.045.840.5630.6759.0811.339.080.6750.70210.112.7410.10.702⋯0 -8.38-5.3105.318.38-6.18-4.2204.226.18-3.05-2.1302.133.0500000⋯-8.38
Bending moments for the plate
Bending moments - Mx
transp ( Mx ) = 00.08450.1010.1050.1010.08450 0.5284.114.64.64.64.110.528 0.5945.456.256.286.255.450.594 0.5284.114.64.64.64.110.528 00.08450.1010.1050.1010.08450 kNm/m
Maximal value - Mx (a2; b2) = Mx (62; 42) = 6.28 kNm/m
Bending moments My
transp ( My ) = 00.5630.6750.7020.6750.5630 0.07925.849.0810.19.085.840.0792 0.08927.0411.3312.7411.337.040.0892 0.07925.849.0810.19.085.840.0792 00.5630.6750.7020.6750.5630 kNm/m
Maximal value - My (a2; b2) = My (62; 42) = 12.74 kNm/m
Bending moments Mxy
transp ( Mxy ) = -8.38-6.18-3.0503.056.188.38 -5.31-4.22-2.1302.134.225.31 0000000 5.314.222.130-2.13-4.22-5.31 8.386.183.050-3.05-6.18-8.38 kNm/m
Maximal value - Mxy ( 0; 0 ) = -8.38 kNm/m
Spotted an error? Edit these examples.

