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

news2024/11/16 1:36:42

在这里插入图片描述

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 = [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函数来删除这些边界条件。

% 创建几何体
[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.coloradmin.cn/o/2161280.html

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

相关文章

828华为云征文 | 云服务器Flexus X实例,Docker集成搭建搭建Flink

828华为云征文 | 云服务器Flexus X实例,Docker集成搭建搭建Flink Apache Flink是一个分布式大数据计算引擎,专为处理无界和有界数据流上的有状态计算而设计,以其高吞吐量、低延迟和高性能在实时流处理和批量计算领域脱颖而出,Flin…

Vue2电商项目(四) Detail模块

文章目录 一、配置Detail路由1. 将Detail组件配置为路由组件2. 将路由配置文件拆分3. 声明式导航跳转到Detail跳转时存在的问题:页面滚动条还在下边 二、配置API及vuex三、放大镜及下方轮播图1. Detail组件传递放大镜数据2. 读取vuex数据的经典错误undefined3. 放大…

个人如何做量化?我想进行量化交易需要哪些条件?QMT/PTrade量化软件?

个人如何做量化?我想进行量化交易需要哪些条件?QMT,PTrade量化软件? 量化交易策略是一种基于数学模型和统计分析的交易方法,通过计算机程序自动执行交易指令,以实现稳定、可持续的收益。这种策略的核心思想…

【研赛E题成品论文】24华为杯数学建模研赛E题成品论文+可运行代码丨免费分享

2024华为杯研究生数学建模竞赛E题成品论文已出! E题 高速公路应急车道紧急启用模型 一、问题一模型建立与求解 1.1 问题一求解思路 赛题要求我们基于四个观测点的视频数据,提取交通流参数并分析这些参数随时间的变化规律。交通流参数包括:…

【秋招笔试题】多多排序

解法&#xff1a;简单语法题 package com.sky;import java.util.*;public class Test1 {public static void main(String[] args) {Scanner sc new Scanner(System.in);int N sc.nextInt();int M sc.nextInt();List<String> words new ArrayList<>(N);for (in…

[系统设计总结] - Proximity Service算法介绍

问题描述 Proximity Service广泛应用于各种地图相关的服务中比如外卖&#xff0c;大众点评&#xff0c;Uber打车&#xff0c;Google地图中&#xff0c;其中比较关键的是我们根据用户的位置来快速找到附近的餐厅&#xff0c;司机&#xff0c;外卖员也就是就近查询算法。 主流的…

再论单源最短路径-SPFA

之前只是背了SPFA的算法模板&#xff0c;但是没有真正理解其中含义。这里复习时再次进行理解。 首先&#xff0c;正常的单源最短路径都会由下面的一个结构来维护“距离”&#xff0c;这个结构可以用一个数字dist[N]来描述&#xff0c;其中下标为顶点编号&#xff0c;值为“暂时…

期盼已久!通义灵码 AI 程序员开启邀测,全流程开发仅用几分钟

在 AI 程序员的帮助下&#xff0c;一个几乎没有专业编程经验的初中生&#xff0c;在人头攒动的展台上从零开始&#xff0c;两分钟就做出了一个倒计时网页。 他需要做的&#xff0c;只是输入包含几句话的提示词。数秒钟后&#xff0c;大模型就生成了代码&#xff0c;还列出了环…

Redis6.0.9配置redis集群

写在前面 最近在完成暑期大作业&#xff0c;期间要将项目部署在云服务器上&#xff0c;其中需要进行缓存的配置&#xff0c;决定使用Redis&#xff0c;为了使系统更加健壮&#xff0c;选择配置Redis-Cluster。由于服务器资源有限&#xff0c;在一台服务器上运行6个Redis Instan…

Springboot-多数据源

文章目录 一、架构二、实现过程2.1 第一步&#xff1a;引入依赖pom2.2 第二步&#xff1a;创建application.yml配置2.3 第三步&#xff1a;创建架构的文件夹MybatisPlusConfigFirstDataSourceConfigSecondDataSourceConfig 实现功能&#xff0c;在不同的文件夹使用不同的库 一、…

【软件测试】金九银十,APP面试题经验分享

Web 端测试和 App 端测试有何不同? ① 系统架构方面 Web 项目&#xff0c;b/s架构&#xff0c;基于浏览器的&#xff1b;Web 测试只要更新了服务器端&#xff0c;客户端就会同步会更新&#xff1b; App 项目&#xff0c;c/s架构的&#xff0c;必须要有客户端&#xff1b;App…

基于Ambari搭建大数据分析平台(30分钟速成)全网最全最详细的Ambari搭建大数据分析平台:

全网最全最详细的Ambari搭建大数据分析平台&#xff1a; 方法一适合详细自己独立安装&#xff0c;方法二超级详细具体&#xff0c;是根据方法一搭建成功的&#xff0c;方法三是另外的方法&#xff0c;安装包有不同&#xff0c;实践也能安装成功。 方法一&#xff1a; 1.搭建安…

halcon单目相机标定

1.参考这边文章https://blog.csdn.net/weixin_60275604/article/details/139068423 2.代码 dev_close_window() dev_open_window(0, 0, 512, 512, black, WindowHandle) dev_set_draw(margin)***创建一个标定板参数 xNum,yNum标定板中行列标定点个数 MarkDist标定点中心距离 d…

Vue|插件

在 Vue.js 中&#xff0c;插件是用来扩展 Vue 功能的一种方式&#xff0c;能够帮助开发者扩展和复用功能。通过合理使用插件&#xff0c;可以提高代码的组织性和可维护性 目录 如何使用插件?插件的定义创建及使用插件插件的参数插件的扩展 总结 如何使用插件? 插件的定义 插…

洛汗2保姆级辅助教程攻略:VMOS云手机辅助升级打怪!

在《洛汗2》中&#xff0c;玩家将进入一个充满魔幻色彩的西方世界&#xff0c;体验多种族文明的兴衰与冒险。为了更好地享受这款由普雷威&#xff08;Playwith&#xff09;开发的角色扮演动作手游&#xff0c;使用VMOS云手机将是一个明智的选择。VMOS云手机专为游戏打造了定制版…

Gartner最新指南:如何通过开展红队演习提高网络弹性

由于事件和监管要求不断增加&#xff0c;安全和风险管理领导者努力建立网络弹性并有效管理网络威胁。本研究指导这些领导者制定红队计划以支持弹性及其关键组件。 主要发现 根据 2024 年 Gartner 设计和构建现代安全运营调查&#xff0c;73% 的组织认为红队角色对安全运营目标的…

【资源一号04A卫星(中巴地球资源卫星04A星)】

资源一号04A卫星&#xff08;中巴地球资源卫星04A星&#xff09; 资源一号04A卫星&#xff0c;全称为中巴地球资源卫星04A星&#xff08;CBERS-04A&#xff09;&#xff0c;是中国与巴西两国合作研制的第六颗地球资源卫星。以下是对该卫星的详细介绍&#xff1a; 一、基本信…

解决Nodify框架因自带放大缩小、平移功能导致拖拽添加的控件无法准确在鼠标放下的位置显示控件

ViewModel中写具体关键的几段代码&#xff1a; var editor sender as NodifyEditor; Point p e.GetPosition(editor);//放大缩小比例double scale editor.ViewportZoom;//经过放大缩小、平移后获得坐标点位置p new Point(Math.Round((p.X - editor.ViewportT…

搜维尔科技:OptiTrack采集到的平衡数据,并对人形机器人进行编程,可以确保机器人的动作精度和准确性

OptiTrack具备高精度以及远追踪距离的双层特点&#xff0c;其捕捉范围最远可达91m&#xff0c;是大型场地&#xff08;如体育馆、足球场、虚拟拍摄制作棚等&#xff09;捕捉的最佳选择。 OptiTrack光学动作捕捉系统是目前全球市占率较高的全身动捕产品&#xff0c;可实现精度误…

第十六章 Javamail发送邮件

目录 一、邮件发送原理和流程图 二、Java发送邮件基本步骤 三、QQ邮箱授权码获取 四、示例代码 注&#xff1a;本章内容仅作为了解JavaMail邮件收发的基本原理&#xff0c;不建议作为实际项目使用&#xff0c;项目中建议通过SpringBoot项目加入mail的starter依赖来构建&am…