def test_eval_partial_derivative_single_1st_rank_tensors_by_tensor(): expr1 = PartialDerivative(A(i), A(j)) assert expr1._perform_derivative() - L.delta(i, -j) == 0 expr2 = PartialDerivative(A(i), A(-j)) assert expr2._perform_derivative() - L.metric(i, L_0) * L.delta(-L_0, j) == 0 expr3 = PartialDerivative(A(-i), A(-j)) assert expr3._perform_derivative() - L.delta(-i, j) == 0 expr4 = PartialDerivative(A(-i), A(j)) assert expr4._perform_derivative() - L.metric(-i, -L_0) * L.delta(L_0, -j) == 0 expr5 = PartialDerivative(A(i), B(j)) expr6 = PartialDerivative(A(i), C(j)) expr7 = PartialDerivative(A(i), D(j)) expr8 = PartialDerivative(A(i), H(j, k)) assert expr5._perform_derivative() == 0 assert expr6._perform_derivative() == 0 assert expr7._perform_derivative() == 0 assert expr8._perform_derivative() == 0 expr9 = PartialDerivative(A(i), A(i)) assert expr9._perform_derivative() - L.delta(L_0, -L_0) == 0 expr10 = PartialDerivative(A(-i), A(-i)) assert expr10._perform_derivative() - L.delta(-L_0, L_0) == 0
def test_eval_partial_derivative_expr_by_symbol(): tau, alpha = symbols("tau alpha") expr1 = PartialDerivative(tau**alpha, tau) assert expr1._perform_derivative() == alpha * 1 / tau * tau**alpha expr2 = PartialDerivative(2 * tau + 3 * tau**4, tau) assert expr2._perform_derivative() == 2 + 12 * tau**3 expr3 = PartialDerivative(2 * tau + 3 * tau**4, alpha) assert expr3._perform_derivative() == 0
def test_eval_partial_derivative_single_2nd_rank_tensors_by_tensor(): expr1 = PartialDerivative(H(i, j), H(m, m1)) assert expr1._perform_derivative() - L.delta(i, -m) * L.delta(j, -m1) == 0 expr2 = PartialDerivative(H(i, j), H(-m, m1)) assert expr2._perform_derivative() - L.metric(i, L_0) * L.delta(-L_0, m) * L.delta(j, -m1) == 0 expr3 = PartialDerivative(H(i, j), H(m, -m1)) assert expr3._perform_derivative() - L.delta(i, -m) * L.metric(j, L_0) * L.delta(-L_0, m1) == 0 expr4 = PartialDerivative(H(i, j), H(-m, -m1)) assert expr4._perform_derivative() - L.metric(i, L_0) * L.delta(-L_0, m) * L.metric(j, L_1) * L.delta(-L_1, m1) == 0
def test_eval_partial_derivative_divergence_type(): expr1a = PartialDerivative(A(i), A(i)) expr1b = PartialDerivative(A(i), A(k)) expr1c = PartialDerivative(L.delta(-i, k) * A(i), A(k)) assert (expr1a._perform_derivative() - (L.delta(-i, k) * expr1b._perform_derivative())).contract_delta(L.delta) == 0 assert (expr1a._perform_derivative() - expr1c._perform_derivative()).contract_delta(L.delta) == 0 expr2a = PartialDerivative(H(i, j), H(i, j)) expr2b = PartialDerivative(H(i, j), H(k, m)) expr2c = PartialDerivative(L.delta(-i, k) * L.delta(-j, m) * H(i, j), H(k, m)) assert (expr2a._perform_derivative() - (L.delta(-i, k) * L.delta(-j, m) * expr2b._perform_derivative())).contract_delta(L.delta) == 0 assert (expr2a._perform_derivative() - expr2c._perform_derivative()).contract_delta(L.delta) == 0
def test_eval_partial_derivative_single_tensors_by_scalar(): tau, mu = symbols("tau mu") expr = PartialDerivative(tau**mu, tau) assert expr._perform_derivative() == mu * tau**mu / tau expr1a = PartialDerivative(A(i), tau) assert expr1a._perform_derivative() == 0 expr1b = PartialDerivative(A(-i), tau) assert expr1b._perform_derivative() == 0 expr2a = PartialDerivative(H(i, j), tau) assert expr2a._perform_derivative() == 0 expr2b = PartialDerivative(H(i, -j), tau) assert expr2b._perform_derivative() == 0 expr2c = PartialDerivative(H(-i, j), tau) assert expr2c._perform_derivative() == 0 expr2d = PartialDerivative(H(-i, -j), tau) assert expr2d._perform_derivative() == 0