多畴的几何重建网格
这个例子展示了如何一个单极块几何分割成两个领域。的第一部分例子生成一个网格和网格元素分为两组。第二部分的例子创建了一个基于这种分裂的两个域几何。
生成网格和分裂它的元素分为两组
创建一个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)
突出的元素从细胞1红色和绿色的元素从细胞2。
elementIDsCell1 = findElements (modelTwoDomain.Mesh,“地区”,“细胞”1);elementIDsCell2 = findElements (modelTwoDomain.Mesh,“地区”,“细胞”2);图pdemesh (modelTwoDomain.Mesh.Nodes,…modelTwoDomain.Mesh.Elements (:, elementIDsCell1),…“FaceColor”,“红色”)举行在pdemesh (modelTwoDomain.Mesh.Nodes…modelTwoDomain.Mesh.Elements (:, elementIDsCell2),…“FaceColor”,“绿色”)
当你把网格元素分成组,然后创建一个基于这个部门,多畴的几何网格多畴的几何可能是无效的。例如,元素在一个单元中可能接触只有一个节点或一条边,而不是共享一个脸。在这种情况下,geometryFromMesh
抛出一个错误说相邻元素网格不正确连接。