⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 truss2d_elem.m

📁 matlab实例
💻 M
字号:
%***********************************************************************
%  function truss2d_elem
%
%  calculates the stiffness matrix of a 2D pinned truss
%***********************************************************************
function [kelem, fe] = truss2d_elem(ElemData, Prop, Nodes)

% determine some element properties
dx = Nodes( ElemData.connect(2) ).coord(1) - Nodes( ElemData.connect(1) ).coord(1);
dy = Nodes( ElemData.connect(2) ).coord(2) - Nodes( ElemData.connect(1) ).coord(2);

length = sqrt(dx^2 + dy^2);
costheta = dx/length;
sintheta = dy/length;

prop_i = ElemData.propID;
E = Prop(prop_i).properties(1);
A = Prop(prop_i).properties(2);

k = E*A/length;    

% form upper triangular componants

kelem(1,1) =  k * costheta * costheta;
kelem(1,2) =  k * costheta * sintheta;
kelem(1,3) = -k * costheta * costheta;
kelem(1,4) = -k * costheta * sintheta;

kelem(2,2) =  k * sintheta * sintheta;
kelem(2,3) = -k * costheta * sintheta;
kelem(2,4) = -k * sintheta * sintheta;

kelem(3,3) =  k * costheta * costheta;
kelem(3,4) =  k * costheta * sintheta;

kelem(4,4) =  k * sintheta * sintheta;

% now need to copy these terms to the lower triangular components

% could simply copy to lower half by brute force method

%kelem(2,1) = kelem(1,2);
%kelem(3,1) = kelem(1,3);
%kelem(3,2) = kelem(2,3);
%kelem(4,1) = kelem(1,4);
%kelem(4,2) = kelem(2,4);
%kelem(4,3) = kelem(3,4);

% or could use some built-in commands that work for any size matrix

% create matrix with diagonal components only
diag_kelem = diag(diag(kelem));
% create upper triangular copy less the diagonal
upper_kelem = kelem - diag_kelem;     
% add upper triangular plus its transpose plus the diagonal
kelem = upper_kelem + upper_kelem' + diag_kelem;

fe = zeros(4,1);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -