一用三结点三角形平面单元计算平面结构的应力和位移讲解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一:用三结点三角形平面单元计算平面结构的应力和位移。
1,设计说明书
计算简图,网格划分,单元及结点的编号如下图所示。由于结构对称,去四分之一结构分析。其中
E=2e10pa,mu=0.167,h=1m.
变量注释:
Node ------- 节点定义
gElement ---- 单元定义
gMaterial --- 材料定义,包括弹性模量,泊松比和厚度
gBC1 -------- 约束条件
gNF --------- 集中力
gk------------总刚
gDelta-------结点位移
子程序注释:
PlaneStructualModel ———定义有限元模型
SolveModel ———————求解有限元模型
DisplayResults ——————显示计算结果
k = StiffnessMatrix( ie )———计算单元刚度
AssembleStiffnessMatrix( ie, k )—形成总刚
es = ElementStress( ie )————计算单元应力
function exam1
% 输入参数:无
% 输出结果:节点位移和单元应力
PlaneStructualModel ; % 定义有限元模型
SolveModel ; % 求解有限元模型
DisplayResults ; % 显示计算结果
return ;
function PlaneStructualModel
% 定义平面结构的有限元模型
% 输入参数:无
% 说明:
% 该函数定义平面结构的有限元模型数据:
% gNode ------- 节点定义
% gElement ---- 单元定义
% gMaterial --- 材料定义,包括弹性模量,泊松比和厚度% gBC1 -------- 约束条件
% gNF --------- 集中力
global gNode gElement gMaterial gBC1 gNF
% 节点坐标
% x y
gNode = [0.0, 2.0 % 节点1
0.0, 1.0 % 节点2
1.0, 1.0 % 节点3
0.0, 0.0 % 节点4
1.0, 0.0 % 节点5
2.0, 0.0] ; % 节点6
% 单元定义
% 节点1 节点2 节点3 材料号
gElement = [3, 1, 2, 1 % 单元1
5, 2, 4, 1 % 单元2
2, 5, 3, 1 % 单元3
6, 3, 5, 1]; % 单元4 % 材料性质
% 弹性模量泊松比厚度
gMaterial = [1e0, 0, 1] ; % 材料1
% 第一类约束条件
% 节点号自由度号约束值
gBC1 = [ 1, 1, 0.0
2, 1, 0.0
4, 1, 0.0
4, 2, 0.0
5, 2, 0.0
6, 2, 0.0] ;
% 集中力
% 节点号自由度号集中力值
gNF = [ 1, 2, -1] ;
return
function SolveModel
% 求解有限元模型
% 输入参数:无
% 说明:
% 该函数求解有限元模型,过程如下
% 1. 计算单元刚度矩阵,集成整体刚度矩阵
% 2. 计算单元的等效节点力,集成整体节点力向量% 3. 处理约束条件,修改整体刚度矩阵和节点力向量% 4. 求解方程组,得到整体节点位移向量
global gNode gElement gMaterial gBC1 gNF gK gDelta
% step1. 定义整体刚度矩阵和节点力向量
[node_number,dummy] = size( gNode ) ;
gK = sparse( node_number * 2, node_number * 2 ) ;
f = sparse( node_number * 2, 1 ) ;
% step2. 计算单元刚度矩阵,并集成到整体刚度矩阵中[element_number,dummy] = size( gElement ) ;
for ie=1:1:element_number
k = StiffnessMatrix( ie ) ;
AssembleStiffnessMatrix( ie, k ) ;
end
% step3. 把集中力直接集成到整体节点力向量中
[nf_number, dummy] = size( gNF ) ;
for inf=1:1:nf_number
n = gNF( inf, 1 ) ;
d = gNF( inf, 2 ) ;
f( (n-1)*2 + d ) = gNF( inf, 3 ) ;
end
% step4. 处理约束条件,修改刚度矩阵和节点力向量。采用乘大数法[bc_number,dummy] = size( gBC1 ) ;
for ibc=1:1:bc_number
n = gBC1(ibc, 1 ) ;
d = gBC1(ibc, 2 ) ;
m = (n-1)*2 + d ;
f(m) = gBC1(ibc, 3)* gK(m,m) * 1e15 ;
gK(m,m) = gK(m,m) * 1e15 ;
end
% step 5. 求解方程组,得到节点位移向量
gDelta = gK \ f ;
return
function DisplayResults
% 显示计算结果
% 输入参数:无
global gNode gElement gMaterial gBC1 gNF gK gDelta
fprintf( '节点位移\n' ) ;
fprintf( ' 节点号x方向位移y方向位移\n' ) ;
[node_number,dummy] = size( gNode ) ;
for i=1:node_number
fprintf( '%6d %16.8e %16.8e\n',...
i, gDelta((i-1)*2+1), gDelta((i-1)*2+2)) ;
end
fprintf( '\n\n单元应力\n' ) ;
fprintf( ' X-STR Y-STR XY-STR\n' ) ;
[element_number, dummy] = size( gElement ) ;
for ie = 1:element_number
es = ElementStress( ie ) ;
fprintf( '单元号%6d %16.8e %16.8e %16.8e\n', ...
ie, es(1), es(2), es(3));
end
return
function k = StiffnessMatrix( ie )
% 计算单元刚度矩阵
% 输入参数:
% ie ------- 单元号
global gNode gElement gMaterial
k = zeros( 6, 6 ) ;
E = gMaterial( gElement(ie, 4), 1 ) ;