Coordinate system changing 

Bipolar cylindrical coordinate system on 3-space 

Problem: 

Find metric, connection and Laplace operator on 3-space in bipolar cylindrical coordinate system:
  x = a*sinh(v)/(cosh(v)-cos(u))
  y = a*sin(u)/(cosh(v)-cos(u))
  z = w
 

Solution: 

Load atlas package: 

> restart:
with(atlas):
 

Space 

First of all we have to describe the space we are working in. The space is 3-dimensional Euclidean (flat) space. To define the space we declare domain, forms, vectors, coframe, frame, flat metric and calculate connection (it is equal to zero of course). 

> Domain(R^3);
 

`*`(`^`(R, 3))(2.1.1)
 

> Forms(e[k]=1);
 

{e[k]}(2.1.2)
 

> Vectors(E[j]);
 

{E[j]}(2.1.3)
 

> Coframe(e[1]=d(x),e[2]=d(y),e[3]=d(z));
 

[e[1] = d(x), e[2] = d(y), e[3] = d(z)](2.1.4)
 

> Frame(E[k]);
 

[E[1] = Diff(``, x), E[2] = Diff(``, y), E[3] = Diff(``, z)](2.1.5)
 

> Metric(g=d(x)&.d(x)+d(y)&.d(y)+d(z)&.d(z));
 

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

> Connection(omega);
 

omega[i, j](2.1.7)
 

Now the working space is defined completely and we can start to solve the problem. 

Redefine `atlas/simp` procedure to simplify the results:
`atlas/simp`:=proc(a) factor(simplify(a)) end: 

Bipolar cylindrical 

First of all we plot graphical representation of the coordinate system: 

> plots[coordplot3d](bipolarcylindrical);
 

Plot_2d
 

Define new domain:
Domain(B); 

B(2.2.1)
 

Declare 1-form for the domain coframe
Forms(phi[i]=1); 

{e[k], phi[i]}(2.2.2)
 

Declare vectors for the domain frame:
Vectors(Phi[k]); 

{Phi[k]}(2.2.3)
 

Declare coframe on the domain:
Coframe(phi[1]=d(u),phi[2]=d(v),phi[3]=d(w));
 

[phi[1] = d(u), phi[2] = d(v), phi[3] = d(w)](2.2.4)
 

Declare frame of the domain:
Frame(Phi[j]); 

[Phi[1] = Diff(``, u), Phi[2] = Diff(``, v), Phi[3] = Diff(``, w)](2.2.5)
 

Declare mapping of the domain into `*`(`^`(R, 3)):
Mapping(pi,B,R^3,
  x = sinh(v)/(cosh(v)-cos(u)),
  y = sin(u)/(cosh(v)-cos(u)),
  z = w);
 

 

pi
`.`(B, `--->`, `*`(`^`(R, 3)))(2.2.6)
 

Now we can calculate metric induced on the domain by the mapping.  

> Metric(G = g &/ pi);
 

G = `+`(`/`(`*`(`&.`(phi[1], phi[1])), `*`(`^`(`+`(cosh(v), `-`(cos(u))), 2))), `/`(`*`(`&.`(phi[2], phi[2])), `*`(`^`(`+`(cosh(v), `-`(cos(u))), 2))), `&.`(phi[3], phi[3]))(2.2.7)
 

Calculate connection:
Connection(Gamma); 

Gamma[i, j](2.2.8)
 

> eval(Gamma);
 

table( [( 2, 2 ) = `+`(`-`(`/`(`*`(sin(u), `*`(phi[1])), `*`(`+`(cosh(v), `-`(cos(u)))))), `-`(`/`(`*`(sinh(v), `*`(phi[2])), `*`(`+`(cosh(v), `-`(cos(u))))))), ( 1, 2 ) = `+`(`-`(`/`(`*`(sinh(v), `*`...
table( [( 2, 2 ) = `+`(`-`(`/`(`*`(sin(u), `*`(phi[1])), `*`(`+`(cosh(v), `-`(cos(u)))))), `-`(`/`(`*`(sinh(v), `*`(phi[2])), `*`(`+`(cosh(v), `-`(cos(u))))))), ( 1, 2 ) = `+`(`-`(`/`(`*`(sinh(v), `*`...
table( [( 2, 2 ) = `+`(`-`(`/`(`*`(sin(u), `*`(phi[1])), `*`(`+`(cosh(v), `-`(cos(u)))))), `-`(`/`(`*`(sinh(v), `*`(phi[2])), `*`(`+`(cosh(v), `-`(cos(u))))))), ( 1, 2 ) = `+`(`-`(`/`(`*`(sinh(v), `*`...
table( [( 2, 2 ) = `+`(`-`(`/`(`*`(sin(u), `*`(phi[1])), `*`(`+`(cosh(v), `-`(cos(u)))))), `-`(`/`(`*`(sinh(v), `*`(phi[2])), `*`(`+`(cosh(v), `-`(cos(u))))))), ( 1, 2 ) = `+`(`-`(`/`(`*`(sinh(v), `*`...
table( [( 2, 2 ) = `+`(`-`(`/`(`*`(sin(u), `*`(phi[1])), `*`(`+`(cosh(v), `-`(cos(u)))))), `-`(`/`(`*`(sinh(v), `*`(phi[2])), `*`(`+`(cosh(v), `-`(cos(u))))))), ( 1, 2 ) = `+`(`-`(`/`(`*`(sinh(v), `*`...
(2.2.9)
 

> Functions(f=f(u,v,w));
 

{f}(2.2.10)
 

To calculate Laplace operator one can use grad and div operators.   

> Delta(f)=div(grad(f));
 

Delta(f) = `+`(`*`(`^`(`+`(cosh(v), `-`(cos(u))), 2), `*`(Diff(f, u, u))), `*`(`^`(`+`(cosh(v), `-`(cos(u))), 2), `*`(Diff(f, v, v))), Diff(f, w, w))
Delta(f) = `+`(`*`(`^`(`+`(cosh(v), `-`(cos(u))), 2), `*`(Diff(f, u, u))), `*`(`^`(`+`(cosh(v), `-`(cos(u))), 2), `*`(Diff(f, v, v))), Diff(f, w, w))
(2.2.11)
 

>