自研有限元软件与ANSYS精度对比-Bar2D2Node二维杆单元模型-四连杆实例

目录

1、四连杆工程实例以及手算求解

2、四连杆的自研有限元软件求解

2.1、选择单元类型

2.2、导入四连杆工程

2.3、节点坐标定义

2.4、单元连接关系、材料定义

2.5、约束定义

2.6、外载定义

2.7、矩阵求解

2.8、变形云图展示

2.9、节点位移

2.10、单元应力

2.11、节点支反力

3、四连杆ANSYS软件求解

3.1、变形云图

3.2、节点位移

3.3、单元应力

3.4、节点支反力

4、结果对比

4.1、节点位移对比

4.2、单元应力对比

4.3、节点支反力对比


本系列文章致力于实现"手搓有限元,干翻Ansys的目标",基本框架为前端显示使用QT实现交互,后端计算采用Visual Studio C++。

基于前文的准备工作,已具备初步的有限元分析的全流程计算,接下来终于能够进行实例显示啦,为了验证计算的准确性,将自研的有限元软件与商业软件ANSYS的计算结果进行对比。

1、四连杆工程实例以及手算求解

(以上计算与实例来自于**《有限元分析基础教程 曾攀 2008》p38~p42**)

2、四连杆的自研有限元软件求解

根据前文的基础,具备了QT操作界面(点击此处跳转软件操作界面)与C++求解功能(点击此处跳转求解类),现在按照四连杆工程实例进行求解计算。

2.1、选择单元类型

在软件操作界面中选择二维杆模型Bar_2D2Node(点击此处跳转Bar2D2Node类的介绍)

2.2、导入四连杆工程

这里导入提前设置好的四连杆模型,在软件操作界面中可以显示模型的节点位置与单元连接状态。

2.3、节点坐标定义

在四连杆实例中,一共有四个节点,上面的表格展示的是四个节点的ID以及坐标,ID其实就是节点编号,与第一节的节点编号不同的是,这里的起始节点编号是0,而第一节的起始节点是1。其它坐标均与第一节保持一致。

2.4、单元连接关系、材料定义

这里展示的是单元的ID、起始节点ID、结束节点ID、杨氏模量和横截面积,注意这里的单元ID指的是单元编号,与第一节不同的是,这里的单元起始编号是从0开始的,而第一节是从1开始的。杨氏模量E与横截面积A的单位与第一节是保持一致的。

2.5、约束定义

这里表示的是节点的约束,在0号节点与3号节点是X、Y方向的位移约束,1号节点是Y方向位移约束。在表格中,HorizontalFix与VerticalFix为1代表为约束状态,0代表自由状态。InitalHorizontalDistance与InitalVerticalDistance代表初始位移量,均为0。与第一节的工程实例保持一致。

2.6、外载定义

这里表示的是不同节点外载数值,1号节点存在水平向右大小为20000N的集中力,2号节点存在竖直向下大小为25000N的集中力。与第一节的工程实例保持一致。

2.7、矩阵求解

这里直接点击求解器进行数值求解。

2.8、变形云图展示

这里可以直观的展示四连杆的变形状态,并且可以调整不同的图像色阶,通过调整缩放比例可以查看不同程度的变形。

2.9、节点位移

这里展示的是不同节点的位移数值。在第四节有详细的对比。

2.10、单元应力

这里展示的是不同单元的应力数值。在第四节有详细的对比。

2.11、节点支反力

这里展示的是不同节点的支反力数值。在第四节有详细的对比。

3、四连杆ANSYS软件求解

这里操作流程略去,直接查看结果:

3.1、变形云图

3.2、节点位移

红色方框内的就是每个节点的位移数值。注意节点编号是从1开始的,这里与第一节保持一致。

3.3、单元应力

红色方框内的就是每个单元的应力数值。注意节点编号是从1开始的,这里与第一节保持一致。

3.4、节点支反力

红色方框内的就是存在约束的节点支反力信息。

4、结果对比

综合三种计算过方法进行数据对比(手算、自研有限元软件、Ansys软件)

4.1、节点位移对比

|--------------|--------------------|--------------------------------|---------------------------|
| 节点ID(按照手算ID) | 手算(mm) | 自研有限元软件(mm) | Ansys软件(mm) |
| 1 | X:0 Y:0 | X:0 Y:0 | X:0 Y:0 |
| 2 | X:0.2712 Y:0 | X:2.711864e-01 Y:0 | X:2.7119e-1 Y:0 |
| 3 | X:0.0565 Y:-0.2225 | X:5.649718e-02 Y:-2.224576e-01 | X:5.6497e-2 Y:-2.22246e-1 |
| 4 | X:0 Y:0 | X:0 Y:0 | X:0 Y:0 |
[三种计算方式节点位移对比]

可以看出三种不同方式计算出的节点位移结果是很相近的,只不过是由于保持精度位数不同的原因,存在一些舍入误差。

4.2、单元应力对比

|--------------|-------------|------------------|------------------|
| 节点ID(按照手算ID) | 手算(N/mm^2) | 自研有限元软件(N/mm^2) | Ansys软件(N/mm^2) |
| 1 | 200 | 2.000000e+02 | 2.0000e+02 |
| 2 | -218.8 | -2.187500e+02 | -2.1875e+02 |
| 3 | -52.08 | -5.208333e+01 | -5.2083e+01 |
| 4 | 41.67 | 4.166667e+01 | 4.1667e+01 |
[三种计算方式单元应力对比]

可以看出三种不同方式计算出的单元应力结果是很相近的,只不过是由于保持精度位数不同的原因,存在一些舍入误差。

4.3、节点支反力对比

|--------------|---------------------|--------------------------------|-------------------|
| 节点ID(按照手算ID) | 手算(N) | 自研有限元软件(N) | Ansys软件(N) |
| 1 | X:-15833.0 Y:3126.0 | X:-1.583333e+04 Y:3.125000e+03 | X:-15833 Y:3125.0 |
| 2 | Y:21879.0 | Y:2.187500e+04 | Y:21875 |
| 4 | X:-4167.0 Y:0 | X:-4.166667e+03 Y:0 | X:-4166.7 Y:0 |
[三种计算方式节点支反力对比]

可以看出三种不同方式计算出的节点支反力结果是很相近的,只不过是由于保持精度位数不同的原因,存在一些舍入误差。注意只有存在约束的节点才会存在支反力。

相关推荐
南林yan1 小时前
C++智能指针
c++
好好学习O(∩_∩)O1 小时前
取模与加减乘除原理,模拟实现代码及相关公式推导
c++·算法
CPU NULL1 小时前
【蓝桥杯】日志统计
数据结构·c++·算法·蓝桥杯
DARLING Zero two♡2 小时前
C++底层学习预备:模板初阶
开发语言·c++·模板
和风化雨2 小时前
排序算法--希尔排序
c语言·数据结构·c++·算法·排序算法
YxVoyager4 小时前
OpenGL学习笔记(七):Camera 摄像机(视图变换、LookAt矩阵、Camera类的实现)
c++·笔记·图形渲染
程序员东min6 小时前
C++:抽象类习题
开发语言·c++
Victoria.a8 小时前
string类详解
数据结构·c++
转调10 小时前
第九章:内存池的调整与测试
c++·内存池