Ask Your Question

full metric transform

asked 2021-12-17 00:35:41 +0200

DocPhil gravatar image

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 flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2021-12-18 17:08:58 +0200

eric_g gravatar image

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).

edit flag offensive delete link 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.

DocPhil gravatar imageDocPhil ( 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?

eric_g gravatar imageeric_g ( 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!

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

You can use

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

Another option is


See g2.set? for more details.

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

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower


Asked: 2021-12-17 00:35:41 +0200

Seen: 208 times

Last updated: Dec 18 '21