# full metric transform

Before I display code, is there a way to obtain the metric in a new coordinate chart easily? In one step? All the methods I've used transform the frame, but do not re-express the component functions in terms of the new chart (which determines the frame of course)

edit retag close merge delete

Sort by ยป oldest newest most voted

Simply use g.display(X), where g is the metric tensor and X is the new coordinate chart. This will trigger the computation of the components of g w.r.t. the vector frame associated with the chart X (i.e. X.frame()) and will express these components in terms of X. In other words, g.display(X) is a shortcut for g.display(X.frame(), X).

more

Thank you Eric. That is a big help. But rather than just display them I would also like to get the local components assigned to another metric in order to compute the connection. Is there a way to do that?

I'm also exceeding memory on the particularly "involved" metric (Schwarzschild in cylindrical coordinates).. As back ground I want to develop these to illustrate for instructional purposes which solutions do./ do not exhibit Machian like effects.

( 2021-12-18 23:09:59 +0200 )edit

I am not sure to understand what you want exactly. You can get the components of another metric, g2 say, via g2.comp(X.frame()). To compute the corresponding connection, simply do g2.connection(). Regarding the out of memory issue, could you please open a new thread and provide a concrete example?

( 2021-12-19 14:14:16 +0200 )edit

The display method that you outlined above does not produce an object of type lorentzian metric. I'd like to assign what I see from the evaluation of g.display(X) to another metric g2. The only way I see to do so is by way of typing by hand the formulae returned on the display.for each component of g2.

Unless I'm missing some method already available, my question is that what "display" computes would be available internally to be returned as an object from which further computations can be performed.

Sorry if I am missing something too!

( 2021-12-19 23:45:55 +0200 )edit

You can use

g2[X.frame(),:] = g[X.frame(),:]


Another option is

g2.set(g)


See g2.set? for more details.

( 2021-12-23 17:05:17 +0200 )edit