In [1]:
from sympy import symbols, sin, cos, Abs
from galgebra.ga import Ga
from galgebra.printer import Format, Fmt
from IPython.display import Latex
Format()
In [2]:
xyz_coords = (x, y, z) = symbols('x y z', real=True)
(o3d, ex, ey, ez) = Ga.build('e', g=[1, 1, 1], coords=xyz_coords, norm=True)
o3d.g
Out[2]:
In [3]:
f = o3d.mv('f', 'scalar', f=True)
f
Out[3]:
In [4]:
F = o3d.mv('F', 'vector', f=True)
lap = o3d.grad*o3d.grad
lap.Fmt(1,r'\nabla^{2}')
Out[4]:
In [5]:
lap.Fmt(1,r'\nabla^{2}')
Out[5]:
In [6]:
lapf = lap*f
lapf
Out[6]:
In [7]:
lapf = o3d.grad | (o3d.grad * f)
lapf.Fmt(1,r'\nabla \cdot (\nabla f)')
Out[7]:
In [8]:
divF = o3d.grad|F
divF.Fmt(1,'x =')
Out[8]:
In [9]:
gradF = o3d.grad * F
gradF.Fmt(1,r'\nabla F')
Out[9]:
In [10]:
sph_coords = (r, th, phi) = symbols('r theta phi', real=True)
(sp3d, er, eth, ephi) = Ga.build('e', g=[1, r**2, r**2 * sin(th)**2], coords=sph_coords, norm=True)
sp3d.g_raw
Out[10]:
In [11]:
sp3d.grad.Fmt(1,r'\nabla')
Out[11]:
In [12]:
f = sp3d.mv('f', 'scalar', f=True)
F = sp3d.mv('F', 'vector', f=True)
B = sp3d.mv('B', 'bivector', f=True)
sp3d.grad.Fmt(1,r'\nabla')
lap = sp3d.grad*sp3d.grad
lap.Fmt(1,r'\nabla^{2} ')
Out[12]:
In [13]:
Lapf = lap*f
Lapf.Fmt(1,r'\nabla^{2} f')
Out[13]:
In [14]:
lapf = sp3d.grad | (sp3d.grad * f)
lapf.Fmt(1,r'\nabla \cdot (\nabla f)')
Out[14]:
In [15]:
dviF = sp3d.grad | F
divF.Fmt(1,r'\nabla F')
Out[15]:
In [16]:
curlF = sp3d.grad ^ F
curlF.Fmt(1,r'\nabla \wedge F')
Out[16]:
In [17]:
divB = sp3d.grad | B
divB.Fmt(1,r'\nabla \cdot B')
Out[17]:
In [18]:
F
Out[18]:
In [19]:
F.Fmt(3,'F')
Out[19]:
In [20]:
F.norm()
Out[20]: