Skip to content
This repository was archived by the owner on Feb 1, 2023. It is now read-only.

Commit be0b7d0

Browse files
author
Michael Jung
committed
further methods added + 'local_frame' invokes vector field module's method + doc improvements
1 parent 9ecd22a commit be0b7d0

File tree

1 file changed

+82
-18
lines changed

1 file changed

+82
-18
lines changed

src/sage/manifolds/differentiable/vector_bundle.py

Lines changed: 82 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,8 @@ class TensorBundle(DifferentiableVectorBundle):
222222
(`k` is called the *contravariant* and `l` the *covariant* rank of the
223223
tensor bundle).
224224
225-
The trivializations are directly given by charts on the codomain of `\Phi`.
225+
The trivializations are directly given by charts on the codomain (called
226+
*ambient domain*) of `\Phi`.
226227
In particular, let `(V, \varphi)` be a chart of `N` with components
227228
`(x^1, \dots, x^n)` such that `q=\Phi(p) \in V`. Then, the matrix entries of
228229
`t \in T_q^{(k,l)}N` are given by
@@ -830,13 +831,11 @@ def frames(self):
830831
manifold R along the Differentiable map Phi from the 1-dimensional
831832
differentiable manifold R to the 2-dimensional differentiable
832833
manifold M
833-
sage: f = PhiT11.local_frame('f', from_frame=e_cart); f
834-
Vector frame (R, (f_0,f_1)) with values on the 2-dimensional
834+
sage: f = PhiT11.local_frame(); f
835+
Vector frame (R, (d/dx,d/dy)) with values on the 2-dimensional
835836
differentiable manifold M
836837
sage: PhiT11.frames()
837838
[Vector frame (R, (d/dx,d/dy)) with values on the 2-dimensional
838-
differentiable manifold M,
839-
Vector frame (R, (f_0,f_1)) with values on the 2-dimensional
840839
differentiable manifold M]
841840
842841
"""
@@ -1183,11 +1182,17 @@ def local_frame(self, symbol=None, latex_symbol=None, from_frame=None,
11831182
latex_symbol_dual=None, domain=None):
11841183
r"""
11851184
Define a vector frame on ``domain``, possibly with values in the
1186-
tangent bundle of the codomain of the destination map. This
1187-
automatically induces a local frame on the tensor bundle ``self``.
1185+
tangent bundle of the ambient domain.
11881186
1189-
More precisely, if `e: U \to \Phi^*TN` is a vector frame on
1190-
`U \subset M` with values in `\Phi^*TN` along the destination map
1187+
If the basis specified by the given symbol already exists, it is
1188+
simply returned.
1189+
If no argument is provided the vector field module's default frame is
1190+
returned.
1191+
1192+
Notice, that a vector frame automatically induces a local frame on the
1193+
tensor bundle ``self``. More precisely, if `e: U \to \Phi^*TN` is a
1194+
vector frame on `U \subset M` with values in `\Phi^*TN` along the
1195+
destination map
11911196
11921197
.. MATH::
11931198
@@ -1224,7 +1229,7 @@ def local_frame(self, symbol=None, latex_symbol=None, from_frame=None,
12241229
if ``None``, ``symbol`` is used in place of ``latex_symbol``
12251230
- ``from_frame`` -- (default: ``None``) vector frame `\tilde{e}`
12261231
on the codomain `N` of the destination map `\Phi`; the returned
1227-
frame `e` is then such that for all `p \in M`,
1232+
frame `e` is then such that for all `p \in U`,
12281233
we have `e(p) = \tilde{e}(\Phi(p))`
12291234
- ``indices`` -- (default: ``None``; used only if ``symbol`` is a
12301235
single string) tuple of strings representing the indices labelling
@@ -1277,15 +1282,74 @@ def local_frame(self, symbol=None, latex_symbol=None, from_frame=None,
12771282
:class:`~sage.manifolds.differentiable.vectorframe.VectorFrame`.
12781283
12791284
"""
1280-
from .vectorframe import VectorFrame
12811285
if domain is None:
12821286
domain = self._base_space
1283-
return VectorFrame(domain.vector_field_module(
1284-
dest_map=self._dest_map.restrict(domain),
1285-
force_free=True),
1286-
symbol=symbol, latex_symbol=latex_symbol,
1287-
from_frame=from_frame, indices=indices,
1288-
latex_indices=latex_indices, symbol_dual=symbol_dual,
1289-
latex_symbol_dual=latex_symbol_dual)
1287+
vmodule = domain.vector_field_module(
1288+
dest_map=self._dest_map.restrict(domain),
1289+
force_free=True)
1290+
return vmodule.basis(symbol=symbol, latex_symbol=latex_symbol,
1291+
from_frame=from_frame,
1292+
indices=indices, latex_indices=latex_indices,
1293+
symbol_dual=symbol_dual,
1294+
latex_symbol_dual=latex_symbol_dual)
12901295

12911296
vector_frame = local_frame
1297+
1298+
def ambient_domain(self):
1299+
r"""
1300+
Return the codomain of the destination map.
1301+
1302+
OUTPUT:
1303+
1304+
- a :class:`~sage.manifolds.differentiable.manifold.DifferentiableManifold`
1305+
representing the codomain of the destination map
1306+
1307+
EXAMPLES::
1308+
1309+
sage: M = Manifold(2, 'M')
1310+
sage: c_cart.<x,y> = M.chart()
1311+
sage: e_cart = c_cart.frame() # standard basis
1312+
sage: R = Manifold(1, 'R')
1313+
sage: T.<t> = R.chart() # canonical chart on R
1314+
sage: Phi = R.diff_map(M, [cos(t), sin(t)], name='Phi') ; Phi
1315+
Differentiable map Phi from the 1-dimensional differentiable
1316+
manifold R to the 2-dimensional differentiable manifold M
1317+
sage: Phi.display()
1318+
Phi: R --> M
1319+
t |--> (x, y) = (cos(t), sin(t))
1320+
sage: PhiT11 = R.tensor_bundle(1, 1, dest_map=Phi)
1321+
sage: PhiT11.ambient_domain()
1322+
2-dimensional differentiable manifold M
1323+
1324+
"""
1325+
return self._ambient_domain
1326+
1327+
def destination_map(self):
1328+
r"""
1329+
Return the the destination map.
1330+
1331+
OUTPUT:
1332+
1333+
- a :class:`~sage.manifolds.differentiable.diff_map.DifferentialMap`
1334+
representing the destination map
1335+
1336+
EXAMPLES::
1337+
1338+
sage: M = Manifold(2, 'M')
1339+
sage: c_cart.<x,y> = M.chart()
1340+
sage: e_cart = c_cart.frame() # standard basis
1341+
sage: R = Manifold(1, 'R')
1342+
sage: T.<t> = R.chart() # canonical chart on R
1343+
sage: Phi = R.diff_map(M, [cos(t), sin(t)], name='Phi') ; Phi
1344+
Differentiable map Phi from the 1-dimensional differentiable
1345+
manifold R to the 2-dimensional differentiable manifold M
1346+
sage: Phi.display()
1347+
Phi: R --> M
1348+
t |--> (x, y) = (cos(t), sin(t))
1349+
sage: PhiT11 = R.tensor_bundle(1, 1, dest_map=Phi)
1350+
sage: PhiT11.destination_map()
1351+
Differentiable map Phi from the 1-dimensional differentiable
1352+
manifold R to the 2-dimensional differentiable manifold M
1353+
1354+
"""
1355+
return self._dest_map

0 commit comments

Comments
 (0)