Uploaded by divyanshu.iisc

Optimal Design of a Table Stand for Vertical Loading

advertisement
OPTIMAL DESIGN OF A TABLE STAND FOR
VERTICAL LOADING
Term Paper
Centre for Product Design and Manufacturing
Indian Institute of Science
Bangalore-560012, INDIA
December 2011
Submitted By,
Divyanshu Joshi
07877
Ph.D
PROBLEM DESCRIPTION
To find the optimal distribution of cross-section area of a stand that supports vertical load. The
loading is taken as uniform over a circular domain. The stand is branched up to two levels, four
stems come out symmetrically at each level. The cross-section area is rectangular with depth is
constant specified at each level. The lengths are also specified. The generic diagram of the
system is given as follows,
Figure 1: Geometry of the problem
CONVERTING THE PROBLEM INTO MATHEMATICAL FORM
The above problem requires to be converted into mathematical form before solving. Converting
problem into mathematical form enables us to find the optimal design solutions using
optimization theories.
GEOMETRY OF THE PROBLEM
The equivalent useful geometric model of the problem is given in figure 1. Three stems are
shown having lengths L1, L2 and L3. The L2 makes the angle θ2 with L1 and L3 makes the angle θ3
with L2. Total vertical load on stem L3 is W/16 and total load of W/4 will be acting on L2 and
similarly stem L1 supports the total load of W. The lower end of the stem is assumed to be fixed
at ground and hence there is no displacement at bottom end of stem L 1. The location of point T
is chosen in such a way that the total vertical load is equally distributed over those 16 points.
Then the other branches can be replaced by reaction forces as in the figure 1. If H be the
normal height of the stand and r be the radius of circular domain of loading then θ1 and θ2 can
be found out from the following equation,
𝐻 = 𝐿1 + 𝐿2 cos πœƒ2 + 𝐿3 cos πœƒ3
𝑒 = 𝐿1 sin πœƒ2
L1, L2 and L3 are specified and e is the radial distance of point T from the centre of the circle and
is calculated as,
𝑒 =
4√2π‘Ÿ
3𝛱
Figure 2: Diagram of the Problem
VARIATIONAL FORMULATION AND OPTIMIZATION CRITERIA
Our ultimate goal is to find the optimal area distribution that supports the vertical load. Hence
the optimization criteria is to maximize the stiffness and therefore to minimize ∑16
𝑖=1 𝑃𝑖 π‘ˆπ‘§π‘– .
The vertical loading is supported at 16 points, Pi is the load at ith point, Uzi is the vertical
displacement of ith point.
Therefore in mathematical terms we have,
min 𝑃 cos πœƒ . π‘ˆ(𝑙) + 𝑃 sin πœƒ . 𝑀(𝑙)
Constrained to,
πœ†1 ∢ (𝐸𝐼𝑀 ′′ )′′ − 𝑃 sin πœƒ . 𝛿(π‘₯ − 𝑙) = 0
πœ†2 ∢ −(𝐸𝐴𝑒′ )′ − 𝑃 cos πœƒ . 𝛿(π‘₯ − 𝑙) = 0
𝑙
𝛬 ∢ ∫ 𝐴 𝑑π‘₯ − 𝑉 ∗ ≤ 0
0
Taking variational derivative with respect to A, u and w respectively,
πœ†2′ 𝐸𝑒′ + πœ†1′′ 𝐸𝛼𝑀 ′′ + 𝛬 = 0
−(πΈπ΄πœ†2′ )′ − 𝑃 cos πœƒ . 𝛿(π‘₯ − 𝑙) = 0
(πΈπΌπœ†1′′ )′′ − 𝑃 sin πœƒ . 𝛿(π‘₯ − 𝑙) = 0
∴ πœ†2 = 𝑒, πœ†1 = 𝑀 & − 𝛬 = 𝐸𝑒′′ 2 + 𝐸𝑒′ 2 + 𝐸𝛼𝑒′′ 2 π‘€β„Žπ‘’π‘Ÿπ‘’ 𝛼 =
𝑙
π‘Ž
OPTIMALITY CRITERIA ITERATION:
The problem is then solved using fixed point iteration method which evaluates the above
derived functions at each step. In this method we let the algorithm to evaluate the values of
function and keep iterate at each step and converge towards the optimal solution till it reaches
in tolerance zone. The optimality criteria iteration is given as,
πœ‚ (π‘˜)
𝐴(π‘˜+1)
𝛬(π‘˜) = (
𝐸𝑒′ 2 + 𝐸𝛼𝑀′′2
π‘˜
= 𝐴 (
)
𝛬
∑𝑛𝑒
𝑖=0 𝑙𝑖
′
𝐴𝑖 (𝐸𝑒 2 + 𝐸𝛼𝑀
𝑉∗
′′
1(π‘˜)
πœ‚ πœ‚
2)
)
FINITE ELEMENT FORMULATION OF THE STRUCTURE
In order to evaluate the load and corresponding stiffness at each step we need a finite element
model of the various stems of the structure because of the L2 and L3 not being vertical. The
structure is divided into finite bar element of 1 degree of freedom over length L 1 and finite
beam element of 3 degrees of freedom over the lengths L2 and L3. Force and displacement
boundary conditions are specified in the figure 1. The finite element bar and beam element
arbitrarily oriented in space are shown in figure 2 as follows,
Figure 3: FEM model for a typical stem
MATLAB CODE FOR SOLVING THE OPTIMIZATION PROBLEM
The MATLAB code for the optimizing desired problem has basically three main routines. First
routine evaluates the updated values of function at each step with various inputs and is set to
stop once the desired solution reaches within the vicinity of tolerance. Second routine
calculates the updated area of cross-section and the first body fetches the value of updated
area from second one. The third routine evaluates the displacement at each step and gives it to
second body in order to calculate the area.
FIRST ROUTINE (OPTIMALITY CRITERIA):
clc; clear all; close all;
tic
n1 = 100;
n2 = 150;
n3 = 30;
H = 1;
L1 = 0.4;
L2 = 0.6;
L3 = 0.1;
d1 = 0.04;
d2 = 0.02;
d3 = 0.01;
A10 = 0.005;
A20 = 0.00125;
A30 = 3.1250e-004;
E = 200e9;
r = 0.6;
e = 4*sqrt(2)*r/(3*pi);
theta2 = asin(e/L2);
theta3 = acos((H-L1-L2*cos(theta2))/L3);
l1 = zeros(n1,1);
l2 = zeros(n2,1);
l3 = zeros(n3,1);
A1 = zeros(n1,1);
A2 = zeros(n2,1);
A3 = zeros(n3,1);
I2 = zeros(n2,1);
I3 = zeros(n3,1);
E1 = zeros(n1,1);
E2 = zeros(n2,1);
E3 = zeros(n3,1);
W = 750;
F3 = W/16;
F2 = 3*W/16;
F1 = 3*W/4;
eta = 0.2;
tol = 10e-10;
%V_star = L1*A10+L2*A20+L3*A30;
%V_star = V_star*0.6;
V_star = 1*10^-3;
for i = 1:1:n1
l1(i) = L1/n1;
%A1(i) = A10;
A1(i) = A10*(1+0.4*(i-n1/2)/n1);
E1(i) = E;
end
for i = 1:1:n2
l2(i) = L2/n2;
%A2(i) = A20;
A2(i) = A20*(1+0.4*(i-n2/2)/n2);
I2(i) = A2(i)*d2^2/12;
E2(i) = E;
end
for i = 1:1:n3
l3(i) = L3/n3;
%A3(i) = A30;
A3(i) = A30*(1+0.4*(i-n3/2)/n3);
I3(i) = A3(i)*d3^2/12;
E3(i) = E;
end
%for i = 1:1:1
while 1
A_prev = [A1;A2;A3];
[A1,A2,A3] =
optimal_A(n1,n2,n3,theta2,theta3,l1,l2,l3,A1,A2,A3,I2,I3,E1,E2,E3,F1,F2,F3,et
a,V_star);
if norm([A1;A2;A3]-A_prev,inf) < tol
break
end
end
A = [A1;A2;A3];
L1 = sum(l1);
L2 = sum(l2);
L3 = sum(l3);
x1 = 0;
y1 = 0;
for i=1:1:n1
rectangle('Position',[x1,y1,A1(i)/d1,l1(i)])
if i == n1
break;
end
x1 = x1+(A1(i)-A1(i+1))/(2*d1);
y1 = y1+l1(i);
end
axis equal
figure
x2 = 0;
y2 = 0;
for i=1:1:n2
rectangle('Position',[x2,y2,A2(i)/d2,l2(i)])
if i == n2
break;
end
x2 = x2+(A2(i)-A2(i+1))/(2*d2);
y2 = y2+l2(i);
end
axis equal
figure
x3 = 0;
y3 = 0;
for i=1:1:n3
rectangle('Position',[x3,y3,A3(i)/d3,l3(i)])
if i == n3
break;
end
x3 = x3+(A3(i)-A3(i+1))/(2*d3);
y3 = y3+l3(i);
end
axis equal
toc
SECOND ROUTINE (CALCULATION OF AREA):
function [A1,A2,A3] =
optimal_A(n1,n2,n3,theta2,theta3,l1,l2,l3,A1,A2,A3,I2,I3,E1,E2,E3,F1,F2,F3,et
a,V_star)
[u,w] =
fem_stand(n1,n2,n3,theta2,theta3,l1,l2,l3,A1,A2,A3,I2,I3,E1,E2,E3,F1,F2,F3);
u_x1 = zeros(n1,1);
u_x2 = zeros(n2,1);
u_x3 = zeros(n3,1);
w_x2 = zeros(n2,1);
w_x3 = zeros(n3,1);
w_xx2 = zeros(n2,1);
w_xx3 = zeros(n3,1);
for i = 1:1:n1
u_x1(i) = (u(i+1)-u(i))/l1(i);
end
u_elem2 = zeros(n2+1,1);
w_elem2 = zeros(n2+1,1);
j = 1;
for i = n1+1:1:n1+n2+1
u_elem2(j) = u(i)*cos(theta2)+w(i)*sin(theta2);
w_elem2(j) = -u(i)*sin(theta2)+w(i)*cos(theta2);
j = j+1;
end
for i = 1:1:n2
u_x2(i) = (u_elem2(i+1)-u_elem2(i))/l2(i);
w_x2(i) = (w_elem2(i+1)-w_elem2(i))/l2(i);
end
w_xx2(1) = w_x2(2)/(2*l2(1));
w_xx2(n2) = -w_x2(n2-1)/(2*l2(n2));
for i = 2:1:n2-1
w_xx2(i) = (w_x2(i+1)-w_x2(i-1))/(2*l2(i));
end
u_elem3 = zeros(n3+1,1);
w_elem3 = zeros(n3+1,1);
j = 1;
for i = n1+n2+1:1:n1+n2+n3+1
u_elem3(j) = u(i)*cos(theta3)+w(i)*sin(theta3);
w_elem3(j) = -u(i)*sin(theta3)+w(i)*cos(theta3);
j = j+1;
end
for i = 1:1:n3
u_x3(i) = (u_elem3(i+1)-u_elem3(i))/l3(i);
w_x3(i) = (w_elem3(i+1)-w_elem3(i))/l3(i);
end
w_xx3(1) = w_x3(2)/(2*l3(1));
w_xx3(n3) = -w_x3(n3-1)/(2*l3(n3));
for i = 2:1:n3-1
w_xx3(i) = (w_x3(i+1)-w_x3(i-1))/(2*l3(i));
end
sum = 0;
for i = 1:1:n1
sum = sum+l1(i)*A1(i)*(E1(i)*u_x1(i)^2)^eta;
end
for i = 1:1:n2
sum = sum+l2(i)*A2(i)*(E2(i)*u_x2(i)^2+E2(i)*I2(i)/A2(i)*w_xx2(i)^2)^eta;
end
for i = 1:1:n3
sum = sum+l3(i)*A3(i)*(E3(i)*u_x3(i)^2+E3(i)*I3(i)/A3(i)*w_xx3(i)^2)^eta;
end
lamda = ((sum)/V_star)^(1/eta);
for i = 1:1:n1
A1(i) = A1(i)*((E1(i)*u_x1(i)^2)/lamda)^eta;
end
for i = 1:1:n2
A2(i) = A2(i)*((E2(i)*u_x2(i)^2+E2(i)*I2(i)/A2(i)*w_xx2(i)^2)/lamda)^eta;
end
for i = 1:1:n3
A3(i) = A3(i)*((E3(i)*u_x3(i)^2+E3(i)*I3(i)/A3(i)*w_xx3(i)^2)/lamda)^eta;
end
THIRD ROUTINE (FEM FORMULATION):
function [u,w] =
fem_stand(n1,n2,n3,theta2,theta3,l1,l2,l3,A1,A2,A3,I2,I3,E1,E2,E3,F1,F2,F3)
K1 = zeros(2,2,n1);
K2 = zeros(6,6,n2);
K3 = zeros(6,6,n3);
K = zeros(6,6);
R2 = rot_matrix(pi/2-theta2);
R3 = rot_matrix(pi/2-theta3);
for i = 1:1:n1
K1(:,:,i) = A1(i)*E1(i)/l1(i)*[1,-1;-1,1];
end
for i = 1:1:n2
K(1,1) = A2(i)*E2(i)/l2(i);
K(1,4) = -A2(i)*E2(i)/l2(i);
K(4,1) = -A2(i)*E2(i)/l2(i);
K(4,4) = A2(i)*E2(i)/l2(i);
K(2:3,2:3) = E2(i)*I2(i)/l2(i)^3*[12,6*l2(i);6*l2(i),4*l2(i)^2];
K(2:3,5:6) = E2(i)*I2(i)/l2(i)^3*[-12,6*l2(i);-6*l2(i),4*l2(i)^2];
K(5:6,2:3) = E2(i)*I2(i)/l2(i)^3*[-12,-6*l2(i);6*l2(i),4*l2(i)^2];
K(5:6,5:6) = E2(i)*I2(i)/l2(i)^3*[12,-6*l2(i);-6*l2(i),4*l2(i)^2];
K2(:,:,i) = R2'*K*R2;
end
for i = 1:1:n3
K(1,1) = A3(i)*E3(i)/l3(i);
K(1,4) = -A3(i)*E3(i)/l3(i);
K(4,1) = -A3(i)*E3(i)/l3(i);
K(4,4) = A3(i)*E3(i)/l3(i);
K(2:3,2:3) = E3(i)*I3(i)/l3(i)^3*[12,6*l3(i);6*l3(i),4*l3(i)^2];
K(2:3,5:6) = E3(i)*I3(i)/l3(i)^3*[-12,6*l3(i);-6*l3(i),4*l3(i)^2];
K(5:6,2:3) = E3(i)*I3(i)/l3(i)^3*[-12,-6*l3(i);6*l3(i),4*l3(i)^2];
K(5:6,5:6) = E3(i)*I3(i)/l3(i)^3*[12,-6*l3(i);-6*l3(i),4*l3(i)^2];
K3(:,:,i) = R3'*K*R3;
end
K = assembly(K1,K2,K3);
F = zeros(size(K,1),1);
F(n1+1,1) = -F1;
F(n1+3*n2+1,1) = -F2;
F(size(K,1)-2,1) = -F3;
K_reduced = K(2:size(K,1),2:size(K,1));
K_reduced1 =
[K_reduced(1:n1,1:n1),K_reduced(1:n1,n1+3:size(K_reduced));K_reduced(n1+3:siz
e(K_reduced),1:n1),K_reduced(n1+3:size(K_reduced),n1+3:size(K_reduced))];
%K_reduced2 = [K_reduced1(1:n1+3*n2-2,1:n1+3*n2-2),K_reduced1(1:n1+3*n22,n1+3*n2+1:size(K_reduced1));K_reduced1(n1+3*n2+1:size(K_reduced1),1:n1+3*n2
-2),K_reduced1(n1+3*n2+1:size(K_reduced1),n1+3*n2+1:size(K_reduced1))];
F_reduced = F(2:size(F));
F_reduced1 = [F_reduced(1:n1);F_reduced(n1+3:size(K_reduced))];
%F_reduced2 = [F_reduced1(1:n1+3*n22);F_reduced1(n1+3*n2+1:size(F_reduced1))];
u_all1 = K_reduced1\F_reduced1;
%u_all2 = K_reduced2\F_reduced2;
%u_all = [u_all2(1:n1);0;0;u_all2(n1+1:n1+3*n2-2);0;0;u_all2(n1+3*n21:size(u_all2))];
u_all = [u_all1(1:n1);0;0;u_all1(n1+1:size(u_all1))];
u2 = zeros(n2,1);
j = 1;
for i = n1+3:3:n1+n2*3
u2(j) = u_all(i);
j = j+1;
end
j = 1;
u3 = zeros(n3,1);
for i = n1+(n2+1)*3:3:n1+(n2+n3)*3
u3(j) = u_all(i);
j = j+1;
end
u = [0;u_all(1:n1,1);u2;u3];
w2 = zeros(n2+1,1);
j = 1;
for i = n1+1:3:n1+n2*3+1
w2(j) = u_all(i);
j = j+1;
end
j = 1;
w3 = zeros(n3,1);
for i = n1+(n2+1)*3+1:3:n1+(n2+n3)*3+1
w3(j) = u_all(i);
j = j+1;
end
w = [zeros(n1,1);w2;w3];
FEM SUPPORT ROUTINES:
In addition with main routine of FEM there are two additional routines helping to complete the
job of main FEM routine. They are,
STIFFNESS MATRIX ASSEMBLY:
function K = assembly(K1,K2,K3)
K = zeros((size(K1,3)+1)+(size(K2,3)+1)*3+(size(K3,3)+1)*3-1-3);
for i = 1:1:size(K1,3)
K_updater = zeros((size(K1,3)+1)+(size(K2,3)+1)*3+(size(K3,3)+1)*3-1-3);
K_updater(i:i+1,i:i+1) = K1(:,:,i);
K = K+K_updater;
end
for i = 1:1:size(K2,3)
K_updater = zeros((size(K1,3)+1)+(size(K2,3)+1)*3+(size(K3,3)+1)*3-1-3);
K_updater(size(K1,3)+(i-1)*3+1:size(K1,3)+(i-1)*3+6,size(K1,3)+(i1)*3+1:size(K1,3)+(i-1)*3+6) = K2(:,:,i);
K = K+K_updater;
end
for i = 1:1:size(K3,3)
K_updater = zeros((size(K1,3)+1)+(size(K2,3)+1)*3+(size(K3,3)+1)*3-1-3);
K_updater(size(K1,3)+size(K2,3)*3+(i-1)*3+1:size(K1,3)+size(K2,3)*3+(i1)*3+6,size(K1,3)+size(K2,3)*3+(i-1)*3+1:size(K1,3)+size(K2,3)*3+(i-1)*3+6) =
K3(:,:,i);
K = K+K_updater;
end
ROTATION MATRIX:
function R = rot_matrix(phi)
r = [cos(phi),sin(phi);-sin(phi),cos(phi)];
R = blkdiag(r,1,r,1);
Apart from it the code for plotting the desired geometry of stems is given as follows,
A = [A1;A2;A3];
L1 = sum(l1);
L2 = sum(l2);
L3 = sum(l3);
x1 = 0;
y1 = 0;
for i=1:1:n1
rectangle('Position',[x1,y1,A1(i)/d1,l1(i)])
if i == n1
break;
end
x1 = x1+(A1(i)-A1(i+1))/(2*d1);
y1 = y1+l1(i);
end
axis equal
figure
x2 = 0;
y2 = 0;
for i=1:1:n2
rectangle('Position',[x2,y2,A2(i)/d2,l2(i)])
if i == n2
break;
end
x2 = x2+(A2(i)-A2(i+1))/(2*d2);
y2 = y2+l2(i);
end
axis equal
figure
x3 = 0;
y3 = 0;
for i=1:1:n3
rectangle('Position',[x3,y3,A3(i)/d3,l3(i)])
if i == n3
break;
end
x3 = x3+(A3(i)-A3(i+1))/(2*d3);
y3 = y3+l3(i);
end
axis equal
GIVEN DATA AND INITIAL CONDITIONS:
The above problem is then solved using the various parameters and initial conditions given as
follows,
Table 1: Given data and initial conditions
PARAMETER
Total Vertical Height (H)
Length of First Stem (L1)
Length of First Stem (L2)
Length of First Stem (L3)
Cross-Sectional Width of First Stem (d1)
Cross-Sectional Width of First Stem (d2)
Cross-Sectional Width of First Stem (d3)
Young's Modulus of the Material (E)
Radial Distance of Point 'T' from Centre
Total Load (W)
Stabilization Parameter (η)
VALUE
1m
0.4 m
0.6 m
0.1 m
0.04 m
0.02 m
0.01 m
200 Gpa
0.6 m
750 Kg
1*10^-3
Here a parameter called stabilization parameter (η) is introduced to prevent the algorithm from
instabilities. In order to prove the robustness of algorithm, the initial area was set to be the
decreasing uniformly with each finite element to half of its value at other end. The total
number of elements in each stem was set to be 50.
RESULTS
On solving the problem with above stated conditions it is found that the first and third stem
take the uniform rectangular shape as optimal shape whereas the second stem remains to be
the converging to top slightly. The optimal design solutions of above problem are given as
follows,
Figure 4: Optimized shape of first stem
Figure 5: Optimized shape of second stem
Figure 6: Optimized shape of third stem
Download