atlas[Connection] - calculation of connection 1-forms 

Calling Sequence: 

    Connection(Id) 

Parameters: 

    Id - variable - connection identifier 

Description: 

The Connection procedure allows one to calculate or define connection 1-forms. If a metric is defined, then the connection is calculated with respect to the metric, otherwise just the connection identifier is declared as a connection. If the identifier is a table then the table is declared as a connection (see example 3). To get the result of the calculation use eval or atlas[iota] operators. 

Examples: 

Example 1 

Abstract connection  

> restart:
with(atlas):
 

Declare forms: 

> Forms(e[j]=1,xi=1);
 

{xi, e[j]}(2.1.1)
 

Declare vectors: 

> Vectors(X,Y,Z,E[j]);
 

{X, Y, Z, E[j]}(2.1.2)
 

Declare coframe with 1-forms: e[1], e[2], () .. e[n] (see atlas[Coframe]) 

> Coframe(e[k],k=1..n);
 

{e[k]}[k = 1 .. n](2.1.3)
 

Declare frame vectors (see atlas[Frame]): 

> Frame(E[i]);
 

{E[i]}[i = 1 .. n](2.1.4)
 

Declaration of connection 1-forms:  

> Connection(omega);
 

omega[i, j](2.1.5)
 

> Torsion(T);
 

T[i](2.1.6)
 

> 'd(e[j])'=d(e[j]);
 

d(e[j]) = `+`(Sum(`&^`(e[l[1]], omega[j, l[1]]), l[1] = 1 .. n), T[j])(2.1.7)
 

> d(xi)=d(ToBasis(xi));
 

d(xi) = `+`(`-`(Sum(`&^`(e[l[1]], d(iota[E[l[1]]](xi))), l[1] = 1 .. n)), Sum(`*`(iota[E[l[1]]](xi), `*`(`+`(Sum(`&^`(e[l[2]], omega[l[1], l[2]]), l[2] = 1 .. n), T[l[1]]))), l[1] = 1 .. n))
d(xi) = `+`(`-`(Sum(`&^`(e[l[1]], d(iota[E[l[1]]](xi))), l[1] = 1 .. n)), Sum(`*`(iota[E[l[1]]](xi), `*`(`+`(Sum(`&^`(e[l[2]], omega[l[1], l[2]]), l[2] = 1 .. n), T[l[1]]))), l[1] = 1 .. n))
(2.1.8)
 

Example 2 

Conformally flat metric of sphere - `*`(`^`(S, 3)) 

> restart:
with(atlas):
 

Declare forms: 

> Forms(e[j]=1,xi=1);
 

{xi, e[j]}(2.2.1)
 

Declare vectors: 

> Vectors(X,Y,Z,E[j]);
 

{X, Y, Z, E[j]}(2.2.2)
 

Declare constant lambda:
Constants(lambda); 

{`+`(`-`(I)), I, Pi, _Z, Catalan, lambda}(2.2.3)
 

Declare coframe:
Coframe(e[1]=2*d(x)/(1+lambda*(x^2+y^2+z^2)),e[2]=2*d(y)/(1+lambda*(x^2+y^2+z^2)),e[3]=2*d(z)/(1+lambda*(x^2+y^2+z^2))); 

[e[1] = `+`(`/`(`*`(2, `*`(d(x))), `*`(`+`(1, `*`(lambda, `*`(`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2)), `*`(`^`(z, 2))))))))), e[2] = `+`(`/`(`*`(2, `*`(d(y))), `*`(`+`(1, `*`(lambda, `*`(`+`(`*`(`^`(x, 2))...
[e[1] = `+`(`/`(`*`(2, `*`(d(x))), `*`(`+`(1, `*`(lambda, `*`(`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2)), `*`(`^`(z, 2))))))))), e[2] = `+`(`/`(`*`(2, `*`(d(y))), `*`(`+`(1, `*`(lambda, `*`(`+`(`*`(`^`(x, 2))...
(2.2.4)
 

Declare frame:
Frame(E[i]); 

[E[1] = `*`(`+`(`/`(1, 2), `*`(`/`(1, 2), `*`(lambda, `*`(`^`(x, 2)))), `*`(`/`(1, 2), `*`(lambda, `*`(`^`(y, 2)))), `*`(`/`(1, 2), `*`(lambda, `*`(`^`(z, 2))))), `*`(Diff(``, x))), E[2] = `*`(`+`(`/`...
[E[1] = `*`(`+`(`/`(1, 2), `*`(`/`(1, 2), `*`(lambda, `*`(`^`(x, 2)))), `*`(`/`(1, 2), `*`(lambda, `*`(`^`(y, 2)))), `*`(`/`(1, 2), `*`(lambda, `*`(`^`(z, 2))))), `*`(Diff(``, x))), E[2] = `*`(`+`(`/`...
[E[1] = `*`(`+`(`/`(1, 2), `*`(`/`(1, 2), `*`(lambda, `*`(`^`(x, 2)))), `*`(`/`(1, 2), `*`(lambda, `*`(`^`(y, 2)))), `*`(`/`(1, 2), `*`(lambda, `*`(`^`(z, 2))))), `*`(Diff(``, x))), E[2] = `*`(`+`(`/`...
(2.2.5)
 

Basis one forms are not exact:
'd(e[1])'=normal(d(e[1])); 

d(e[1]) = `*`(`+`(`*`(y, `*`(`&^`(e[1], e[2]))), `*`(z, `*`(`&^`(e[1], e[3])))), `*`(lambda))(2.2.6)
 

Declare conformally flat metric of  `*`(`^`(S, 3)) (see atlas[Metric]):
Metric(g=e[1]&.e[1]+e[2]&.e[2]+e[3]&.e[3]); 

g = `+`(`&.`(e[1], e[1]), `&.`(e[2], e[2]), `&.`(e[3], e[3]))(2.2.7)
 

Connection calculation: 

> Connection(omega);
 

omega[i, j](2.2.8)
 

Now connection 1-forms omega[i, j] are calculated: 

> eval(omega);
 

table( [( 2, 1 ) = `+`(`-`(`*`(lambda, `*`(x, `*`(e[2])))), `*`(lambda, `*`(y, `*`(e[1])))), ( 1, 3 ) = `+`(`-`(`*`(lambda, `*`(z, `*`(e[1])))), `*`(lambda, `*`(x, `*`(e[3])))), ( 2, 2 ) = 0, ( 3, 3 )...
table( [( 2, 1 ) = `+`(`-`(`*`(lambda, `*`(x, `*`(e[2])))), `*`(lambda, `*`(y, `*`(e[1])))), ( 1, 3 ) = `+`(`-`(`*`(lambda, `*`(z, `*`(e[1])))), `*`(lambda, `*`(x, `*`(e[3])))), ( 2, 2 ) = 0, ( 3, 3 )...
table( [( 2, 1 ) = `+`(`-`(`*`(lambda, `*`(x, `*`(e[2])))), `*`(lambda, `*`(y, `*`(e[1])))), ( 1, 3 ) = `+`(`-`(`*`(lambda, `*`(z, `*`(e[1])))), `*`(lambda, `*`(x, `*`(e[3])))), ( 2, 2 ) = 0, ( 3, 3 )...
(2.2.9)
 

> 'iota[E[i]](omega[1,2])'=iota[E[i]](omega[1,2]);
 

iota[E[i]](omega[1, 2]) = `+`(`-`(`*`(lambda, `*`(y, `*`(delta[1, i])))), `*`(lambda, `*`(x, `*`(delta[2, i]))))(2.2.10)
 

Example 3 

> restart:
with(atlas):
 

Declare forms: 

> Forms(e[j]=1,xi=1);
 

{xi, e[j]}(2.3.1)
 

Declare vectors: 

> Vectors(X,Y,Z,E[j]);
 

{X, Y, Z, E[j]}(2.3.2)
 

Declare coframe:
Coframe(e[1]=x*d(x)+y*d(y),e[2]=x*d(y)-y*d(x)); 

[e[1] = `+`(`*`(x, `*`(d(x))), `*`(y, `*`(d(y)))), e[2] = `+`(`*`(x, `*`(d(y))), `-`(`*`(y, `*`(d(x)))))](2.3.3)
 

Declare frame:
Frame(E[i]); 

[E[1] = `+`(`/`(`*`(x, `*`(Diff(``, x))), `*`(`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2))))), `/`(`*`(y, `*`(Diff(``, y))), `*`(`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2)))))), E[2] = `+`(`-`(`/`(`*`(y, `*`(Diff(``, x)...(2.3.4)
 

Connection definition: 

> omega[1,1]:=x*e[1];
 

`*`(e[1], `*`(x))(2.3.5)
 

> omega[2,2]:=y*e[2];
 

`*`(y, `*`(e[2]))(2.3.6)
 

> omega[1,2]:=y*e[1];
 

`*`(y, `*`(e[1]))(2.3.7)
 

> omega[2,1]:=-x*e[2];
 

`+`(`-`(`*`(x, `*`(e[2]))))(2.3.8)
 

Connection declaration: 

> Connection(omega);
 

omega[i, j](2.3.9)
 

Curvature calculation:
Curvature(Omega); 

Omega[i, j](2.3.10)
 

> eval(Omega);
 

table( [( 2, 2 ) = `/`(`*`(y, `*`(`+`(3, `*`(`^`(x, 3)), `*`(x, `*`(`^`(y, 2)))), `*`(`&^`(e[1], e[2])))), `*`(`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2))))), ( 1, 2 ) = `/`(`*`(`+`(`-`(x), `*`(`^`(y, 2), `*`(...
table( [( 2, 2 ) = `/`(`*`(y, `*`(`+`(3, `*`(`^`(x, 3)), `*`(x, `*`(`^`(y, 2)))), `*`(`&^`(e[1], e[2])))), `*`(`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2))))), ( 1, 2 ) = `/`(`*`(`+`(`-`(x), `*`(`^`(y, 2), `*`(...
table( [( 2, 2 ) = `/`(`*`(y, `*`(`+`(3, `*`(`^`(x, 3)), `*`(x, `*`(`^`(y, 2)))), `*`(`&^`(e[1], e[2])))), `*`(`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2))))), ( 1, 2 ) = `/`(`*`(`+`(`-`(x), `*`(`^`(y, 2), `*`(...
table( [( 2, 2 ) = `/`(`*`(y, `*`(`+`(3, `*`(`^`(x, 3)), `*`(x, `*`(`^`(y, 2)))), `*`(`&^`(e[1], e[2])))), `*`(`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2))))), ( 1, 2 ) = `/`(`*`(`+`(`-`(x), `*`(`^`(y, 2), `*`(...
(2.3.11)
 

Torsion calculation:
Torsion(T); 

T[i](2.3.12)
 

> eval(T);
 

table( [( 1 ) = `*`(y, `*`(`&^`(e[1], e[2]))), ( 2 ) = `/`(`*`(`+`(2, `*`(`^`(x, 3)), `*`(x, `*`(`^`(y, 2)))), `*`(`&^`(e[1], e[2]))), `*`(`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2))))) ] )(2.3.13)
 

> 'L[E[1]](E[2])'=L[E[1]](E[2]);
 

L[E[1]](E[2]) = `+`(`*`(E[2], `*`(x)), `*`(y, `*`(E[1])))(2.3.14)
 

>
 

See Also:  

atlas, atlas[Frame], atlas[Coframe], atlas[Metric].