《有限元分析与应用》
第1讲 引论 力学的分类
《有限元分析与应用》,曾攀,清华大学出版社
- 质点描述轨道——质点力学
- 刚体描述姿态——刚体力学
- 变形体描述姿态的耦合影响——弹性力学
- 复杂形状变形——弹塑性力学
有限元分析的力学基础是弹性力学,方程求解的数学原理是加权残值法和泛函极值原理,实现的方法是数值化离散技术,最终的载体是有限元分析软件。
注:为书写和理解统一,向量在本文中有时又称为矩阵
变形体力学
三个方面:力的平衡、变形状态、材料行为
三大变量:应力
三大方程:平衡方程,物理方程,几何方程
边界:位移边界,力边界
应力-应变曲线:哑铃状样品按标准执行
一维线性力学模型——三大方程
- 平衡方程:
- 物理方程:
- 几何方程:
微分方程求解
一维杆模型
由
故
微分方程:
边界条件(左端固定,右端自由):
方程求解
解析法:
差分法:
采用向前差分
- 划分五个网格单元,中间四个节点
边界:
矩阵方程解为:
- 划分n个网格单元,中间n-1个节点
矩阵方程:
边界:
差分法和解析法结果对比
分段数n | L/5 | 2L/5 | 3L/5 | 4L/5 | L |
---|---|---|---|---|---|
5 | 0.250 | 0.438 | 0.563 | 0.625 | 0.625 |
50 | 0.185 | 0.329 | 0.431 | 0.491 | 0.510 |
100 | 0.183 | 0.324 | 0.425 | 0.486 | 0.505 |
500 | 0.180 | 0.321 | 0.421 | 0.481 | 0.501 |
解析解 | 0.180 | 0.320 | 0.420 | 0.480 | 0.500 |
网格划分越多,差分解越接近解析解 |
试函数法:伽辽金法-加权余量法
- 假定一个含有位置系数的函数族
(基函数为幂函数或者三角函数),该函数满足边界条件 - 将试函数代入控制方程中,使得残差函数最小来确定试函数的系数
- 残差函数(余量)通过权函数(函数族)得到最小值
已知
微分方程:
边界条件(左端固定,右端自由):
求解
将试函数代入控制微分方程中,得到残差函数
使用族函数加权,求和(积分):
确定待定系数
代回试函数,
也可以使用多待定系数
试函数 | L/5 | 2L/5 | 3L/5 | 4L/5 | L |
---|---|---|---|---|---|
0.159 | 0.303 | 0.417 | 0.491 | 0.516 | |
0.175 | 0.321 | 0.423 | 0.480 | 0.497 | |
解析解 | 0.180 | 0.320 | 0.420 | 0.480 | 0.500 |
微分方程求解方法对比
解析解 | 差法法 | 试函数法 | |
---|---|---|---|
求解过程 | 解微分方程 | 微商代替微分;线性方程组;求解 | 满足边界的试函数;代回控制方程;余量最小;线性方程组 |
技术关键 | 满足全场条件的解函数 | 全场试函数只需满足一定边界条件 | |
难易程度 | 很难 | 较简单 | 简单 |
求解精度 | 极高 | 高,计算量大 | 较高,计算量小 |
方法规范性 | 不规范,技巧不统一 | 规范 | 试函数确定不规范,后续规范 |
解题范围 | 一定范围 | 涵盖复杂领域 | 范围大 |
函数逼近
以为函数
基于全域展开
傅里叶级数展开,
基于子域展开
采用线性函数在子域
全域展开 | 子域展开 | |
---|---|---|
优点 | 基底函数高次连续,容易逼近高精度 | 基函数简单;原始微分方程可转化为线性方程组 |
缺点 | 基底函数复杂,多维较难 | 基函数连续性阶次低,分段区间多 |
复杂几何域的函数表征与逼近
非规则的几何域很难直接构造全域的试函数,进行网格划分,网格片区构造可实现,然后进行拼接成全域
在网格单元上构建试函数,并建立力学方程,以处理复杂几何问题
单元——有限元中构建复杂结构的基本组成
- 1D:梁,杆,弹簧
- 2D:四边形,三角形,曲边六边形,八节点四边形(二阶四边形)
- 3D:八节点六面体,多节点曲面体
- 板壳:结构壳单元,热学壳单元
有限元方法和软件发展
两条路线找试函数,最后发展成有限元
- 工程:1870年变分法,1940年相似结构置换,1955年直接连续单元(矩阵力学)
- 数学:1795和1915年加权残值法,有限差值法,可变的有限差值法
有限元研究开拓者
- RICHARD COURANT,美国数学家
- JOHNARGYRIS,德国人,计算机有限元计算
- OLGIERD CECIL ZIENKIEWIZ,英国人,第一本有限元领域专著《有限元方法》
主要软件
- 1966:nastran
- 1969:Marc
- 1970:Ansys
- 1975:ADINA
- 1978:DYNA
- 1979:Abaqus
- 1982:cosmos
- 1984:ALGOR
第2讲 直接刚度法—弹簧力学分析
弹簧的力学分析原理
遵循胡克定律:力正比于弹簧位移
对于弹簧网格单元
转换为场方程
矩阵形式,
刚度矩阵组装
边界条件:
矩阵求解:
弹簧单元与杆单元的比较
弹簧:
拉杆:
故:
杆单元的坐标变换
局部坐标转化为全局坐标,以便对单元进行集成和组装
对于平面杆,全局坐标系
局部坐标系中的节点位移:
全局坐标系中的节点位移:
存在关系:
代入平衡方程:
得到:
即:
同理,空间杆单元的坐标变换
四杆结构的实例分析
已知四杆相同材质和横截面积
- 结构的离散化
节点标记及坐标
Node | x | y |
---|---|---|
1 | 0 | 0 |
2 | 400 | 0 |
3 | 400 | 300 |
4 | 0 | 300 |
单元编号以及对应的节点、长度和轴线的方向余弦
Element | start | end | l | ||
---|---|---|---|---|---|
1 | 1 | 2 | 400 | 1 | 0 |
2 | 3 | 2 | 300 | 0 | -1 |
3 | 1 | 3 | 500 | 0.8 | 0.6 |
4 | 4 | 3 | 400 | 1 | 0 |
- 各个单元的矩阵描述
全局坐标系下各个单元的刚度矩阵
- 刚度矩阵的组装
对应位移的矩阵元素进行累加,组成刚度矩阵和节点载荷
刚度矩阵:
节点位移:
节点力:
其中,
组装成整体的刚度方程
- 边界条件的处理和刚度方程求解
边界条件BC:
求解:
故
- 支反力的计算
四杆结构的ANSYS实例分析
软件仿真流程
- 分析类型和单元类型
- 前处理,材料,几何模型,网格划分
- 边界条件,求解
- 检查结果并处理
使用杆单元link建立模型
第3讲 针对复杂几何形状变形体的力学描述(1)
力学描述的基本思路及关于变形体材料的基本假设
材料力学
- 拉伸:杆
- 扭转:扭杆
- 弯曲:梁
弹性体基本假设5条:
- 物体内的物质连续性continuity假设,可使用连续函数描述
- 物体内的物质均匀性homogeneity假设,各个位置具有相同特性
- 物体内的物质特性各向同性isotropy假设,各个方向具有相同的力学特性
- 线弹性 linear elasticity假设,变形遵循胡克定律,去除外力后,物体可恢复
- 小变形small deformation假设,物体变形量远远小于物体几何尺寸,即在建立方程时,可以忽略高阶小量(二阶以上)
指标记法
坐标系为右手
矢量的分量形式:
- 自由指标,每项中只出现一次的下表
中的 在(1,2,3)中只出现一次
- 哑指标,针对乘法时的指标默认处理
中 为哑指标,可以在(1,2,3)变化
- Einstein求和约定,哑指标意味着求和
可以简化为 ;等价于三个线性方程的组合
- Voigt标记,将高阶自由指标的张量遵循移动规则改写成低阶张量形式
- 对称张量,仅写一半;沿着主对角后逆时针排序元素
- 将3*3矩阵按照角标11-22-33-23-13-12将一半元素排列成向量
三大变量及三大方程
单元的三大变量:位移,应力,应变
单元的三大方程:平衡方程,几何方程,物理方程
边界:力边界和位移边界
法应力
平面问题的平衡方程构建
-
约定:正面正向为正,负面负向为正
-
有四个侧面,在平衡方程中,应考虑合力的平衡:
- 沿方向所有合力的平衡
- 沿y方向所有合力的平衡
- 所有合力关于任一点的力矩平衡
-
应力在经过dx或dy变化后的位置上有增量表达
-
应力在各个侧面上为均匀分布
-
对于均匀厚度
的平板,微元 -
面的法应力为
,正方向为单元内部垂直指向面的外部 -
剪应力为
,方向垂直于法应力 -
体积力为
表示单位体积内的力载荷
- 力学变量的增量计算
泰勒展开
略去二阶以上微量
- 合力的平衡
x方向的力:左右面上的法应力*面积+上下面的剪应力*面积+体积力*微元体积
位置增量(x+dx或者y+dy)上的应力(即
等式两边除以微元体积
同理,y方向上的合力平衡
最后,力矩平衡,即力关于微元的几何中心形成力矩平衡,对于几何中心,上下面剪应力及其偏导形成的力矩=左右面剪应力及其偏导形成的力矩;(体积力和法应力的力臂为0)
同样位置增量的剪应力使用一阶泰勒展开替换,则有:
汇总三个力平衡方程
剪应力互等,故
哑指标形式:
平面问题的几何方程构建
平面变形量的定义需要考感两个方面
- 沿各个方向上的长度相对变化量(应变)
- 夹角的变化量
位移场
- 沿各个方向上的应变(即单位长度的变化量)
忽略
x方向上的应变
同理,y方向上的应变
- 夹角变化量
定义夹角的总变化为
汇总平面问题的几何方程
指标形式:
其中,
就平面问题
- 如果已知2个位移分量u和v,可以通过式唯一求出3个应变分量
- 但如果是一个反问题,即已知3个应变分量是
,就不一定能够惟一求出2个位移分量u和v,除非这3个应变分量满足一定的关系--变形协调条件(compatibilitycondition) - 变形协调条件的物理意义是,材料在变形过程中应是整体连续的,不应出现“撕裂”和“重叠”现象
平面问题的物理方程构建
定义x方向为主(拉伸)方向上的伸长:
泊松比定义为垂直拉伸方向的缩短与拉伸方向的伸长之比:
对于平面的微元
x方向的主拉伸
同理,y方向的主拉伸
剪切力只产生角度变化,
组装成本构物理方程——本构模型,又称材料的力学 本构方程 ,或材料的应力-应变模型,是描述材料的力学特性 (应力-应变-强度-时间关系)的数学表达式
或者逆形式
其中
矩阵形式
两类边界条件
BC(boundary condition):外部描述,包括位移方面和力平衡方面的边界条件,即变形体的几何空间
给定
,On- On
,
※ 第4讲 针对复杂几何形状变形体的力学描述(2) ※
三大变量
- 位移:
- 应力:
- 应变:
三大方程
- 平衡方程
- 几何方程
- 物理方程
两类边界条件
- On
- On
几种特殊情况的讨论
平面应力:近似认为
平面应变:近似认为
平面应力(平衡方程)和平面应变(几何方程)的变量和方程完全相同,二者通过物理方程转换
刚体位移:物体内不产生任何应变,对几何方程给定零位移
故平面刚体位移的表达(
为整个物体在x方向的刚体位移量 为整个物体在y方向的刚体位移量 为整个物体在空间的刚体旋转角度
简单拉杆问题的完整弹性力学求解
1D弹性杆的方程解
- 解析方法的求解过程严谨,可得到物体内各点力学变量的表达,是场变量
- 经验方法的求解过程较简单,但需要事先进行假定,往往只得到一些特定位置的力学变量表达,而只能应用于一些简单情形
平面纯弯梁的描述及求解
假设:
- 直法线假设
- 小变形
位移:
应力:
应变:
物理方程:
※空间弹性问题的完整描述※
对于空间中的微元体
基本变量
1D | 2D | 3D | |
---|---|---|---|
位移分量 | |||
应变分量 | |||
应力分量 | |||
平衡方程 | |||
几何方程 | |||
物理方程 | |||
几何边界 |
|||
外力边界 |
三组剪应变相等:
三组剪应力相等:
独立变量变为:3(方向位移)+6(法向应变+剪切应变)+6(法向应力+剪切应力)
为边界上的几何坐标 为边界外法线的方向余弦 为给定的对应方向上的位移值 为给定的对应方向上的边界分布力
关于张量的描述及理解
- 0阶张量:无自由指标的量,与坐标系选取无关,如温度、质量、能量等标量
- 阶张量:有1个自由指标的量,如坐标x,位移u等矢量
- 2阶张量:有2个自由指标的量,如应力、应变
- n阶张量:有n个自由指标的量,如四阶弹性系数张量
同一矢量在不同坐标系下的分量形式不同,但模长不变——张量的不变量
应力莫尔圆中应力最大特征量——第一特征量,最小特征量——第二特征量
- 第一和第二特征量可以作为材料强度准则
莫尔圆
应力应变莫尔圆(Mohr's Circle)是一种图示工具,用于分析二维应力或应变状态。它可以帮助工程师和材料科学家可视化不同方向上材料内部的应力和应变情况。
莫尔圆的定义:
- 莫尔圆是一个图形,用于表示在任意方向上的应力和应变状态。通过在圆内描绘不同方向下的法向应力和切向应力,可以直观地展示材料内部的应力状态。
-
确定基本应力:
- 标识出直应力
和剪应力 的值。
- 标识出直应力
-
画坐标系:
- 选择一个二维坐标系,横轴表示法向应力(
),纵轴表示剪应力
- 选择一个二维坐标系,横轴表示法向应力(
-
标记点:
- 在坐标系中标记出应力状态下的两个点:
- 点A:
- 点B:
- 点A:
- 在坐标系中标记出应力状态下的两个点:
-
连接点并绘制圆:
- 连接这两个点,然后找到圆心
,并根据两个点的距离绘制完整的圆
- 连接这两个点,然后找到圆心
-
计算主应力:
- 圆的交点表示材料的主应力状态,主应力(
和 )位于圆的极点上 - 主应力(
和 )在横轴表示法向应力( ),此时剪应力为0
- 圆的交点表示材料的主应力状态,主应力(
理解莫尔圆
-
几何意义:莫尔圆的几何特征直观地表明了法向应力和切向应力之间的关系。圆上的每一点对应一个特定的方向上的应力状态
-
主应力:通过求出圆的交点,可以获得主应力,这些应力是材料内部的“最大”与“最小”应力状态,确保在设计和分析中考虑材料的弱点
-
切向应力变化:圆的大小和位置说明了在不同方向上剪切和法向应力的变化。有助于理解材料在不同加载条件下的表现,包括屈服和破坏
第5讲 变形体力学方程求解的试函数方法的原理
变形体力学方程求解的主要方法分类及试函数方法
1、直接针对原始方程进行求解,方法有
- 解析法(analytical method)
- 半解析法(semi-inverse method)
- 差分法(finite difference method)
2、间接针对原始方程进行求解(误差处理),方法有
- 加权残值法(weighted residual method)
- 虚功原理(principle of virtual work)
- 最小势能原理(principle of minimum potential energy)
- 变分方法(variational method)
平面弯曲梁求解的试函数方法-残值处理法
控制方程:
位移边界条件:
载荷边界条件:
- 单系数试函数
代入控制方程得到余量函数,
选择基底函数作为权函数
残差方程,
求解得到
- 多系数试函数
代入控制方程得到余量函数,
选择基底函数作为权函数
残差方程
求解得到
- 残值最小二乘法
选取试函数
代入控制方程得到余量函数,
取权函数
此时需要确定待定系数
由最小而二乘法,有
关于
如何降低对试函数的高阶导数要求
控制方程中存在高阶导数时,使用试函数法必须保证其高阶导数也存在,虽然正弦函数可以很好地满足,其他函数选区的话比较困难
平面弹性方程,基于位移求解的控制方程及其边界条件
假设试函数
其中,
将试函数代入控制方程,使其残值在加权积分下为0,即得到Garlerkin方程
得到关于
由此可知,对试函数有
- 满足所有边界条件
- 试函数二阶导数必须存在(弯曲梁,导数4阶;一般问题,为2阶)
- 全场几何域的积分计算
- 流程十分规范
- 如何降低试函数对高阶导数的要求?
能量原理:虚功原理,最小势能原理
- 只满足位移边界条件
- 降低对试函数的导数阶次要求
- 数学原理:分部积分和变分方法
平面弯曲梁求解的虚功原理
虚位移:任意扰动的位移应满足的条件(如几何方程),称为许可位移条件,把满足许可位移条件的、任意的微小位移称为虚位移(假想的)
(virtual displacement)
虚功:某点的虚位移与其负载力的乘积为虚功(virtual work)
- 平衡状态下的体系,当作用有满足许可位移条件的虚位移时,系统上的所有的虚功总和恒为零
- 系统的力分为外力和内力(应力),引起外力虚功
和内力虚功 ,内力虚功又称为虚位移能 - 虚应变能(virtual strain energy),由于弹性体在变形过程中,内力是克服变形所产生的,其方向总是与变形的方向相反,所以内力虚功取负,故
;这里的虚位移进满足位移边界条件的许可位移
平面弯曲梁求解的能量原理(降低试函数的导数阶次要求)
控制方程:
位移边界条件:
载荷边界条件:
- 虚功原理求解
选取试函数
对待定系数
虚应变能:
梁弯曲的几何方程有:
其中截面惯性矩
简支梁的外力虚功为:
虚功原理,有
化简,
因为
- 该结果与前面Galerkin方法得到的结果相同,这是因为两种方法取了相同的试函数。
- 从以上的求解过程可以看出,虚功原理与加残值法类似,只能在试函数的范围内寻找最好的解,但该结果不一定是精确的
- 这取决于事先所假定的位移模式(试函数),如果事先所假定的位移模式包含有精确解的情况,那么由虚功原理求解出的解一定是精确的
- 最小势能原理求解
选取试函数
定义势能=应变能-外力功:
即:
真实的位移场总是使得物体的总势能取最小值
应变能
外力功
总势能
解得
最小势能原理方法也叫Rayleigh-Ritz方法(瑞利-里茨法)
平面弯曲梁求解的最小势能原理的变分基础
证明,势能最小是否等价于控制方程和载荷边界条件
可使得势能泛函取最小值的位移边界条件的一个函数
一般弹性问题的能量原理
- 虚功原理:内外力虚功相等
- 最小势能原理
- 虚功原理
设选取了满足位移边界条件
则虚位移
有几何方程知,虚应变
虚应变能为,
外力虚功为,
应用虚功原理
- 最小势能原理
势能
应变能中的应变和应力各有6个变量,角标相同组合成6个应变能,有两个部分
- 正应力-正应变的变形能微元
- 剪应力-剪应变的变形能
- 出现1/2是因为假设应变微元从0线性增加到
第6讲 基于试函数方法的经典实现及有限元实现
基于试函数的经典方法与有限元方法
经典方法:选取全域试函数
有限元方法:子域线性试函数
二者最大的不同就是是否需要离散化
有限元思路
- 几何离散化
- 单元研究,单元上选取试函数并建立力学方程
- 集成还原,刚度矩阵组装
有限元方法中的自然离散与逼近离散
自然离散
- 基于结构中的自然连接关系划分节点,并形成离散单元
- 计算精度高,甚至可以获得精确解
- 例如杆、铰链的受力问题
逼近离散
- 对于连续体结构,需要人工划分节点,以分片(单元)连续的形式来进行逼近
- 例如骨头受力
- 影响计算精度与误差的因素
1.节点的位置和数量
2.计算规模与计算量
3.选择单元的类型
4.对几何模型的逼近程度
有限元方法中的基本步骤
单元研究
节点描述
- 参数化几何坐标(标准化,规范化)
- 节点上的位移分量
- 节点上的力分量
单元上的描述:节点描述和三大类变量的场描述
- 位移场函数
- 应变场函数
- 应力场函数
能量原理
- 最小势能原理:单元上的应变能,外力功
- 虚功原理:单元上的虚应变能,虚外力功
获得单元方程
- 对原平衡方程的加权逼近
- 对力边界条件的加权逼近
试函数经典方法及有限元方法的比较
有限元计算
- 软件平台:标准化处理,前后处理的可视化
- 硬件平台:大规模计算,非线性方程的求解
第7讲 杆、梁结构的有限元分析
局部坐标系中的杆单元构建及MATLAB编程
- 节点基本变量及描述
上角标
杆单元具有2个节点Node,其坐标
节点位移(向量)矩阵,
节点力(向量)矩阵,
- 单元上的场描述
位移场函数取多项式:
- 唯一性原则
- 从低阶到高阶原则
杆单元含有2个节点,位移模式取
单元节点的BC:
解得,
故,位移场函数,
其中
节点位移
应变场函数
其中
应力场函数
其中
- 最小势能原理
单元的虚应变能为,
记单元刚度矩阵为
故
外力虚功为,
总势能
泛函取极值,对
根据矩阵导数
这就是杆单元的刚度方程
- 虚功原理
节点位移
节点虚位移
单元的虚应变能为,
外力虚功为,
虚功原理,
所以,
即,
虚位移
- 1D杆转换为平面或者空间杆,即杆单元的坐标变换
局部坐标系中的节点位移
2D全局坐标系中的节点位移
其中,
转换成矩阵形式,
其中2D的旋转矩阵
整体坐标系下的总势能
其中整体刚度矩阵
同理,3D的旋转矩阵
1D杆单元分析的matlab程序
设计四个函数
- 刚度矩阵Stiffness(E,A,L):输入弹性模量E,截面积A,长度L;输出单元刚度矩阵k
- 单元组装Assembly(KK,k,i,j):输入单元刚度矩阵k,单元节点编号i、j;输出整体刚度矩阵KK
- 单元应力Stress(k,u,A):输入单元矩阵k,单元位移矩阵u,截面积A;输出单元应力stress
- 单元节点力Force(k,u):输入刚度矩阵k,单元位移矩阵u;输出节点力forces
2节点
- 单元刚度矩阵函数
function k= Bar1D2Node_Stiffness(E,A,L)
k=[E*A/L -E*A/L;-E*A/L E*A/L];
- 单元组装函数
function z= Bar1D2Node_Assembly(KK,k,i,j)
DOF(1)=i;
DOF(2)=j:
for nl=1:2
for n2=1:2
KK(DOF(n1),DOF(n2))=KK(DOF(n1),DOF(n2))+k(n1,n2);
end
end
z=KK;
- 单元应力函数
function stress= Bar1D2Node_Stress(k,u,A)
stress=k*E/A;
- 单元节点力函数
function forces= Bar1D2Node_Force(k,u)
forces=k*u;
2D杆单元分析的matlab程序
设计四个函数
- 刚度矩阵Stiffness(E,A,x1,y1,x2,y2,alpha):输入弹性模量E,截面积A,第一个节点坐标(x1,y1),第二个节点坐标(x2,y2)和角度alpha(单位度),;输出单元刚度矩阵k
- 单元组装Assembly(KK,k,i,j):输入单元刚度矩阵k,单元节点编号i、j;输出整体刚度矩阵KK
- 单元应力Stress(E,x1,y1,x2,y2,alpha,u):输入弹性模量E,第一个节点坐标(x1,y1),第二个节点坐标(x2,y2),角度alpha(单位度),单元节点位移矩阵u;输出单元应力stress
- 单元节点力Force(E,A,x1,y1,x2,y2,alpha,u):输入弹性模量E,截面积A,第一个节点坐标(x1,y1),第二个节点坐标(x2,y2),角度alpha(单位度)和单元位移矩阵u;输出节点力forces
2个节点
- 单元刚度矩阵函数
function k= Bar2D2Node_Stiffness(E,A,x1,y1,x2,y2,alpha)
L=sqrt((x2-x1)*(x2-x1)+(y2-y1)(y2-y1))
x=alpha*pi/180
C=cos(x)
S=sin(x)
%单元刚度矩阵4*4
k=E*A/L[ C*C C*S -C*C -C*S;C*S S*S -C*S -S*S;
-C*C -C*S C*C C*S;-C*S -S*S C*S S*S];
- 单元组装函数
function z= Bar1D2Node_Assembly(KK,k,i,j)
DOF(1)=2*i-1;
DOF(2)=2*i;
DOF(1)=2*j-1;
DOF(2)=2*j;
for nl=1:4
for n2=1:4
KK(DOF(n1),DOF(n2))=KK(DOF(n1),DOF(n2))+k(n1,n2);
end
end
z=KK;
- 单元应力函数
function stress= Bar2D2Node_Stress(E,x1,y1,x2,y2,alpha,u)
L=sqrt((x2-x1)*(x2-x1)+(y2-y1)(y2-y1))
x=alpha*pi/180
C=cos(x)
S=sin(x)
stress=E/L*[-C -S C S]*u;
- 单元节点力函数
function forces= Bar1D2Node_Force(k,u)
L=sqrt((x2-x1)*(x2-x1)+(y2-y1)(y2-y1))
x=alpha*pi/180
C=cos(x)
S=sin(x)
forces=E/L*[-C -S C S]*u*A;
四杆桁架的有限元分析的matlab编程
-
结构的离散化与编号,见2.4章节
- E=2.95e11;A=0.0001;
- x1=0;y1=0;x2=0.4;y2=0;x3=0.4;y3=0.3;x4=0;y4=0.3;
- alphal=0;alpha2=90;alpha3=atan(0.75)*180/pi;
-
计算各个单元的刚度矩阵
- 分别针对4个杆单元,调用4次function k= Bar2D2Node_Stiffness(E,A,x1,y1,x2,y2,alpha),得到各个单元的刚度矩阵
-
建立整体刚度矩阵方程
-
边界条件的处理及刚度方程求解
- 总节点位移:
- 总节点力,R为支反力(支反力是指在物体受到外力作用时,在约束中产生的并作用在被约束物体上的力):
-
支反力的计算
-
各个单元的应力计算
局部坐标系中的平面纯弯梁单元构建及MATLAB编程
平面纯弯梁的单元为2节点,每个节点具有2个自由度(位移和转角)
-
节点描述
- 节点位移矩阵:
- 节点力移矩阵:
- 刚度矩阵:
-
单元上的场描述——三大类变量
-
位移场函数(挠度)- 使用多项式拟合:
节点条件:
解得, , , -
令
,则 -
最后的位移场函数:
-
形状函数矩阵:
-
应变场函数:对挠度
进行二阶求导:
, 为相对于中心层为起点的y方向上的坐标 -
几何矩阵:
,其中 -
应力场方程:
,其中
-
-
最小势能原理
梁单元分析的matlab程序实现
5个函数
- 刚度矩阵Beam1D2Node_Stiffness(E,I,L):该函数计算单元的刚度矩阵,输入弹性模量E,横截面的惯性矩I,梁单元的长度L,输出单元刚度矩阵k(4×4)
- 单元组装Beam1D2Node_Assembly(KK,k,i,j):该函数进行单元刚度矩阵的组装,输入单元刚度矩阵k,单元的节点编号i、i,输出整体刚度矩阵KK
- 单元应变Beam1D2Node_Strain(x,L,y):该函数计算单元的几何矩阵,输入所测点距梁单元左节点的水平距离×,输入所测点以中性层为起点的y 方向的坐标,梁单元的长度L,输出单元几何形状函数矩阵B(1×4)
- 单元应力Beam1D2Node_Stress(E,B,u):该函数计算单元内某点的应力,输入弹性模量E,几何矩阵B,节点位移列阵u,输出单元的应力stress
- 挠度BeamiD2NodeDeflection(x,Lu):该函数计算单元内某点的挠度,输入所测点距梁单元左节点的水平距离x,梁单元的长度L,节点位移列阵u,输出该点的挠度v
function k=Beam1D2NodeStiffness(E,IL)
%该函数计算单元的刚度矩阵
%输入弹性模量E,横截面的惯性矩,梁单元的长度!
%输出单元刚度矩阵k(4×4)%
k = E*I/(L*L*L)*[12 6*L -12 6*L; 6*L 4*L*L -6*L 2*L*L;-12 -6*L 12 -6*L; 6*L 2*L*L -6*L 4*L*L];
function z=Beam1D2Node_Assembly(KK,ki,j)
%该函数进行单元刚度矩阵的组装
%输入单元刚度矩阵k,单元的节点编号i、j
%输出整体刚度矩阵KK
%----------------------------------------
DOF(1)=2*i-1;
DOF(2)=2*i;
DOF(3)=2*j-1;
DOF(4)=2*j;
for n1=1:4
for n2=1:4
KK(DOF(n1),DOF(n2))= KK(DOF(n1),DOF(n2))+k(n1,n2)
end
end
z=KK;
function B=Beam1D2Node_Strain(x,L,y)
%该函数计算单元的几何矩阵
%输入所测点距梁单元左节点的水平距离×
%输入所测点以中性层为起点的y方向的坐标,梁单元的长度L
%输出单元几何形状函数矩阵B(1×4)%
e=x/L;
B1=(12*e-6)/(L*L);
B2=(6*e-4)/L;
B3=-(12*e-6)/(L*L);
B4=(6*e-2)/L;
B=-y*[B1,B2,B3,B4];
function stress=Beam1D2NodeStress(E,B,u)
%该函数计算单元内某点的应力
%输入弹性模量E,几何矩阵B,节点位移列阵u
%输出单元的应力stress
stress = E*B*u,
function v=Beam1D2Node_Deflection(x,L,u)
%该函数计算单元内某点的挠度
%输入所测点距梁单元左节点的水平距离x%输入梁单元的长度L,节点位移列阵u
%输出该点的挠度V
e=x/L;
Nl=1-3*e*e+2*e*e*e;
N2=L(e-2*e*e+e*e*e);
N3=3*e*e-2*e*e*e;
N4=L(e*e*e-e*e);
N=[N1,N2,N3,N4];
v=N*u;
局部坐标系中的一般梁单元构建(组装)
- 一般平面梁单元=平面纯弯梁单元+平面杆单元
2个节点单元
- 节点位移矩阵:
- 节点力移矩阵:
- 刚度矩阵:
- 一般空间梁单元
2个节点单元
- 节点位移矩阵:
- 节点力移矩阵:
- 刚度矩阵:
- 其中
表示沿着全局坐标系相应轴旋转的角度
对应节点位移上的组装,得到12*12的刚度矩阵
梁单元的坐标变化
- 平面梁单元的坐标变换
- 局部坐标系(ox)中的节点位移矩阵:
- 全局坐标系(
)中的节点力移矩阵: - 坐标转换方程:
- 局部坐标系刚度矩阵:
- 全局坐标系刚度矩阵:
- 其中
, , 如下图
- 空间梁单元的坐标变换
分布力的处理
- 集中力:作用在节点上的力,或者一个小面积上的力,该面积远小于任何方向上的尺寸,也可视为集中力
- 支点力
- 弯矩
- 分布力:当力的作用范围(面积)较大而不能忽略的作用力;有均布力和非均布力
- 线分布力(
):楼板对梁的作用;符号q - 面分布力(
):风荷载对建筑物墙体的作用;符号p - 体分布力(
):物体的自重;符号v
- 线分布力(
使用外力功原理等效(不能使用静力学平衡等效),将单元上的分布力等效到结点的集中力
门型框架结构的实例分析及MATLAB编程
结构的参数:
- 弹性模量
- 惯性矩
- 杆截面积
- 高
- 结构离散化与编号
单元编号 | 节点 | 节点 |
---|---|---|
1 | 1 | 2 |
2 | 3 | 1 |
3 | 4 | 2 |
按节点编号顺序
- 节点位移矩阵:
- 节点外载矩阵:
- 支反力矩阵:
- 故总的节点载荷矩阵:
- 各个单元的描述
- 组装整体刚度矩阵
刚度方程
- 边界条件
节点3、4固定:
- matlab编程
- 结构离散化与编号
- 各个单元的描述
- 首先在MATLAB环境下,输入弹性模量E、横截面积A、惯性矩、长度L,由于单元2和单元3的刚度矩阵相同,针对单元1、单元2和单元3,分别二次调用函数 Beam2D2Node_Stiffness,就可以得到单元的刚度矩阵k1(6×6)和k2(6x6)。
>> E=3E11;
>> I=6.5E-7;
>> A=6.8E-4;
>> L1=1.44;
>> L2=0.96;
>> k1=Beam2D2Node_Stiffness(E,I,A,L1);
>> k2=Beam2D2Node_Stiffness(E,I,A,L2);
- 建立整体刚度矩阵:结构总的刚度矩阵KK为
,对KK置零,然后3次调用函数Beam2D2Node_Assemble进行刚度矩阵的组装
>> T=[0,1,0,0,0,0;-1,0,0,0,0,0;0,0,1,0,0,0;0,0,0,0,1,0;0,0,0,-1,0,0;0,0,0,0,0,1];
>> k3=T'*k2*T;
>> KK=zeros(12,12);
>> KK=Beam2D2Node_Assemble(KK,k1,1,2);
>> KK=Beam2D2Node_Assemble(KK,k3,3,1);
>> KK=Beam2D2NodeAssemble(KK.k3.4.2);
- 边界条件
节点3、4固定:
>> k=KK(1:6,1:6);
>> p=[3000;-3000;-720;0;-3000;720];
>> u=k\p
先将上面得到的位移结果与位移边界条件的节点位移进行组合(注意位置关系),可以得到整体
的位移列阵U(12×1),再代回原整体刚度方程,计算出所有的节点力P(12×1)
>> U=[u;0;0;0;0;0;0]
U=0.0009 -0.0000 -0.0014 0.009 0 -0.000 -0.000
0 0 0 0 0 0
>>P=KK*U
P=1.0e+003*
3.0000 -3.0000 -0.7200 0.0000 -3.0000 0.7200
-0.6658 2.2012 0.6014 -2.3342 3.7988 1.1283
门型框架结构的ANSYS实例分析
APDL,略
第8讲 连续体结构的有限元分析(1)
平面3节点三角形单元及MATLAB编程
平面三节点三角形单元,每个节点具有2个自由度,整体坐标系建模
- 节点描述
- 节点坐标:
- 节点位移矩阵:
- 节点力矩阵:
- 单元上的场描述
-
位移场函数:所有节点间使用相同函数插值,低阶到高阶,唯一确定
由 可以确定系数 的值,其中
例如位移场矩阵形式:
其中
- 应变场函数
其中,
令
那么,
- 应力场函数
其中, 称为弹性系数矩阵
令 ,并称 为应力函数矩阵
应用最小势能原理,
则获得刚度方程,
- 平面三节点三角形单元性质
- 单元内的应力和应变均为常数,又称为常应变三角形单元CST(constant strain triangle)
- 没有针对节点位移的坐标变换
- 对于应变梯度较大的区域,CST单元划分应适当加密,否则导致较大误差
-
平面三节点三角形单元的matlab编程
三个函数
- 刚度矩阵Triangle2D3Node_Stiffness(E,NU,t,xi,yi,xj.yj,xm,ym,ID):该函数计算单元的刚度矩阵,输入弹性模量E,泊松比NU,厚度t,三个节点i、j、m的坐标xi,yi,xj,yj,xm,ym,平面问题性质指示参数ID(1为平面应力,2为平面应变),输出单元刚度矩阵k(6X6)
- 单元组装Triangle2D3Node_Assembly(Kk,k,i,j,m):该函数进行单元刚度矩阵的组装,输入单元刚度矩阵k,单元的节点编号i、j、m,输出整体刚度矩阵KK
- 单元应力Triangle2D3Node_Stress(E,NU,xi,yi,xj.yj,xm,ym,u,ID):该函数计算单元的应力,输入弹性模量E,泊松比NU,厚度t,三个节点i、j、m的坐标xi,yi,xj,yj,xm,ym,平面问题性质指标参数ID(1为平面应力,2为平面应变),单元的位移列阵u(6X1),输出单元的应力stress,由于它为常应力单元,则单元的应力分量为Sx,Sy,Sxy
function k=Triangle2D3Node_Stiffness(E,NU,t,xi,yi,xj,yj,xm,ym,ID)
%该函数计算单元的刚度矩阵
%输入弹性模量E,泊松比NU,厚度t
%输入三个节点i、j、m的坐标xi,yi,xj,yi,xm,ym
%输入平面问题性质指标参数ID(1为平面应力,2为平面应变)
%输出单元刚度矩阵k(6X6)
A = (xi*(yj-ym) + xj*(ym-yi) + xm*(yi-yi))/2;
betai = yj-ym;
betaj = ym-yi;
betam = yi-yj;
gammai=xm-xj;
gammaj=xi-xm;
gammam=xj-xi;
B=[betai 0 betaj 0 betam 0;
0 gammai 0 gammaj 0 gammam;
gammai betai gammaj betaj gammam betam]/(2*A);
if ID == 1
D=(E/(1-NU*NU)*[1 NU 0;NU 1 0;0 0 (1-NU)/2];
elseif ID == 2
D=(E/(1+NU)/(1-2*NU))*[1-NU NU 0;NU 1-NU 0;0 0 (1-2*NU)/2];
end
k=t*A*B'*D*B;
function z=Triangle2D3Node_Assembly(KK,k,i,j,m)
%该函数进行单元刚度矩阵的组装
%输入单元刚度矩阵k
%输入单元的节点编号i、j、m
%输出整体刚度矩阵KK
DOF(1)=2*i-1;
DOF(2)=2*i;
DOF(3)=2*j-1;
DOF(4)=2*j;
DOF(5)=2*m-1;
DOF(6)=2*m;
for n1=1:6
for n2=1:6
KK(DOF(n1),DOF(n2))= KK(DOF(n1),DOF(n2))+k(n1,n2);
end
end
z=KK;
function stress=Triangle2D3Node_Stress(E,NU,xi,yi,xj,yj,xm,ym,u,ID)
%该函数计算单元的应力
%输入弹性模量E,泊松比NU,厚度t
%输入三个节点i、j、m的坐标xi,yi,xj.yj,xm,ym
%输入平面问题性质指标参数ID(1为平面应力,2为平面应变),单元的位移列阵u(6X1)
%输出单元的应力stress(3X1),由于它为常应力单元,则单元的应力分量为Sx,Sy,Sxy
A = (xi*(yj-ym) + xj*(ym-yi) + xm*(yi-yi))/2;
betai = yj-ym;
betaj = ym-yi;
betam=yi-yi
gammai=xm-xj;
gammaj=xi-xm;
gammam=xj-xi;
B=[betai 0 betaj 0 betam 0;
0 gammai 0 gammaj 0 gammam;
gammai betai gammaj betaj gammam betam]/(2*A);
if ID == 1
D = (E/(1-NU*NU)*[1 NU 0; NU 1 0;0 0 (1-NU)/2];
elseif ID==2
D = (E/(1+NU)/(1-2*NU))*[1-NU NU 0;NU 1-NU 0;0 0 (1-2*NU)/2];
end
stress = D*B*u;
平面4节点矩形单元及MATLAB编程
平面4节点矩形单元,每个节点具有2个自由度,局部坐标系建模
令
- 节点描述
- 节点坐标(逆时针编号):
- 节点位移矩阵:
- 节点力矩阵:
- 位移场函数
- 应变场函数
其中, , 称为几何矩阵
令
那么,
- 应力场函数
其中, 称为弹性系数矩阵
令 ,并称 为应力函数矩阵
- 最小势能原理
其中,单元刚度矩阵 ,每个元素为
应用最小势能原理,
则获得刚度方程,
- 平面四节点矩形单元性质
- 位移场函数=完全线性+交叉项函数,属于双线性位移模式
- 应变场和应力场函数均为不完全线性函数
- 平面4节点矩形单元比3节点三角形单元的精度高
- 矩形单元的几何形状还应变换为任意边形的形状,以增强几何的适应性
-
平面三节点三角形单元的matlab编程
三个函数
- 刚度矩阵Quad2D4Node_Stiffness(E,NU,h,xi,yi,xj.yj,xm,ym,xp,yp,ID):
该函数计算单元的刚度矩阵,输入弹性模量E,泊松比NU,厚度h,4个节点i、j、m的坐标xi,yi,xj,yj,xm,ym,xp,yp,平面问题性质指示参数ID(1为平面应力,2为平面应变),输出单元刚度矩阵k(8X8) - 单元组装Quad2D4Node_Assembly(Kk,k,i,j,m,p):该函数进行单元刚度矩阵的组装,输入单元刚度矩阵k,单元的节点编号i、j、m、p,输出整体刚度矩阵KK
- 单元应力Quad2D4Node_Stress(E,NU,h,xi,yi,xj,yj,xm,ym,xp,yp,u,ID):
该函数计算单元的应力,输入弹性模量E,泊松比NU,厚度h,4个节点i、j、m、p的坐标xi,yi,xj,yj,xm,ym,xp,yp,平面问题性质指标参数ID(1为平面应力,2为平面应变),单元的位移列阵u(8X1),输出单元的应力stress,由于它为常应力单元,则单元的应力分量为Sx,Sy,Sxy
function k=Quad2D4Node_Stiffness(E,NU,h,xi,yi,xj.yj,xm,ym,xp.yp,ID)
%该函数计算单元的刚度矩阵
%输入弹性模量E,泊松比NU,厚度h
%输入4个节点i、j、m、p的坐标xi,yi,xj,yi,xm,ym,xp,yp
%输入平面问题性质指标参数ID(1为平面应力,2为平面应变)
%输出单元刚度矩阵k(8X8)
syms s t;
a = (yi*(s-1)+yi*(-1-s)+ym*(1+s)+yp*(1-s))/4;
b = (yi*(t-1)+yj*(1-t)+ym*(1+t)+yp*(-1-t))/4;
c = (xi*(t-1)+xj*(1-t)+xm*(1+t)+xp*(-1-t))/4;
d = (xi*(s-1)+xj*(-1-s)+xm*(1+s)+xp*(1-s))/4;
B1=[a*(t-1)/4-b*(s-1)/4 0;0 c*(s-1)/4-d*(t-1)/4;c*(s-1)/4-d*(t-1)/4 a*(t-1)/4-b*(s-1)/4];
B2=[a*(1-t)/4-b*(-1-s)/4 0;0 c*(-1-s)/4-d*(1-t)/4;c*(-1-s)/4-d*(1-t)/4 a*(1-t)/4-b*(-1-s)/4];
B3=[a*(t+1)/4-b*(s+1)/4 0;0 c*(s+1)/4-d*(t+1)/4;c*(s+1)/4-d*(t+1)/4 a*(t+1)/4-b*(s+1)/4]
B4=[a*(-1-t)/4-b*(1-s)/4 0;0 c*(1-s)/4-d*(-1-t)/4;c*(1-s)/4-d*(-1-t)/4 a*(-1-t)/4-b*(1-s)/4];
Bfirst=[B1 B2 B3 B4];
Jfirst =[0 1-t t-s s-1;t-1 0 s+1 -s-t;s-t -s-1 0 t+1;1-s s+t -t-1 o];
J=[xi xj xm xp]*Jfirst*[yi;yj;ym;yp]/8;
B=Bfirst/J;
if ID == 1
D=(E/(1-NU*NU))*[1 NU 0;NU 1 0;0 0 (1-NU)/2];
elseif ID == 2
D = (E/(1+NU)/(1-2*NU))*[1-NU NU 0;NU 1-NU 0;0 0 (1-2*NU)/2];
end
BD=J*transpose(B)*D*B;
r = int(int(BD, t, -1, 1), s, -1, 1);
z = h*r;
k = double(z);
function z=Quad2D4Node_Assembly(KK,k,i,j.m,p)
%该函数进行单元刚度矩阵的组装
%输入单元刚度矩阵k,单元的节点编号i、j、m、p
%输出整体刚度矩阵KK
DOF(1)=2*i-1;
DOF(2)=2*i;
DOF(3)=2*j-1;
DOF(4)=2*j;
DOF(5)=2*m-1;
DOF(6)=2*m;
DOF(7)=2*p-1;
DOF(8)=2*p;
for n1=1:8
for n2=1:8
KK(DOF(n1),DOF(n2))=KK(DOF(n1),DOF(n2))+k(n1,n2);
end
end
z=KK;
function stress=Quad2D4Node_Stress(E,NU,xi,yi,xj.yj,xm,ym,xp.yp,u,ID)
%该函数计算单元的应力
%输入弹性模量E,泊松比NU,厚度h
%输入4个节点i、j、m、p的坐标xi,yi,xj.yj,xm,ym,xp,yp,
%输入平面问题性质指标参数ID(1为平面应力,2为平面应变)
%输入单元的位移列阵u(8X1)
%输出单元的应力stress(3x1)
%由于它为常应力单元,则单元的应力分量为Sx,Sy,Sxy
syms st;
a = (yi*(s-1)+yi*(-1-s)+ym*(1+s)+yp*(1-s))/4;
b = (yi*(t-1)+yj*(1-t)+ym*(1+t)+yp*(-1-t)/4;
c = (xi*(t-1)+xj*(1-t)+xm*(1+t)+xp*(-1-t)/4;
d = (xi*(s-1)+xj*(-1-s)+xm*(1+s)+xp*(1-s)/4;
B1 = [a*(t-1)/4-b*(s-1)/4 0;0 c*(s-1)/4-d*(t-1)/4;c*(s-1)/4-d*(t-1)/4 a*(t-1)/4-b*(s-1)/4];
B2 =[a*(1-t)/4-b*(-1-s)/4 0;0 c*(-1-s)/4-d*(1-t)/4;c*(-1-s)/4-d*(1-t)/4 a*(1-t)/4-b*(-1-s)/4];
B3 = [a*(t+1)/4-b*(s+1)/4 0;0 c*(s+1)/4-d*(t+1)/4;c*(s+1)/4-d*(t+1)/4 a*(t+1)/4-b*(s+1)/4];
B4 = [a*(-1-t)/4-b*(1-s)/4 0;0 c*(1-s)/4-d*(-1-t)/4;c*(1-s)/4-d*(-1-t)/4 a*(-1-t)/4-b*(1-s)/4];
Bfirst = [B1 B2 B3 B4];
Jfirst = [0 1-t t-s s-1;t-1 0 s+1 -s-t;s-t -s-1 0 t+1;1-s s+t -t-1 0];
J=[xi xj xm xp]*Jfirst*[yi;yj;ym;yp]/8;
B=Bfirst/J;
if ID == 1
D = (E/(1-NU*NU))*[1 NU 0; NU 1 0;0 0 (1-NU)/2];
elseif ID == 2
D = (E/(1+NU)/(1-2*NU))*[1-NU NU 0;NU 1-NU 0;0 0 (1-2*NU)/2]
end
str1=D*B*u;
str2= subs(str1,{s,t},{0,0});
stress=double(str2);
轴对称单元
轴对称物体的单元采用柱坐标表述,旋转截面离散成平面单元
三大类力学变量
- 位移:
- 应变:
- 应力:
三大类方程
使用三节点三角形单元
- 节点描述
- 节点坐标:
- 节点位移矩阵:
- 节点力矩阵:
- 单元上的场描述
-
位移场函数:所有节点间使用相同函数插值,低阶到高阶,唯一确定
由 可以确定系数 的值,其中
例如位移场矩阵形式:
其中
- 应变场函数
其中,
令
那么,
-
应力场函数
其中, 称为弹性系数矩阵 ,并称 为应力函数矩阵
- 最小势能原理
其中,
应用最小势能原理,
则获得刚度方程,
四节点举行环形单元
- 节点描述
- 节点坐标:
- 节点位移矩阵:
- 节点力矩阵:
- 单元上的场描述
- 位移场函数:所有节点间使用相同函数插值,低阶到高阶,唯一确定
- 最小势能原理
其中,
应用最小势能原理,
则获得刚度方程,
分布力的处理
需要将分布力转换等效为节点载荷
最小势能原理
其中,
等效节点载荷(平面三节点三角形单元)
平面矩形薄板分析的MATLAB编程
问题描述
离散成两个3节点三角形单元,外力载荷离散到节点力
结构的参数:
- 弹性模量
- 载荷
- 泊松比
- 厚度
在MATLAB环境下,输入弹性模量E、泊松比NU,薄板厚度为t,平面应力问题性质指示参数ID,然后针对单元1和单元2,分别调用两次函数Triangle2D3Node_Stiffness,就可以得到单元的刚度矩阵k1(6×6)和k2(6×6)
窗口输入
>> E=1e7;
>> NU=1/3;
>> t=0.1;
>> ID=1;
>> k1=Triangle2D3Node_Stiffness(E,NU,t,2,0,0,1,0,0,ID)
>> k2=Triangle2D3Node_Stiffness(E,NU,t,0,1,2,0,2,1,ID)
由于该结构共有4个节点,则总共的自由度数为8,因此,结构总的刚度矩阵为KK(8×8),先对KK清零,然后两次调用函数Triangle2D3Node_Assemblv进行刚度矩阵的组装
>> kk = zeros(8,8);
>> KK=Triangle2D3Node_Assembly(KK,k1,2,3,4)
>> KK=Triangle2D3NodeAssembly(KK.k2.3.2.1)
边界条件,
将针对节点1和节点2的位移进行求解,节点1和节点2的位移将对应KK矩阵中的前4行和前4列,则需从KK(8×8)中提出,置给k,然后生成对应的载荷列阵p,再采用高斯消去法进行求解。
注意:MATLAB中的"\"就采用用高斯消去法
>> k = kk(1:4,1:4);
>> p = [0;-50000;0;-50000]
>> u=k\p
u = 0.188 -0.899 -0.150 -0.842
即,
在得到整个结构的节点位移后,由原整体刚度方程就可以计算出对应的支反力
>> U=[u;0;0;0;0];
>> P=KK*U
P=1.0e+005 *
-0.0000 -0.5000 0 -0.5000 -2.0000 -0.0702 2.0000 1.0702
即,
平面矩形薄板的ANSYS实例分析
第9讲 连续体结构的有限元分析(2)
空间4节点四面体单元及MATLAB编程
每个节点具有3个自由度,整体坐标系建模
- 节点描述
- 节点坐标:
- 节点位移矩阵:
- 节点力矩阵:
- 单元上的场描述
- 位移场函数:所有节点间使用相同函数插值,低阶到高阶,唯一确定
由 可以确定系数 的值,其中
位移场矩阵形式:
其中
- 应变场函数
其中,
令
那么
- 应力场函数
其中, 称为弹性系数矩阵
令 ,并称 为应力函数矩阵
- 最小势能原理
其中,单元刚度矩阵
单元节点载荷
应用最小势能原理,
则获得刚度方程,
4节点四面体单元的matlab实现
三个函数
- 刚度矩阵Tetrahedron3D4Node_Stiffness(E,NU,xi,yi,zi,xj,yj,zj,xm,ym,zm,xn,yn,zn):该函数计算单元的刚度矩阵,输入弹性模量E,泊松比NU,4个节点i、j、m、n的坐标xi,yi,zi,xj,yj,zj,xm,ym,zm,xn,yn,zn,输出单元刚度矩阵k(12x12)。
- 单元组装Tetrahedron3D4Node_Assembly(Kk,k,ij.m,n):该函数进行单元刚度矩阵的组装,输入单元刚度矩阵k,单元的节点编号i、j、m、n,输出整体度矩阵KK
- 单元应力Tetrahedron3D4Node_Stress(E,NU,xi,yi,zi,xj,yj,zj,xm,ym,zm,xn,yn,zn,u):该函数计算单元的应力,输入弹性模量E,泊松比NU,4个节点i、j、m、n的坐标xi,yi,zi,xj,yj,zj,xm,ym,zm,xn,yn,zn,单元的位移列阵u(12x1),输出单元的应力stress,由于它为常应力单元,则单元的应力分量为Sx,Sy,Sz,Sxy,Syz,Szx
function k=Tetrahedron3D4Node_Stiffness(E,NU,x1,y1,z1,x2,y2,z2,x3,y3,z3,x4,y4,z4)
%该函数计算单元的刚度矩阵%输入弹性模量E,泊松比NU
%输入4个节点i、j、m、n的坐标xi,yi,zi,xj.yj.zj.xm,ym,zm,xn,yn,zn
%输出单元刚度矩阵k(12X12)
%以下数组与书中的对应关系
%betai - bi
%gammai - ci
%deltai - di
%i=1:4
xyz = [1 x1 y1 z1 ; 1 x2 y2 z2 ; 1 x3 y3 z3 ; 1 x4 y4 z4]; V = det(xyz)/6;
mbeta1 = [1 y2 z2;1 y3 z3;1 y4 z4];
mbeta2 = [1 y1 z1;1 y3 z3;1 y4 z4];
mbeta3 = [1 y1 zl;1 y2 z2;1 y4 z4];
mbeta4 = [1 y1 z1;1 y2 z2;1 y3 z3];
mgamma1 = [1 x2 z2;1 x3 z3;1 x4 z4];
mgamma2 = [1 x1 z1;1 x3 z3;1 x4 z4];
mgamma3 = [1 x1 z1;1 x2 z2;1 x4 z4];
mgamma4 = [1 x1 z1;1 x2 z2;1 x3 z3];
mdelta1 = [1 x2 y2;1 x3 y3;1 x4 y4];
mdelta2 = [1 x1 y1;1 x3 y3;1 x4 y4];
mdelta3 = [1 x1 y1;1 x2 y2;1 x4 y4];
mdelta4 = [1 xl y1;1 x2 y2;1 x3 y3];
betal = -1*det(mbetal);
beta2 = det(mbeta2);
beta3 = -1*det(mbeta3);
beta4 = det(mbeta4);
gammal=det(mgamma1);
gamma2=-1*det(mgamma2);
gamma3 = det(mgamma3);
gamma4=-1*det(mgamma4);
deltal = -1*det(mdeltal);
delta2 = det(mdelta2);
delta3 = -1*det(mdelta3);
delta4 = det(mdelta4);
B1=[beta1 0 0;0 gamma1 0;0 0 deltal;
gammal betal 0;0 deltal gammal;deltal 0 betal];
B2=[beta2 0 0;0 gamma2 0 0;0 0 delta2;
gamma2 beta2 0;0 delta2 gamma2;delta2 0 beta2];
B3=[beta3 0 0;0 gamma3 0;0 0 delta3;
gamma3 beta3 0;0 delta3 gamma3;delta3 0 beta3];
B4=[beta4 00 ;0 gamma4 0;0 0 delta4;
gamma4 beta4 0;0 delta4 gamma4;delta4 0 beta4);
B = [B1 B2 B3 B4]/(6*V);
D = (E/((1+NU)*(1-2*NU)))*[1-NU NU NU 0 0 0;NU 1-NU NU 0 0 0;NU NU 1-NU 0 0 0;
0 0 0 (1-2*NU)/2 0 0;0 0 0 0 (1-2*NU)/2 0;0 0 0 0 0 (1-2*NU)/2]
k =abs(V)*B'*D*B;
function y=Tetrahedron3D4Node_Assembly(KK,k,i,j.m,n)
%该函数进行单元刚度矩阵的组装
%输入单元刚度矩阵k
%输入单元的节点编号i、j、m、n
%输出整体刚度矩阵KK
DOF=[3*i-2:3*i,3*j-2:3*j,3*m-2:3*m,3*n-2:3*n]
for n1=1:12
for n2=1:12
KK(DOF(n1),DOF(n2))= KK(DOF(n1),DOF(n2))+k(n1,n2);
end
end
y=KK;
function y=Tetrahedron3D4Node_Stress(E,NU,x1,y1,z1,x2,y2,z2,x3,y3,z3,x4,y4,z4,u)
%该函数计算单元的应力
%输入弹性模量E,泊松比NU
%输入4个节点i、j、m、n的坐标xi,yi,zi,xi.yj.zj,xm,ym,zm,xn,yn,zn
%输入单元的位移列阵u(12X1)
%输出单元的应力stress(6X1)
%由于它为常应力单元,应力分量为Sx,Sy,Sz,Sxy,Syz,Szx
xyz=[1 x1 y1 z1;1 x2 y2 z2;1 x3 y3 z3;1 x4 y4 z4];
V = det(xyz)/6;
mbetal = [1 y2 z2;1 y3 z3;1 y4 z4];
mbeta2 = [1 y1 z1;1 y3 z3;1 y4 z4];
mbeta3 = [1 y1 z1;1 y2 z2;1 y4 z4];
mbeta4 = [1 y1 z1;1 y2 z2;1 y3 z3];
mgamma1 = [1 x2 z2;1 x3 z3;1 x4 z4];
mgamma2 = [1 x1 z1;1 x3 z3;1 x4 z4];
mgamma3 = [1 x1 z1;1 x2 z2;1 x4 z4];
mgamma4 = [1 x1 z1;1 x2 z2;1 x3 z3];
mdelta1 = [1 x2 y2;1 x3 y3;1 x4 y4];
mdelta2 = [1 x1 y1;1 x3 y3;1 x4 y4];
mdelta3 = [1 x1 y1;1 x2 y2;1 x4 y4];
mdelta4 = [1 x1 y1;1 x2 y2;1 x3 y3];
betal = -1*det(mbetal);
beta2 = det(mbeta2);
beta3 =-1*det(mbeta3);
beta4 = det(mbeta4);
gammal = det(mgammal);
gamma2 = -1*det(mgamma2);
gamma3 = det(mgamma3);
gamma4 = -1*det(mgamma4);
deltal = -1*det(mdelta1);
delta2 = det(mdelta2);
delta3 = -1*det(mdelta3);
delta4 = det(mdelta4);
B1 = [beta1 0 0;0 gamma1 0;0 0 delta1;
gammal betal 0;0 deltal gammal;deltal 0 betal];
B2 = [beta2 0 0;0 gamma2 0;0 0 delta2;
gamma2 beta2 0;0 delta2 gamma2;delta2 0 beta2];
B3 = [beta3 0 0;0 gamma3 0;0 0 delta3;
gamma3 beta3 0;0 delta3 gamma3;delta3 0 beta3];
B4 = [beta4 0 0;0 gamma4 0;0 0 delta4;
gamma4 beta4 0;0 delta4 gamma4;delta4 0 beta4];
B = [B1 B2 B3 B4]/(6*V);
D = (E/(1+NU)*(1-2*NU)))*[1-NU NU NU 0 0 0;NU 1-NU NU 0 0 0;NU NU 1-NU 0 0 0;0 0 0 (1-2*NU)/2 0 0;0 0 0 0 (1-2*NU)/2 0;0 0 0 0 0 (1-2*NU)/2]
y=D*B*u;
空间8节点正六面体单元及MATLAB编程
每个节点具有3个自由度,共有24个DOF,整体坐标系建模
- 节点描述
- 节点坐标:
- 节点位移矩阵(8*\1):
- 节点力矩阵(24*\1):
- 单元上的场描述
-
位移场函数:所有节点间使用相同函数插值,(低阶到高阶,唯一确定)
< 共有24个线性方程 >
由
可以确定系数 的值,其中 ,得到系数,重新排列位移场
位移场矩阵形式:
其中
-
应变场函数
其中, , 称为几何矩阵
令那么
-
应力场函数
其中, 称为弹性系数矩阵
令 ,并称 为应力函数矩阵
- 最小势能原理
其中,单元刚度矩阵
单元节点载荷
应用最小势能原理,
则获得刚度方程,
- 空间4节点三角锥(四面体)单元性质
-
应力场为不完全线性函数:
-
(1) 位移场为完全线性+交叉项函数,在x,y,z方向呈线性变化
-
(2) 应变场及应力场为不完全线性函数
-
(3) 空间8节点正六面体单元的比4节点四面体单元的精度高;与平面4节点矩形单元的性质相同
-
(4) 正六面体单元的几何形状还应变换为任意六面体的形状,以增强几何的适应性
8节点正六面体单元的matlab实现
三个函数
- Hexahedral3D8Node_Stiffness(E,NU,x1,y1,z1,x2,y2,z2,x3,y3,z3,x4,y4,z4,x5,y5,z5,x6,y6,z6,x7,y7,z7,x8,y8,z8)
- 该函数计算单元的刚度矩阵,输入弹性模量E,泊松比NU,8个节点的坐标x1、y1、z1、x2、y2、z2、x3、y3、z3、x4、y4、z4、x5、y5、z5、x6、y6、z6、x7、y7、z7、x8、y8、z8,输出单元刚度矩阵k(24X24)
- Hexahedral3D8Node_Assembly(kk,k,i,j,l,m,n,o,p,q)
- 该函数进行单元刚度矩阵的组装,输入单元刚度矩阵k,单元的节点编号i、j、I、m、n、o、p、q,输出整体刚度矩阵kk。
- Hexahedral3D8Node_Stress(E,NU,x1,y1,z1,x2,y2,z2,x3,y3,z3,x4,y4,z4,x5,y5,z5,x6,y6,z6,x7,y7,z7,x8,y8,z8,u)
- 该函数计算单元中心点的应力,输入弹性模量E,泊松比NU,8个节点的坐标x1、y1、z1、x2、y2、z2、x3、y3、z3、x4、y4、z4、x5、y5、z5、x6、y6、z6、x7、y7、z7、x8、y8、z8,单元的位移列阵u(6X1),输出单元中心的应力stress(6x1),则单元的应力分量为Sx,Sy,Sz,Sxy,Syz,Szx
刚度矩阵函数
矩阵太长的有换行,注意使用时删除
function k=Hexahedral3D8Node_Stiffness(E,NU,x1,y1,z1,x2,y2,z2,x3,y3,z3,x4,y4,z4,x5,y5,z5,
x6,y6,z6,x7,y7,z7,x8,y8,z8)
%该函数计算单元的刚度矩阵
%输入弹性模量E,泊松比NU
%输入8个节点的坐标x1、y1、z1、x2、y2、z2、x3、y3、z3、x4、y4、z4、
%输入x5、y5、z5、x6、y6、z6、x7、y7、z7、x8、y8、z8
%输出单元刚度矩阵k(24X24)
syms s t n; %定义形状函数N
%定义局部坐标系
N1=(1+s)*(1-t)*(1-n)/8;
N2=(1+s)*(1+t)*(1-n)/8;
N3=(1-s)*(1+t)*(1-n)/8;
N4=(1-s)*(1-t)*(1-n)/8;
N5=(1+s)*(1-t)*(1+n)/8;
N6=(1+s)*(1+t)*(1+n)/8;
N7=(1-s)*(1+t)*(1+n)/8;
N8=(1-s)*(1-t)*(1+n)/8;
%定义坐标变换
X=N1*×1+N2*×2+N3*×3+N4*×4+N5*×5+N6*×6+N7*×7+N8*×8; y=N1*y1+N2*y2+N3*y3+N4*y4+N5*y5+N6*y6+N7*y7+N8*y8;
z=N1*z1+N2*z2+N3*z3+N4*z4+N5*z5+N6*z6+N7*z7+N8*z8;
%定义雅可比矩阵
J=[diff(x,s),diff(y,s),diff(z,s);
diff(x,t),diff(y,t),diff(z,t);
diff(x,n),diff(y.n),diff(z,n)];
Jdet=det(J);
J %打印J
Jdet %打印Jdet
%定义B矩阵的系数
a=diff(y,t)*diff(z,n)-diff(z,t)*diff(y,n);
b=diff(y,s)*diff(z,n)-diff(z,s)*diff(y,n);
c=diff(y,s)*diff(z,t)-diff(z,s)*diff(y,t);
d=diff(x,t)*diff(z,n)-diff(z,t)*diff(x,n);
e=diff(x,s)*diff(z.n)-diff(z,s)*diff(x,n);
f=diff(x,s)*diff(z,t)-diff(z,s)*diff(x,t);
g=diff(x,t)*diff(y.n)-diff(y,t)*diff(x,n);
h=diff(x,s)*diff(y.n)-diff(y,s)*diff(x,n);
I=diff(x,s)*diff(y.t)-diff(y,s)*diff(x,t);
%通过循环计算各个矩阵
Ns=[N1,N2,N3,N4,N5,N6,N7,N8];
Bs=sym(zeros(6,3,8));
for i=1:8
Bs(:,:,i)=[a*diff(Ns(i),s)-b*diff(Ns(i),t)+c*diff(Ns(i),n),0,0;
0,-d*diff(Ns(i),s)+e*diff(Ns(i),t)-f*diff(Ns(0),n),0;
0,0,g*diff(Ns(0),s)-h*diff(Ns(0),t)+I*diff(Ns(i),n);
-d*diff(Ns(i),s)+e*diff(Ns(i),t)-f*diff(Ns(i),n),a*diff(Ns(i),s)-b*diff(Ns(i),t)+c*diff(Ns(i),n),0;
O,g*diff(Ns(0),s)-h*diff(Ns(i),t)+I*diff(Ns(i),n),-d*diff(Ns(i),s)+e*diff(Ns(i),t)-f*diff(Ns(i),n);
g*diff(Ns(i),s)-h*diff(Ns(i),t)+I*diff(Ns(i),n),O,a*diff(Ns(i),s)-b*diff(Ns(i),t)+c*diff(Ns(i),n)]/Jdet;
end
%计算B矩阵
B=[Bs(:,:,1),Bs(:,:,2),Bs(:,:,3),Bs(:,:,4),Bs(:,:,5),Bs(:,:,6),Bs(:,:,7),Bs(:,:,8)]
B
%计算D矩阵
D=(E/((1+NU)*(1-2*NU)))*[1-NU,NU,NU,0,0,0;NU,1-NU,NU,0,0,0;NU,NU,1-NU,0,0,0;
0,0,0,0.5-NU,0,0;0,0,0,0,0.5-NU,0;0,0,0,0,0,0.5-NU);
D
%计算单元刚度矩阵k
BD=Jdet*transpose(B)*D*B;
z=(int(int(int(BD,n,-1,1),t,-1,1),s,-1,1));
z
k=double(z);
刚度矩阵组装函数
functionz=Hexahedral3D8Node_Assembly(KK,k,i,j,l,m,n,o,p,q)
%该函数进行单元刚度矩阵的组装%输入单元刚度矩阵k
%输入单元的节点编号i、j、l、m、n、o、p、q
%输出整体刚度矩阵KK
DOF=[3*i-2:3*i,3*j-2:3*j,3*l-2:3*|,3*m-2:3*m,3*n-2:3*n,3*o-2:3*o,3*p-2:3*p,3*q-2:3*q];
for n1=1:24
for n2=1:24
KK(DOF(n1),DOF(n2))=KK(DOF(n1),DOF(n2))+k(n1,n2);
end
end
z=KK;
应力计算函数
functionstress=Hexahedral3D8NodeStress(E,NU,x1,y1,z1.x2.y2,z2,x3,y3,z3,x4,y4,z4,x5,y5,z5,x6,y6,z6,x7,y7,z7,x8,y8,z8,u)
%该函数计算单元中心点的应力
%输入弹性模量E,泊松比NU
%输入8个节点的坐标x1、y1、z1、x2、y2、z2、x3、y3、z3、x4、y4、z4、
%输入x5、y5、z5、x6、y6、z6、x7、y7、z7、x8、y8、z8
%输入单元的位移列阵u(6X1)
%输出单元中心的应力stress(6X1),应力分量为Sx,Sy,Sz,Sxy.Syz,Szx
syms s t n; %定义局部坐标系
%定义形状函数N
N1=(1+s)*(1-t)*(1-n)/8;
N2=(1+s)*(1+t)*(1-n)/8;
N3=(1-s)*(1+t)*(1-n)/8;
N4=(1-s)*(1-t)*(1-n)/8;
N5=(1+s)*(1-t)*(1+n)/8;
N6=(1+s)*(1+t)*(1+n)/8;
N7=(1-s)*(1+t)*(1+n)/8;
N8=(1-s)*(1-t)*(1+n)/8;
%定义坐标变换
x=N1*x1+N2*x2+N3*x3+N4*x4+N5*×5+N6*x6+N7*x7+N8*x8;
y=N1*y1+N2*y2+N3*y3+N4*y4+N5*y5+N6*y6+N7*y7+N8*y8;
z=N1*z1+N2*z2+N3*z3+N4*z4+N5*z5+N6*z6+N7*z7+N8*z8;
%定义雅可比矩阵
J=[diff(x,s),diff(y,s),diff(z,s);diff(x,t),diff(y.t),diff(z,t);diff(x,n),diff(y,n),diff(z,n)];
Jdet=det(J);
%定义B矩阵的系数
a=diff(y,t)*diff(z,n)-diff(z,t)*diff(y,n);
b=diff(y,s)*diff(z,n)-diff(z,s)*diff(y,n);
c=diff(y,s)*diff(z,t)-diff(z,s)*diff(y,t);
d=diff(x,t)*diff(z,n)-diff(z,t)*diff(x,n);
e=diff(x,s)*diff(z.n)-diff(z,s)*diff(x,n);
f=diff(x,s)*diff(z,t)-diff(z,s)*diff(x,t);
g=diff(x,t)*diff(y.n)-diff(y,t)*diff(x,n);
h=diff(x,s)*diff(y.n)-diff(y,s)*diff(x,n);
I=diff(x,s)*diff(y.t)-diff(y,s)*diff(x,t);
%通过循环计算各个矩阵
Ns=[N1,N2,N3,N4,N5,N6,N7,N8];
Bs=sym(zeros(6,3,8));
for i=1:8
Bs(:,:,i)=[a*diff(Ns(i),s)-b*diff(Ns(i),t)+c*diff(Ns(i),n),0,0;
0,-d*diff(Ns(i),s)+e*diff(Ns(i),t)-f*diff(Ns(0),n),0;
0,0,g*diff(Ns(0),s)-h*diff(Ns(0),t)+I*diff(Ns(i),n);
-d*diff(Ns(i),s)+e*diff(Ns(i),t)-f*diff(Ns(i),n),a*diff(Ns(i),s)-b*diff(Ns(i),t)+c*diff(Ns(i),n),0;
O,g*diff(Ns(0),s)-h*diff(Ns(i),t)+I*diff(Ns(i),n),-d*diff(Ns(i),s)+e*diff(Ns(i),t)-f*diff(Ns(i),n);
g*diff(Ns(i),s)-h*diff(Ns(i),t)+I*diff(Ns(i),n),O,a*diff(Ns(i),s)-b*diff(Ns(i),t)+c*diff(Ns(i),n)]/Jdet;
end
%计算B矩阵
B=[Bs(:,:,1),Bs(:,:,2),Bs(:,:,3),Bs(:,:,4),Bs(:,:,5),Bs(:,:,6),Bs(:,:,7),Bs(:,:,8)]
%计算D矩阵
D=(E/((1+NU)*(1-2*NU)))*[1-NU,NU,NU,0,0,0;NU,1-NU,NU,0,0,0;NU,NU,1-NU,0,0,0;
0,0,0,0.5-NU,0,0;0,0,0,0,0.5-NU,0;0,0,0,0,0,0.5-NU);
%计算应力向量
W=D*B*u;
%在单元的中心处计算应力
wcent=subs(w,{s,t,n},{0,0,0})
stress=double(wcent)
参数单元的原理
具有曲边的单元划分:以平面问题的任意四边形单元为例,内部可以采用矩形单元,逼近曲边会产生锯齿
采用任意四边形单元可以较好地逼近曲边
- 方法一:直接构建
- 方法二:基于矩形单元来进行几何形状的映射(参数单元)
模型构建采用基准单元,坐标系
实际计算时采用物理单元,坐标系
通过几何形状映射(3个方面)来进行计算:参数单元
- 几何坐标函数映射:
坐标映射
映射关系:采用多项式表达
位移场
其中,
则坐标映射可写成:
2. 坐标的偏导数变换:
省略目标函数
改写成矩阵形式
其中,Jacobi矩阵
求逆,即可完成偏导数的映射
方程形式
- 面积和体积的变换:
物理坐标系
面积微元=坐标微元的叉乘,即
矩阵形式
类似,三维问题中的体积微元=两坐标微元叉积点乘第三坐标微元,即
- 参数单元(平面单元)
三个方面的坐标变换
将
- 参数单元的三种类型
几何形状插值函数的阶次与位移插值函数的阶次对比
数值积分
数值积分举例——Gauss积分
- 积分权系数
- 积分点位置
最佳数值积分基本思想,构造多项式
技术关键:如何构造最好的多项式
Gauss数值积分
-
1点Gauss数值积分公式(
)使用两种多项式(常数,一次)代替
- 令
时,有 - 令
时,有
解得,
- 令
-
2点Guass积分公式(
)4个系数确定有两种方法
-
构造正交多项式
-
直接法(以下采用这方法)
选择四个多项式(
)去代替 ,得到四个方程解得
所以,
-
-
n点Gauss积分
采用直接设定多项式的方法求解过程较为复杂,采用Legendre多项式求取系数,查询Gauss数值积分手册
刚度矩阵的数值积分
在
2D平面4节点等参元刚度矩阵元素
对其需要进行数值积分,这是二重积分问题,采用Gauss数值积分
其中,
对于3D问题类似,
其中,
典型空间问题的MATLAB编程
如图所示的一个空间块体,左端固定在面上,右端部受两个集中力F作用。试用MATLAB程序计算计算各个节点位移、支座反力以及单元的应力。
结构的参数
问题求解
- 结构的离散化与编号
单元号 | 节点号 |
---|---|
1 | 1 4 2 6 |
2 | 1 4 3 7 |
3 | 6 7 5 1 |
4 | 6 7 8 4 |
5 | 1 4 6 7 |
总节点位移矩阵(24*\1): | |
8个节点外载荷:
其中,
支反力,墙面对节点1、3、5、6存在支反力:
其中,
总节点力
matlab编程实现
- 计算各单元的刚度矩阵
首先在MATLAB环境下,输入弹性模量E、泊松比NU,然后针对单元1到单元5,分别调用5次函数 Tetrahedron3D4Node_Stiffness,就可以得到单元的刚度矩阵k1(6x6)~k5(6×6)。
MATLAB窗口的输入、输出情况
>> E=1e10; >> NU=0.25;
>> k1=Tetrahedron3D4Node_Stiffness(E,NU,0,0,0,0.2,0.8,0,0.2,0,0,0.2,0,0.6)
>> k2=Tetrahedron3D4Node_Stiffness(E,NU,0,0,0,0.2,0.8,0,0,0.8,0,0,0.8,0.6);
>> k3=Tetrahedron3D4Node_Stiffness(E,NU,0.2,0,0.6,0,0.8,0.6,0,0,0.6,0,0,0);
>> k4=Tetrahedron3D4Node_Stiffness(E,NU,0.2,0,0.6,0,0.8,0.6,0.2,0.8,0.6,0.2,0.8,0);
>> k5=Tetrahedron3D4Node_Stiffness(E,NU,0,0,0,0.2,0.8,0,0.2,0,0.6,0,0.8,0.6);
- 建立整体刚度矩阵
KK清零,然后5次调用函数Tetrahedron3D4Node_Assembly进行刚度矩阵的组装。
MATLAB窗口的输入、输出情况
>> Kk=zeros(24)
>> KK = Tetrahedron3D4Node_Assembly(KK,k1,1,4,2,6);
>> KK = Tetrahedron3D4Node_Assembly(KK,k2,1,4,3,7);
>> KK = Tetrahedron3D4Node_Assembly(KK,k3,6,7,5,1);
>> KK = Tetrahedron3D4Node_Assembly(KK,k4,6,7,8,4);
>> KK = Tetrahedron3D4Node_Assembly(KK,k5,1,4,6,7);
- 边界条件的处理及刚度方程求解
节点1、2、5、6上三个方向的位移将为零,因此,将针对节点3、4、7、8的位移进行求解
节点1、2、5、6的位移将对应KK矩阵中的第1至6行,第13至18行和第1至6列,第13至18列,需从KK(24×24)中提出,置给k,然后生成对应的载荷列p,用高斯消去法进行求解
注意:MATLAB中的反斜线符号“”就是采用高斯消去法
>> k=KK([7:12,19:24],[7:12,19:24]);
>> p=[0,0,0,0,0,0,0,0,-1e5,0,0,-1e5]';
>> u=k\p
u=1.0e-003 *
0.1249 -0.0485 -0.4024 0.1343 -0.0715 -0.4031
0.1314 0.0858 -0.4460 0.1353 0.0681 -0.4742
- 支反力的计算
在得到整个结构的节点位移后,由原整体刚度方程就可以计算出对应的支反力:先将上面得到的位移结果与位移边界条件的节点位移进行组合(注意位置关系),可以得到整体的位移列U(24×1)再代回原整体刚度方程,计算出所有的节点力P(24×1),接按对应关系就可以找到对应的支反力
>> U=[zeros(6,1);u([1:6]);zeros(6,1);u(7:12)];
>> P=KK*U
P = 1.0e+005 *
0.3372 1.3774 0.1904 -0.4202 1.2892 0.4984
-0.0000 0.0000 0.0000 -0.0000 -0.0000-0.0000
-0.4745 -1.3774 0.5604 0.5575 -1.2892 0.7509
-0.0000 -0.0000 -1.0000 -0.0000 0.0000 -1.0000
空间块体的支反力计算结果
- 各单元的应力计算
先从整体位移列阵U(24×1)中提取出单元的位移列阵,然后,调用计算单元应力的函数 Tetrahedron3D4Node_Stress,就可以得到各个单元的应力分量。
典型空间问题的ANSYS分析实例
使用ansys的APDL语言处理上述问题
APDL可以实现-模型的参数化
- 获取ANSYS数据库信息
- 进行数学运算,包括失量及矩阵操作
- 用if-then-else分支、do循环及用户指令生成执行一系列任务的宏
结构离散化和编号与matlab的一致
APDL常用语法
!
:注释行help xx命令
:命令行查询xx命令的使用
!%%%%%%%%%%[ANSYS算例]%%%%%begin%%%%
/PREP7 !进入前处理
!=====设置单元和材料
ET,1,SOLID185 !定义1号单元类型为(SOLID185)
MP,EX,1,1e10 !定义1号单元材料弹性模量EX
MP,PRXY,1,0.25 !定义1号单元材料泊松比PRXY
!-----定义8个节点
N,1,0,0,0 !节点1,坐标(0,0,0),以下类似
N,2,0.2,0,0
N,3,0,0.8,0
N,4,0.2,0.8,0
NGEN,2,4,1,4,1,0,0,0.6 !复制节点1~4,新复制的节点编号增量
!为4,坐标偏移量为(0,0,0.6),面平移
!------基于节点生成单元
EN,1,1,4,2,6 !由节点1,4,2,6生成单元1,以下类似,共5个单元
EN,2,1,4,3,7
EN,3,6,7,5,1
EN,4,6,7,8,4
EN,5,1,4,6,7
FINISH
!------进入求解模块
/SOLU
F,7,FZ,-100000,,, !在节点7处施加FZ,-100000
F,8,FZ,-100000,,, !在节点8处施加FZ,-100000
D,1,,0,,2,,ALL,,,,, !对节点1和2,施加固定约束
D,5,,0,,6,,ALL,,,,, !对节点5和6,施加固定约束
SOLVE !求解
FINISH !退出该模块
!=====进入一般的后处理模块
/POST1 !进入后处理
PLDISP,1 !计算的变形位移显示(变形前与后的对照)
PRNSOL,U,COMP !列表给出各个节点位移值
!%%%%%%%%%%[ANSYS算例%%%%% end %%%%
启动软件Mechanical APDL
,将上述APDL代码另存为.txt文件后复制,空白处界面右键——粘贴直接导入
所有操作可以在日志文件中查看:list——files——log file
第10讲 有限元方法中的基本性质
节点编号与储存带宽
有限元方法的基本步骤及处理流程:核心是刚度方程
在进行有限元分析时,需要按单元和节点编号所对应的位置,将所形成的单元刚度矩阵装配在整体刚度矩阵中
总共有8个2D节点,即整体刚度矩阵为16*\16
将上述第i个单元的单元刚度矩阵元素填充到整体刚度矩阵中相应位置去,定义第i个单元的半带宽
=(第i个单元中节点编号的最大差值+1)×2 = (6-3+1)×2=8- 若是3D问题,则
=(第i个单元中节点编号的最大差值+1)×3
整体刚度矩阵的最大半带宽为:
整体刚度矩阵的存储方式
- 等带宽存储
- 一维变带宽存储
形状函数矩阵与刚度矩阵的性质
以杆单元为例
- 形状函数的性质
杆单元位移场:
对
- 左端单位位移,右端固定时
- 令
,有
- 令
- 右端单位位移,左端固定时
- 令
,有
- 令
- 性质1:
表示在i点的节点位移为1,其它节点位移为0时的单元位移场函数
对
- 杆单元发生刚体位移
- 令
。那么 - 所以,
- 令
- 性质2:单元的形状函数满足
,其中n为单元的节点数,它表明形状函数能够描述单元的体位移
- 单元刚度矩阵系数的性质
考虑特殊情况1:主对角线元素
- 左端单位位移,右端固定时
- 令
,有
- 令
- 性质1:单元刚度矩阵的对角线元素
表示要使单元的第i个节点产生单位位移 ,而其它节点位移为0时,需在节点i所施加的力
考虑特殊情况2:非主对角线元素
-
右端单位位移,左端固定时
- 令
,有
- 令
-
性质2:单元刚度矩阵的非对角线元素
表示要使单元的第j个节点产生单位位移 ,而其它节点位移为0时,需在节点所施加的力 -
性质3:单元刚度矩阵是对称的
-
性质4:单元刚度矩阵是半正定的
- 应变能
为非刚体位移时,除非 ,否则应变能U总为正值 为刚体位移时,有 ,而此时应变能 ,则定有
-
性质5:单元刚度矩阵是奇异的,即
-
性质6:刚度矩阵的任一行(或列)代表一个平衡力系;当节点位移全部为线位移时(即为
型问题),任一行(或列)的代数和应为零
- 总体刚度矩阵的性质
- 总体刚度矩阵由单元刚度矩阵组装
- 对称性
- 奇异性
- 半正定性
- 稀疏矩阵
- 非零元素显现带状线
边界条件的处理与支反力的计算
整体刚度方程为:
两种类型的边界条件
- 零位移:
- 给定位移:
将位移矩阵分为已知的(绿色)和未知的(红色),对应的载荷也是已知的和未知的两部分(已知的位移与未知的载荷是互补关系)
- 直接法
针对零位移的边界条件:
得到:
可得:
针对给定位移的边界条件:
得到:
可得:
直接法特点:
- a)处理过程直观
- b)待解矩阵规模变小,适合手工处理
- c)矩阵节点编号及排序改变,不利于计算机规范化处理
- 置一法
主要针对零位移边界条件:
相应地,对于整体刚度矩阵
置一法的特点
- 置1法不应改变原界条件的真实性
- 由
可知,
- 由
- 只能处理
的情形 - 保持原矩阵的规模,不需重新排序
- 保持总刚度阵的对称性,利于计算机的规范化处理
- 乘大数法
针对边界条件:
相应地,对于整体刚度矩阵
进行倍乘大数字
乘大数法的特点
- 置1法不应改变原界条件的真实性
- 由于
值很大(如取值 ),可得 可知,
- 由于
- 既能处理
的情形,又能处理 的情形 - 保持原矩阵的规模,不需重新排序
- 保持总刚度阵的对称性,利于计算机的规范化处理
- 罚函数法
其应变能为:
系统总势能:
由
如果
继而可求得支反力
罚函数法的最大好处就是可以直接求出位移边界上的支反力
位移函数构造与收敛性要求
收敛性
- 当节点数或单元插值位移的项数趋于无穷大时,即当单元尺寸趋近于零时,最后的解答如果能够无限地逼近准确解
- 曲线1:收敛于真实解
- 曲线2:收敛于真实解,收敛速度比曲线1慢
- 曲线3:不收敛于真实解
- 曲线4:非单调收敛,不构成真实解的上界或下界
- 曲线5:发散
收敛性的保证
-
单元的内部的收敛:当单元尺寸趋近于零时,使得系统单元的势能至少要存在
-
单元之间的连接的收敛:位移函数在单元之间应该保证足够的连续,使得“应变”的计算能够存在。
收敛性准则
-
针对单元内部:常位移项和常应变项
- 准则1完备性要求:如果在势能泛函中所出现位移函数的最高阶导数是
阶,则有限元解答收敛的条件之一是单元内的位移场函数的试函数至少是 阶完全多项式。
- 准则1完备性要求:如果在势能泛函中所出现位移函数的最高阶导数是
-
针对单元之间:保证足够的连续,使得“应变”的计算能够存在
- 准则2协调性要求:如果在势能泛函中位移函数出现的最高阶导数是
阶,则位移试函数在单元交界面上必须具有直至 阶的连续导数,即 连续性
- 准则2协调性要求:如果在势能泛函中位移函数出现的最高阶导数是
讨论1:平面问题中,势能函数为
由准则1,形状函数至少应包含完整的一次多项式,即偏导后可以得到常位移项和常应变项
由准则2,位移函数要求
讨论2:平面梁的弯曲问题中,势能函数为
由准则1,形状函数至少应包含完整的一次多项式,即偏导后可以得到常位移项和常应变项
由准则2,位移函数为
因此,基于两个节点的
可以使得
常用单元中,能够保证常位移项和常应变项的多项式
- 常轴力杆单元:
- 平面单元:
- 空间单元:
- 平面梁单元:
- 平板弯曲单元:
单元的位移模式——多项式的选取应考虑:
- (1)唯一确定性:待定系数个数应与节点位移的DOF数相等,选择多项式应从低阶到高阶,尽量选取完全多项式以提高单元的精度
- (2)收敛性准则1(单元内部的完备性):多项式必须要选择常数项和完备的一次项
- (3)收敛性准则2(单元之间的协调性):对于
型单元都可以保证,对于 型单元较难保证
可参考由多项式函数构成的 Pasca三角形和上述原则进行函数项次的选取和构造
单元与 单元
单元的拼片试验
- 单元的协调性
- 单元位移函数满足完备性要求→称单元是完备的
- 单元位移函数满足协调性要求→称单元是协调的
- 单元既完备又协调→称单元为协调单元
协调单元的尺寸趋于零时,有限元分析的解答趋于真实解
非协调单元
某些情况下,可以放松对协调性的要求,只要单元能通过拼片试验,有限元分析的解答仍可以收敛于正确解。这种单元称为非协调元
对非协调元,考察其收敛性就是考察其具有常应变的能力。因此,可设计一种数值试验,当对单元片中各节点赋予对应于常应变状态的载荷和位移
节点
如果能满足,则说明单元能满足常应变要求,当单元尺寸不断减小时,有限元解趋近于真实解
- 拼片试验
以平面问题中的单元为例,由于对应于常应变的位移是线性位移,即令节点位移为
若
通过拼片试验的前提是:当赋予各节点以(2)式的位移时,(3)式应该成立
若(3)式不能成立,说明当单元片中各节点具有对应于常应变状态的位移时,节点
有限元分析数值解的精度与性质
1、求解精度的估计
平面问题为例,单元位移场可展开为
- 如果单元尺寸为
,则上式中的 是 量级 - 如果单元位移函数采用
阶完全多项式,那么位移解的误差量级 - 如果应变是位移的
阶导数给出的,则应变误差量级 - 而应变能是应变的平方项表示的,其误差量级为
2、有限元分析结果的下限性质
对象的总势能:
基于最小势能原理,
平衡时系统的弹性势能,代入刚度方程可知
最小势能原理的性质:
对应于精确解的刚度矩阵及节点位移
对应于近似解的刚度矩阵及节点位移
同一个载荷下,
于是,
故,
可见,近似解的位移
有限元模型的性化
有限元方法用有限个自由度近似描述原具有无究穷多个自由度的系统,刚度会增加,系统变得更刚硬,即刚度矩阵总体数值变大。
单元应力计算结果的误差与平均处理
1、应力结果的误差性质
近似解可表达为,精确解+误差,即
定义应变误差泛函,数学含义:应变差值在加权矩阵作用下的最小二乘
同理,应变误差泛函
其中,
2、Gauss积分点上的应力精度
在GauSs积分点上,应力(应变)的近似解将具有比其他位置高得多的精度。具体对于一个等参元,若采用
3、共用节点上应力的平均处理
1.共用节点上应力的直接平均
式中
2.共用节点上应力的加权平均
由于围绕共用节点周围的客个单元的形状和大小都不一定相同,一种更合理的处理方法是进行加权平均,如果按单元的面积或体积进行加权,则有以下计算公式
- 对于2D情形,
- 对于3D情形,
以上的处理只是计算结果后处理的一种局部改善,并不能从根本上解决节点应力(应变)精度差的问题
控制误差和提高精度的h方法和p方法
1、h方法:High density
- 不改变各单元上基底函数的配置情况,只通过逐步加密有限元网格来使结果向正确解逼近,此即h方法,也称h-version
该方法可达到一般的工程精度,但由于不采用高阶多项式作基底函数,因而数值稳定性和可靠性都较好,但收敛速度较慢,效率较低
2、p方法:polynomial
- 不改变网格划分情况,只通过增加单元基底函数阶次来使结果向正确解逼近,此即p方法,也称p-version
大量实践表明,p方法的收敛性大大优于h方法。由于p方法使用高阶多项式作基底函数会出现数值稳定性问题
- 多项式的最高阶次:p < 9
3、自适应方法
- 自适应方法运用反馈原理,利用上一步的计算结果来修改有限元模型,其计算量较小,计算精度却得到显著提高
自适应方法选取
- 基于h方法
- 基于p方法
- 基于h-p方法
确定最优网络:对于给定的自由度总数
:单元特质尺寸 :多项式阶次 :采用Lagrange乘子法
自适应方法流程:
- 事前误差估计
- 初始数值模拟
- 误差分析及估计
- 选择 h,p
- 改进方案:采用高精度的数值分析方法
- 方程的求解
- 事后误差估计,是否满足精度要求
- No,回到步骤3
- Yes,继续执行8
- 获得满意的结果
第11讲 高阶及复杂单元
1D 高阶单元
1、自然坐标(1D)
定义,
2、一次杆单元(基于自然坐标)
节点位移列阵:
单元位移模式:
形状函数表达(x坐标):
形状函数表达(自然坐标):
3、二次杆单元
3个节点
节点位移列阵:
单元位移模式:
形状函数表达(x坐标):
形状函数表达(自然坐标):
4、三次杆单元
4个节点
节点位移列阵:
单元位移模式:
形状函数表达(x坐标):
形状函数表达(自然坐标):
5、一般高阶杆单元
具有n个节点的1D杆单元
根据形状函数的性质:
- 使用Lagrange插值公式,
6、Hermite单元(一般高阶
Hermite多项式进行函数插值,2节点梁单元(要求
2D 高阶单元
1、自然坐标(2D)
定义面积坐标,
2、平面3节点三角形单元(基于自然坐标)
节点位移列阵:
单元位移模式:
形状函数表达(自然坐标):
3、6节点三角形二次单元
节点位移列阵:
单元位移模式:
形状函数表达(自然坐标)
4、10节点三角形三次单元
节点位移列阵:
单元位移模式:
形状函数表达(自然坐标)
5、基于Lagrange插值的矩形单元
具有(r+1)列和(p+1)行节点的矩形单元
单元位移模式
在
同理在
对以上两个方向的Lagrange多项式进行乘积运算可得到节点
该单元在每一边界上的节点数和插值函数在边界上的变化是协调的这也保证了单元之间函数的协调性
对于线性、二次和三次函数变化的Lagrange单元
- 随着函数插值阶次的增高,必然要增加内部节点,但这些节点自由度的增加一般不能显著提高单元的精度
Lagrange矩形单元中的多项式
- 完全多项式:利于提高单元的精度
- 非完全多项式:对于提高单元的精度作用不大
主要取边节点的Serendipit单元在实际应用中得到比Lagrange单元更广泛
6、Serendipity矩形单元:尽可能在边界上取节点的高阶单元
第1步 假定只有4个角节点此时的形状函数为
第2步 在1-2边中点增加节点5构造节点5的形状函数为
此时的位移场函数为
第3步增加其他边的内节点6,7,8,进行类似补偿计算,可得
这些函数满足,
6、Serendipity矩形单元
三次Serendipity单元与三次Lagrange矩形单元的函数项次比较
Serendipity单元中对于完全多项式以外的高次项使用得较少。这使得当节点数一定时 Serendipity单元的精度较高。
3D 高阶单元
1、10节点四面体二次单元
节点位移列阵:
单元位移模式:对3D问题,由Pascal三角形可知,一个完备的二次函数有10项。由此,构造具有10个节点的四面体,包含4个角节点、6个分布在6条棱边上的中点
基于自然坐标(体积坐标)的形状函数
2、20节点四面体三次单元
节点位移列阵:
单元位移模式:对3D问题,由Pasca三角形可知,一个完备的三次函数有20项。由此,构造具有20个节点的四面体,包含4个角节点、12个分布在6条棱边上的三等分节点、4个面心节点
基于自然坐标(体积坐标)的形状函数
角节点
棱边上的三等分点
……
面心节点
3、Lagrange正六面体高阶单元
与构造2D问题Lagrange矩形单元的插值函数类似,该单元的插值函数直接由三入坐标方向的Lagrange插值多项式的乘积来获得。
单元位移模式
单元的形状函数
其中
4、Serendipity正六面体单元
与构造Serendipity矩形单元的形状函数类似,同样可以构造出各种节点的 Serendipity正六面体单元
基于薄板理论的弯曲板单元
1、基本变量与方程
- 板壳结构中的几特点是其厚度远小于其他两方向的尺寸
- 引入一定假设对厚度方向的受力特点进行简化,这些简化假设叫做Kirchhoff假定
- 由于薄板中要保持转角的连续,可以承受弯矩,因而薄板问题是
问题
Kirchhoff假定
- 薄板中面法线变形后仍为直法线,具厚度方向正应变很小,有
- 假设薄板中面无横向位移,则会导出
- 进一步得到,
- 应力
引起的形变很小,可以忽略
三大类变量
位移:
应变:
应力:
三大类方程
- 平衡方程
或者,
其中,
- 物理方程
或者,
其中,广义力
位移
弹性系数矩阵
- 几何方程
参见应变表达式
边界条件
- 位移和转角边界条件
其中,
- 位移和力矩边界条件
其中,
- 位移和集中剪力边界条件
其中,
总势能为
2、4节点矩形非协调薄板单元
节点位移列阵,
每个节点的自由度
其中,
单元位移模式,使用多项式插值(使之满足完备性要求)
单元交界面上
3、3节点三角形非协调薄板单元
4、常用弯曲薄板单元一览
子结构与超级单元
结构的重复性
- 几何空间上:采用子结构
- 计算时间上:采用超级单元
1、子结构:系统中具有相同特征和性质的局部结构
子结构划分及应用的方法
-
(1)取具有重复性的结构作为子结构(可以有多级子结构)
-
(2)对最底层子结构进行分析,形成刚度方程并缩聚
设第
级子结构刚度方程为 -
(3)将子结构进行拼装形成上一级子结构
-
(4)对多级子结构全部处理后,得最终的整体刚度方程,求
-
(5)将结果回代,再求各级子结构内部的节点位移和其它物理量
2、超级单元
主要用于多次的迭代计算(时间历程)
- 超级单元:一种广义的特定单元,是一个经缩聚内部节点自由度后的子结构,它只有与外部有连接关系的节点位移自由度
- 目的:减小计算量,特别是在需要多次选代的复杂计算中有明显优越性
- 效果:大大减小每次生成刚度矩阵的计算量,同时也减小了计算规模,获得较高的计算效率
使用刚度方程描述
对从节点的节点位移
方程(9)就代表该超级单元的单元刚度方程,
第12讲 有限元分析的应用领域引论(1)
结构振动的有限元分析:基本原理
1、结构振动问题的概述
任何变形体都存在的固有频率和振动模态,当有外界的激振作用时,会产生一系列的响应,除结构的静力分析外,结构的振动分析也是结构评价的另一个重要方面,对结构的工作状态及功能控制具有重要意义。
2、结构振动问题的基本变量
三大变量(均为坐标位置
2D问题
- 位移
位移 - 应变
应变 - 应力
应力
3、结构振动问题的基本方程
(1)平衡方程
微小体元dxdydz在动力学状态下的平衡关系,由D' Alembert原理
其中
(2)几何方程
(3)物理方程
(3)边界条件
特别的,初始条件IC(initial condition)
4、结构振动问题的虚功原理
在引入惯性力和阻尼力的基础上,写出平衡方程及力边界条件的等效积分形式
对上述方程右端的第一项进行分部积分(应用Gauss-Green公式),有
这就是动力学问题的虚位移方程(虚功方程)
5、结构振动问题的有限元分析列式
单元的节点位移矩阵:
单元内的位移插值函数:
应变、应力、速度、加速度由节点位移矩阵表示为
将相关物理量代入前面的虚功方程
节点位移微元
其中,
单元的质量矩阵
单元的阻尼矩阵
单元的刚度矩阵
进行单元的装配,得到结构振动总刚度方程
6、结构振动问题的讨论
(1)静力学情形(static case)与时间无关,退化为
(2)无阻尼情形(undamped case),
(3)无阻尼自由振动(free vibration of undamped system),自由振动
解的形式为简谐振动,
有非零解,特征方程
- 特征值
- 自然圆频率(
) - 自然频率
- 特征向量
对应振动频率 的振型
7、结构振动问题中的质量矩阵
- 一致质量矩阵
直接由形状函数矩阵推导质量矩阵,“一致”:这里用的形状函数与推导刚度矩阵所用的形状函数是一致的,其中各系数之间存在耦合 - 集中质量矩阵
将质量集中到节点上,“集中”:系数都集中在矩阵对角线上,各个系数相互独立、解耦,便于求解
杆单元的质量矩阵
梁单元的质量矩阵
质量矩阵类型 | 梁单元的质量矩阵 | 平面三节点三角形单元 | 平面四节点四角形单元 |
---|
结构振动的有限元分析实例
一个阶梯杆结构的轴向自由振动分析
- 弹性模量:
- 密度:
- 横截面积关系:
1、单元离散
离散方式:自然离散
单元编号
代入总体的自由振动方程(
自由振动的特征方程
令
振型
弹塑性问题的有限元分析:基本原理
1、弹塑性问题的概述
弹塑性问题(elastic-plasticity problem)是指变形体的力学行为呈现出超出弹性极限后的塑性行为。
在大多数情况下,人们在进行结构设计时一般都以材料的弹性极限作为依据,还考虑有一定的安全系数,也就是说,处于工作状态中的材料应该处于弹性范围。
2、弹塑性问题的物理方程
研究弹塑性问题(elastic-plastic problem)的关键在于物理方程的处理
材料弹塑性行为实验(单向拉伸或压缩)的特征
- 初始屈服条件,即屈服准则
- 材料屈服后,塑性应变增长的规律,即流动法则
- 新的屈服极限,即强化准则
(1)屈服准则——确定材料产生屈服时的临界应力状态(3D)
大量的实验表明:多数材料的塑性屈服(plastic yielding)与静水压力无关
可以利用等倾八面体
(2)塑性流动准则——确定塑性应变分量在塑性变化时的大小、方向
(3)强化准则——描述屈服面如改变,确定新的屈服面状态
- 等向强化(isotropic hardening)模型
- 随动强化(kinematic hardening)模型
- 混合强化(非等向)(anisotropic hardening)模型
在发生塑性强化的情况下,材料的临界屈服应力将随看塑性应变的积累而发生变化
材料塑性行为的几种典型的模型
- a.双线性随动强化(bilinear kinematic)
- b.多线性随动强化(multilinear kinematic)
- c.双线性等向强化(bilinear isotropic)
- d.多线性等向强化(multilinear isotropic)
- e.非等向强化(Anisotropic)
- f.Drucker-Prager模型
- 基于全量理论的有限元分析列式
假设:整个加载过程为比例加载(proportionally loading),其结果只与状态有关,与加载过程无关
- 基于增量理论的有限元分析列式
增量理论考虑真实的加载过程,即变形结果与加载历史有关
弹塑性问题的有限元分析:非线性问题求解
1、非线性方程求解的Newton-Raphson(N-R)选代法
有限元列式——非线性方程组:
非线性方程组求解
- 直接选代法
- Newton-Raphson(N-R)迭代法
- 改进的N-R迭代法
Newton-Raphson(N-R)迭代法
- 思想:分步逼近计算
- 主要步骤:将总载荷分成一系列载荷段,在每一载荷段内进行非线性方程的迭代
- 特点:在迭代中非线性方程变为线性方程
1.将总载荷分为一系列载荷段
- 多步迭代
在载荷段
第
其中,
解出
- 所有载荷段:循环迭代,累加结果
2、修正的Newton-Raphson(N-R)迭代法
- 常规的N-R迭代:需要每次重新形成切线刚度矩阵并求逆,计算量很大
- 改进的N-R迭代:始终采用初始的切线刚度矩阵,保持不变大大减少计算量
第13讲 有限元分析的应用领域引论(2)
传热问题的有限元分析:基本原理
1、传热问题的概述
传热(heat transfer)是日常生活和工程实际中广泛存在的自然现象
进行热题的分析一般包括两部分内容:
- 1、通过传热分析来确定温度场
- 2、在获得温度场的基础上,计算所产生的热应力
2、传热问题的控制方程
- Fourier传热定律
- 能量守恒定律
物体的瞬态温度场
为材料密度,单位 为材料的比热单位 分别为沿 方向的热传导系数,单位 为物体内部的热源强度,单位
3、传热问题的三类边界条件
第一类
第二类
第三类
物体
4、传热问题的变分原理
考虑问题的初始条件IC(initial condition)
变分提法为在满足三类边界条件及初始条件的许可温度场中,真实的温度场使以下泛函取极小值
在实际问题的处理过程中,第二类和第三类边界条件事先较难满足,因此可将这两个条件耦合进泛函中,即
5、稳态传热问题的有限元分析列式
稳态问题(steady problem):温度不随时间变化
6、瞬态传热问题的有限元分析列式
-
瞬态传热问题求解的特点
-
瞬态传热问题可以转化为一组以时间t为独立变量的线性常微分方程组
影响整个问题的收敛性,必须根据解的稳定性理论来给出一个最大收敛步长的条件,以得到稳定的解,并控制好计算误差
7、平面3节点三角形传热单元
考虑三种情况
- 无传热边界,即完全为内部单元
- 如果该单元的
边为第二类传热边界 时:由 参数来描述 - 如果该单元的
边为第三类传热边界 时:由 参数来描述
7.1、完全为内部单元(无传热边界)
7.2、
7.3、
传热问题的有限元分析实例
无限长平板稳态温度场的有限元分析
1、结构的离散化与编号
节点的温度列阵:
2、单元描述
对于单元3,也是内部单元,与单元2类似,其系节点温度为
3、建立整体有限元分析方程
4、边界条件的处理及方程求解
该问题的边界条件为
理论解
热应力问题的有限元分析:基本原理
1、热应力问题的物理方程
2、热应力问题的虚功原理
热应力问题中只有物理方程发生了变化
3、热应力问题的有限元分析列式
热应力问题的有限元分析实例
一个夹持杆结构的温度应力分析
- (1)在
时,一个力作用在一个夹持杆件上 - (2)随后温度上到
,在这种情况下,进行该结构的有限元分析
1、结构的离散化与编号
离散成两个杆单元
2、单元的描述
3、建立整体刚度方程
组装单元,整体刚度矩阵
4、边界条件的处理及刚度方程求解
对于位移边界条件,即自由度1、3固定
解得,
5、计算单元的应力
14专题 有限元分析的典型
project Case study A small project with help of the finite element analysis
基本建模Project1:2D问题带孔平板的受力分析
建模要点:
1、属于平面应力问题,单元选择:PLANE182
2、分别建立平面方板和圆孔平面
3、通过布尔运算生成带孔平板
4、对几何模型的线设置网格大小后进行网格划分
APDL:通过日志文件,可以查看apdl命令流记录的操作,具有累赘多余GUI的垃圾操作记录
%%%%%%%%[基本建模Project1]%%%% begin %%%%%%
/PREP7 !pre-processor
ET,1,PLANE182 !selectelementtype(no.1plane182)
KEYOPT,1,3,3 !set plane stress with thickness
R,1,1, !realconstant(thickness=1)
UIMP,1,EX,,,2.1e5, !elastic modulus
UIMP,1,PRXY,,,0.3, !poission ratio
BLC4,0,0,100,100 !create a rectanglar area (x=0,y=0, width=100,height=100), area No.1
CYL4,50,50,5 !create a circular area (center x=50,y=50,rad=5),area No.2
ASBA,1,2 !subtract area No.2 from area No.1, i.e. the area No.1 - the area No.2
ESIZE,0,5 !divide5piecesfor every line
MSHAPE,0,2D !key=0 for quadrilateral-shaped element(2D)
MSHKEY,0 !free meshing (0)
AMESH,all !meshall area
FINISH !pre-processor end
/SOLU !enter solution environment (for DOF constraints,force,solve)
NSEL,S,LOC,X,0 !select the nodes at x=0
D,all,ux
NSEL,R,LOC,Y,0 !apply ux=o for selected nodes
D,ALL,UY !re-select the node at y=o based on above selection (x=o, y=0)
LSEL,S,LOC,X,100 !apply uy=o for selected node Iselect the line at x=0
SFL,all,PRES,-100 !apply a pressure on selected line
ALLSEL !select all
SOLVE !solve
FINISH !end the solution
/POST1 !entersolutionenvironment(for DOF constraints,force,solve)
PLNSOL,S,X !displaythedistributionof gxx
!%%%%%%%%[基本建模Project1]%%%%end%%%%%%
(1)如果希望将方板的宽度和高度设为参数(每个变量不超过8个字符):
plate_w=80
plate_h=120
(2)如果希望将中间孔的位置和半径设为参数:
hole_x=30
hole_y=40
hole_r=8
(3)将弹性模量设为参数
e_modu=1e5
(4)将每边的单元分段设为参数
line_div=6
(5)将外载值设为参数
pressure=200
基本建模Project2:3D问题花形卡盘的扭转受力分析应用建模
花形卡盘的扭转受力分析命令流
Project3:振动模态分析斜拉桥的模态分析
应用建模Project4:弹塑性分析厚壁圆筒受内压的弹塑性分析应用建模
如图所示厚壁圆筒内壁受到
建模要点
- 由于圆筒很长,因此受均布压力的圆简属于平面应变问题,根据对称性用1/4横截面建立计算模型。在ANSYS环境中设置分析类型,选择平面单元PLANE183,设置为平面应变
- 通过命令< TB,BKIN >将材料设定为双线性动态强化的材料模型,通过命令< TBDATA >给出材料的屈服应力以及切向模量,对理想弹塑性材料,可以将切尚模量设置为较小的数,这里设置为零
- 对于非线性的弹塑性分析,通过命令< TIME >定义加载步和计算步,采用命令< DELTIM >设定计算子步的步长。分析类型设定为静态分析
- 在一般后处理中,通过命令< RSYS,1 >设置成柱坐标系,通过命令< PATH >及< PPATH >来定义中间截面的路径,采用命令< PDEF >将应力映射到该路径上,采用命令< PLPATH >显示计算结果
- 在时间历程后处理中,采用命令< ANSOL >定义平均节点应力作为变量采用命令< PLVAR >画出变量随时间(外载)的变化曲线。
Project5:传热分析钢制圆柱冷却过程的瞬态传热分析应用建模
如图所示,直径为30mm、高度为60mm的钢制实心圆柱。圆柱的初始温度为
将钢材的密度设为
计算圆柱冷却过程的温度分布及温度随时间的变化冷却时间为100秒
建模要点】
- 根据热传导的对称性,此问题可以作为轴对称问题进行分析,取圆柱纵截面的1/4作为计算模型。在圆柱的外侧面和上端面存在对流换热。建立几何模型时长度单位取mm,统一物理量的单位,导热系数的单位取
℃),密度的取 ,换热系数的单位取 ℃)。 - 采用传热单元plane77,设置材料导热系数和热容随温度线性变化,
- 设定为瞬态计算< ANTYPE,TRANS >,通过命令< TUNIF >使得初始温度,在圆柱的侧面和端面上定义对流换热边界条件,通过命令< TIME>设定瞬态过程的计算时间
- 在一般后处理< /POST1>中,通过命令< /EXPAND >进行对称映射显示设置,以云纹图或等值线方式显示温度分布,以失量图方式显示热流分布.在时间后处理< /POST26>中通过命令< NSOL>设置圆柱中心、侧表面中间、端面与侧表面交界处等位置节点上温度变量随时间的变化,在通过命令< PLVAR >显示温度变量的曲线,
Project6:热应力分析桁架结构的温度及装配应力分析
如图所示为一个桁架结构,分析下列两种情形下的节点位移和单元应力:
- a)构件1、3、7和8的温度升高50℃
- b)由于制造误差,构件9和10短了
,而构件6长了 ,但必须进行强制装配架所用材料的相关参数:弹性模量 ,线膨胀系数 ℃) - c)每个构件的横截面积均为
建模要点
- 选择可以施加温度载荷的一二维杆单元LINK1,温度可以作为体力施加到单元上。情形(a)是单纯的温度应力问题,情况(b)属于装配应力问题,也可以转化成温度应力问题。
- 对于情形(a),通过命令< TREF >把参考温度设为20℃,通过命令< BFE >对单元1、3、7和8施加温度70℃,
- 对于情形(b),同样可以采用命令< BFE >对单元6、9和10上施加适当的温度变化值,使得各自的温度收缩直等价于制造误差,即假定单元由温度变化引起的自由伸循量,与单元长度的差异量相同,由
计算得到等效温度的变化。单元6长了0.27mm,相当于把单元6的温度升高24℃。单元9和10短了0.63mm,相当于把单元9和10的温度降低39.6℃。
高级建模Project7:结构的概率分析——大型液压机机架的概率设计分析
随机输入参数对系统的影响
如图所示,一个大型液压机机架,在其外圈承受有预紧压力,在内圈承受有工作压力,假设由于制造的原因,使得机架的尺寸有一定的误差,同时,所承受的载荷也有一定的分散度,因此,可以将这几个参数考虑为具有概率分布的随机变量,然后,对机架的最大等效应力(MAXVON)、应力强度(MAXINT)、第一主应力(MAX1)进行分析,相关的参数如下
- 材料:
, - 几何:
, ;
R1服从Gauss分布,均值为2.25m,方差为0.1;
R2服从Gauss分布,均值为4.5m,方差为0.2; - 载荷:PRS1服从Gauss分布,均值为261.4MPa,方差为26.07;
PRS2服从Gauss分布,均值为196.1MPa,方差为19.8;
结构概率分析的一般流程
- 首先构建宏文件,以便进行概率分析的循环运行,将常规的有限元建模、分析、后处理以及参数提取都放到宏文件中
- 调入并执行宏命令
- 进入概率设计分析模块,进行所有与概率设计分析有关的操作包括设置自变量的概率分布、响应参数以及相关系数,并执行概率设计计算,观察结果,图示或列出变量的内容等。
建模要点
- 1.采用单元PLANE182,在几何建模时需要考虑各个几何参数之间的匹配,因为结构的概率分析需要自动改变各个参数以进行多次的参数化儿模型修改和单元战划分;
- 2.采用命令< *CREATE>建立宏文件,给出完整的有限元建模过程,并设置针对随机变量分析的参数,在后处理中,采用命令<*GET>获取需要进行随机响应变量分析的参数;以便于在概率分析时进行循环运行;
- 在宏文件中需要对将进行概率设计的输入随机变量事先设置为参数,在宏文件的后处理中,还要设置为响应随机变量的参数,采用命令< *GET>进行提取,并设置成为参数;
- 在主程序中,首先调入宏文件,通过命令< /PDS>进入概率设计分析模块,通过命令< PDANL>指定宏文件进行概率设计,通过命令< PDVAR>设定输入及响应随机变量,对于输入随机变量,指定概率分布的形式及参数;;
- 通过命令< PDMETH>设置随机处理的方法,由命令< PDLHS>设置模拟循环次数,由命令< PDEXE>运行概率设计分析;
- 在概率设计分析模块中,直接采用命令< PDHIST>、< PDSHIS>、< PDSENS>、< PDSCAT>给出随机变量的样本分布、采样曲线、概率敏感图、两个相关变量相关性的图形,采用命令< *GET>获取随机变量的平均值及均方差值等信息。
高级建模Project8:p方法的建模与应用——平面问题的p型单元建模与分析
- p方法是保持有限元的剖分网格固定不变,增加各单元上基底函数的阶次,使分析结果逐步向正确解逼近。
- p方法优点:在使用者没有定义精细网格的情况下,仍可获得具有较高精度的解,这些是传统的h方法所做不到的。
- P方法中基底函数的阶次越高,对正确解的逼近程度就越好,但是由于计算机容量和速度的限制,再加上高阶函数会出现插值波动现象,一般情况下多项式函数的最高阶次p<9
- p方法的收敛准则可以包括计算模型节点上的位移应力和应变或整体的应变能
如图所示,带孔方板受均布拉力作用,使用p型单元,分析孔边缘最大应力,相关的参数如下。
- 几何:L=150mm,H=80mm,R1=5mm,R2=10mm,t=0.5mm
- 材料:E=2.1e5Mpa,μ=0.3;
- 载荷:Pressure=100MPa
p方法分析的一般流程
- 前处理
- 设置p方法求解,给出p型单元的阶次范围
- 建立模型,进行网格设置及划分
- 设置p型单元的误差及收敛参数
- 在后处理中考察结果
【建模要点】
- 采用p型单元PLANE145,采用常规的建模流程进行建模,可以采取较粗的网格,p方法将采用增加各单元基底函数阶次的方法来改善计算精度;
- 根据对称性,取一半的对象进行常规的建模。在该模型中,将生成两个圆面,可以采用命令< WPOFFS>来平移工作面,以便采用命令 < PCIRC>来生成圆面;
- 在求解之前,需要设置关键节点的物理量,通过命令< PCONV>来采用p方法中的p阶次来以控制计算误差,一般情况下,对局部的计算精度来进行控制,为提高计算效率,对一些关键点周边的单元,可以保持单元的p阶次不变,采用命令< PMOPTS>来进行设置可以设置多点的p方法收敛准则;
- 求解后,在后处理中,需要采用命令< SET>调出计算结果,采用命令< *GET>获取关键位置上的计算结果,采用命令< PLCONV>及< PPLOT>显示和图示p方法的收敛曲线及单元的p阶次。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)