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

在这里插入图片描述

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 = [3
    4
    -1
    1
    1
    -1
    0
    0
    -0.5
    -0.5];
C1 = [1
    1
    -0.25
    0.25];
C2 = [1
    -1
    -0.25
    0.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.niftyadmin.cn/n/5670417.html

相关文章

使用vite+react+ts+Ant Design开发后台管理项目(一)

前言 本文将引导开发者从零基础开始,运用、react、react-router、react-redux、Ant Design、less、tailwindcss、axios等前沿技术栈,构建一个高效、响应式的后台管理系统。通过详细的步骤和实践指导,文章旨在为开发者揭示如何利用这些技术工…

无线麦克风哪个好,麦克风哪个品牌音质最好,领夹麦克风推荐

​无线领夹麦克风作为直播、视频录制等场景必备的设备之一,用起来很方便,功能多样且易于操作,在音频设备领域占据着重要地位。但当前市场乱象较为严重,有许多商家纷纷打起价格战,忽视了产品质量,造成耐用性…

C++ Primer:模板与泛型编程

1. 模板函数 在C中,模板与泛型编程是一种强大的编程范式,它允许程序员编写与类型无关的代码。这种类型无关的代码在编译时会被实例化,以支持特定的数据类型。下面是根据您提出的点,对模板函数及其相关概念的一个整理。 模板函数…

动手学深度学习(pytorch土堆)-05-1神经网络

Neural network 以下是 torch.nn 库中各个组件的详细分类: 1. 容器 (Containers) torch.nn.Sequential: 顺序容器,用于将层按顺序堆叠在一起。torch.nn.ModuleList: 模块列表,用于存储多个子模块。torch.nn.ModuleDict: 模块字典&#xff…

机械设备产品资料方案介绍小程序系统开发制作

设备产品资料介绍小程序系统,是一家工业机械设备生产厂家为了更好的服务客户而定制开发的一套小程序系统,让用户通过小程序就可以了解公司产品介绍的详细参数、售后服务和产品操作手持等。 该小程序系统里面主要开发的功能模块有: 1、产品目…

MATLAB基础应用精讲-【数模应用】RR值

目录 前言 RR值在不同领域的应用 不同领域中RR值的计算方法和意义 几个高频面试题目 RR,RRR,ARR,NNT指标详解 RR、OR、HR:区别、计算与适用场景 计算方法 (一)相对危险度(Relative risk) (二)优势比(Odds ratio,OR) (三)风险比(hazard raito) 算法原…

一款前后端分离CRM客户关系管理系统,支持客户,商机,线索,合同,发票,审核,商品等功能(附源码)

前言 在当今竞争激烈的商业环境中,企业面临着各种挑战,其中包括如何更有效地管理和跟进潜在客户以提高销售业绩。传统的客户管理方式往往效率低下,无法实时更新客户-信息,导致销售机会流失。因此,市场上急需一款能够简…

2024.9.21 Python与C++的面试八股文整理,类与对象,内存规划,默认函数,虚函数,封装继承多态

1.什么是类,什么是面向对象 (1)类是一种蓝图或者模板,用于定义对象的属性和行为,类通常包括:属性,也就是静态特征,方法,也就是动态特征。属性描述对象的特征&#xff0c…