Coordinate system changing 

Parabolic coordinate system on a plane 

Problem: 

Find metric, connection and Laplace operator on a plane in parabolic coordinate systems:
  x = (u^2-v^2)/2
  y = u*v
 

Solution: 

Load atlas package: 

> restart:
with(atlas):
 

Plane 

First of all we have to describe the space we are working in. The space is 2-dimensional Euclidean (flat) space i.e. a plane. 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^2);
 

`*`(`^`(R, 2))(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[1] = d(x), e[2] = d(y)](2.1.4)
 

> Frame(E[k]);
 

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

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

g = `+`(`&.`(e[1], e[1]), `&.`(e[2], e[2]))(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: 

Parabolic 

First of all we plot "graph paper" of the coordinate system: 

> plots[coordplot](parabolic);
 

Plot_2d
 

Define new domain:
Domain(P); 

P(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[1] = d(u), phi[2] = d(v)](2.2.4)
 

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

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

Declare mapping of the domain into `*`(`^`(R, 2)):
Mapping(pi,P,R^2,
                x = (u^2-v^2)/2,
                y = u*v);
 

 

pi
`.`(P, `--->`, `*`(`^`(R, 2)))(2.2.6)
 

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

> Metric(G = g &/ pi);
 

G = `+`(`*`(`+`(`*`(`^`(u, 2)), `*`(`^`(v, 2))), `*`(`&.`(phi[1], phi[1]))), `*`(`+`(`*`(`^`(u, 2)), `*`(`^`(v, 2))), `*`(`&.`(phi[2], phi[2]))))(2.2.7)
 

Calculate connection:
Connection(Gamma); 

Gamma[i, j](2.2.8)
 

> eval(Gamma);
 

table( [( 2, 2 ) = `+`(`/`(`*`(u, `*`(phi[1])), `*`(`+`(`*`(`^`(u, 2)), `*`(`^`(v, 2))))), `/`(`*`(v, `*`(phi[2])), `*`(`+`(`*`(`^`(u, 2)), `*`(`^`(v, 2)))))), ( 1, 2 ) = `+`(`/`(`*`(v, `*`(phi[1])), ...
table( [( 2, 2 ) = `+`(`/`(`*`(u, `*`(phi[1])), `*`(`+`(`*`(`^`(u, 2)), `*`(`^`(v, 2))))), `/`(`*`(v, `*`(phi[2])), `*`(`+`(`*`(`^`(u, 2)), `*`(`^`(v, 2)))))), ( 1, 2 ) = `+`(`/`(`*`(v, `*`(phi[1])), ...
(2.2.9)
 

> Functions(h=h(u,v));
 

{h}(2.2.10)
 

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

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

Delta(h) = `+`(`/`(`*`(Diff(h, u, u)), `*`(`+`(`*`(`^`(u, 2)), `*`(`^`(v, 2))))), `/`(`*`(Diff(h, v, v)), `*`(`+`(`*`(`^`(u, 2)), `*`(`^`(v, 2))))))(2.2.11)
 

>