【问题标题】:Use Matlab trisurf to plot element-wise quantity使用 Matlab trisurf 绘制元素数量
【发布时间】:2015-02-21 01:24:42
【问题描述】:

通常,trisurf 用于在三角形网格上绘制节点数量。但是,我想使用以下命令绘制一些元素数量。

trisurf(t,p(:,1),p(:,2),elewise_quantity,'edgecolor','k','facecolor','interp');

其中 elewise_quantiy 应该与 p(:,1) 或 p(:,2) 具有相同的维度,因此我通过将元素数量与该元素的每个节点相关联来创建 elewise_quantity。

在这种特定情况下,中间的 8 个三角形元素与 1 相关联,所有其他元素都是 0 值。有10*10的小方块和10*10*2的小三角。

问题是,如图,trisurf 不能产生我想要的效果。我期望的是“精确的元素描述”,即边缘的急剧过渡

还要注意每个角落的显示都不一样,这是由于三角形的特定方向,有没有优雅的处理方法?


【问题讨论】:

  • 嗯,这很棘手。点之间的数据由绘图函数线性插值。如果要显示两者之间的“锐利”边缘,则需要在绘图矩阵中插入一个新的数据行,其中“高”点的 X、Y 和“低”点的 Z 值相同。对于像您的示例这样的东西,这可能很容易,但对于“一般”表面...... ufff。当我想要这种效果时,我所做的就是将您的数据从 10x10 插入到 100x100。有点效果。
  • @AnderBiguri 是的,我也在使用更精细的网格。有点脏……

标签: matlab matlab-figure finite-element-analysis


【解决方案1】:

如果您需要元素之间出现明显的不连续性,我建议您不要显示节点值。计算内部积分点处的元素值(例如质心处的元素平均值)并将该值分配给元素。让 Matlab 根据其质心或积分点值对每个元素着色。

【讨论】:

  • Matlab 提供什么命令来根据网格设置(“p”和“t”)绘制元素值?
  • 我不知道 - 我以前以做 FEA 为生时使用 Patran 进行后期处理。
【解决方案2】:

您可以使用此方法设置每个三角形的颜色:

%// Example data
X = rand(100,1);
Y = rand(100,1);
Z = X+Y;
T = delaunay(X,Y);
C = mean(Z(T),2);

%// Plot the data
hh = trisurf(T,X,Y,Z);
set(gca, 'CLim', [min(C), max(C)]);
set(hh,'FaceColor', 'flat', ...
       'FaceVertexCData', C, ...
       'CDataMapping', 'scaled');

如果您也不希望看到出现在边界处的三角形,您将不会通过单次调用 trimesh 获得此行为。您需要计算每个三角形的数量,然后根据每个三角形的数量删除您不想绘制的那些。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-17
    • 1970-01-01
    • 1970-01-01
    • 2014-08-24
    • 2013-09-15
    • 1970-01-01
    • 1970-01-01
    • 2013-07-23
    相关资源
    最近更新 更多