自研有限元软件与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 |
可以看出三种不同方式计算出的节点支反力结果是很相近的,只不过是由于保持精度位数不同的原因,存在一些舍入误差。注意只有存在约束的节点才会存在支反力。
相关文章:
自研有限元软件与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、…...
04树 + 堆 + 优先队列 + 图(D1_树(D11_伸展树))
目录 一、基本介绍 二、伸展操作 1. 左右情况的伸展 2. 左左情况的伸展 3. 右左情况的伸展 4. 右右情况的伸展 三、其它操作 1. 插入 2. 删除 四、代码实现 一、基本介绍 伸展树是一种二叉搜索树,伸展树也是一种平衡树,不过伸展树并不像AVL树那…...
c语言练习题【数据类型、递归、双向链表快速排序】
练习1:数据类型 请写出以下几个数据的数据类型 整数 a a 的地址 存放a的数组 b 存放a的地址的数组 b的地址 c的地址 指向 printf 函数的指针 d 存放 d的数组 整数 a 的类型 数据类型是 int a 的地址 数据类型是 int*(指向 int 类型的指针) …...
SliverAppBar的功能和用法
文章目录 1 概念介绍2 使用方法3 示例代码 我们在上一章回中介绍了SliverGrid组件相关的内容,本章回中将介绍SliverAppBar组件.闲话休提,让我们一起Talk Flutter吧。 1 概念介绍 我们在本章回中介绍的SliverAppBar和普通的AppBar类似,它们的…...
五、定时器实现呼吸灯
5.1 定时器与计数器简介 定时器是一种通过对内部时钟脉冲计数来测量时间间隔的模块。它的核心是一个递增或递减的寄存器(计数器值)。如果系统时钟为 1 MHz,定时器每 1 μs 计数一次。 计数器是一种对外部事件(如脉冲信号ÿ…...
Elasticsearch的索引生命周期管理
目录 说明零、参考一、ILM的基本概念二、ILM的实践步骤Elasticsearch ILM策略中的“最小年龄”是如何计算的?如何监控和调整Elasticsearch ILM策略的性能? 1. **监控性能**使用/_cat/thread_pool API基本请求格式请求特定线程池的信息响应内容 2. **调整…...
【大模型理论篇】最近大火的DeepSeek-R1初探系列1
1. 背景介绍 这一整个春节,被DeepSeek-R1刷屏。各种铺天盖地的新闻以及老板发的相关信息,着实感受到DeepSeek-R1在国外出圈的震撼。 DeepSeek推出了新的推理模型:DeepSeek-R1-Zero 和 DeepSeek-R1。DeepSeek-R1-Zero 是一个在没有经过监督微调…...
【数据结构】(4) 线性表 List
一、什么是线性表 线性表就是 n 个相同类型元素的有限序列,每一个元素只有一个前驱和后继(除了第一个和最后一个元素)。 数据结构中,常见的线性表有:顺序表、链表、栈、队列。 二、什么是 List List 是 Java 中的线性…...
【C++ STL】vector容器详解:从入门到精通
【C STL】vector容器详解:从入门到精通 摘要:本文深入讲解C STL中vector容器的使用方法,涵盖常用函数、代码示例及注意事项,助你快速掌握动态数组的核心操作! 一、vector概述 vector是C标准模板库(STL&am…...
OpenAI推出Deep Research带给我们怎样的启示
OpenAI 又发新产品了,这次是面向深度研究领域的智能体产品 ——「Deep Research」,貌似被逼无奈的节奏… 在技术方面,Deep Research搭载了优化后o3模型并通过端到端强化学习在多个领域的复杂浏览和推理任务上进行了训练。因没有更多的技术暴露…...
洛谷[USACO08DEC] Patting Heads S
题目传送门 题目难度:普及/提高一 题面翻译 今天是贝茜的生日,为了庆祝自己的生日,贝茜邀你来玩一个游戏。 贝茜让 N N N ( 1 ≤ N ≤ 1 0 5 1\leq N\leq 10^5 1≤N≤105) 头奶牛坐成一个圈。除了 1 1 1 号与 N N N 号奶牛外࿰…...
CSS 溢出内容处理:从基础到实战
CSS 溢出内容处理:从基础到实战 1. 什么是溢出?示例代码:默认溢出行为 2. 使用 overflow 属性控制溢出2.1 使用 overflow: hidden 裁剪内容示例代码:裁剪溢出内容 2.2 使用 overflow: scroll 显示滚动条示例代码:显示滚…...
Spring Boot项目如何使用MyBatis实现分页查询
写在前面:大家好!我是晴空๓。如果博客中有不足或者的错误的地方欢迎在评论区或者私信我指正,感谢大家的不吝赐教。我的唯一博客更新地址是:https://ac-fun.blog.csdn.net/。非常感谢大家的支持。一起加油,冲鸭&#x…...
飞行汽车中的无刷外转子电机、人形机器人中的无框力矩电机技术解析与应用
重点:无刷外转子电机与无框力矩电机:技术解析与应用对比 在现代工业自动化和精密机械领域,无刷电机因其高效、低噪音和高可靠性而备受青睐。其中,无刷外转子电机和无框力矩电机更是以其独特的结构和性能特点,成为众多应用场景中的…...
FreeRTOS学习 --- 队列集
队列集简介 一个队列只允许任务间传递的消息为同一种数据类型,如果需要在任务间传递不同数据类型的消息时,那么就可以使用队列集 ! 作用:用于对多个队列或信号量进行“监听”,其中不管哪一个消息到来,都可让…...
【R语言】R语言安装包的相关操作
一、管理R语言安装包 1、安装R包 install.packages() 2、查看已安装的R包 installed.packages() 3、更新R包 update.packages() 4、卸载R包 remove.packages() 二、加载R语言安装包 打开R语言时,基础包(base包)会自动被加载到内存中…...
15.[前端开发]Day15-HTML+CSS阶段练习(网易云音乐四)
完整代码 01_网易云-header <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"wid…...
【基于SprintBoot+Mybatis+Mysql】电脑商城项目之用户登录
🧸安清h:个人主页 🎥个人专栏:【Spring篇】【计算机网络】【Mybatis篇】 🚦作者简介:一个有趣爱睡觉的intp,期待和更多人分享自己所学知识的真诚大学生。 目录 🎯1.登录-持久层 &…...
测试方案和测试计划相同点和不同点
在软件测试领域,测试方案与测试计划皆为举足轻重的关键文档,尽管它们有着紧密的关联,但在目的与内容层面存在着显著的差异。相同点: 1.共同目标:测试方案和测试计划的核心目标高度一致,均致力于保障软件的…...
c++提取矩形区域图像的梯度并拟合直线
c提取旋转矩形区域的边缘最强梯度点,并拟合直线 #include <opencv2/opencv.hpp> #include <iostream> #include <vector>using namespace cv; using namespace std;int main() {// 加载图像Mat img imread("image.jpg", IMREAD_GRAYS…...
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
(转)什么是DockerCompose?它有什么作用?
一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
视觉slam十四讲实践部分记录——ch2、ch3
ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...
android13 app的触摸问题定位分析流程
一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...
【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验
Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...
