[Master Index]
[Index for .]
solve_truss_lu
(./solve_truss_lu.m)
Function Synopsis
[displacements] = solve_truss(nodes,members,active_nodes,loads,dof);
Help text
[displacements] = solve_truss(nodes,members,active_nodes,loads,dof)
does the solving. Truss or frame.
Cross-Reference Information
This function calls
This function is called by
Listing of function ./solve_truss_lu.m
function [displacements] = solve_truss(nodes,members,active_nodes,loads,dof);
% [displacements] = solve_truss(nodes,members,active_nodes,loads,dof)
% does the solving. Truss or frame.
[num_members,i] = size(members); % how many members we have to insert
num_act_nodes = max(size(active_nodes)); % number of active nodes
[num_loads,i] = size(loads); % How many applied loads
%sys_k = zeros(dof*num_act_nodes); % generates a big empty square matrix
sys_k = spalloc(dof*num_act_nodes,dof*num_act_nodes,20*dof*num_act_nodes);
red_load=zeros(dof*num_act_nodes,1); % generates a reduced empty load
% column vector
disp = zeros(dof*num_act_nodes,1); % a displacement vector to solve for
[na,nc] = size(nodes);
displacements = zeros(na,dof); % the return displacements
sys_k = assemble_k (sys_k,members,nodes,active_nodes,dof) ;
for i = 1:num_loads
red_load = assemble_loads(red_load,loads(i,:),active_nodes,dof);
end
[l,u]= lu(sys_k);
disp = u\(l\red_load);
%disp = in_sys_k*red_load;
displacements(active_nodes,:) = reshape(disp,dof,num_act_nodes)';
Produced by mat2html on Wed Jul 10 14:55:44 US/Pacific 1996
Cross-Directory links are: OFF