[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