Симптиевая геометрическая алгебра: переключение между ковариантной и контравариантной формами
Этот вопрос касается того, чтобы модуль геометрической алгебры Симпи использовал и ковариантные, и контравариантные векторные формы, чтобы сделать вывод намного более компактным. Пока что я могу использовать один или другой, но не оба вместе. Может быть, я недостаточно хорошо знаю математику, и ответ в конце концов есть в документации.
Немного предыстории:
У меня есть система уравнений, которую я хочу решить в сложной неортогональной системе координат. Метрические тензорные элементы этой системы координат известны, но их выражения громоздки, поэтому я хотел бы скрыть их и просто использовать gij, квадратный корень его определителя J и gij. Также полезно описать векторы V в их контравариантной или ковариантной формах,
V = ∑Vi ei = ∑Vi ei,
и преобразовывать между ними, где это необходимо.
Здесь ei = ∇u(i) и u(i) - i-я координата, а ei = ∂R / ∂u(i). Это обозначение такое же, как и в этом бесценном тексте, который я не могу рекомендовать больше. В частности, глава 2 будет полезна для этого вопроса.
В системе уравнений я пытаюсь решить множество скручиваний и операций расходимости. Первый наиболее просто выражается с помощью контравариантной формы вектора a, а второй - с помощью коварианта:
∇.V = 1 / J ∑∂u(i) JVi,
V x V = εijk/ J (∂u(i) Vi) ei,
где εijk - символ Леви-Чевитты. Я бы посчитал, что на этот вопрос ответили, если бы я мог напечатать вышеупомянутые два уравнения, используя модуль геометрической алгебры Симпи.
Как сконфигурировать модуль геометрической алгебры sympy для выражения вычислений таким образом, то есть используя ковариантные и контравариантные векторные выражения, чтобы скрыть сложную природу системы координат?
Может быть, есть альтернативный набор инструментов, который делает именно это?