Matlab Codes For Finite Element Analysis M Files Hot 〈Trusted Source〉

% solve.m function [U, elemStrain, elemStress] = solve() [nodes, elems, dirichlet, traction] = mesh(); [E, nu, C] = material(); [K, F, freeDOF, fixedDOF, nodeMap] = assemble(nodes, elems, dirichlet, traction, C); ndof = size(K,1); % enforce Dirichlet by zeroing rows/cols and placing ones on diagonal fixedDOF = sort(fixedDOF); for d=fixedDOF K(d,:) = 0; K(:,d) = 0; K(d,d) = 1; end % compute prescribed displacement vector (zero except prescribed values) U = zeros(ndof,1); for i=1:size(dirichlet,1) n = dirichlet(i,1); ux = dirichlet(i,2); uy = dirichlet(i,3); if ~isnan(ux); U(2 n-1)=ux; end if ~isnan(uy); U(2 n)=uy; end end % solve U = K\F + U; % accounts for prescribed values already included in RHS % element strains and stresses elemStrain = zeros(3,size(elems,1)); elemStress = zeros(3,size(elems,1)); for e=1:size(elems,1) enodes = elems(e,:); xy = nodes(enodes,:); [B, ~] = shape(xy); dof = reshape([2 enodes-1; 2 enodes],1,[]); ue = U(dof); eps = B ue; sigma = C eps; elemStrain(:,e) = eps; elemStress(:,e) = sigma; end end

end

% Solve the system u = K\F;