Плотно рисуя неправильные сюжеты - PullRequest
0 голосов
/ 01 ноября 2018

Я разрабатываю веб-приложение (с использованием html и js) для программы с конечными элементами, которую я разработал на Python.

Одной из функций, которые я хочу иметь, является возможность отображения сетки конечных элементов, импортированной пользователем. Я искал в Интернете и обнаружил, что plotly будет идеальной библиотекой для этого, но я столкнулся с некоторыми проблемами ... Чтобы продемонстрировать это, я покажу, что я получаю (и что я должен получить), когда я попробуйте построить квадрат 4хэлемента 1х1:

expectations

Как видите, один из элементов разрезан пополам и не должен. Я обнаружил, что причина, по которой графически не строится правильная сетка, заключается в ее алгоритме: в основном у вас есть два массива (x и y), которые содержат упорядоченную последовательность координат точек. Таким образом, чтобы построить линию между (0,0) и (0,1), ваши массивы должны быть такими: x=[0,0] и y=[0,1]. Проблема в том, что я не могу сделать хороший алгоритм, который преобразует мой «формат сетки» в «формат сетки» плотно.

Вот мой формат сетки для приведенного выше примера:

mesh

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

Не могли бы вы, ребята, помочь мне разобраться в этом алгоритме? Заранее спасибо !!

...