有限元 - 在三角形网格中绘制应力

Finite Element - Plotting with stresses in triangle mesh

我正在编写程序,我需要绘制一些被分割成许多三角形的区域。我计算了每个节点/三角形每个角的应变。现在我需要用应变绘制三角形。

现在我有了三种绘制三角形的方法。但是在其中一个中,我用它的角应变的平均值填充每个三角形。我想做的是... 将应变放在角上,得到一个看起来像 contour 或 contourf 的图。 - 我真的不明白它们是如何工作的。

谁能帮帮我?

clear; clc;
TC = [ 1 2 3 ; 2 3 4 ] ;            % Triangles node Connection.
NC = [ 0,0 ; 0,1 ; 1,0 ; 1,1 ] ;    % Node Coordinates.
strain = [ 300 , 400 , 500 ; 400 , 500 , 600];  % Strains in each node.;

[ne,np] = size(TC);             % Just finding how many elements.

element =   zeros([3 2 ne]);    % Creating a matrix for each element.

% My first and second plot...

for i=1:ne
    no1 = TC(i,1); no2 = TC(i,2); no3 = TC(i,3);
    element(:,:,i) = [  NC(no1,1),NC(no1,2);
                        NC(no2,1),NC(no2,2);
                        NC(no3,1),NC(no3,2);];          % Defining each element for each loop.

         %    Node 1         Node 2         Node 3 
    xe = [element(1,1,i),element(2,1,i),element(3,1,i)];    % Defining coordinates to plot.
    ye = [element(1,2,i),element(2,2,i),element(3,2,i)];


    subplot(3,1,1)
    plot([xe, xe(1)],[ye, ye(1)])  % ATTEMPT ONE   % Only plotting the triangles. Using first value also last to close the triangle.
    xlim([-1 2]); ylim([-1 2])
    hold on

    subplot(3,1,2)
    fill(xe,ye,mean(strain(i,:)))  % ATTEMPT TWO   % Fill triangles with average strain.
    hold on
    xlim([-1 2]); ylim([-1 2])
end

% ATTEMPT 3
subplot(3,1,3)
TR = triangulation(TC,NC);
triplot(TR)
hold on
xlim([-1 2]); ylim([-1 2])

提前致谢。

您可以使用fill 函数来获得您想要的阴影。通过对您的应用程序进行一些自定义,我相信下面的代码会起作用,但如果 for 循环使您的程序减慢太多,则可能需要进行一些矢量化处理。

X = zeros(3,size(TC,1));
Y = zeros(3,size(TC,1));
C = zeros(3,size(TC,1));

for i = 1:size(TC,1) % for all triangle connection definitions
    for j = 1:3      % for all nodes in a triangle
        X(j,i) = NC(TC(i,j),1)';    % format X points
        Y(j,i) = NC(TC(i,j),2)';    % format Y points
        C(:,i) = strain(i,:)';      % format color based on strain value
    end
end

fill(X,Y,C)

结果:

You may want to check this documentation for further details on how X,Y and C are interpreted