大家好我想尝试从MSC Patran导出网格,然后在Matlab中绘制它。网格可以是任意形状。我有所有节点的x,y和z坐标。到目前为止,我尝试了很多不同的选项,为什么他们失败了:
使用meshgrid和griddata
- Surfc(): 我使用meshgrid在x-y平面上生成网格,然后使用griddata获取z矩阵。但是这个图只适用于只有1个z值对应x-y对的情况。换句话说,为了使其工作,z必须是z = f(x,y)的类型。
- pdegplot():我发现matlab可以导入并绘制.stl文件。我尝试转换我的坐标矩阵格式并使用此函数绘制它,但它也不起作用。因为显然在.stl文件中,边缘不能由超过2个元素共享。但是我的FEM文件总是(我希望)shell元素。这意味着3个或更多元素可以共享相同的元素。
- 使用3d meshgrid的Surfc():我发现meshgrid()可以输入3个输入(x,y,z)并创建一个3d网格。然而,这也没有奏效。我使用了一个非常小的网格,大约有1000个节点,代码试图生成3个矩阵,其中包含1000x1000x1000个元素。这意味着1000个节点网格的内存大约为3 GB。更重要的是,即使这样,surfc也无法策划。
- 以某种方式自动导入其他文件格式:到目前为止,我一直在使用patran中性文件(.out)。我手动读取文件并从中提取x,y,z数据。 Patran还可以导出为parasolid,iges和step文件格式。我在matlab中寻找直接导入和绘制这些函数的方法,但就我看来,这些函数并不存在。
- 手动生成网格:Matlab可以创建3D对象(如[x,y,z] = sphere()),而Surfc()可以绘制这些,尽管我在(1)中所说的由sphere()生成的x,y,z矩阵不像(3)中那样是三维的,所以我尝试按照这个并从我的FEM文件手动生成一个3d网格,仅用于测试。我发现z有重复的列,并且在每列(作为一个层)中有n个值x和y。当我尝试手动对网格做同样的事情时,surfc()再也没有工作了。它绘制了一个我甚至无法描述的非常奇怪的形状。
- 找到第三方绘图软件:我尝试使用像gnuplot这样的(光)软件并访问但是到目前为止我都湿了。如果您知道可以直接绘制patran中性文件的任何(最好是开源)软件,我愿意接受建议。但该软件也必须能够进行等高线绘图。当我在Matlab中计算每个节点的数量,然后在网格上绘制其轮廓时。
醇>
答案 0 :(得分:0)
所以你可以拥有tetramesh?
您似乎正在使用FEM-stile网格,因此标准的表面绘图功能不起作用。对于不同形状(不是四边形)的FEM网格,您可能需要编写自己的函数...
答案 1 :(得分:0)
如果在变量 p 和 c 中有网格点和网格单元连接,则可以使用外部Matlab FEA工具箱与plot both structured and unstructured grids一起使用例如plotgrid命令
#portfolio {
background-color: : white;
padding-bottom: 100px;
}
#portfolio h1 {
font-size: 30px;
font-weight: 400px;
letter-spacing: 5px;
text-align: center;
color: #000;
}
#portfolio h2 {
font-size: 15px;
letter-spacing: 2px;
text-align: center;
color: #000;
}
.project {
display: inline-block;
width: 33.33%;
margin-right: -4px;
}
.img-box {
padding: 20px;
position: relative;
}
.project img {
width: 100%;
display: block;
border-radius: 12px;
}
.img-box img:hover {
transform: scale(1.1);
transition: 0.5s;
opacity: 0.5;
}
.img-box .hovertext {
display: none;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.img-box:hover .hovertext {
display: block;
}