主要内容

多畴的几何重建网格

这个例子展示了如何一个单极块几何分割成两个领域。的第一部分例子生成一个网格和网格元素分为两组。第二部分的例子创建了一个基于这种分裂的两个域几何。

生成网格和分裂它的元素分为两组

创建一个PDE模型。

modelSingleDomain = createpde;

导入几何。

importGeometry (modelSingleDomain“Block.stl”);

网格生成和阴谋。

msh = generateMesh (modelSingleDomain);图pdemesh (modelSingleDomain)

获取网格的节点和元素。

节点= msh.Nodes;元素= msh.Elements;

找到x的所有元素的几何中心坐标网格。首先,创建一个数组相同的大小元素包含x坐标的节点形成的网格元素。每一列向量包含了x坐标的节点形成一个元素。

elemXCoords =重塑(节点(1,元素),10日,[]);

计算平均每一列的数组来得到一个向量的x -元素的坐标几何中心。

elemXCoordsGeometricCenter =意味着(elemXCoords);

假设所有的元素有相同的区域ID和创建一个矩阵ElementIdToRegionId

ElementIdToRegionId = 1(1、大小(元素,2));

找到的所有元素的idx的几何中心坐标超过60岁。

idx = elemXCoordsGeometricCenter > 60;

元素的中心位置x2 = 60,改变区域id。

ElementIdToRegionId (idx) = 2;

创建两个单元的几何形状

创建一个新的PDE模型。

modelTwoDomain = createpde;

使用geometryFromMesh导入网格。元素分配到两个细胞根据其id。

geometryFromMesh (modelTwoDomain、节点元素,ElementIdToRegionId)
ans = DiscreteGeometry属性:NumCells: 2 NumFaces: 56 NumEdges: 121 NumVertices: 68顶点:[68 x3双)

画出几何图形,显示电池标签。

pdegplot (modelTwoDomain“CellLabels”,“上”,“FaceAlpha”,0.5)

图包含一个坐标轴对象。坐标轴对象包含3颤类型的对象,补丁,线。

突出的元素从细胞1红色和绿色的元素从细胞2。

elementIDsCell1 = findElements (modelTwoDomain.Mesh,“地区”,“细胞”1);elementIDsCell2 = findElements (modelTwoDomain.Mesh,“地区”,“细胞”2);图pdemesh (modelTwoDomain.Mesh.Nodes,modelTwoDomain.Mesh.Elements (:, elementIDsCell1),“FaceColor”,“红色”)举行pdemesh (modelTwoDomain.Mesh.NodesmodelTwoDomain.Mesh.Elements (:, elementIDsCell2),“FaceColor”,“绿色”)

当你把网格元素分成组,然后创建一个基于这个部门,多畴的几何网格多畴的几何可能是无效的。例如,元素在一个单元中可能接触只有一个节点或一条边,而不是共享一个脸。在这种情况下,geometryFromMesh抛出一个错误说相邻元素网格不正确连接。