function svm = svm_node(n,x,y,elems,xc,yc,sig); % function svm = svm_node(nodes,elems,sig); % Interpolates element stresses to give stresses at a single node % % n = node number % x,y = node location % elems = elem connection (3 or 4 cols for triangle, quad) % sig = stresses (3,:); % % svm = von Mises stress at node % nargchk(6,6,nargin,'struct'); nelems = size(elems,1); if size(sig,2) ~= nelems | size(sig,1) ~= 3 error('Must provide three stresses per element'); end; % % find elements that use each node and distance to centroid % [enum,jj] = ind2sub(size(elems),find(elems==n)); if isempty(enum) svm = []; else dist = sqrt( (x-xc(enum)).^2 + (y-yc(enum)).^2 ); wt = dist/sum(dist); nsig = sig(:,enum)*wt(:); sigx = nsig(1); sigy = nsig(2); tauxy = nsig(3); svm = (sigx-sigy)^2 + 6*tauxy^2; svm = sqrt(svm/2); end;