Program for the hamiltonian treatment of general relativity (ADM) based on the 3+1 split of space-time. The program is adapted for numerical relativity purposes, so it's using extrinsic curvature instead of momentum components. Here we have a version for DeSitter space-time and a scalar field coupled minimally with gravity.
Author : D.N. Vulcanov - The West University of Timisoara, Romania
See : gr-qc/0010085 , physics/0010053
> restart;
> grtw();
Some general definitions, before downloading the metric !
The main notations are :
ha0 the hamiltonian constraint
ha(i) the momentum constraint
Ni(i) the shift vector
N the lapse function
g(i,j) the three-dimensional metric
K(i,j) the extrinsic curvature
T(i,j) components of the stress-energy tensor
derge(i,j) the dynamic equation for the three-dimensional metric
derpi(i,j) the dynamic equation for the momentum conponents
> grdef(`ha0:=Ricciscalar{}+K{^i i}*K{^j j}-K{ i j }*K{^i ^j}-2*(-(1/(N(t,r,theta,phi)^2))*T00{ }-2*Ni{ ^i }*T0{ i }/(N(t,r,theta,phi)^2) + Ni{ ^i }*Ni{ ^j } *T{ i j }/(N(t,r,theta,phi)^2))`);
`Warning ` = (`No definition found for object` = T00)
`Warning ` = (`No definition found for object` = K(up,dn))
`Warning ` = (`No definition found for object` = K(dn,dn))
`Warning ` = (`No definition found for object` = K(up,up))
`Warning ` = (`No definition found for object` = Ni(up))
`Warning ` = (`No definition found for object` = T0(dn))
`Warning ` = (`No definition found for object` = T(dn,dn))
Created definition for ha0
> grdef(`ha{ i }:=- K{ ^j j ;i} + K{ ^j i ;j}+T0{ i }/N(t,r,theta,phi) - Ni{ ^j }*T{ i j }/N(t,r,theta,phi)`);
`Warning ` = (`No definition found for object` = K(up,dn,cdn))
`Warning ` = (`No definition found for object` = Ni(up))
`Warning ` = (`No definition found for object` = T0(dn))
`Warning ` = (`No definition found for object` = T(dn,dn))
Created definition for ha(dn)
> grdef(`derge{ i j }:=-2*N(t,r,theta,phi)*K{ i j } + Ni{ j ;i} + Ni{ j ;i }`);
`Warning ` = (`No definition found for object` = Ni(dn,cdn))
`Warning ` = (`No definition found for object` = K(dn,dn))
Created definition for derge(dn,dn)
> grdef(`Ndd{ m j }:= Nd{ m ;j }`);
`Warning ` = (`No definition found for object` = Nd(dn,cdn))
Created definition for Ndd(dn,dn)
> grdef(`derpK{ i j }:=-2*N(t,r,theta,phi)*K{ i l }*K{ ^l j } + N(t,r,theta,phi)*K{ l ^l }*K{ i j } +N(t,r,theta,phi)*R{ i j } - Ndd{ i j } + Ni{ ^ l }*K{ i j ;l } + K{ l j }*Ni{ ^l ;i } + K{ i l }*Ni{ ^l ;j }-N(t,r,theta,phi)*T{ i j } + (1/2)*N(t,r,theta,phi)*g{ i j }*T{ ^k k } + (1/(2*N(t,r,theta,phi)))*g { i j }*(T00 + 2*Ni{ ^p }*T0{ p } - Ni{ ^k }*Ni{ ^n }*T{ k n })`);
`Warning ` = (`No definition found for object` = K(up,dn))
`Warning ` = (`No definition found for object` = K(dn,dn))
`Warning ` = (`No definition found for object` = Ni(up))
`Warning ` = (`No definition found for object` = T0(dn))
`Warning ` = (`No definition found for object` = T(dn,dn))
`Warning ` = (`No definition found for object` = K(dn,dn,cdn))
`Warning ` = (`No definition found for object` = Ni(up,cdn))
`Warning ` = (`No definition found for object` = K(dn,up))
`Warning ` = (`No definition found for object` = T(up,dn))
Created definition for derpK(dn,dn)
> grdef(`A:=-(1/N(t,r,theta,phi))^2*(diff(psi(t,r,theta,phi),t))^2+(2/(N(t,r,theta,phi)^2))*Ni{^i}*diff(psi(t,r,theta,phi),t)*psid{ i } +(g{ ^i ^j } - Ni{ ^i }* Ni{ ^j }/(N(t,r,theta,phi)^2) )*psid{ i }*psid{ j } + m^2 *psi(t,r,theta,phi)^2`);
`Warning ` = (`No definition found for object` = Ni(up))
`Warning ` = (`No definition found for object` = psid(dn))
Created definition for A
> grdef(`T00:=diff(psi(t,r,theta,phi),t)^2 +(1/2)*(N(t,r,theta,phi)^2-Ni{ ^j }*Ni{ j })*A{ }`);
`Warning ` = (`No definition found for object` = Ni(dn))
`Warning ` = (`No definition found for object` = Ni(up))
Created definition for T00
> grdef(`T{ i j }:=psid{ i }*psid{ j } -(1/2)*g{ i j }*A{ }`);
`Warning ` = (`No definition found for object` = psid(dn))
Created definition for T(dn,dn)
> grdef(`T0{ i } := diff(psi(t,r,theta,phi),t)*psid{ i } - Ni{ i } *A{ }`);
`Warning ` = (`No definition found for object` = Ni(dn))
`Warning ` = (`No definition found for object` = psid(dn))
Created definition for T0(dn)
> qload(desitter_sf);
Calculated ds for desitter_sf (0.000000 sec.)
> grcalc(metric);
> grdisplay(metric);
> grdef(`psid{ i } := [diff(psi(t,r,theta,phi),r),diff(psi(t,r,theta,phi),theta),diff(psi(t,r,theta,phi),phi)]`);
Components assigned for metric: desitter_sf
Created definition for psid(dn)
> grcalc(psid(dn));
> grdisplay(psid(dn));
> grdef(`Nd{ ^ m } := [diff(N(t,r,theta,phi),r),diff(N(t,r,theta,phi),theta),diff(N(t,r,theta,phi),phi)]`);
Components assigned for metric: desitter_sf
Created definition for Nd(up)
> grcalc(Nd(up));
> grdisplay(Nd(up));
Ni=0 ! Skip this line if do not use it !
> grdef(`Ni{ ^i } := [0, 0, 0]`);
> grdef(`Ni{ ^i } := [N1(t,r,theta,phi), N2(t,r,theta,phi), N3(t,r,theta,phi)]`);
Components assigned for metric: desitter_sf
Created definition for Ni(up)
> grdef(`vi1{ i }:=[Ka(t,r,theta,phi),0,0]`);
Components assigned for metric: desitter_sf
Created definition for vi1(dn)
> grdef(`vi3{ i }:=[0,0,Kc(t,r,theta,phi)]`);
Components assigned for metric: desitter_sf
Created definition for vi3(dn)
> grdef(`vi2{ i }:=[0,Kb(t,r,theta,phi),0]`);
Components assigned for metric: desitter_sf
Created definition for vi2(dn)
> grdef(`K{ i j } := (vi1{ i }*kdelta{j $r}+vi2{ i }*kdelta{ j$theta }+vi3{ i }*kdelta{j $phi})`);
Created definition for K(dn,dn)
> grcalc(K(dn,dn));
Calculated kdelta(dn,dn) for desitter_sf (.001000 sec.)
Calculated K(dn,dn) for desitter_sf (.002000 sec.)
> grdisplay(K(dn,dn));
Now the calculations !
> grcalc(ha0);
Created definition for Ni(dn)
Created definition for K(up,dn)
Created definition for K(up,up)
Calculated detg for desitter_sf (.001000 sec.)
Calculated g(up,up) for desitter_sf (.001000 sec.)
Calculated A for desitter_sf (.002000 sec.)
Calculated Ni(dn) for desitter_sf (0.000000 sec.)
Calculated T00 for desitter_sf (.008000 sec.)
Calculated g(dn,dn,pdn) for desitter_sf (.003000 sec.)
Calculated Chr(dn,dn,dn) for desitter_sf (.002000 sec.)
Calculated Chr(dn,dn,up) for desitter_sf (.003000 sec.)
Calculated R(dn,dn) for desitter_sf (.003000 sec.)
Calculated Ricciscalar for desitter_sf (0.000000 sec.)
Calculated K(up,dn) for desitter_sf (.002000 sec.)
Calculated K(up,up) for desitter_sf (.001000 sec.)
Calculated T0(dn) for desitter_sf (.007000 sec.)
Calculated T(dn,dn) for desitter_sf (.007000 sec.)
Calculated ha0 for desitter_sf (.014000 sec.)
> gralter(ha0,sqrt,simplify);
Component simplification of a GRTensorII object:
Applying routine `simplify[sqrt]` to object ha0
Applying routine simplify to object ha0
> gralter(ha0,trigsin,expand);
Component simplification of a GRTensorII object:
Applying routine `simplify[trigsin]` to object ha0
Applying routine expand to object ha0
> grdisplay(ha0);
> grcalc(ha(dn));
Created a definition for K(up,dn,cdn)
Calculated K(up,dn,cdn) for desitter_sf (.009000 sec.)
Calculated ha(dn) for desitter_sf (.015000 sec.)
> gralter(ha(dn),sqrt,simplify);
Component simplification of a GRTensorII object:
Applying routine `simplify[sqrt]` to object ha(dn)
Applying routine simplify to object ha(dn)
> gralter(ha(dn),trigsin,expand);
Component simplification of a GRTensorII object:
Applying routine `simplify[trigsin]` to object ha(dn)
Applying routine expand to object ha(dn)
> grdisplay(ha(dn));
> grcalc(derge(dn,dn));
Created a definition for Ni(dn,cdn)
Calculated Ni(dn,cdn) for desitter_sf (.005000 sec.)
Calculated derge(dn,dn) for desitter_sf (.002000 sec.)
> gralter(derge(dn,dn),sqrt,tringsin,simplify);
Component simplification of a GRTensorII object:
Applying routine simplify to object derge(dn,dn)
> grdisplay(derge(dn,dn));
> grcalc(derpK(dn,dn));
Created definition for Nd(dn)
Created a definition for Nd(dn,cdn)
Created a definition for K(dn,dn,cdn)
Created a definition for Ni(up,cdn)
Created definition for K(dn,up)
Created definition for T(up,dn)
Calculated Nd(dn) for desitter_sf (.001000 sec.)
Calculated Nd(dn,cdn) for desitter_sf (.004000 sec.)
Calculated Ndd(dn,dn) for desitter_sf (.001000 sec.)
Calculated K(dn,dn,cdn) for desitter_sf (.007000 sec.)
Calculated Ni(up,cdn) for desitter_sf (.003000 sec.)
Calculated K(dn,up) for desitter_sf (.002000 sec.)
Calculated T(up,dn) for desitter_sf (.007000 sec.)
Calculated derpK(dn,dn) for desitter_sf (.065000 sec.)
> gralter(derpK(dn,dn),factor,tringsin,sqrt,simplify);
Component simplification of a GRTensorII object:
Applying routine `simplify[sqrt]` to object derpK(dn,dn)
Applying routine simplify to object derpK(dn,dn)
> grdisplay(derpK(dn,dn));
> grcalc(T00);
> grdisplay(T00);
> grcalc(T(dn,dn));
> grdisplay(T(dn,dn));
> grcalc(T0(dn));
> grdisplay(T0(dn));
Shift zero !
> N1(t,r,theta,phi):=0;
> N2(t,r,theta,phi):=0;
> N3(t,r,theta,phi):=0;
> grdisplay(T00);
> grdisplay(T(dn,dn));
> grdisplay(T0(dn));
> grcalc(derge(dn,dn));
> grdisplay(derge(dn,dn));
> grcomponent(derpK(dn,dn),[phi,phi]);
>
Lapse one !
> N(t,r,theta,phi):=1;
> grdisplay(ha0);
> grdisplay(ha(dn));
> gralter(ha0,trigsin,expand);
Component simplification of a GRTensorII object:
Applying routine `simplify[trigsin]` to object ha0
Applying routine expand to object ha0
> grdisplay(ha0);
> gralter(ha(dn),trigsin,expand);
Component simplification of a GRTensorII object:
Applying routine `simplify[trigsin]` to object ha(dn)
Applying routine expand to object ha(dn)
> grdisplay(ha(dn));
>