当前位置: 首页 > news >正文

在 LS-DYNA 中将应力转换为用户定义的坐标系

介绍

通常,使用 LS-DYNA 或 Ansys Mechanical 等仿真工具解决工程问题需要将张量结果与解析解进行比较。一个这样的例子是加压圆柱体,其中圆周应力或环状应力是感兴趣的主要应力度量。例如,如果对具有复杂端部处理的几何结构进行此类仿真,则希望使用环向应力(例如在容器中心)来验证仿真是否在不存在解析结果的更复杂几何结构区域中提供准确的结果。

在大多数现代后处理器中,应力分量可能在笛卡尔坐标、主方向,甚至圆柱或球坐标中绘制条纹。但是,可能需要将结果将张量结果旋转到所述后处理器中“开箱即用”的方向。在本文中,我们将提供一个可验证的张量转换示例,该示例使用 Python 3.11 脚本从 LS-PrePost 中以笛卡尔坐标读取加压圆柱体的应力条纹图结果,然后将应力张量旋转为圆柱坐标以计算环向应力。

个案研究

我们将用来说明这个概念的模型是一个 d = 100 mm 平均直径 x l = 150 mm 长 x t = 2mm 厚的圆柱体,内部压力为 p = 4 MPa,使用 LS-DYNA 求解。教科书般的图像1如下所示:

 

 

51a5548a01023fea73042888f9839fca.png

有限元模型

圆柱体的材料是 Workbench Engineering Data 中的标准线性各向同性弹性结构钢,网格由 2.5 毫米大小的壳单元组成,使用默认截面属性。网格尺寸提供均匀的网格。

 

bb6dbd9c988c179b1ba304b20d7ef31e.png

 

载荷和边界条件

根据众所周知的公式,内部压力p选定为4 MPa,这样环向应力将等于100 MPa

 

0651637dd2f9c3167daf792665a57724.png

其中r = 平均圆柱半径,t = 壁厚。此外,均衡约束(又称 3-2-1 约束)应用于黄色显示的顶点,以提供无应力约束。

 

6ec822411bf28ef4431510e1f8b84315.png

分析设置

分析类型设置为隐式,伪结束时间为 0.01 秒。选择隐式分析是为了加快分析运行时间。

模拟结果

利用 Ansys Mechanical 中的圆柱坐标系,我们可以轻松地对(未平均的)环向应力进行后处理,得到 100 MPa 的结果,从而与理论相匹配。

 

81373b83685b95323acbb4cec6977400.png

这个结果表明我们的模拟与理论相符。

使用 Python 重建环向应力

现在已经使用 Ansys Workbench LS-DYNA 找到了环向应力结果,我们将通过处理从 LS-PrePost 输出的笛卡尔应力分量来重建相同的环向应力结果。

导出笛卡尔应力分量

为了获得旋转应力张量所需的数据,必须从 LS-PrePost 导出所有六个分量。导出每个应力分量的过程将针对 X 分量进行说明,并且必须针对 Y、Z、XY、YZ 和 ZX 分量重复此过程:

  1. 像往常一样加载二进制 D3Plot 文件并将结果时间设置为结束状态。
  2. 在边缘图中绘制 X 应力。

    c846a577806f518c4815ff67541ee417.png

  3. 使用下面显示的设置输出结果,例如,将文件命名为“xstress”。

    4cc3fdd0f369d0bc62827bfb88e11562.png

  4. 点击“完成”并对其他 5 个压力分量重复此操作。
  5. 确保所有六个文件都在同一个目录和python脚本中。

输出文件格式

输出文件的格式为 LS-DYNA 关键字格式,这是一种固定宽度的文件格式。Python 脚本利用固定宽度的结构来解析文件的每个部分。

*ELEMENT_SHELL 部分

元素连接表位于文件的 *ELEMENT_SHELL 部分中,其中的一小部分如下所示:

8b14ce2961434d812f2ec6de840c6acf.png

列定义和宽度如下:

柱子数据宽度
1元素 ID8
2零件编号8
3节点 18
4节点 28
5节点 38
6节点 48

*NODE 部分

类似地,节点坐标在 *NODE 部分中给出,其中的摘录如下所示:

09435c5d0a78fe202572dd14b8d8de58.png

列定义和宽度如下:

柱子数据宽度
1节点 ID8
2X 坐标16
3Y 坐标16
4Z 坐标16

 

$SHELL_ELEMENT_RESULTS 部分

$SHELL_ELEMENT_RESULTS 部分提供元素每个积分点的输出结果。在本例中,我们使用具有单个积分点的壳元素。本节的摘录如下所示:

 

b44cac79fd80d32c9bc57a2dfea008de.png

列定义和宽度如下: 

柱子数据宽度
1元素 ID8
2元素结果16

 

$SHELL_ELEMENT_CENTROID 部分

$SHELL_ELEMENT_CENTROID 部分提供变形状态下每个元素的质心和体积。本节摘录如下:

e54475f1cc043f3c360752eefbcca40b.png

列定义和宽度如下:

柱子数据宽度
1元素 ID10
2X 坐标16
3Y 坐标16
4Z 坐标16
5体积16

 

Python 算法

下面的伪代码解释了用于转换压力的算法:

  1. 读取六个应力文件中的每一个并解析各个部分以获得元素表、节点坐标、元素结果(非平均应力)和元素质心坐标(在变形配置中)。
  2. 将元素表与节点坐标和元素结果合并。
  3. 形成元素结果(应力)张量S。
  4. 根据右手定则,使用两个元素边缘的叉积计算每个元素质心处的法向单位向量。我们将其称为元素Z方向。 
    1. 对于本例中使用的特定壳单元,两条边从节点 1 到 4 ( 1->4 ) 形成,从节点 1 到 2 ( 1->2 ) 形成。因此, 1->4 x 1->2提供向外的单元法线,然后进行归一化以使其成为单位向量。
  5. 由于我们使用的是柱坐标系,因此我们通过将全局 Z 轴与元素Z方向向量相交来形成元素X方向单位向量。
    1. 该元素X方向向量与元素法向量不正交,因此我们利用 Gram-Schmidt 正交化对其进行正交归一化。
  6. 有了元素XZ单位向量,我们取Z x X来获得元素Y方向单位向量,从而完成我们的正交集。
  7. 使用X - 、Y - 和Z - 元素单位向量作为列,构成变换矩阵Q
  8. 使用张量变换规则S loc  = Q ' Q旋转应力张量,其中 ()' 表示转置。
  9. 将结果写入输出 .csv 文件。

Python 计算环向应力

此处显示了 Python 脚本结果的摘录,其中左图显示笛卡尔坐标中的元素应力;右图显示了相应的环向应力S11_loc ,它是由变换和变换矩阵Q的分量引起的:

 

7bb93e20e9a871dab66e0a49f5b454a8.png

   

24475f7d7f643d70c209af7c41bdffd8.png

 

从右图中我们可以看到,计算出的环向应力S11_loc与 Ansys Mechanical 的输出非常匹配。

结论

虽然可以轻松从 Workbench Ansys LS-DYNA 或 LS-PrePost 中获得环向应力(作为第一主应力),但本文中的步骤展示了如何通过将结果转换为笛卡尔坐标来实现张量结果的旋转以获得更一般的方向。上述过程也可以使用 PyAnsys 的工具在更大的自动化框架中使用。

进一步

  1. 修改 Python 脚本来查看其他方向的应力(或应变)或应用于您自己的模型来获得感兴趣的应力(或应变)结果。
  2. 修改代码以用于具有多个积分点的实体元素或壳元素。
  3. 使用此脚本和 PyAnsys 来自动化该过程。

可下载项目

Ansys 2024 R2 Workbench 存档,python 代码和结果

参考

1. 压力容器图像取自Stress and Strain - Cylindrical bar of cross-sectional area - Engineersfield

 

相关文章:

在 LS-DYNA 中将应力转换为用户定义的坐标系

介绍 通常,使用 LS-DYNA 或 Ansys Mechanical 等仿真工具解决工程问题需要将张量结果与解析解进行比较。一个这样的例子是加压圆柱体,其中圆周应力或环状应力是感兴趣的主要应力度量。例如,如果对具有复杂端部处理的几何结构进行此类仿真&am…...

【Spark】 groupByKey与reduceByKey的区别

groupByKey 操作:将相同键的所有值收集到一个集合中。实现:不会在map端进行局部聚合,而是直接将所有相同键的数据传输到reduce端进行聚合。缺点:由于没有本地聚合,groupByKey会导致大量的数据传输和shuffle&#xff0c…...

数据库与数据库管理系统概述

title: 数据库与数据库管理系统概述 date: 2024/12/7 updated: 2024/12/7 author: cmdragon excerpt: 在信息化迅速发展的时代,数据已成为企业和组织的重要资产。数据库与数据库管理系统(DBMS)是高效存储、管理和利用数据的核心工具。本文首先定义了数据库的基本概念和特…...

(简单5步实现,免费且比GPT4.0更好用)部署本地AI大语言模型聊天系统:Chatbox AI + 马斯克grok2.0大模型

摘要: 本文将指导您如何部署一个本地AI大语言模型聊天系统,使用Chatbox AI客户端应用和grok-beta大模型,以实现高效、智能的聊天体验。 引言: 由马斯克X-AI发布的Grok 2大模型以其卓越的性能超越了GPT4.0。Grok模型支持超长文本…...

滚珠螺杆导程的定义与重要性

滚珠螺杆导程是指螺杆每旋转一圈时,螺母(或与之配合的移动部件)沿螺杆轴线方向移动的距离。这个参数在机械设计和制造中非常重要,因为它直接影响到传动系统的速度、精度和效率。 导程是滚珠螺杆的重要参数之一,它与切削…...

【特殊子序列 DP】力扣509. 斐波那契数

斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) 0,F(1) 1 F(n) F(n - 1) F(n - 2),其中 n > 1 给定 n &…...

linux 架构详解

Linux 是一种开源的操作系统内核,最初由 Linus Torvalds 于 1991 年创建。它是一个基于 Unix 的操作系统内核,用于构建完整的操作系统。Linux 架构是指 Linux 操作系统的内部结构和组成组件的工作方式。 整体架构 Linux系统通常被看作是一个层次化的结…...

Spring Data Elasticsearch

简介说明 spring-data-elasticsearch是比较好用的一个elasticsearch客户端,本文介绍如何使用它来操作ES。本文使用spring-boot-starter-data-elasticsearch,它内部会引入spring-data-elasticsearch。 Spring Data ElasticSearch有下边这几种方法操作El…...

OpenGL编译用户着色器shader

shader相信很多朋友们都听说过,shader就是运行再GPU上的程序。虽然是这么说,但是我们发现,很多IDE开发工具比如说visual studio 没有办法直接去运行shader代码。这是因为,许多编译器不会自动将shader文件编译成可执行的代码然后发…...

过期策略、内存淘汰机制

1.过期策略:请求时删除 定期删除 请求时删除:使用key之前,检查是否过期,属于一种被动的处理方式。 因此,过期时间到了不表示这个key真的被删除了 定期删除:Redis默认每隔100ms检查,有过期ke…...

Scala的正则表达式

package hfdobject Test35_3 {def main(args: Array[String]): Unit {println("a\tb")//定义一个规则 正则表达式//1. .表示除了换行之外的其他的任意单个字符//2. \d等于[0-9] 匹配一个数字//3. \D除了\d之外的其他的任意字符,表示非数字//4. \w等价于[…...

关于睡懒觉

我们经常听到一个词:睡懒觉。 我认为,睡懒觉这个词,是错误的。 人,是需要睡眠的,睡不够,就不会醒。睡够了,自然会醒,也不想继续睡。不信你试试,睡够了,你…...

【算法day10】栈与队列:拓展与应用

题目引用 逆波兰表达式求值滑动窗口最大值前k个高频元素 1.逆波兰表达式求值 给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。 请你计算该表达式。返回一个表示表达式值的整数。 注意: 有效的算符为 ‘’、‘-’、‘*’ 和…...

爆肝Android JNI - 延展Android蓝牙JNI学习

零. 前言 由于Bluedroid的介绍文档有限,以及对Android的一些基本的知识需要了(Android 四大组件/AIDL/Framework/Binder机制/JNI/HIDL等),加上需要掌握的语言包括Java/C/C++等,加上网络上其实没有一个完整的介绍Bluedroid系列的文档,所以不管是蓝牙初学者还是蓝牙从业人员…...

总篇:Python3+Request+Pytest+Allure+Jenkins接口自动化框架设计思路

1、技术选型 Python3 Python 是一种广泛使用的高级编程语言,具有简洁、易读、易维护的特点。 Python 拥有丰富的第三方库,可以方便地进行接口测试的开发。 Request Request 是一个强大的 HTTP 库,用于发送 HTTP 请求和处理响应。 Request 支持多种 HTTP 方法,如 GET、P…...

Java的Map介绍以及常见方法和三种遍历方式

Java的Map介绍以及常见方法和三种遍历方式 1 Java 中的 Map 介绍 在 Java 中,Map 是一个接口,它提供了一种存储键值对(key-value pairs)的方式。每个键(key)都关联着一个值(value)…...

C/C++基础知识复习(39)

1) 什么是封装性?C中如何实现封装? 封装性(Encapsulation)是面向对象编程中的一个重要概念,它指的是将对象的状态(数据)和行为(方法)绑定在一起,并且通过访问…...

自建服务器,数据安全有保障

在远程桌面工具的选择上,向日葵和TeamViewer功能强大,但都存在收费昂贵、依赖第三方服务器、数据隐私难以完全掌控等问题。相比之下,RustDesk 凭借开源免费、自建服务的特性脱颖而出!用户可以在自己的服务器上部署RustDesk服务端&…...

CCF-GESP 编程能力认证 C++ 七级 2024年9月份判断题详细解析

链接&#xff1a;CCF-GESP 编程能力认证 C 七级 2024年9月份选择题详细解析-CSDN博客 目录 第 1 题 第 2 题 第 3 题 第 4 题 第 5 题 第 6 题 第 7 题 第 8 题 第 9 题 第 10 题 第 1 题 表达式 a << 1 的结果为 a&#xff08;错误&#xff09; 【a是字符常…...

使用Vue3+Echarts实现加载中国地图,点击省份地图下钻(完整教程)

一. 前言 在众多 ECharts 图表类型中&#xff0c;开发者始终绕不开的有各种各样的地图开发&#xff0c;关于地图开发&#xff0c;可能比其他图表相对繁琐一些&#xff0c;其实说简单也简单&#xff0c;说复杂也复杂&#xff0c;其中不乏有层级地图、3D 地图等&#xff0c;感觉…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写&#xff0c;中文译为后进先出。这是一种数据结构的工作原则&#xff0c;类似于一摞盘子或一叠书本&#xff1a; 最后放进去的元素最先出来 -想象往筒状容器里放盘子&#xff1a; &#xff08;1&#xff09;你放进的最后一个盘子&#xff08…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

golang循环变量捕获问题​​

在 Go 语言中&#xff0c;当在循环中启动协程&#xff08;goroutine&#xff09;时&#xff0c;如果在协程闭包中直接引用循环变量&#xff0c;可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下&#xff1a; 问题背景 看这个代码片段&#xff1a; fo…...

LeetCode - 394. 字符串解码

题目 394. 字符串解码 - 力扣&#xff08;LeetCode&#xff09; 思路 使用两个栈&#xff1a;一个存储重复次数&#xff0c;一个存储字符串 遍历输入字符串&#xff1a; 数字处理&#xff1a;遇到数字时&#xff0c;累积计算重复次数左括号处理&#xff1a;保存当前状态&a…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度

文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

JAVA后端开发——多租户

数据隔离是多租户系统中的核心概念&#xff0c;确保一个租户&#xff08;在这个系统中可能是一个公司或一个独立的客户&#xff09;的数据对其他租户是不可见的。在 RuoYi 框架&#xff08;您当前项目所使用的基础框架&#xff09;中&#xff0c;这通常是通过在数据表中增加一个…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)

Aspose.PDF 限制绕过方案&#xff1a;Java 字节码技术实战分享&#xff08;仅供学习&#xff09; 一、Aspose.PDF 简介二、说明&#xff08;⚠️仅供学习与研究使用&#xff09;三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...