In [1]:
from sympy.galgebra.ga import Ga
from sympy.galgebra.printer import Format

In [2]:
from sympy import symbols, latex, init_printing
Format(ipy=True)
init_printing()

In [3]:
coords = (x, y, z) = symbols('x y z', real=True)

In [4]:
o3d = Ga('e_x e_y e_z',g=[1,1,1], coords=coords)

In [5]:
o3d.grad


Out[5]:
$$ e_{x} \frac{\partial}{\partial x} + e_{y} \frac{\partial}{\partial y} + e_{z} \frac{\partial}{\partial z} $$

In [6]:
F = o3d.mv('F','vector',f=True)

In [7]:
F


Out[7]:
\begin{equation*} F^{x} e_{x} + F^{y} e_{y} + F^{z} e_{z} \end{equation*}

In [8]:
o3d.grad * F


Out[8]:
\begin{equation*} \left ( \partial_{x} F^{x} + \partial_{y} F^{y} + \partial_{z} F^{z} \right ) + \left ( - \partial_{y} F^{x} + \partial_{x} F^{y} \right ) e_{x}\wedge e_{y} + \left ( - \partial_{z} F^{x} + \partial_{x} F^{z} \right ) e_{x}\wedge e_{z} + \left ( - \partial_{z} F^{y} + \partial_{y} F^{z} \right ) e_{y}\wedge e_{z} \end{equation*}

In [9]:
o3d.grad * o3d.grad


Out[9]:
$$ \frac{\partial^{2}}{\partial x^{2}} + \frac{\partial^{2}}{\partial y^{2}} + \frac{\partial^{2}}{\partial z^{2}} $$

In [10]:
(o3d.grad * o3d.grad) * F


Out[10]:
\begin{equation*} \left ( \partial^{2}_{x} F^{x} + \partial^{2}_{y} F^{x} + \partial^{2}_{z} F^{x} \right ) e_{x} + \left ( \partial^{2}_{x} F^{y} + \partial^{2}_{y} F^{y} + \partial^{2}_{z} F^{y} \right ) e_{y} + \left ( \partial^{2}_{x} F^{z} + \partial^{2}_{y} F^{z} + \partial^{2}_{z} F^{z} \right ) e_{z} \end{equation*}

In [11]:
ex, ey, ez = o3d.mv()
X = (x*ex)+(y*ey)+(z*ez)

In [12]:
X


Out[12]:
\begin{equation*} x e_{x} + y e_{y} + z e_{z} \end{equation*}

In [13]:
L = (X ^ o3d.grad) - (o3d.grad ^ X)

In [14]:
L


Out[14]:
$$ e_{x}\wedge e_{y} \left ( - y \frac{\partial}{\partial x} + x \frac{\partial}{\partial y}\right ) + e_{x}\wedge e_{z} \left ( - z \frac{\partial}{\partial x} + x \frac{\partial}{\partial z}\right ) + e_{y}\wedge e_{z} \left ( - z \frac{\partial}{\partial y} + y \frac{\partial}{\partial z}\right ) $$

In [15]:
Llst = (Lxy,Lyz,Lxz) = L.components()

In [16]:
Llst


Out[16]:
$$\begin{pmatrix}e_{x}\wedge e_{y} \left ( - y \frac{\partial}{\partial x} + x \frac{\partial}{\partial y}\right ) , & e_{x}\wedge e_{z} \left ( - z \frac{\partial}{\partial x} + x \frac{\partial}{\partial z}\right ) , & e_{y}\wedge e_{z} \left ( - z \frac{\partial}{\partial y} + y \frac{\partial}{\partial z}\right ) \end{pmatrix}$$

In [17]:
def Acom(x,y): return x*y+y*x #anticommutator since bases are included, not just components

In [18]:
Acom(Lxy,Lyz)


Out[18]:
$$ e_{y}\wedge e_{z} \left ( - z \frac{\partial}{\partial y} + y \frac{\partial}{\partial z}\right ) $$

In [19]:
Acom(Lyz,Lxz)


Out[19]:
$$ e_{x}\wedge e_{y} \left ( - y \frac{\partial}{\partial x} + x \frac{\partial}{\partial y}\right ) $$

In [20]:
Acom(Lxz,Lxy)


Out[20]:
$$ e_{x}\wedge e_{z} \left ( - z \frac{\partial}{\partial x} + x \frac{\partial}{\partial z}\right ) $$

In [ ]: