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

时间:2015-02-20 19:51:12

标签: matlab plot geometry mesh

我正在制作程序,我需要绘制一些已分成许多三角形的区域。我计算了每个节点/三角形每个角落的应变。现在我需要绘制带有应变的三角形。

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

任何人都可以帮助我吗?

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])

提前致谢。

1 个答案:

答案 0 :(得分:0)

您可以使用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)

结果:

enter image description here

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