Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

r""" 

Manifold Structures 

 

These classes encode the structure of a manifold. 

 

AUTHORS: 

 

- Travis Scrimshaw (2015-11-25): Initial version 

- Eric Gourgoulhon (2015): add :class:`DifferentialStructure` and 

:class:`RealDifferentialStructure` 

- Eric Gourgoulhon (2018): add :class:`PseudoRiemannianStructure`, 

:class:`RiemannianStructure` and :class:`LorentzianStructure` 

 

""" 

 

#***************************************************************************** 

# Copyright (C) 2015, 2018 Eric Gourgoulhon <eric.gourgoulhon@obspm.fr> 

# Copyright (C) 2015 Travis Scrimshaw <tscrimsh at umn.edu> 

# 

# This program is free software: you can redistribute it and/or modify 

# it under the terms of the GNU General Public License as published by 

# the Free Software Foundation, either version 2 of the License, or 

# (at your option) any later version. 

# http://www.gnu.org/licenses/ 

#***************************************************************************** 

 

from sage.misc.fast_methods import Singleton 

from sage.manifolds.chart import Chart, RealChart 

from sage.manifolds.scalarfield_algebra import ScalarFieldAlgebra 

from sage.manifolds.manifold_homset import TopologicalManifoldHomset 

from sage.manifolds.differentiable.chart import DiffChart, RealDiffChart 

from sage.manifolds.differentiable.scalarfield_algebra import \ 

DiffScalarFieldAlgebra 

from sage.manifolds.differentiable.manifold_homset import \ 

DifferentiableManifoldHomset 

 

# This is a slight abuse by making this a Singleton, but there is no 

# need to have different copies of this object. 

class TopologicalStructure(Singleton): 

""" 

The structure of a topological manifold over a general topological field. 

""" 

chart = Chart 

name = "topological" 

scalar_field_algebra = ScalarFieldAlgebra 

homset = TopologicalManifoldHomset 

 

def subcategory(self, cat): 

""" 

Return the subcategory of ``cat`` corresponding to the structure 

of ``self``. 

 

EXAMPLES:: 

 

sage: from sage.manifolds.structure import TopologicalStructure 

sage: from sage.categories.manifolds import Manifolds 

sage: TopologicalStructure().subcategory(Manifolds(RR)) 

Category of manifolds over Real Field with 53 bits of precision 

 

""" 

return cat 

 

class RealTopologicalStructure(Singleton): 

""" 

The structure of a topological manifold over `\RR`. 

""" 

chart = RealChart 

name = "topological" 

scalar_field_algebra = ScalarFieldAlgebra 

homset = TopologicalManifoldHomset 

 

def subcategory(self, cat): 

""" 

Return the subcategory of ``cat`` corresponding to the structure 

of ``self``. 

 

EXAMPLES:: 

 

sage: from sage.manifolds.structure import RealTopologicalStructure 

sage: from sage.categories.manifolds import Manifolds 

sage: RealTopologicalStructure().subcategory(Manifolds(RR)) 

Category of manifolds over Real Field with 53 bits of precision 

 

""" 

return cat 

 

class DifferentialStructure(Singleton): 

""" 

The structure of a differentiable manifold over a general topological 

field. 

""" 

chart = DiffChart 

name = "differentiable" 

scalar_field_algebra = DiffScalarFieldAlgebra 

homset = DifferentiableManifoldHomset 

 

def subcategory(self, cat): 

""" 

Return the subcategory of ``cat`` corresponding to the structure 

of ``self``. 

 

EXAMPLES:: 

 

sage: from sage.manifolds.structure import DifferentialStructure 

sage: from sage.categories.manifolds import Manifolds 

sage: DifferentialStructure().subcategory(Manifolds(RR)) 

Category of manifolds over Real Field with 53 bits of precision 

 

""" 

return cat 

 

class RealDifferentialStructure(Singleton): 

""" 

The structure of a differentiable manifold over `\RR`. 

""" 

chart = RealDiffChart 

name = "differentiable" 

scalar_field_algebra = DiffScalarFieldAlgebra 

homset = DifferentiableManifoldHomset 

 

def subcategory(self, cat): 

""" 

Return the subcategory of ``cat`` corresponding to the structure 

of ``self``. 

 

EXAMPLES:: 

 

sage: from sage.manifolds.structure import RealDifferentialStructure 

sage: from sage.categories.manifolds import Manifolds 

sage: RealDifferentialStructure().subcategory(Manifolds(RR)) 

Category of manifolds over Real Field with 53 bits of precision 

 

""" 

return cat 

 

class PseudoRiemannianStructure(Singleton): 

""" 

The structure of a pseudo-Riemannian manifold. 

""" 

chart = RealDiffChart 

name = "pseudo-Riemannian" 

scalar_field_algebra = DiffScalarFieldAlgebra 

homset = DifferentiableManifoldHomset 

 

def subcategory(self, cat): 

""" 

Return the subcategory of ``cat`` corresponding to the structure 

of ``self``. 

 

EXAMPLES:: 

 

sage: from sage.manifolds.structure import PseudoRiemannianStructure 

sage: from sage.categories.manifolds import Manifolds 

sage: PseudoRiemannianStructure().subcategory(Manifolds(RR)) 

Category of manifolds over Real Field with 53 bits of precision 

 

""" 

return cat 

 

class RiemannianStructure(Singleton): 

""" 

The structure of a Riemannian manifold. 

""" 

chart = RealDiffChart 

name = "Riemannian" 

scalar_field_algebra = DiffScalarFieldAlgebra 

homset = DifferentiableManifoldHomset 

 

def subcategory(self, cat): 

""" 

Return the subcategory of ``cat`` corresponding to the structure 

of ``self``. 

 

EXAMPLES:: 

 

sage: from sage.manifolds.structure import RiemannianStructure 

sage: from sage.categories.manifolds import Manifolds 

sage: RiemannianStructure().subcategory(Manifolds(RR)) 

Category of manifolds over Real Field with 53 bits of precision 

 

""" 

return cat 

 

class LorentzianStructure(Singleton): 

""" 

The structure of a Lorentzian manifold. 

""" 

chart = RealDiffChart 

name = "Lorentzian" 

scalar_field_algebra = DiffScalarFieldAlgebra 

homset = DifferentiableManifoldHomset 

 

def subcategory(self, cat): 

""" 

Return the subcategory of ``cat`` corresponding to the structure 

of ``self``. 

 

EXAMPLES:: 

 

sage: from sage.manifolds.structure import LorentzianStructure 

sage: from sage.categories.manifolds import Manifolds 

sage: LorentzianStructure().subcategory(Manifolds(RR)) 

Category of manifolds over Real Field with 53 bits of precision 

 

""" 

return cat