def test_correct_arguments(): raises(ValueError, lambda: R2.e_x(R2.e_x)) raises(ValueError, lambda: R2.e_x(R2.dx)) raises(ValueError, lambda: Commutator(R2.e_x, R2.x)) raises(ValueError, lambda: Commutator(R2.dx, R2.e_x)) raises(ValueError, lambda: Differential(Differential(R2.e_x))) raises(ValueError, lambda: R2.dx(R2.x)) raises(ValueError, lambda: LieDerivative(R2.dx, R2.dx)) raises(ValueError, lambda: LieDerivative(R2.x, R2.dx)) raises(ValueError, lambda: CovarDerivativeOp(R2.dx, [])) raises(ValueError, lambda: CovarDerivativeOp(R2.x, [])) a = Symbol('a') raises(ValueError, lambda: intcurve_series(R2.dx, a, R2_r.point([1, 2]))) raises(ValueError, lambda: intcurve_series(R2.x, a, R2_r.point([1, 2]))) raises(ValueError, lambda: intcurve_diffequ(R2.dx, a, R2_r.point([1, 2]))) raises(ValueError, lambda: intcurve_diffequ(R2.x, a, R2_r.point([1, 2]))) raises(ValueError, lambda: contravariant_order(R2.e_x + R2.dx)) raises(ValueError, lambda: covariant_order(R2.e_x + R2.dx)) raises(ValueError, lambda: contravariant_order(R2.e_x * R2.e_y)) raises(ValueError, lambda: covariant_order(R2.dx * R2.dy))
def test_covar_deriv(): ch = metric_to_Christoffel_2nd(TP(R2.dx, R2.dx) + TP(R2.dy, R2.dy)) cvd = BaseCovarDerivativeOp(R2_r, 0, ch) assert cvd(R2.x) == 1 assert cvd(R2.x * R2.e_x) == R2.e_x cvd = CovarDerivativeOp(R2.x * R2.e_x, ch) assert cvd(R2.x) == R2.x assert cvd(R2.x * R2.e_x) == R2.x * R2.e_x
def test_covar_deriv(): ch = metric_to_Christoffel_2nd(TP(R2.dx, R2.dx) + TP(R2.dy, R2.dy)) cvd = BaseCovarDerivativeOp(R2_r, 0, ch) assert cvd(R2.x) == 1 # This line fails if the cache is disabled: assert cvd(R2.x * R2.e_x) == R2.e_x cvd = CovarDerivativeOp(R2.x * R2.e_x, ch) assert cvd(R2.x) == R2.x assert cvd(R2.x * R2.e_x) == R2.x * R2.e_x
from sympy.diffgeom import BaseCovarDerivativeOp from sympy.diffgeom import metric_to_Christoffel_2nd, TensorProduct TP = TensorProduct ch = metric_to_Christoffel_2nd(TP(R2.dx, R2.dx) + TP(R2.dy, R2.dy)) ch cvd = BaseCovarDerivativeOp(R2_r, 0, ch) cvd(R2.x) cvd(R2.x*R2.e_x) #CovarDerivativeOp from sympy.diffgeom.rn import R2 from sympy.diffgeom import CovarDerivativeOp from sympy.diffgeom import metric_to_Christoffel_2nd, TensorProduct TP = TensorProduct ch = metric_to_Christoffel_2nd(TP(R2.dx, R2.dx) + TP(R2.dy, R2.dy)) ch cvd = CovarDerivativeOp(R2.x*R2.e_x, ch) cvd(R2.x) cvd(R2.x*R2.e_x) #intcurve_series from sympy.abc import t, x, y from sympy.diffgeom.rn import R2, R2_p, R2_r from sympy.diffgeom import intcurve_series # Specify a starting point and a vector field: start_point = R2_r.point([x, y]) vector_field = R2_r.e_x # Calculate the series: intcurve_series(vector_field, t, start_point, n=3) # Or get the elements of the expansion in a list: series = intcurve_series(vector_field, t, start_point, n=3, coeffs=True) series[0] series[1]