Calculate and highlight elements centers
Contents
Define geometry
geom = mp.geoms.SquareGeom('mydomain', struct());
Generate mesh
mesher = mp.Mesher();
mesh = mesher.generate(geom, struct('lc', 0.4));
viewer = mp.Viewer();
viewer.show(mesh);
Calculate elements centers
Pre-allocate vectors for element centers for efficiency reason
elemsSelector.dim = 2;
nElems2D = mesh.countElems(elemsSelector)
x2 = zeros(1, nElems2D); y2 = x2;
elemsSelector.dim = 1;
nElems1D = mesh.countElems(elemsSelector)
x1 = zeros(1, nElems1D); y1 = x1;
% Set countes of 1D and 2D elements to zero
i1=0;
i2=0;
nElems2D =
28
nElems1D =
12
Iterate over elements of dimension 1 or 2
elemsSelector.dim = [1,2]; for e = mesh.findElems(elemsSelector) elemNodes = mesh.elemNodes(e); elemCoords = mesh.nodes(elemNodes,:); nnodes = size(elemCoords, 1); center = sum(elemCoords, 2)/nnodes; xc = sum(elemCoords(:, 1))/nnodes; yc = sum(elemCoords(:, 2))/nnodes; if nnodes == 3 i2 = i2+1; x2(i2) = xc; y2(i2) = yc; elseif nnodes == 2 i1 = i1+1; x1(i1) = xc; y1(i1) = yc; end end
Draw points at element centers
viewer.pointColor = 'cyan'; viewer.showPointsXY(x2,y2); viewer.pointColor = 'red'; viewer.showPointsXY(x1, y1); mp_manage_demos('report', 'mp_elems_centers', true);