How to transform a mass matrix de dim 12*12 into 6*6 ?
1 view (last 30 days)
Show older comments
Hi I want to do a model of FEM of a cantilever beam divided into two element (Three node) . I have a part of program that
estimate the mass matrix of 6 node of dim (12*12) but i want to transform this matrix into dim 6*6.
Please help me.
% node# unused xyz
node=[1 0 0 0 0 0 0;
2 0 0 0 0 1 0;
3 0 0 0 0 2 0;
4 0 0 0 1 1 1];
elt=[
%node1 node2 pe ie refnode
1 2 1 1 4 0 %longerons
2 3 1 1 4 0];
% matid matType E nu rho
pe=[1 1 7.2e+10 3.0e-01 2.7e+03];
% secId SecType J i1 i2 A
ie=[1 1 5e-09 5e-09 5e-09 2e-05
2 1 5e-09 5e-09 5e-09 2e-05
3 1 5e-09 5e-09 5e-09 2e-09];
opt=[1 2 3];
% element matrix assembly
pe = pe(find(pe(:,1)==elt(1,3)),3:size(pe,2));
ie = ie(find(ie(:,1)==elt(1,4)),3:size(ie,2));
if length(pe)==3 pe=[pe 0]; end
if pe(4)==0 pe(4)=pe(1)/2/(1+pe(2)); end
x = [find(node(:,1)==elt(1,1));find(node(:,1)==elt(1,2))];
idof = [(1:6)/100+elt(1,1) (1:6)/100+elt(1,2)];
x = node(x,5:7);
l = norm(x(2,:)-x(1,:)); l2 = l^2;
% mass - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
if ~isempty([1 3]==opt(1))
m = zeros(12);
ind = [1 7]; m(ind,ind) = [1 .5;.5 1]/3 * ie(4);
ind = [4 10]; m(ind,ind) = [1 .5;.5 1]/3*ie(1);
ind = [2 6 8 12]; m(ind,ind) = ie(4) * ...
[78 11*l 27 -6.5*l; 11*l 2*l2 6.5*l -1.5*l2
27 6.5*l 78 -11*l ; -6.5*l -1.5*l2 -11*l 2*l2]/210;
ind = [3 5 9 11]; m(ind,ind) = ie(4) * ...
[78 -11*l 27 6.5*l;-11*l 2*l2 -6.5*l -1.5*l2
27 -6.5*l 78 11*l ; 6.5*l -1.5*l2 11*l 2*l2]/210;
m = (pe(3) * l) * m;
else
m = [];
end
0 Comments
Answers (1)
KSSV
on 22 Jun 2016
Hello.. This is purely a FEM question, how you can expect a FEM answer in MATLAB community? Any ways, it is quite a big code to go through. You may refer the following link for your reference:
0 Comments
See Also
Categories
Find more on Computational Geometry in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!