Beispiel #1
0
    def test_derivatives_in_spherical_coordinates(self):

        X = (r, th, phi) = symbols('r theta phi')
        s3d = Ga('e_r e_theta e_phi', g=[1, r ** 2, r ** 2 * sin(th) ** 2], coords=X, norm=True)
        (er, eth, ephi) = s3d.mv()
        grad = s3d.grad

        f = s3d.mv('f', 'scalar', f=True)
        A = s3d.mv('A', 'vector', f=True)
        B = s3d.mv('B', 'bivector', f=True)

        assert str(f) == 'f'
        assert str(A) == 'A__r*e_r + A__theta*e_theta + A__phi*e_phi'
        assert str(B) == 'B__rtheta*e_r^e_theta + B__rphi*e_r^e_phi + B__thetaphi*e_theta^e_phi'

        assert str(grad*f) == 'D{r}f*e_r + D{theta}f*e_theta/r + D{phi}f*e_phi/(r*sin(theta))'
        assert str((grad|A).simplify()) == '(r*D{r}A__r + 2*A__r + A__theta/tan(theta) + D{theta}A__theta + D{phi}A__phi/sin(theta))/r'
        assert str(-s3d.I()*(grad^A)) == '(A__phi/tan(theta) + D{theta}A__phi - D{phi}A__theta/sin(theta))*e_r/r + (-r*D{r}A__phi - A__phi + D{phi}A__r/sin(theta))*e_theta/r + (r*D{r}A__theta + A__theta - D{theta}A__r)*e_phi/r'

        assert latex(grad) == r'\boldsymbol{e}_{r} \frac{\partial}{\partial r} + \boldsymbol{e}_{\theta } \frac{1}{r} \frac{\partial}{\partial \theta } + \boldsymbol{e}_{\phi } \frac{1}{r \sin{\left (\theta  \right )}} \frac{\partial}{\partial \phi }'
        assert latex(B|(eth^ephi)) == r'- B^{\theta \phi } {\left (r,\theta ,\phi  \right )}'

        assert str(grad^B) == '(r*D{r}B__thetaphi - B__rphi/tan(theta) + 2*B__thetaphi - D{theta}B__rphi + D{phi}B__rtheta/sin(theta))*e_r^e_theta^e_phi/r'

        return
Beispiel #2
0
def derivatives_in_rectangular_coordinates():
    Print_Function()
    X = (x, y, z) = symbols('x y z')
    o3d = Ga('e_x e_y e_z', g=[1, 1, 1], coords=X)
    (ex, ey, ez) = o3d.mv()
    grad = o3d.grad

    f = o3d.mv('f', 'scalar', f=True)
    A = o3d.mv('A', 'vector', f=True)
    B = o3d.mv('B', 'bivector', f=True)
    C = o3d.mv('C', 'mv')
    print('f =', f)
    print('A =', A)
    print('B =', B)
    print('C =', C)

    print('grad*f =', grad * f)
    print('grad|A =', grad | A)
    print('grad*A =', grad * A)

    print('-I*(grad^A) =', -o3d.I() * (grad ^ A))
    print('grad*B =', grad * B)
    print('grad^B =', grad ^ B)
    print('grad|B =', grad | B)
    return
Beispiel #3
0
    def test_derivatives_in_rectangular_coordinates(self):

        X = (x, y, z) = symbols('x y z')
        o3d = Ga('e_x e_y e_z', g=[1, 1, 1], coords=X)
        (ex, ey, ez) = o3d.mv()
        grad = o3d.grad

        f = o3d.mv('f', 'scalar', f=True)
        A = o3d.mv('A', 'vector', f=True)
        B = o3d.mv('B', 'bivector', f=True)
        C = o3d.mv('C', 'mv', f=True)

        assert str(f) == 'f'
        assert str(A) == 'A__x*e_x + A__y*e_y + A__z*e_z'
        assert str(B) == 'B__xy*e_x^e_y + B__xz*e_x^e_z + B__yz*e_y^e_z'
        assert str(C) == 'C + C__x*e_x + C__y*e_y + C__z*e_z + C__xy*e_x^e_y + C__xz*e_x^e_z + C__yz*e_y^e_z + C__xyz*e_x^e_y^e_z'

        assert str(grad*f) == 'D{x}f*e_x + D{y}f*e_y + D{z}f*e_z'
        assert str(grad|A) == 'D{x}A__x + D{y}A__y + D{z}A__z'
        assert str(grad*A) == 'D{x}A__x + D{y}A__y + D{z}A__z + (-D{y}A__x + D{x}A__y)*e_x^e_y + (-D{z}A__x + D{x}A__z)*e_x^e_z + (-D{z}A__y + D{y}A__z)*e_y^e_z'

        assert str(-o3d.I()*(grad^A)) == '(-D{z}A__y + D{y}A__z)*e_x + (D{z}A__x - D{x}A__z)*e_y + (-D{y}A__x + D{x}A__y)*e_z'
        assert str(grad*B) == '(-D{y}B__xy - D{z}B__xz)*e_x + (D{x}B__xy - D{z}B__yz)*e_y + (D{x}B__xz + D{y}B__yz)*e_z + (D{z}B__xy - D{y}B__xz + D{x}B__yz)*e_x^e_y^e_z'
        assert str(grad^B) == '(D{z}B__xy - D{y}B__xz + D{x}B__yz)*e_x^e_y^e_z'
        assert str(grad|B) == '(-D{y}B__xy - D{z}B__xz)*e_x + (D{x}B__xy - D{z}B__yz)*e_y + (D{x}B__xz + D{y}B__yz)*e_z'

        assert str(grad<A) == 'D{x}A__x + D{y}A__y + D{z}A__z'
        assert str(grad>A) == 'D{x}A__x + D{y}A__y + D{z}A__z'
        assert str(grad<B) == '(-D{y}B__xy - D{z}B__xz)*e_x + (D{x}B__xy - D{z}B__yz)*e_y + (D{x}B__xz + D{y}B__yz)*e_z'
        assert str(grad>B) == '0'
        assert str(grad<C) == 'D{x}C__x + D{y}C__y + D{z}C__z + (-D{y}C__xy - D{z}C__xz)*e_x + (D{x}C__xy - D{z}C__yz)*e_y + (D{x}C__xz + D{y}C__yz)*e_z + D{z}C__xyz*e_x^e_y - D{y}C__xyz*e_x^e_z + D{x}C__xyz*e_y^e_z'
        assert str(grad>C) == 'D{x}C__x + D{y}C__y + D{z}C__z + D{x}C*e_x + D{y}C*e_y + D{z}C*e_z'

        return
Beispiel #4
0
def signature_test():
    Print_Function()

    e3d = Ga('e1 e2 e3', g=[1, 1, 1])
    print('e3d.g =', e3d.g)
    print('Signature = (3,0) I =', e3d.I(), ' I**2 =', e3d.I() * e3d.I())

    e3d = Ga('e1 e2 e3', g=[2, 2, 2])
    print('e3d.g =', e3d.g)
    print('Signature = (3,0) I =', e3d.I(), ' I**2 =', e3d.I() * e3d.I())

    sp4d = Ga('e1 e2 e3 e4', g=[1, -1, -1, -1])
    print('e3d.g =', sp4d.g)
    print('Signature = (1,3) I =', sp4d.I(), ' I**2 =', sp4d.I() * sp4d.I())

    sp4d = Ga('e1 e2 e3 e4', g=[2, -2, -2, -2])
    print('e3d.g =', sp4d.g)
    print('Signature = (1,3) I =', sp4d.I(), ' I**2 =', sp4d.I() * sp4d.I())

    e4d = Ga('e1 e2 e3 e4', g=[1, 1, 1, 1])
    print('e4d.g =', e4d.g)
    print('Signature = (4,0) I =', e4d.I(), ' I**2 =', e4d.I() * e4d.I())

    cf3d = Ga('e1 e2 e3 e4 e5', g=[1, 1, 1, 1, -1])
    print('cf4d.g =', cf3d.g)
    print('Signature = (4,1) I =', cf3d.I(), ' I**2 =', cf3d.I() * cf3d.I())

    cf3d = Ga('e1 e2 e3 e4 e5', g=[2, 2, 2, 2, -2])
    print('cf4d.g =', cf3d.g)
    print('Signature = (4,1) I =', cf3d.I(), ' I**2 =', cf3d.I() * cf3d.I())

    return
Beispiel #5
0
def signature_test():
    Print_Function()

    e3d = Ga('e1 e2 e3', g=[1, 1, 1])
    print('g =', e3d.g)
    print(r'%Signature = (3,0)\: I =', e3d.I(), r'\: I^{2} =',
          e3d.I() * e3d.I())

    e3d = Ga('e1 e2 e3', g=[2, 2, 2])
    print('g =', e3d.g)
    print(r'%Signature = (3,0)\: I =', e3d.I(), '|; I^{2} =',
          e3d.I() * e3d.I())

    sp4d = Ga('e1 e2 e3 e4', g=[1, -1, -1, -1])
    print('g =', sp4d.g)
    print(r'%Signature = (1,3)\: I =', sp4d.I(), r'\: I^{2} =',
          sp4d.I() * sp4d.I())

    sp4d = Ga('e1 e2 e3 e4', g=[2, -2, -2, -2])
    print('g =', sp4d.g)
    print(r'%Signature = (1,3)\: I =', sp4d.I(), r'\: I^{2} =',
          sp4d.I() * sp4d.I())

    e4d = Ga('e1 e2 e3 e4', g=[1, 1, 1, 1])
    print('g =', e4d.g)
    print(r'%Signature = (4,0)\: I =', e4d.I(), r'\: I^{2} =',
          e4d.I() * e4d.I())

    cf3d = Ga('e1 e2 e3 e4 e5', g=[1, 1, 1, 1, -1])
    print('g =', cf3d.g)
    print(r'%Signature = (4,1)\: I =', cf3d.I(), r'\: I^{2} =',
          cf3d.I() * cf3d.I())

    cf3d = Ga('e1 e2 e3 e4 e5', g=[2, 2, 2, 2, -2])
    print('g =', cf3d.g)
    print(r'%Signature = (4,1)\: I =', cf3d.I(), r'\: I^{2} =',
          cf3d.I() * cf3d.I())

    return