017_FEA_CSG_in_Matlab新的统一有限元分析工作流之2D几何

devtools/2025/1/19 8:42:31/

在这里插入图片描述

Matlab新的统一有限元分析>有限元分析工作流

从2023a开始,Matlab提供了一个统一有限元分析>有限元分析工作流(UFEAW,unified finite element analysis workflow)。

这个新的工作留提供一个统一的接口来求解三类问题,并且可以用同一套数据随时切换问题类型进行求解。

  1. 结构
  2. 电磁

这个工作流的核心是一个femodel的对象。通过这个对象,可以设置问题的类型和相应的参数。典型的工作过程包括以下步骤:

  1. 设置问题,创建femodel对象,设定求解问题的类型、几何、网格和物理参数。在节点位置求解问题的解。
  2. 可选:把结果差值到任意自己定义的空间位置,或者得到额外的结果。这个部分分别应用结构、传热和电磁的领域函数。
  3. 将结果用PDE结果可视化编辑工具或者绘图函数展示出来。
  4. 更改分析问题类型或者求解新的问题。

我们大概可以把求解问题的过程用一个状态机来表示:

提出一个初步问题
解决问题
未完整表征问题
插值结果不光滑
考虑更复杂的条件
提出新的问题
定义分析目标与问题类型
定义几何区域
划分几何体网格
设置边界和初始条件
求解FE问题
分析结果与可视化

下面,我们按照顺序从几何开始介绍UFEAW。

几何与网格

在Matalb中进行有限元分析>有限元分析,首先需要定义几何体,并将其离散为三角形网格(2D)或者四面体网格(3D)。

UFEAW采用fegemoetry对象来定义几何,可以直接把几何定义赋值给femodelGeometry属性。

几何定义可以有以下的来源:

  • STL或者STEP文件,导入几何体:importGeometry
  • 网格节点或者元素,geometryFromMesh
  • 分解几何体举证或者几何函数的句柄,geometryFromEdges
  • 三角剖分(二维或者三维德劳内)
  • 基本几何体,立方体、圆柱、球体等
  • alphaShape对象
  • 使用PDE Modeler App创建的几何体

几何相关函数总结

跟几何相关的函数总结如列几个表格。

创建与可视化

函数说明
importGeometry从STL 或 STEP文件导入几何
geometryFromMesh从二维或者三维网格创建几何体
geometryFromEdges从DGM(分解几何矩阵)创建二维几何体
decsg把构造二维几何体分解为最少区域
multicuboid从立方体构造几何
multicylinder从圆柱构造几何
multisphere从球体构造几何
triangulation三角化fegeometry (从R2023b开始提供)
pdegplot绘制PDE几何

几何编辑

函数说明
addCellCombine two geometries by adding one inside a cell of another (R2021a开始提供)
addFaceFill void regions in 2-D and split cells in 3-D geometry (R2020a开始提供)
addVertexAdd vertex on geometry boundary
addVoidCreate void regions inside 3-D geometry (R2021a开始提供)
extrudeVertically extrude 2-D geometry or specified faces of 3-D geometry (R2020b开始提供)
mergeCellsMerge geometry cells ( R2023b开始提供)
rotateRotate geometry ( R2020a开始提供)
scaleScale geometry ( R2020a开始提供)
translateTranslate geometry ( R2020a开始提供)

几何体查询

函数说明
cellEdges查找特定单元边界包含的边 (R2021a开始提供)
cellFaces查找特定单元的面 (R2021a开始提供)
faceEdges查找特定面的边 (R2021a开始提供)
facesAttachedToEdges查找与边连接的面 (R2021a开始提供)
nearestEdge查找与给定点最近的边 (R2021a开始提供)
nearestFace查找与给定点最近的面 (R2021a开始提供)

PDE建模App

这几个函数要配合PDE Modeler App使用。

函数说明
pdecirc绘制圆形(PDE Modeler app)
pdeellip绘制椭圆 (PDE Modeler app)
pdepoly绘制多边形 (PDE Modeler app)
pderect绘制矩形 (PDE Modeler app)

学习当然从最简单的、最初级的部分开始,2D几何的表示与构造。

2D几何的表示

CSG几何体

构造几何体有很多种方法,有一种比较简单又直观但是没有普适性的方法称为CSG(Constructive Solid Geometry)。

CSG是一种几何建模技术,它使用简单的几何形状(如立方体、球体、圆柱体等)通过一系列的布尔运算(如并集、交集、差集)来构造复杂的几何形状。

Matlab用如下三个数据结构来表示二维CSG几何体模型:

  • 一个描述基本几何形状的矩阵,每一列代表一个基本形状,可以通过PDE Modeler App创建并到处,通常称为gd(几何描述,geometry desciption);
  • 一个矩阵包括所有基本几何体的名称,同样是每一列一个名字,跟第一列一一对应,这个通常称为ns(名字集合,name set);
  • 一列字符数组,描述构造几何体的布尔运算(如并集、交集、差集),通常称为sf(几何表达式,shape function)。

这里的gdns是一个相同多列的矩阵,每一列代表一个基本几何体,这里有一个约定就是矩阵按照最长的列补齐,不够的地方用0填充,对于ns还可以用32(即空格)填充。

基本形状

Matlab支持四中基本形状:

  • 圆形
  • 多边形
  • 矩形
  • 椭圆
圆形多边形矩形椭圆
11234
2圆心x坐标多边形边数( n n n)4椭圆中心x坐标
3圆心y坐标多边形起点 x x x坐标起点 x x x坐标椭圆中心y坐标
4半径多边形次点 x x x坐标次点 x x x坐标长轴长度
50多边形三点 x x x坐标三点 x x x坐标短轴长度
60多边形四点 x x x坐标四点 x x x坐标旋转角度
70 … \ldots 起点 y y y坐标0
80 … \ldots 次点 y y y坐标0
90 … \ldots 三点 y y y坐标0
100 … \ldots 四点 y y y坐标0
110 … \ldots 00
n + 2 n+2 n+20多边形 n n n x x x坐标00
3 + n 3+n 3+n0多边形起点 y y y坐标00
… \ldots 0 … \ldots 00
2 n + 2 2n+2 2n+20多边形 n n n y y y坐标00

根据此前所述以0补齐原则,gd矩阵由若干上表中所示列组成。

布尔运算

gdns这两个矩阵配合构成命名基本形状集合,接下来就是通过布尔操作来构成最终2D几何区域。

布尔运算的矩阵sf是一个字符数组,由上面所定义的几何体名称加上操作符,加上表示操作顺序的括号构成。操作符号中,+代表并集,-代表差集,*代表交集。

例如,对一个圆形和一个矩形进行并集操作,sf矩阵可以表示为:

matlab">ns = char('C1', 'R1')';
% 注意这里的`ns`需要转置成列阵与`gd`对应
sf = 'C1+R1';

如果我们有一个矩形和两个圆形,需要并集操作然后再减去另一个圆形,sf矩阵可以表示为:

matlab">ns = char('Rect', 'C1', 'C2')';
sf = '(Rect+C1)-C2';

分解CSG几何体

这里还有一个小问题就是通过布尔操作得到的几何体包含很多冗余信息,这时候我们可以使用decsg函数来对几何体进行分解,得到最少区域的几何体。

matlab">
% 定义几何体
rect1 = [34-111-100-0.5-0.5];
C1 = [11-0.250.25];
C2 = [1-1-0.250.25];% 补齐矩阵
C1 = [C1;zeros(length(rect1) - length(C1),1)];
C2 = [C2;zeros(length(rect1) - length(C2),1)];gd = [rect1, C1, C2];% 名称集合
ns = char('Rect', 'C1', 'C2')';% 布尔运算
sf = '(Rect+C1)-C2';% 创建几何体
g = decsg(gd, sf, ns);pdegplot(g,"EdgeLabels","on","FaceLabels","on")
axis equal

在这里插入图片描述

这个几何区域被函数decsg分解为相互独立的三个区域。

还有一个问题就是,这三个区域之间的边界条件并不是外部边界条件,我们还可以通过csgdel函数来删除这些边界条件。

matlab">% 创建几何体
[g, bt] = decsg(gd, sf, ns);g2 = csgdel(g, bt);
pdegplot(g2,"EdgeLabels","on","FaceLabels","on")
axis equal

在这里插入图片描述

这个时候,几何区域被合并成一个整体,不再有内部边界。

当然最终要根据分析的需求来确定如何处理这些边界条件,例如应力加载、热加载的区域。

总结

  1. CSG几何体是一种简单直观的几何体构造方法,通过布尔运算来构造复杂的几何体。
  2. decsg函数可以把CSG几何体分解为最少区域。
  3. csgdel函数可以删除内部边界条件,形成更为简单的区域条件。

http://www.ppmy.cn/devtools/115333.html

相关文章

828华为云征文 | 云服务器Flexus X实例:开源项目 LangChain 部署,实例测试

目录 一、LangChain 介绍 二、部署 LangChain 2.1 安装 langchain 2.2 安装 langchain_community 2.3 安装 qianfan 三、实例运行 3.1 Chat Models 3.2 LLMs 3.3 Embedding Models 四、总结 本篇文章主要通过 Flexus云服务器X实例 部署开源项目 LangChain&#xff0c…

canal消费binlog异常排查

canal简介 canal是一款优秀的订阅MySQL binlog的中间件,在MySQL异构数据到其它存储平台领域非常的实用好用。而且在数据表的迁移中也可以用canal订阅,然后将更新实时同步到新表。 原理 canal部署后伪装为一个MySQL slave节点向DB发起同步binlog请求&am…

如何在Mac上安装多个Python环境

如何在Mac上安装多个Python环境 简介 在你的Mac上使用多个Python环境可以对项目管理很有帮助,特别是在同时处理不同Python版本或不同的包需求时。在这篇文章中,我们将向你展示如何在Mac上轻松地安装和管理多个Python环境。 一. 安装Conda Conda是一个包管理和环境管理系统…

Maven 安装

Maven 安装 Maven 下载安装 下载MAVEN 选择版本注意: IDEA 2022 兼容maven 3.8.1及之前的所用版本 IDEA 2021 兼容maven 3.8.1及之前的所用版本 IDEA 2020 兼容Maven 3.6.3及之前所有版本 IDEA 2018 兼容Maven3.6.1及之前所有版本 打开MAVEN官网 下载需要的版本 Wi…

巴蒂克图案识别系统源码分享

巴蒂克图案识别检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer V…

说说明计算机视觉(CV)技术的优势和挑战。

计算机视觉(CV)技术是一种通过计算机处理和分析图像和视频数据来模拟和复制人类视觉的技术。它在许多领域都具有广泛的应用,包括医学影像分析、自动驾驶、安防监控、人脸识别等。 以下是计算机视觉技术的一些优势: 高效性&#x…

DAMODEL——Llama3.1的部署与使用指南

Llama3.1的部署与使用指南 在自然语言处理(NLP)领域,大模型(LLM)是基于深度学习算法训练而成的重要工具,应用范围包括自然语言理解和生成。随着技术的发展,开源的LLM不断涌现,涵盖了…

Linux中,过滤经过服务器的MAC地址通常涉及几个步骤,包括查看当前连接的MAC地址、使用iptables进行MAC地址过滤

在Linux中,过滤经过服务器的MAC地址通常涉及几个步骤,包括查看当前连接的MAC地址、使用iptables进行MAC地址过滤,以及编写脚本来自动化这些过程。以下是一些具体的方法: 1. 查看当前连接的MAC地址 首先,你需要查看当…