Question: Can you perform a conformal(metric) transformation with the Physics package?

Suppose I have a metric g, and I want to perform a conformal transformation g = exp(2Phi)*g, is there a straightforward way to do this for curvature quantitieies (Christoffel, Ricci Scalar etc)? I was able to do it rather easily for the Christoffel symbols, as seen below, but it required me making a substitution for each index pair. While this isn't horrible, it would be nice if there was a way to do it without this procedure. 

restart;

with(Physics):CompactDisplay(Phi(X)):

Phi(X)*`will now be displayed as`*Phi

(1)

Setup(metric=arbitrary):

_______________________________________________________

 

`Systems of spacetime coordinates are:`*{X = (x1, x2, x3, x4)}

 

`Default differentiation variables for d_, D_ and dAlembertian are:`*{X = (x1, x2, x3, x4)}

 

`The arbitrary metric in coordinates `*[x1, x2, x3, x4]

 

`Signature: `(`- - - +`)

 

_______________________________________________________

 

Physics:-g_[mu, nu] = Matrix(%id = 36893488152300428092)

(2)

Christoffel[~alpha,beta,nu,definition]

Physics:-Christoffel[`~alpha`, beta, nu] = (1/2)*Physics:-g_[`~alpha`, `~mu`]*(Physics:-d_[nu](Physics:-g_[mu, beta], [X])+Physics:-d_[beta](Physics:-g_[mu, nu], [X])-Physics:-d_[mu](Physics:-g_[beta, nu], [X]))

(3)

Simplify(eval((3),[g_[mu,beta]=exp(2*Phi(X))*g_[mu,beta],g_[mu,nu]=exp(2*Phi(X))*g_[mu,nu],g_[beta,nu]=exp(2*Phi(X))*g_[beta,nu]]))

Physics:-Christoffel[`~alpha`, beta, nu] = exp(2*Phi(X))*(Physics:-d_[nu](Phi(X), [X])*Physics:-g_[beta, `~alpha`]+Physics:-d_[beta](Phi(X), [X])*Physics:-g_[nu, `~alpha`]-Physics:-d_[`~alpha`](Phi(X), [X])*Physics:-g_[beta, nu]+Physics:-Christoffel[`~alpha`, beta, nu])

(4)

expand((4))

Physics:-Christoffel[`~alpha`, beta, nu] = (exp(Phi(X)))^2*Physics:-d_[nu](Phi(X), [X])*Physics:-g_[beta, `~alpha`]+(exp(Phi(X)))^2*Physics:-d_[beta](Phi(X), [X])*Physics:-g_[nu, `~alpha`]-(exp(Phi(X)))^2*Physics:-d_[`~alpha`](Phi(X), [X])*Physics:-g_[beta, nu]+(exp(Phi(X)))^2*Physics:-Christoffel[`~alpha`, beta, nu]

(5)
 

 

Any thoughts appreciated, thank you!

MyConformal.mw

Please Wait...