% --- Post-processing --- % Reshape displacements: each row = [ux, uy] for node U_nodes = reshape(U, 2, [])';
% 5. Post-processing % - Compute stresses, strains, reaction forces % - Visualize results Problem: Axially loaded bar with fixed-free boundary conditions. M-file: truss_1d.m
% Boundary conditions: fix left edge (nodes 1 and 4) fixed_dofs = [1, 2; % Node 1: DOF 1 (ux), DOF 2 (uy) 4, 2]; % Node 4: DOF 2? Actually Node 4 DOF 7 and 8 % Convert to global DOF numbering (2 DOF per node) % Global DOF: (node-1)*2 + 1 for ux, +2 for uy fixed_global = []; for i = 1:size(fixed_dofs,1) node = fixed_dofs(i,1); dof_type = fixed_dofs(i,2); % 1=ux, 2=uy fixed_global = [fixed_global, (node-1)*2 + dof_type]; end
% Element stiffness matrix (2x2) ke = (E * A / L) * [1, -1; -1, 1]; matlab codes for finite element analysis m files
% Plot deformed shape plot(nodes, U, 'ro-', 'LineWidth', 2); xlabel('X (m)'); ylabel('Displacement (m)'); title('1D Truss Deformation'); grid on; Problem: Thin plate with a hole under tension (simplified mesh). M-file: cst_plate.m
% Assembly into global matrix dof_list = [n1, n2]; K_global(dof_list, dof_list) = K_global(dof_list, dof_list) + ke; end
% --- Solve --- U = K \ F;
% --- Solve --- U = K_global \ F_global;
disp('Nodal displacements (m):'); for i = 1:size(nodes,1) fprintf('Node %d: ux = %.4e, uy = %.4e\n', i, U_nodes(i,1), U_nodes(i,2)); end
% Elements (triangle connectivity: node1, node2, node3) elements = [1, 2, 3; 1, 3, 4]; % --- Post-processing --- % Reshape displacements: each
% Element stresses for e = 1:size(elements,1) n1 = elements(e,1); n2 = elements(e,2); L = nodes(n2) - nodes(n1); u1 = U(n1); u2 = U(n2); strain = (u2 - u1)/L; stress = E * strain; fprintf('Element %d: Strain = %.4e, Stress = %.2f MPa\n', e, strain, stress/1e6); end
% Plane stress constitutive matrix D = (E/(1-nu^2)) * [1, nu, 0; nu, 1, 0; 0, 0, (1-nu)/2];