hp41programs

ComplexManifolds

Non-Riemannian Complex Manifolds for the HP-41


Overview
 

-These programs calculate the components of a few tensors in complex manifolds, even if the connexion is different from the Christoffel symbols:

     •  Curvature Tensor
     •  Ricci Tensor & Segmental Curvature Tensor
     •  Scalar Curvature
     •  Torsion Tensor
     •  Torsion Vector

-Several subroutines from the module "ZDERIVE41" are called.
-See also "Complex Derivatives & Riemannian Manifolds for the HP-41"
 
 

M-Code Routine
 

-A function ( hidden in the  "-ZDIFFMANIF"  header in the module )  places "CIJK" in alpha provided Z = i  Y = j  X = k
-Change its name as you like...

-It could be replaced by  "C"  ARCL Z  ARCL Y  ARCL X  provided  FIX 0  CF 29  are added at the beginning of the routines.
 

086   "F"
009   "I"
00E  "N"
001  "A"
00D "M"
006   "F"
006   "F"
009   "I"
004   "D"
01A  "Z"
02D  "-"
04E  C=0
168  M=C
1A8  N=C
1E8  O=C
228  P=C
29C  PT=7
110  LD@PT- 4
0D0  LD@PT- 3
0D0  LD@PT- 3
010  LD@PT- 0
0D0  LD@PT- 3
010  LD@PT- 0
0D0  LD@PT- 3
10E  A=C ALL
078  C=Z
13C  RCR 8
05C  PT=4
102  A=C @PT
0B8  C=Y
0FC  RCR 10
21C  PT=2
102  A=C @PT
0F8  C=X
37C  RCR 12
39C  PT=0
102  A=C @PT
0AE A<>C ALL
168  M=C
3E0  RTN
 
 

Program Listing
 

-The following listing actually combines 5 routines:  "ZRIJK+L"  "ZRQIJ"  "ZRQ"  "ZSIJK"  "ZSJ"
 
 

Data Registers:      R00 temp                                      ( Registers R01 thru R2n , R09 & R10 are to be initialized before executing these routines  )

                              •  R01-R02 = x1 ,  •  R03-R04 = x2 , .......... ,  •  R2n-1-R2n = xn

                              •  R09 = n < 5    •  R10 = h

Flags:  F00-F02-F09-F10
Subroutines:   "ZFD"  and the programs that compute the  Gkij    assuming  x1 , ............ , xn are in R01 thru R2n
 

-Lines 96-130 are three-byte GTOs
 
 

 01 LBL "ZRIJK+L"
 02 LBL 10
 03 STO 14
 04 RDN
 05 STO 13
 06 RDN
 07 STO 12
 08 X<>Y
 09 STO 11
 10 RCL 09
 11 STO 15
 12 CLX
 13 STO 18
 14 STO 19
 15 LBL 01
 16 CLX
 17 STO 22
 18 STO 23
 19 RCL 15
 20 RCL 13
 21 FS? 02
 22 X<>Y
 23 RCL 14
 24 -ZDIFFMANIF
 25 ASTO X
 26 XEQ IND X
 27 SIGN
 28 X=0?
 29 GTO 00
 30 X<>Y
 31 STO 23
 32 LASTX
 33 STO 22
 34 LBL 00
 35 RCL 11
 36 RCL 12
 37 FS? 02
 38 X<>Y
 39 RCL 15
 40 -ZDIFFMANIF
 41 ASTO X
 42 XEQ IND X
 43 SIGN
 44 X=0?
 45 ENTER
 46 X#0?
 47 X<> L
 48 RCL 23
 49 RCL 22
 50 Z*Z
 51 STO 22
 52 X<>Y
 53 STO 23
 54 CLX
 55 STO 24
 56 STO 25
 57 RCL 15
 58 RCL 12
 59 FS? 02
 60 X<>Y
 61 RCL 14
 62 -ZDIFFMANIF
 63 ASTO X
 64 XEQ IND X
 65 SIGN
 66 X=0?
 67 GTO 00
 68 X<>Y
 69 STO 25
 70 LASTX
 71 STO 24
 72 LBL 00
 73 RCL 11
 74 RCL 13
 75 FS? 02
 76 X<>Y
 77 RCL 15
 78 -ZDIFFMANIF
 79 ASTO X
 80 XEQ IND X
 81 SIGN
 82 X=0?
 83 ENTER
 84 X#0?
 85 X<> L
 86 RCL 25
 87 RCL 24
 88 Z*Z
 89 RCL 23
 90 RCL 22
 91 Z-Z
 92 ST+ 18
 93 X<>Y
 94 ST+ 19
 95 DSE 15
 96 GTO 01
 97 RCL 11
 98 STO 21
 99 RCL 12
100 STO 22
101 FS? 02
102 X<>Y
103 RCL 14
104 STO 24
105 -ZDIFFMANIF
106 ASTO 00
107 RCL 10
108 RCL 13
109 STO 23
110 XROM "ZFD"
111 ST- 18
112 X<>Y
113 ST- 19
114 RCL 21
115 RCL 23
116 FS? 02
117 X<>Y
118 RCL 24
119 -DIFZFMANIF
120 ASTO 00
121 RCL 10
122 RCL 22
123 XROM "ZFD"
124 ST+ 18
125 X<>Y
126 ST+ 19
127 RCL 19
128 RCL 18
129 RTN
130 GTO 10
131 LBL "ZRQIJ"
132 LBL 12
133 CF 09
134 GTO 00
135 LBL 13
136 SF 09
137 LBL 00
138 STO 23
139 X<>Y
140 STO 28
141 RCL 09
142 STO 24
143 CLX
144 STO 20
145 STO 27
146 LBL 02
147 RCL 28
148 RCL 24
149 FS? 00
150 X<>Y
151 RCL 23
152 RCL 24
153 XEQ 10
154 ST+ 20
155 X<>Y
156 ST+ 27
157 DSE 24
158 GTO 02
159 RCL 27
160 RCL 20
161 FS? 09
162 GTO 14
163 RTN
164 GTO 12
165 LBL "ZRQ"      
166 LBL 09
167 RCL 09
168 STO 28
169 CLX
170 STO 32
171 STO 33
172 LBL 03
173 RCL 09
174 STO 29
175 LBL 04
176 RCL 28
177 RCL 29
178 ENTER
179 CLX
180 ZCIJK
181 Z=0?
182 GTO 00
183 STO 30
184 X<>Y
185 STO 31
186 RCL 28
187 RCL 29
188 GTO 13
189 LBL 14
190 RCL 31
191 RCL 30
192 Z*Z
193 ST+ 32
194 X<>Y
195 ST+ 33
196 LBL 00
197 DSE 29
198 GTO 04
199 DSE 28
200 GTO 03
201 RCL 33
202 RCL 32
203 RTN
204 GTO 09
205 LBL "ZSIJK"
206 LBL 05
207 STO 13
208 RDN
209 STO 12
210 X<>Y
211 STO 11
212 R^
213 -ZDIFFMANIF
214 ASTO X
215 XEQ IND X
216 SIGN
217 X=0?
218 ENTER
219 X#0?
220 X<> L
221 STO 14
222 X<>Y
223 STO 15
224 RCL 11
225 RCL 12
226 RCL 13
227 -ZDIFFMANIF
228 ASTO X
229 XEQ IND X
230 SIGN
231 X=0?
232 ENTER
233 X#0?
234 X<> L
235 RCL 15
236 RCL 14
237 Z-Z
238 STO 14
239 X<>Y
240 STO 15
241 X<>Y
242 RTN
243 GTO 05
244 LBL "ZSJ"       
245 LBL 06
246 STO 11
247 RCL 09
248 STO 12
249 CLX
250 STO 16
251 STO 17
252 LBL 07
253 RCL 11
254 RCL 12
255 ENTER
256 XEQ 05
257 ST+ 16
258 X<>Y
259 ST+ 17
260 DSE 12
261 GTO 07
262 RCL 17
263 RCL 16
264 RTN
265 GTO 06
266 END

 
      ( 447 bytes / SIZE var. )
 

-In the following examples, we assume a 2-dimensional complex manifold where the connections are defined by

   G111 = x2 y          G211 = x2 y2
   G112 =  x y          G212 = x + y
   G121 =  - x y         G221= x - y
   G122 =  x y2        G222 = x2 + y2

>>> Store 2 in register R09  ( the dimension of the manifold )
 

-Load the following routines in main memory
 
 

 01 LBL "C111"
 02 RCL 02
 03 RCL 01
 04 Z^2
 05 RCL 04
 06 RCL 03
 07 Z*Z
 08 RTN
 09 LBL "C121"
 10 RCL 04
 11 RCL 03
 12 RCL 02
 13 RCL 01
 14 Z*Z
 15 RTN
 16 LBL "C211"
 17 RCL 04
 18 RCL 03
 19 RCL 02
 20 CHS
 21 RCL 01
 22 CHS
 23 Z*Z
 24 RTN
 25 LBL "C221"
 26 RCL 04
 27 RCL 03
 28 Z^2
 29 RCL 02
 30 RCL 01
 31 Z*Z
 32 RTN
 33 LBL "C112"
 34 RCL 04
 35 RCL 03
 36 RCL 02
 37 RCL 01
 38 Z*Z
 39 Z^2
 40 RTN
 41 LBL "C122"
 42 RCL 04
 43 RCL 03
 44 RCL 02
 45 RCL 01
 46 Z+Z
 47 RTN
 48 LBL "C212"
 49 RCL 02
 50 RCL 01
 51 RCL 04
 52 RCL 03
 53 Z-Z
 54 RTN
 55 LBL "C222"
 56 RCL 02
 57 RCL 01
 58 Z^2
 59 RCL 04
 60 RCL 03
 61 Z^2
 62 Z+Z
 63 RTN
 64 END

 
-At the point  x = ( 1+2.i , 3-4.i )

   1  STO 01     3  STO 03
   2  STO 02     4  CHS  STO 04

-If you choose h = -0.01  to evaluate the derivatives ( with formulas of order 4 )     0.01  CHS  STO 10
 

1-Curvature Tensor(s)
 

     Rlijk = jGlik - kGlij + GlmjGmik - GlmkGmij         if CF 02
     Rlijk = jGlki - kGlji + GljmGmki - GlkmGmji         if SF 02
 
 

      STACK        INPUTS      OUTPUTS
           T             i            /
           Z             j            /
           Y             k       Im Rlijk
           X             l       Re Rlijk

 
Example:

    CF 02

   1  ENTER^
   1  ENTER^
   2  ENTER^
   2  XEQ "ZRIJK+L"  >>>>   1404                                             ---Execution time = 18s---
                                   X<>Y  3396

-So,   R2112 = 1404 + 3396 i

    SF 02

   1  ENTER^
   1  ENTER^
   2  ENTER^
   2  XEQ "ZRIJK+L"  >>>>   -760                                             ---Execution time = 18s---
                                   X<>Y  2048

-So,   R2112 = -760 + 2048 i

2-Ricci tensor  Rij  and segmental curvature tensor  Qij

    Rij = Rmimj

    Qij = Rmmij  =  iGmmj - jGmmi  is actually a curl.  ( equals zero in Riemannian manifolds )
 

  If  CF 00  "ZRQIJ"  returns the components of  Rij
       -If  CF 02 with the connexion Gkij
       -If  SF 02 with the connexion Gkji

  If  SF 00  "ZRQIJ" returns the components of Qij
       -If  CF 02 with the connexion Gkij
       -If  SF 02 with the connexion Gkji
 
 

      STACK        INPUTS      OUTPUTS
           Y             i  Im ( Rij or Qij )
           X             j  Re ( Rij or Qij )

     Rij  if CF 00   ( connexion Gkij if CF 02 ,  transpose connexion Gkji  if SF 02 )
     Qij  if SF 00   ( connexion Gkij if CF 02 ,  transpose connexion Gkji  if SF 02 )

Examples:

    CF 00  CF 02

   1  ENTER^
   2  XEQ "ZRQIJ"  >>>>   -6511                                             ---Execution time = 36s---
                              X<>Y    2648

-Thus,   R12 = -6511 + 2648 i

    CF 00  SF 02

   1  ENTER^
   2  XEQ "ZRQIJ"  >>>>   -6503                                             ---Execution time = 36s---
                              X<>Y    2704

-So,   R12 = -6503 + 2704 i

    SF 00  CF 02

   1  ENTER^
   2  XEQ "ZRQIJ"  >>>>     9                                             ---Execution time = 37s---
                              X<>Y   -4

-Thus,   R12 = 9 - 4 i

    SF 00  SF 02

   1  ENTER^
   2  XEQ "ZRQIJ"  >>>>     1                                             ---Execution time = 37s---
                              X<>Y     4

-Thus,   R12 = 1 + 4 i
 

3-Scalar Curvatures

-The contracted tensors  R = gij Rij  and  Q = gij Qij  gives 2 scalar curvatures

   "ZRQ" returns R if CF 00    with 2 different results if F02 is clear or not
   "ZRQ" returns Q if SF 00    with 2 different results if F02 is clear or not

-To obtain correct results, "ZINIGC" must be executed before "ZRQ" to store  gij  in the proper registers.

-So, we need the metric tensor gij

>>>  Assuming we have

   g11 = 1 + x2    g12 = g21 = x y
   g22 = 1 + y2
 
 

 01  LBL "G11"
 02  RCL 02
 03  RCL 01
 04  Z^2
 05  1
 06  +
 07  RTN
 08  LBL "G12"
 09  RCL 04
 10  RCL 03
 11  RCL 02
 12  RCL 01
 13  Z*Z
 14  RTN
 15  LBL "G22"
 16  RCL 04
 17  RCL 03
 18  Z^2
 19  1
 20  +
 21  RTN

 
  0.01  CHS  ENTER^
    2     XEQ "ZINIGC"  >>>>    61.084

>>> Since it's not necessary to compute the Christoffel symbols, you can stop the routine as soon as the countdown starts.
 
 

      STACK        INPUT      OUTPUT
           Y             /    Im ( R or Q )
           X             /    Re ( R or Q )

   R if CF 00   ( connexion Gkij if CF 02 ,  transpose connexion Gkji  if SF 02 )
   Q if SF 00   ( connexion Gkij if CF 02 ,  transpose connexion Gkji  if SF 02 )

Examples:
 

    CF 00  CF 02

   XEQ "ZRQ"  >>>>  -2475.943865                                             ---Execution time = 2m34s---
                       X<>Y    2673.875260

-Thus,   R = -2475.943865 + 2673.875260 i

    CF 00  SF 02

   XEQ "ZRQ"  >>>>    -269.7234920                                            ---Execution time = 2m34s---
                        X<>Y    4626.274428

-So,   R = -269.7234920 + 4626.274428 i

    SF 00  CF 02

   XEQ "ZRQ"  >>>>     0                                             ---Execution time = 2m34s---
                       X<>Y     0

-Thus,   Q = 0

    SF 00  SF 02

   XEQ "ZRQ"  >>>>     0                                             ---Execution time = 2m34s---
                       X<>Y     0

-Thus,   Q = 0
 

4-Torsion tensor:

  "ZSIJK"  calculates   Skij = GkijGkji

-Though Gkij is not a tensor, Skij is a tensor !
 
 

      STACK        INPUTS      OUTPUTS
           Z             i             /
           Y             j        Im Skij
           X             k        Re Skij

 
Example:

   1  ENTER^
   2  ENTER^
   2  XEQ "ZSIJK"  >>>>    6                                             ---Execution time = 18s---
                               X<>Y  -8

-So,  S212 = 6 - 8 i

5-Torsion Vector
 

-Contracting  Skij  we get a covariant vector  Sj = Skjk  wich is computed by "ZSJ"
 
 

      STACK        INPUT      OUTPUT
           Y             /         Im Sj
           X             j         Re Sj

 
Example:

  2  XEQ "ZSJ"  >>>>  -22                                             ---Execution time = 7s---
                         X<>Y  -4

-And   S2 = -22 - 4 i
 
 

References:

[1]  Elie Cartan - "Leçons sur la géométrie des espaces de Riemann" - Gauthier-Villars, Paris   ( in French )
[2]  Denis-Papin & Kaufmann - "Cours de calcul Tensoriel Appliqué" - Albin Michel    ( in French )
[3]  List of Formulas in Riemannian Geometry
[4]  Nikodem J. Poplawski - "Spacetime and fields"- Department of Physics, Indiana University, Bloomington, IN 47405, USA
[5]  Marie-Antoinette Tonnelat - Theorie unitaire affine du champ physique. J. Phys. Radium, 1951, 12 (2),
       pp.81-88. <10.1051/jphysrad:0195100120208100>. <jpa-00234360>