Определяющий вектор на сетке - numpy - PullRequest
0 голосов
/ 08 января 2020

Я пытаюсь научиться простому моделированию полей E, включая поляризацию. Моя установка выглядит следующим образом (представьте, что волна проходит вдоль (x + y), а затем отражается на себе, образуя стоячую волну)

x = linspace(-pi,pi,21)
y = linspace(-pi,pi,21)
X,Y = np.meshgrid(x,y)

xhat = array((1,0))
yhat = array((0,1))
k1 = 1/np.sqrt(2)*(xhat+yhat)
k2 = -1/np.sqrt(2)*(xhat+yhat)
E1 = exp(-1j*(X*np.dot(k1,xhat)+Y*np.dot(k1,yhat)))
E2 = exp(-1j*(X*np.dot(k2,xhat)+Y*np.dot(k2,yhat)))
ETot = E1+E2
# Itot = np.dot(Etot,Etot)  This is desired

Мой вопрос заключается в том, как сделать каждую точку сетки трехмерной вектор. Если я говорю, что E1 поляризован по x, то он имеет компонент только вдоль array((1,0,0)), а E2 - вдоль array((0,1,0)), тогда я хочу, чтобы мой ETot был массивом, array((E1, E2, 0)).

Я не могу точно понять, как это сделать (и учесть произвольные углы, т. Е. Вдоль массива ((cos (alpha), sin (alpha), 0))

...