You are on page 1of 2

25/7/22 12:05 PM C:\Users\ppaat\Documen...\rotormtx.

m 1 of 2

function [M0,C0,C1,K0,K1] = rotormtx(model)

Node_Def = model.node;
Shaft_Def = model.shaft;
Disc_Def = model.disc;

% determine the number of degrees of freedom and initialise matrices

[nnode,ncol_node] = size(Node_Def);
ndof = 4*nnode;
if ncol_node == 1
Node_Def = [(1:nnode)' Node_Def];
end

M0 = zeros(ndof,ndof);
K0 = zeros(ndof,ndof);
K1 = zeros(ndof,ndof);
C0 = zeros(ndof,ndof);
C1 = zeros(ndof,ndof);

[nshaft,ncol_shaft] = size(Shaft_Def);
[ndisc,ncol_disc] = size(Disc_Def);

% add shaft elements into matrices


for i = 1:nshaft
Shaft_Type = round(Shaft_Def(i,1));

n1 = Shaft_Def(i,2);
n2 = Shaft_Def(i,3);
dof = [4*n1-3:4*n1 4*n2-3:4*n2];
Le = Node_Def(n2,2) - Node_Def(n1,2);
outer_diameter = Shaft_Def(i,4);
inner_diameter = Shaft_Def(i,5);
rho = Shaft_Def(i,6);
E = Shaft_Def(i,7);
if ncol_shaft < 8
G = 0;
else
G = Shaft_Def(i,8);
end
if ncol_shaft < 9
damping_factor = 0; % proportional damping
else
damping_factor = Shaft_Def(i,9);
end

[M0e,C1e,K0e,K1e] = shftelem(Shaft_Type,Le,outer_diameter,inner_diameter,E,G,
rho);
M0(dof,dof) = M0(dof,dof) + M0e;
C0(dof,dof) = C0(dof,dof) + damping_factor*K0e;
25/7/22 12:05 PM C:\Users\ppaat\Documen...\rotormtx.m 2 of 2

C1(dof,dof) = C1(dof,dof) + C1e;


K0(dof,dof) = K0(dof,dof) + K0e;
K1(dof,dof) = K1(dof,dof) + damping_factor*K1e;
end

% add contributions from the discs

if ndisc == 0, return, end

for i = 1:ndisc
Disk_Type = round(Disc_Def(i,1));
if Disk_Type == 1 | Disk_Type == 3
n1 = Disc_Def(i,2);
rho = Disc_Def(i,3);
thickness = Disc_Def(i,4);
outer_diameter = Disc_Def(i,5);
if ncol_disc == 6
inner_diameter = Disc_Def(i,6);
else
inner_diameter = 0;
end
Mdisc = 0.25*rho*pi*thickness*(outer_diameter^2-inner_diameter^2);
Id = 0.015625*rho*pi*thickness*(outer_diameter^4-inner_diameter^4) + Mdisc*
(thickness^2)/12;
Ip = 0.03125*rho*pi*thickness*(outer_diameter^4-inner_diameter^4);
end
if Disk_Type == 2
n1 = Disc_Def(i,2);
Mdisc = Disc_Def(i,3);
Id = Disc_Def(i,4);
if Disk_Type == 2, Ip = Disc_Def(i,5); end
end
if Disk_Type == 1 | Disk_Type == 2
dof = (4*n1-3):4*n1;
M0(dof,dof) = M0(dof,dof) + diag( [Mdisc Mdisc Id Id] );
dof1 = 4*n1 - 1;
C1(dof1,dof1+1) = C1(dof1,dof1+1) + Ip;
C1(dof1+1,dof1) = C1(dof1+1,dof1) - Ip;

end
end

You might also like