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矩阵可以表示为:

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

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

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

分解CSG几何体

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


% 定义几何体
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函数来删除这些边界条件。

% 创建几何体
[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.xdnf.cn/news/1541220.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

并查集(上)

并查集简要介绍: 我们先讲并查集的一般使用场景,之后再讲并查集的具体细节以及原理。 并查集的使用一般是如下的场景: 一开始每个元素都拥有自己的集合,在自己的集合里只有这个元素自己。 f i n d ( i ) find(i) find(i)&#…

数据结构之算法复杂度

目录 前言 一、复杂度的概念 二、时间复杂度 三、大O的渐进表示法 四、空间复杂度 五、常见复杂度对比 总结 前言 本文主要讲述数据结构中的算法复杂度 一、复杂度的概念 算法在编写成可执行程序后,运行时需要耗费时间资源和空间(内存)资源。因此衡量一个算法的好坏…

python源代码编译exe 防止反编译的问题

1)使用pyinstaller 打包为exe, 记住是版本是5.*,我用的是5.13.2 ,不能是6.* 这是第一步。 pyinstaller -F -i d:\whs.ico packer.py -w 2)使用pyarmor 再次加密,我使用的版本是8.3.11,不是7.*,这是第二步…

摩托车骑行行为检测系统源码分享

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

Cursor Rules 让 Cursor AI 代码生成更智能、更高效,效率再次飞升!

最近,AI 代码生成工具越来越火,比如 Cursor AI 编辑器。很多开发者已经开始使用它来自动生成代码,以提高工作效率。不过你有没有发现,有时候 AI 自动生成的代码并不总是符合最佳实践?比如变量命名不够规范、代码风格不统一,或者生成的代码逻辑不够清晰。这些问题有时让人…

c# 线程等待变量的值符合条件

在C#中,如果你想让一个线程等待直到某个变量的值满足特定条件,你可以使用ManualResetEvent或者AutoResetEvent来实现线程间的同步。以下是使用AutoResetEvent实现的一个简单例子: 在这个例子中,同时实现了如何让static函数访问非…

闲鱼ip地址在哪就是人在哪吗

在数字化时代,IP地址作为网络设备的唯一标识,常被用于追踪用户的地理位置。然而,对于闲鱼这样的二手交易平台,用户的IP地址是否真实反映了其所在地,却是一个值得深入探讨的问题。本文将围绕这一话题展开,带…

单卡3090 选用lora微调ChatGLM3-6B

环境配置 Python 3.10.12 transformers 4.36.2 torch 2.0.1 下载demo代码 在官方网址https://github.com/THUDM/ChatGLM3/blob/main/finetune_demo 下载demo代码cd 进入文件夹 pip install -r requirements.txt 安装一些包 基本知识 SFT 全量微调: 4张显卡平均分配&#…

昂科烧录器支持ST意法半导体的电可擦除可编程存储器M95128-DFDW

芯片烧录行业领导者-昂科技术近日发布最新的烧录软件更新及新增支持的芯片型号列表,其中ST意法半导体的电可擦除可编程存储器M95128-DFDW已经被昂科的通用烧录平台AP8000所支持。 M95128-DFDW是电可擦除可编程存储器(EEPROM)通过SPI总线进行…

springcloud微服务实战<1>

单机结构 我只需要一台服务器完成我项目的部署(单体应用),开发部署简单 他就会有单点问题, 因为此时只有一台机器,一旦这个机器挂了,我用户就没有办法使用应用的服务了 这个就是单点问题针对我们的项目进…

Qt/C++ 多线程同步机制详解及应用

在多线程编程中,线程之间共享资源可能会导致数据竞争和不一致的问题。因此,采用同步机制确保线程安全至关重要。在Qt/C中,常见的同步机制有:互斥锁(QMutex、std::mutex)、信号量(QSemaphore&…

多模态大模型MiniCPM-V技术学习

目前性价比最高的多模态模型 Minicpm-V-2.6参数8B,int4版本推理显存仅7GB,并且在幻觉数据集上效果好于其他模型,测试下来效果非常好,官方演示里面还给出了手机上端侧运行的图片和视频推理示例 p.s.Qwen2-VL和Minicpm-V-2.6头对头…

【操作系统】02.深入理解操作系统

一、操作系统的定位 任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。笼统的理解,操作系统包括操作系统内核和其他程序。 由上述的宏观图其实我们就知道:操作系统是一款进行软硬件资源管理的软件。 二、设计操作系统的目的 操…

众数信科AI智能体政务服务解决方案——寻知智能笔录系统

政务服务解决方案 寻知智能笔录方案 融合民警口供录入与笔录生成需求 2分钟内生成笔录并提醒错漏 助办案人员二次询问 提升笔录质量和效率 寻知智能笔录系统 众数信科AI智能体 产品亮点 分析、理解行业知识和校验规则 AI实时提醒用户文书需注意部分 全文校验格式、内…

C一语言—动态内存管理

目录 一、为什么要有动态内存管理 二、malloc和free (2.1)malloc (2.2)free 三、calloc和realloc (3.1)calloc (3.2)realloc 四、常见的动态内存的错误(举例均为错…

springboot每次都需要重设密码?明明在springboot的配置中设置了密码

第一步:查看当前的密码是什么? 打开redis-cli.exe,输入config get requirepass,查看当前的密码是什么? 接着,修改redis的配置文件,找到redis的安装目录,找到相关的conf文件&#x…

Amazon Bedrock 模型微调实践(二):数据准备篇

本博客内容翻译自作者于 2024 年 9 月在亚马逊云科技开发者社区发表的同名博客: “Mastering Amazon Bedrock Custom Models Fine-tuning (Part 2): Data Preparation for Fine-tuning” 亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、…

Unity3D入门(一) : 第一个Unity3D项目,实现矩形自动旋转,并导出到Android运行

1. Unity3D介绍 Unity3D是虚拟现实行业中,使用率较高的一款软件。 它有着强大的功能,是让玩家轻松创建三维视频游戏、建筑可视化、实时三维动画等互动内容的多平台、综合型 虚拟现实开发工具。是一个全面整合的专业引擎。 2. Unity安装 官网 : Unity…

1042 Shuffling Machine,1050 String Subtractio

1042 Shuffling Machine 普通模拟即可&#xff0c;注意每一次交换牌的时候需要更新start数组&#xff08;当前卡牌的顺序&#xff09;&#xff0c;并且清空ans数组&#xff08;交换后的卡牌顺序&#xff09; #include<bits/stdc.h> using namespace std; const int N 5…

hal 正点原子 exti外部中断

1.这个是 f4/f7/h7 用于配置外部中断的寄存器 需要先使能时钟 2.这个是f1用于配置外部中断的配置器&#xff0c;也是需要先配置时钟&#xff0c;但是区别在于除了f1 &#xff0c;别的系列都用的SYSCFG 3.这个是外部中断线io和怎么exti对应的 4.这两张图 都是exti和io的对应关系…