Геометрия из polyshape

В этом примере показано, как создать полигональную геометрию с помощью MATLAB polyshape функция. Затем используйте триангулированное представление геометрии как вход mesh для geometryFromMesh функция.

Создайте и постройте polyshape объект квадрата с отверстием.

t = pi/12:pi/12:2*pi;
pgon = polyshape({[-0.5 -0.5 0.5 0.5], 0.25*cos(t)}, ...
                 {[0.5 -0.5 -0.5 0.5], 0.25*sin(t)})
pgon = 
  polyshape with properties:

      Vertices: [29x2 double]
    NumRegions: 1
      NumHoles: 1

plot(pgon)
axis equal

Figure contains an axes. The axes contains an object of type polygon.

Создайте представление триангуляции этого объекта.

tr = triangulation(pgon);

Создайте модель УЧП.

model = createpde;

С данными триангуляции в качестве mesh используйте geometryFromMesh функция для создания геометрии. Постройте график геометрии.

tnodes = tr.Points';
telements = tr.ConnectivityList';

geometryFromMesh(model,tnodes,telements);
pdegplot(model)

Figure contains an axes. The axes contains an object of type line.

Постройте график mesh.

figure
pdemesh(model)

Figure contains an axes. The axes contains 2 objects of type line.

Поскольку данные триангуляции привели к низкокачественному mesh, сгенерируйте новый более мелкий mesh для последующего анализа.

generateMesh(model)
ans = 
  FEMesh with properties:

             Nodes: [2x1259 double]
          Elements: [6x579 double]
    MaxElementSize: 0.0566
    MinElementSize: 0.0283
     MeshGradation: 1.5000
    GeometricOrder: 'quadratic'

Постройте график mesh.

figure
pdemesh(model)

Figure contains an axes. The axes contains 2 objects of type line.