exponenta event banner

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

В этом примере показано, как создать полигональную геометрию с помощью MATLAB polyshape функция. Затем используйте триангулированное представление геометрии в качестве входной сетки для 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);

Создайте модель PDE.

model = createpde;

Используя данные триангуляции в качестве сетки, используйте 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.

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

figure
pdemesh(model)

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

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

generateMesh(model)
ans = 
  FEMesh with properties:

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

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

figure
pdemesh(model)

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