alex@810lab.com
Reflections¶
Summary¶
In this we entertain some ideas about reflection coeficient in special relativity
Field decompositions¶
We are using Spacetime Algebra , but with time = $\gamma_4$, signature = (-1,-1,-1,1)
\begin{align*} -\gamma_{\not{4}}^2 = \gamma_4^2 = 1 \end{align*} Where we use slash to mean rejection from a given direction.
Time¶
Any object can be it can be decomposed based on symmetries with respect to a given direction. Commonly this is done with respect to time. Given a faraday bivector $F$, and some time direction $\gamma_4$ , this leads to a electric/magnetic (E/H) decomp \begin{align*} F &= \frac{1}{2} (F+\gamma_4 F\gamma_4^{-1}) +\frac{1}{2}( F-\gamma_4F\gamma_4^{-1}) \\ &= F\wedge \gamma_4\gamma_4^{-1} + F\cdot \gamma_4\gamma_4^{-1}\\ &= F_4 + F_{\not{4}} \\ &= E+H \end{align*}
General Direction¶
If instead of time, we choose a random direction $p$ as a decomposition vector, \begin{align*} F &= \frac{1}{2} (F+pFp^{-1}) +\frac{1}{2}( F-pFp^{-1}) \\ &= F_p + F_{\not{p}} \\ \end{align*}
If we further assume $F$ is given by the plane-wave formula ,
$$F(x)=e^{p\cdot x I }F_0.$$
where:
- $x$ is a spacetime position,
- $p$ is the spacetime propagation vector, and
- $I \equiv \gamma_{1234}$ is psuedo-scalar.
then this decomposition is interpreted as a forward and reverse propagating waves. $$ F = F_p + F_{\not{p}} = A+B$$
(Note, non-standard plane-wave formulas considered here)
The decomposition is a choice that is up to us. Here is a picture in $\gamma_{134}$.
Null exception¶
We do run into a numerical difficulty when we try to decompose a symmetry in a null object, since $x^{-1}$ is not well defined. The work around is to use idempotents. Assuming we have a null propagation vector $p$ and wand to decompose $F$ in forward and reverse propgations. Define,
\begin{align*} e_+ &= w+k\\ e_- &= w-k\\ e_{+-} &= e_+e_- \\ e_{-+} &= e_-e_+ \\ \end{align*}
Then $$F = F_+ +F_- = Fe_{+-}+Fe_{-+}$$
Implementation¶
from kingdon import Algebra
from kingdon.numerical import exp
import numpy as np
sta = Algebra(signature=[-1,-1,-1,1],start_index=1)
locals().update(sta.blades)
I = sta.pseudoscalar([1])
def norm(x):
return x / np.sqrt(abs((x*x).e))
def round(mv, tol=1e-6):
return mv.filter(lambda c: abs(c) > tol)
def decomp(F, p,tol=1e-6):
if abs((p**2).e) < tol: # we have a null vector. use idempotents.
w,k = decomp(p, e4)
w,k = norm(w), norm(k)
ep, em =(w+k)/2, (w-k)/2
epm, emp = -ep*em, -em*ep
return F*epm, F*emp
else:
return 1/2*(F + p*F/p), 1/2*(F - p*F/p)
def split(F,p):
num,denom = decomp(F,p)
return num/denom
def f(x, p, F0):
I = e1234
return exp((p|x)*I)*F0 +.2*exp(((e3*p*e3)|x)*I)*F0
x = sta.random_vector()
p = e3 + e4
F0 = e14 #+ .9*e13 # Ex + Hy
F = lambda x: f(x,p=p, F0=F0)
Fx = F(e4)
E,H = decomp(Fx, e4)
A,B = decomp(Fx, p)
Gamma = round(split(F(x),p) )
Z0 = round(split(F(x),e4) )
V = round(split(p,e4 ))
s = {"E": E, "H": H, "A": A, "B": B, "Z0=E/H": E / H, "G0=B/A": B / A}
for k, v in s.items():
print(k,'\t:', v)
E : 1.01 𝐞₂₃ H : 0.648 𝐞₁₄ A : 0.324 𝐞₁₃ + -0.324 𝐞₁₄ + -0.505 𝐞₂₃ + 0.505 𝐞₂₄ B : -0.324 𝐞₁₃ + -0.324 𝐞₁₄ + -0.505 𝐞₂₃ + -0.505 𝐞₂₄ Z0=E/H : 1.56 𝐞₁₂₃₄ G0=B/A : 0.25 𝐞₃₄
decomp(Fx, e4)
(1.01 𝐞₂₃, 0.648 𝐞₁₄)
decomp(F(x), k)
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) Cell In[3], line 1 ----> 1 decomp(F(x), k) Cell In[1], line 16, in decomp(F, p, tol) 15 def decomp(F, p,tol=1e-6): ---> 16 if abs((p**2).e) < tol: # we have a null vector. use idempotents. 17 w,k = decomp(p, e4) 18 w,k = norm(w), norm(k) TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'
Maxwell's equation in terms of the vector potential $a$ $$\nabla \textbf{a} = F$$ (Sorry that we use the symbol $ \textbf{a}$ for the vector potential, but we already used $A$ and its a vector. Also, no one is going to read this anyway)
Simulate it¶
A EM-field simulator was made in this notebook, below we use it to look at a simple plane wave with circular polarization.
from fields import *
def norm(x):
return x / np.sqrt(abs((x*x).e))
def F(x):
I = D.e0123
F0 = D.e01 + .8*D.e23
Ka = lambda x: I*(.01*D.e3 + 2*D.e0)
r = D.e3#+.1*D.e0
Kb = lambda x: r>>Ka(x)
return (exp(x*Ka(x))>> (F0))+ 1*(exp(x*Kb(x))>> F0)
pga.graph(make_fields(F, e12_N=15,e12_bounds=3, e0_bounds=3,e3_N=3,e3_bounds=3),
grid=False,lineWidth=2,animate=True,scale=.15,height='600px')
Reflection¶
Time Harmonic Normal Incidence¶
Electrical Engineering is developed assuming time-harmonic-ness from the outset. Geometrically, this imposes projective geometry in a 'frequency space'. Consider a plane wave in a vaccum normally incident upon a surface, as depicted by the wave-vector diagram below.
The situtation is time-invariant, and thus $w$ is unchanging.
The term time-harmonic is an application of bloch's theorem along time.
Splits¶
Phase velocity¶
$$V_p \equiv wk^{-1} = \frac{w}{k}=\frac{p_4}{p_{\not 4}}= \frac{p \cdot \gamma_4 }{p \wedge\gamma_4 } $$
Impedance, $Z$¶
$$Z \equiv EH^{-1} = \frac{F_4}{F_{\not 4}} = \frac{F\wedge\gamma_4 }{ F\cdot \gamma_4 }$$
Reflection Coefficient, $\Gamma$¶
$$\Gamma \equiv AB^{-1} = \frac{F_p}{F_{\not p}}= \frac{F\wedge p }{ F\cdot p }$$
p
import numpy as np
norm = lambda x: x/np.sqrt(abs(((x)**2).e))
na = norm(w) + norm(k)
nb = norm(w) - norm(k)
Na = 1/4*(na*nb)
Nb = 1/4*(nb*na)
p*Nb, p*Na
na = w.normalized() +k.normalized()
nb = w.normalized() -k.normalized()
import numpy as np
b = np.tanh(np.pi/4 - np.atanh(((w/k)**2).sqrt().e))*nb
b,na
k.normalized()