@@ -387,17 +387,17 @@ def _repr_(self):
387387
388388 def fiber (self , point ):
389389 r"""
390- Return the tensor bundle fiber at `` point`` .
390+ Return the tensor bundle fiber over a point.
391391
392392 INPUT:
393393
394394 - ``point`` -- :class:`~sage.manifolds.point.ManifoldPoint`;
395- point `p` at which the fiber is defined
395+ point `p` of the base manifold of ``self``
396396
397- OUPUT :
397+ OUTPUT :
398398
399399 - an instance of :class:`~sage.tensor.modules.finite_rank_free_module.FiniteRankFreeModule`
400- representing the tensor bundle fiber
400+ representing the tensor bundle fiber over `p`
401401
402402 EXAMPLES::
403403
@@ -498,8 +498,8 @@ def section_module(self, domain=None):
498498
499499 def section (self , * args , ** kwargs ):
500500 r"""
501- Return a section of ``self``, namely a tensor field on the corresponding
502- tensor field module .
501+ Return a section of ``self``, namely a tensor field on the base
502+ manifold .
503503
504504 .. SEEALSO::
505505
@@ -520,6 +520,8 @@ def section(self, *args, **kwargs):
520520 is a dictionary) coordinate chart in which the components are
521521 expressed; if ``None``, the default chart on the domain of ``frame``
522522 is assumed
523+ - ``domain`` -- (default: ``None``) domain of the section; if ``None``,
524+ ``self.base_space()`` is assumed
523525 - ``name`` -- (default: ``None``) name given to the tensor field
524526 - ``latex_name`` -- (default: ``None``) LaTeX symbol to denote the
525527 tensor field; if ``None``, the LaTeX symbol is set to ``name``
@@ -563,11 +565,19 @@ def section(self, *args, **kwargs):
563565 sage: t.display()
564566 t = d/dx*dx + x d/dx*dy + 2 d/dy*dy
565567
568+ An example of use with the arguments ``comp`` and ``domain``::
569+
570+ sage: TM = M.tangent_bundle()
571+ sage: w = TM.section([-y, x], domain=U); w
572+ Vector field on the Open subset U of the 2-dimensional differentiable manifold M
573+ sage: w.display()
574+ -y d/dx + x d/dy
575+
566576 """
567577 nargs = [self ._tensor_type [0 ], self ._tensor_type [1 ]]
568578 nargs .extend (args )
569579 domain = kwargs .pop ('domain' , self ._base_space )
570- kwargs ['dest_map' ] = self ._dest_map
580+ kwargs ['dest_map' ] = self ._dest_map . restrict ( domain )
571581 return domain .tensor_field (* nargs , ** kwargs )
572582
573583 def set_change_of_frame (self , frame1 , frame2 , change_of_frame ,
@@ -1101,11 +1111,14 @@ def local_frame(self, symbol=None, latex_symbol=None, from_frame=None,
11011111 indices = None , latex_indices = None , symbol_dual = None ,
11021112 latex_symbol_dual = None , domain = None ):
11031113 r"""
1104- Define a vector frame on ``self``.
1114+ Define a local frame for ``self`` over some open subset of the base
1115+ space.
11051116
1106- A *vector frame* is a field on the manifold that provides, at each
1107- point `p` of the manifold, a vector basis of the tangent space at `p`
1108- (or at `\Phi(p)` when a destination map is given to the bundle).
1117+ If `k` is the (vector bundle) rank of ``self`` and `U` is an open
1118+ subset of the base manifold of ``self``, a *local frame over* `U` is
1119+ a `k`-tuple of local sections `(s_1,\ldots,s_k)` over `U` such that
1120+ for each `p\in U`, `(s_1(p),\ldots,s_k(p))` is a vector basis of the
1121+ fiber over `p` .
11091122
11101123 .. SEEALSO::
11111124
@@ -1142,25 +1155,37 @@ def local_frame(self, symbol=None, latex_symbol=None, from_frame=None,
11421155 - ``latex_symbol_dual`` -- (default: ``None``) same as ``latex_symbol``
11431156 but for the dual coframe
11441157 - ``domain`` -- (default: ``None``) domain on which the local frame is
1145- defined; if ``None`` is provided, the base space is assumed
1158+ defined; if ``None`` is provided, the base space of ``self`` is
1159+ assumed
11461160
11471161 OUTPUT:
11481162
1149- - a :class:`~sage.manifolds.differentiable.vectorframe.VectorFrame`
1150- representing the defined vector frame
1163+ - the local frame corresponding to the above specifications; this is
1164+ an instance of
1165+ :class:`~sage.manifolds.differentiable.vectorframe.VectorFrame`
1166+ if ``self`` is a tangent bundle.
11511167
11521168 EXAMPLES:
11531169
1154- Setting a vector frame on a 3-dimensional manifold::
1170+ Defining a local frame for the tangent bundle of a 3-dimensional
1171+ manifold::
11551172
11561173 sage: M = Manifold(3, 'M')
1157- sage: X.<x,y,z> = M.chart()
11581174 sage: TM = M.tangent_bundle()
1159- sage: e = TM.vector_frame ('e'); e
1175+ sage: e = TM.local_frame ('e'); e
11601176 Vector frame (M, (e_0,e_1,e_2))
11611177 sage: e[0]
11621178 Vector field e_0 on the 3-dimensional differentiable manifold M
11631179
1180+ Specifying the domain of the local frame::
1181+
1182+ sage: U = M.open_subset('U')
1183+ sage: f = TM.local_frame('f', domain=U); f
1184+ Vector frame (U, (f_0,f_1,f_2))
1185+ sage: f[0]
1186+ Vector field f_0 on the Open subset U of the 3-dimensional
1187+ differentiable manifold M
1188+
11641189 .. SEEALSO::
11651190
11661191 For more options, in particular for the choice of symbols and
@@ -1169,10 +1194,15 @@ def local_frame(self, symbol=None, latex_symbol=None, from_frame=None,
11691194
11701195 """
11711196 from .vectorframe import VectorFrame
1197+ if self ._tensor_type != (1 , 0 ):
1198+ raise NotImplementedError ("local frames are not implemented for "
1199+ "tensor bundles of type {}" .format (
1200+ self ._tensor_type ))
11721201 if domain is None :
11731202 domain = self ._base_space
1174- return VectorFrame (domain .vector_field_module (dest_map = self ._dest_map ,
1175- force_free = True ),
1203+ return VectorFrame (domain .vector_field_module (
1204+ dest_map = self ._dest_map .restrict (domain ),
1205+ force_free = True ),
11761206 symbol = symbol , latex_symbol = latex_symbol ,
11771207 from_frame = from_frame , indices = indices ,
11781208 latex_indices = latex_indices , symbol_dual = symbol_dual ,
0 commit comments