Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Node 2 Element 2 Element 1 Node 3 8 Element 3 Node 4 Element 5 lement 9 Element

ID: 1711677 • Letter: N

Question

Node 2 Element 2 Element 1 Node 3 8 Element 3 Node 4 Element 5 lement 9 Element 7 Node 5 Node 6 Node 1 4m A is 0.01m, the Young's modulus E is 80GPa, and F is 9000kN

Explanation / Answer

% ------------------------------------------------------------------- % % *****Mat lab program****** % % With nodal cordinates, element positions, modulus, area, forces % and boundary conditions, the individual element stiffness matrices % are found. From this the global stiffness matrix is found and % using this to calculate displacement, stress, strain and torsion % are presented % % 01/11/2011 - J Whittington - University of Bath % Ref: Amit Visrolia [2011], Part 2: Beam FEA % % ------------------------------------------------------------------- % ------------------------------------------------------------------- %Clear variables clear all; % ************************************************************************* % **** PRE-PROCESSING **** % ************************************************************************* disp('PRE-PROCESSING...') %----Set up model to be analyised----% %Node positions nodes = [0,325; 20,400; 500,400; 400,0; 825,0]*1e-3; %Element connectivity matrix: C1 node 1, C2 node 2, R element no. element_positions = [1,2; 2,3; 3,4; 1,4; 4,5; 3,5]; %Element Youngs modulus, can be same for all or matrix element_modulus(1:size(element_positions,1),1) = 206*1e9; %Forces acting on nodes: C1 Fx, C2 Fy, C3 M1, R node no. nodal_force = [0,0,0; 0,-100,0; 0,-700,0; 0,0,0; 0,0,0]; %Boundary conditions on nodes: C1 Ux, C2 Uy, C3 M1, R node no. %1 fixed, 0 free nodal_boundary = [1,1,1; 0,0,0; 0,0,0; 0,0,0; 1,1,1]; %Element outer diameter, can be same for all or matrix with R element no. element_diameters(1:size(element_positions,1),1) = 40*1e-3; %Element inner diameter, can be same for all or matrix with R element no. element_diameters(1:size(element_positions,1),2) = 36*1e-3; %Type of element to be analised (rod, beam or frame) % element_type = 'frame' element_type = input('Element type (rod, beam, frame): ','s') %----End of user inputs----% %----Erroronous input catching----% if size(nodes,1) size(nodes,1) disp('Error: too many nodal forces') elseif size(nodal_boundary,1) > size(nodes,1) disp('Error: too many nodal boundaries') elseif nodal_boundary ~= 1 | 0 disp('Error: invalid boundary condition') end %---------------------------------% %Calculate element areas element_area = pi()*(((element_diameters(:,1).^2)/4)-((element_diameters(:,2).^2)/4)); %Find diamention of the model diamention = size(nodes,2); %Global DOF of the model globaldof = size(nodes,1)*size(nodes,2); %Scale to increase visability of deformation on plot scale=1000; %Plot the object design for i = 1:size(element_positions,1) org = line(nodes(element_positions(i,1:2),1),nodes(element_positions(i,1:2),2)); set(org,'Marker','o','MarkerSize',10,'MarkerFaceColor','r') end % ************************************************************************* % **** SOLVER **** % ************************************************************************* disp('SOLVING...') %Find individual element stiffnesses in global cord switch element_type case 'rod' %-----Create local stiffness matrix for each element-----% % Create 3d matrix to store K for each element Ke = zeros(4,4,size(element_positions,1)); for element = 1:size(element_positions,1) %Get parameters Ke_local = local_stiffness(nodes,element_positions,element_modulus,element_area,element_diameters,element_type,element); angle = theta( nodes, element_positions, element); T = trans_matrix(angle, element_type); %Transform the element local stiffness matrix to global Ke(:,:,element) = T' * Ke_local * T; end %-----Settings for globalising-----% %Prepare the global stiffness matrix K = zeros(globaldof,globaldof); %Select node addition node_depth = [1 2]; %Set node multiplier n_multi = 2; %Set flag not to skip moment in displacement scattering since not %there moment_skip = 0; %Remove moment forces and boundary cond if present in matrices nodal_force = [nodal_force(:,1),nodal_force(:,2)]; nodal_boundary = [nodal_boundary(:,1),nodal_boundary(:,2)]; case 'beam' % Create 3d matrix to store K for each element Ke = zeros(6,6,size(element_positions,1)); for element = 1:size(element_positions,1) %Get parameters Ke_local = local_stiffness(nodes,element_positions,element_modulus,element_area,element_diameters,element_type,element); angle = theta( nodes, element_positions, element); T = trans_matrix(angle, element_type); %Transform the element local stiffness matrix to global Ke(:,:,element) = T' * Ke_local * T; end %-----Settings for globalising-----% %Prepare the global stiffness matrix K = zeros(3*size(nodes,1),3*size(nodes,1)); %Set node depth node_depth = [1 2 3]; %Set node multiplier n_multi = 3; %Set flag to skip moment in displacement scattering moment_skip = 1; case 'frame' % Create 3d matrix to store K for each element Ke = zeros(6,6,size(element_positions,1)); for element = 1:size(element_positions,1) %Get parameters Ke_local = local_stiffness(nodes,element_positions,element_modulus,element_area,element_diameters,element_type,element); angle = theta( nodes, element_positions, element); T = trans_matrix(angle, element_type); %Transform the element local stiffness matrix to global Ke(:,:,element) = T' * Ke_local * T; end %-----Settings for globalising-----% %Prepare the global stiffness matrix K = zeros(3*size(nodes,1),3*size(nodes,1)); %Using diamention of object, select node addition node_depth = [1 2 3]; %Set node multiplier n_multi = 3; %Set flag to skip moment in displacement scattering moment_skip = 1; end %----------------------------------------% %-----Create global stiffness matrix-----% %----------------------------------------% %Construct global stiffness matrix for element = 1:size(element_positions,1) %Loop through nodes for local_node_number_r = 1:size(nodes,2) %Which global node does this refer too? global_node_number_r = element_positions(element,local_node_number_r); %Where do the terms belong in global matrix? local_index_r = n_multi*( local_node_number_r - 1 ) + node_depth; global_index_r = n_multi*( global_node_number_r - 1 ) + node_depth; %Loop each column within row for local_node_number_c = 1:size(nodes,2) %Which global node? global_node_number_c = element_positions(element,local_node_number_c); %Where do terms belong in global matrix? local_index_c = n_multi*( local_node_number_c - 1 ) + node_depth; global_index_c = n_multi*( global_node_number_c - 1 ) + node_depth; %Add terms correct places in global stiffness matrix K(global_index_r,global_index_c) = K(global_index_r, global_index_c) ... + Ke(local_index_r, local_index_c, element); end end end %----Convert force matrix to vector----% %Create empty force vector F(1:(size(nodes,1)*n_multi),1) = 0; %Zero column increment h = 1; %Convert force matrix to vector for node_r = 1:size(nodal_force,1) %For each row get the column force for node_c = 1:size(nodal_force,2) %Put the force into the vector F F(h) = nodal_force(node_r, node_c); h = h+1; end end %----Apply boundary conditions----% %First boundarys must be convertered to vector %Create empty boundary vector BC(1:(size(nodes,1)*n_multi),1) = 0; %Zero column increment h = 1; %Convert boundary matrix to vector for node_r = 1:size(nodal_boundary,1) %For each row get the column force for node_c = 1:size(nodal_boundary,2) %Put the force into the vector F BC(h) = nodal_boundary(node_r, node_c); h = h+1; end end %Loop to zero forces at boundaries for i = 1:size(BC,1) %If statement to set lines and columns coresponding to constrained %point to zero if BC(i) == 1 K(i,:) = 0; K(:,i) = 0; %Set diagonal term to 1 K(i,i) = 1; %Zero force at boundary F(i) = 0; end end %----------------------------------------% %--------Find nodal displacement---------% %----------------------------------------% %Calculate displacement matrix u = KF; % ************************************************************************* % **** POST-PROCESSING **** % ************************************************************************* disp('POST-PROCESSING...') %Convert displacement to nodal matrix nodal_displacement(size(nodes,1),size(nodes,2)) = zeros; h=1; for node_r = 1:size(nodes,1) for node_c = 1:size(nodes,2) nodal_displacement(node_r,node_c) = u(h); h=h+1; end %Flag to skip moment displacement since not used for strain h=h+moment_skip; end nodes_displaced = nodes+(scale*nodal_displacement(:,1:2)); % for i = 1:size(element_positions,1) % dis = line(nodes_displaced(element_positions(i,1:2),1),nodes_displaced(element_positions(i,1:2),2)); % set(dis,'LineStyle','--','Color','g','Marker','o','MarkerSize',5,'MarkerFaceColor','g') % end %Get length and change in length vectors L = length_ele( nodes, element_positions ); d_L = length_delta( nodes, element_positions, nodal_displacement(:,1:2)); %Create nodal_area scalor nodal_area(1:(size(nodes,1)*2),1) = 0; i = 1; for node_r = 1:size(element_area,1) for h = 1:2 nodal_area(i) = element_area(node_r); i=i+1; end end %Calculate and output stress and strain nodal_displacement strain = (d_L-L) ./ L stress = element_modulus .* strain forces = stress .* element_area
Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote