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