我正在为我用Python开发的有限元程序开发一个Web应用程序(使用html和js)。
我要拥有的功能之一是能够显示用户导入的有限元网格。我在网上搜索过,发现plotly
是执行此操作的理想库,但是我遇到了一些问题...为了证明这一点,我将展示我所获得的(以及我应获得的)当我尝试绘制4个元素的1x1正方形时:
如您所见,元素之一被切成两半,不应该切成两半。我发现,plotly没有绘制正确的网格的原因是由于其算法:基本上,您有两个数组(x
和y
),它们包含点坐标的有序序列。因此,要在(0,0)和(0,1)之间绘制一条线,您的数组必须像:x=[0,0]
和y=[0,1]
。
问题是我无法做出将我的“网格格式”转换为plotly的“网格格式”的好的算法。
这是上面示例的网格格式:
nodes=[[0, 0],
[1, 0],
[1, 1],
[0, 1],
[0.5, 0],
[1, 0.5],
[0.5, 1],
[0, 0.5],
[0.5, 0.5]]
elements: [[0, 4, 8, 7],
[7, 8, 6, 3],
[4, 1, 5, 8],
[8, 5, 2, 6]]
我使用的算法(一个愿望不起作用)如下:
y_plotly=[]
z_plotly=[]
for element in elements:
for node in range(4):
y_plotly.append(nodes[element[node]][0])
z_plotly.append(nodes[element[node]][1])
y_plotly.append(nodes[element[0]][0])
z_plotly.append(nodes[element[0]][1])
你们能帮我解决这个算法吗?在此先感谢!