metric perturbations on Sagemanifolds
I would like to carry out some metric perturbations within SageManifolds.
To that end, I have defined a 4-dimensional Lorentzian manifold N:
N = Manifold(4, 'N', latex_name=r'\mathcal{N}', structure='Lorentzian')
a global chart:
GC.<x0,x,y,z> = N.chart(r'x0:(-oo,+oo):x^0 x y z')
the corresponding frame eN:
eN = GC.frame()
the unperturbed metric g0:
g0 = N.metric('g0', latex_name=r'g_{(0)}')
the control parameter for the perturbation:
var('eps', latex_name=r'\epsilon', domain='real')
and the perturbation tensor field itself:
g1 = N.tensor_field(0, 2, name='g1', latex_name='g_{1}', sym=(0,1))
Up until here, everything seems to work fine and there are no errors or warnings. However, when I try to define the total perturbed metric, via:
g = g0 + eps*g1
the following error shows up:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-10-e785f6693878> in <module>()
----> 1 g = g0 + epsplus*g1plus
2 g
/home/orca/SageMath/local/lib/python3.7/site-packages/sage/structure/element.pyx in sage.structure.element.Element.__add__ (build/cythonized/sage/structure/element.c:10799)()
1229 cdef int cl = classify_elements(left, right)
1230 if HAVE_SAME_PARENT(cl):
-> 1231 return (<Element>left)._add_(right)
1232 # Left and right are Sage elements => use coercion model
1233 if BOTH_ARE_ELEMENT(cl):
/home/orca/SageMath/local/lib/python3.7/site-packages/sage/structure/element.pyx in sage.structure.element.ModuleElement._add_ (build/cythonized/sage/structure/element.c:15170)()
2344 Generic element of a module.
2345 """
-> 2346 cpdef _add_(self, other):
2347 """
2348 Abstract addition method
/home/orca/SageMath/local/lib/python3.7/site-packages/sage/tensor/modules/free_module_tensor.py in _add_(self, other)
2090 basis = self.common_basis(other)
2091 if basis is None:
-> 2092 raise ValueError("no common basis for the addition")
2093 comp_result = self._components[basis] + other._components[basis]
2094 result = self._fmodule.tensor_from_comp(self._tensor_type, comp_result)
ValueError: no common basis for the addition
How is the correct way to define g as the sum of those 2 former tensor fields??? I have also tried
g[eN] = g0[eN] + epsplus*g1plus[eN]
but there is then:
Type Error: unhashable type: 'VectorFieldFreeModule_with_category.element_class'
and also:
g[eN,:] = g0[eN,:] + epsplus*g1plus[eN,:]
but then the error is:
ValueError: no basis could be found for computing the components in the Coordinate frame (N, (d/dx0,d/dx,d/dy,d/dz)).