Построение дискретного трехмерного векторного поля с колчаном и сеткой - PullRequest
0 голосов
/ 25 июня 2019

Я пытаюсь построить электрическое векторное поле, которое принимает введенную пользователем геометрию провода и выводит трехмерное поле на трехмерной сетке, которую я создал с помощью сетки.

# get_field returns a single list [i,j,k] of the field vector evaluated at the input point [x,y,z]

# Create grid to evaluate field at points 
xx, yy, zz = np.meshgrid(np.arange(minX, maxX, spacing),
                     np.arange(minY, maxY, spacing),
                     np.arange(minZ, maxZ, spacing))

# Evaluate field at points
field = get_field([xx,yy,zz])

# Plot
ax.quiver(xx, yy, zz, field, length=1)
plt.show()

У меня проблемы с отображением каждого вектора направления [i,j,k] в массив или список для построения

EDIT Я вернулся к грубому принуждению.

xx = np.arange(self.minX, self.maxX, spacing)
yy = np.arange(self.minY, self.maxY, spacing)
zz = np.arange(self.minZ, self.maxZ, spacing)

u = []
v = []
w = []

for x in xx:
     for y in yy:
          for z in zz:
                 # get_field returns a single list [i,j,k] of the field vector evaluated at the input point [x,y,z]
                 field = get_field([x, y, z])
                 u.append(field[0])
                 v.append(field[1])
                 w.append(field[2])
u = np.asarray(u)
v = np.asarray(v)
w = np.asarray(w)
plt_ax.quiver(xx, yy, zz, u, v, w, length=1, normalize=True)

Я думал, что эта реализация, по крайней мере, будет работать (плохо), но теперь я получаю сообщение об ошибке, даже если есть достаточно точек, чтобы соответствовать размерам xx, yy, zz.

ValueError: shape mismatch: objects cannot be broadcast to a single shape
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...