diff options
| author | Thomas Guillermo Albers Raviola <thomas@thomaslabs.org> | 2026-07-26 14:03:54 +0200 |
|---|---|---|
| committer | Thomas Guillermo Albers Raviola <thomas@thomaslabs.org> | 2026-07-26 14:03:54 +0200 |
| commit | 9703b053615bd57d4c9624cb42fd7e33d610decb (patch) | |
| tree | 69589b271b062b80f266c8162ef7ac66ff978f89 | |
| parent | d63ee2309676767af7799d126dd87f36513679de (diff) | |
Add Bocharova-Bronnikov-Melnikov-Bekenstein (BBMB) in Jordan frame
| -rw-r--r-- | 04-bbmd-jor.mac | 248 |
1 files changed, 248 insertions, 0 deletions
diff --git a/04-bbmd-jor.mac b/04-bbmd-jor.mac new file mode 100644 index 0000000..977a0e2 --- /dev/null +++ b/04-bbmd-jor.mac @@ -0,0 +1,248 @@ +load("setup.mac")$ +load("tensors.mac")$ +load("series.mac")$ + + +/* Equations */ + +depends(Φ, [u,r,θ,ϕ]); + +/* Einstein tensor */ +for i : 1 thru 4 do for j : 1 thru 4 do ( + G_ab[i,j] : expand(ric[i,j] - ric_s*lg[i,j]/2)); + +/* Equation (8) */ + +/* +(1-Φ^2) * ric[i,j] += 4*cdiff(Φ,i)*cdiff(Φ,j) +- lg[i,j]*contr(ug[a,b]*cdiff(Φ,a)*cdiff(Φ,b)) +- 2*Φ*(cdiff(cdiff(Φ, j), i) - contr(mcs[i,j,k]*cdiff(Φ,k),[k])) + +Add -(1/2)*lg[i,j]*ric_s = 0 on both sides. +Yields G_ab on lhs and does nothing on rhs +*/ + +/* Stress-energy tensor of the theory */ +for i : 1 thru 4 do for j : 1 thru 4 do ( + T_ab[i,j] : expand( + (1/8/%pi)*( + 4*cdiff(Φ,i)*cdiff(Φ,j) + - lg[i,j]*contr(ug[a,b]*cdiff(Φ,a)*cdiff(Φ,b),[a,b]) + - 2*Φ*(cdiff(cdiff(Φ, j), i) - contr(mcs[i,j,k]*cdiff(Φ,k),[k])))))$ + +/* Einstein equations tensor */ +for i : 1 thru 4 do for j : 1 thru 4 do ( + E_ab[i,j] : expand(G_ab[i,j] - 8*%pi*T_ab[i,j]))$ + +/* Einstein equations tensor with mixed indices */ +for i : 1 thru 4 do for j : 1 thru 4 do ( + uE_ab[i,j] : expand(contr(ug[i,k]*E_ab[k,j], [k])))$ + +/* Hypersurface equations */ +hs_eqs : [ +/* Determine β */ +uE_ab[1,2]=0, +/* Determine A */ +uE_ab[1,3]=0, +/* uE_ab[1,4]=0 is trivial, would determine A' otherwise */ +/* Determine B */ +uE_ab[1,1]=0 +]$ + +/* Evolution equations */ +ev_eqs : [ +/* Determine γ */ +E_ab[3,3]=0, +/* Should be fulfilled automatically (?) */ +E_ab[4,4]=0 +/* Fulfilled trivially */ +/* E_ab[3,4]=0 */ +/* E_ab[4,3]=0 */ +]$ + +/* Suplementary conditions */ +sc_eqs : [ +uE_ab[2,1]=0, +uE_ab[2,3]=0 +/* Fulfilled trivially */ +/* uE_ab[2,4]=0 */ +]$ + +hs_eqs : trigreduce(hs_eqs)$ +sc_eqs: trigreduce(sc_eqs)$ + +hs_eqs : subst([diff(Φ,ϕ)=0], hs_eqs)$ +ev_eqs : subst([diff(Φ,ϕ)=0], ev_eqs)$ +sc_eqs : subst([diff(Φ,ϕ)=0], sc_eqs)$ + +/* Scalar wave equation */ +sw_eq : trigreduce(expand(box_op(Φ)=0))$ + + +/* Series ansatz */ + +expansion_order : 6; + +/* Sequence elements inherit dependance on u and θ */ +depends([c, H, M, N, γc, βc, Ac, Bc, Φc], [u, θ])$ + +/* Main series ansatz */ +build_main_ansatz(n) := block([], [ + γ = c/r + neg_pow_series(γc, r, 2, n), + β = H + neg_pow_series(βc, r, 1, n), + A = neg_pow_series(Ac, r, 1, n), + B = neg_pow_series(Bc, r, -1, n), + Φ = neg_pow_series(Φc, r, 0, n)])$ + +main_ansatz : build_main_ansatz(expansion_order)$ + +funcs : [A, B, β, γ, β_expr, γ_expr, Φ]; + +/**/ + +/* Simplify ahead to speed up calculation */ +γβ_facts : [H=0, γc[2]=0]; +sim_facts : ev([ + /* From Equation 4 (1/r term) */ + diff(Φc[0],u)=0, + diff(Φc[0],u,2)=0, + /* From Equation 4 (1/r^2 term) */ + diff(Φc[0],θ)=0, + diff(Φc[0],θ, 2)=0, + diff(diff(Φc[0],θ),u)=0, + diff(diff(Φc[0],u),θ)=0], + eval,diff); + +coeffs : γβ_facts; +coeffs : append(γβ_facts, sim_facts); + +/* Equation 1 : determine β */ +e_hs_eqs[1] : expand_equation(expand(exp(2*β)*hs_eqs[1]), coeffs)$ +ce_hs_eqs[1] : coeff_equations(e_hs_eqs[1])$ +β_coeffs : block( + [vals : []], + for i : 1 thru 5 do ( + vals : append(vals, solve(subst(vals, ce_hs_eqs[1][i][2]), βc[i]))), + vals)$ + +coeffs : append(coeffs, β_coeffs)$ + +/* Equation 2 : determine A */ +e_hs_eqs[2] : expand_equation(expand(exp(2*β)*hs_eqs[2]), coeffs)$ +e_hs_eqs[2] : subst(coeffs, e_hs_eqs[2])$ +ce_hs_eqs[2] : coeff_equations(e_hs_eqs[2])$ + +A_coeffs : block( + [vals : []], + for i : 1 thru expansion_order do ( + if not(i=3) then ( + vals : append(vals, solve(subst(vals, ce_hs_eqs[2][i][2]), Ac[i])))), + ev(vals, eval, diff, expand))$ + +coeffs : append(coeffs, A_coeffs)$ + +/* Equation 3 : determine B */ +print_progress : true; +e_hs_eqs[3] : expand_equation(expand(exp(2*β)*hs_eqs[3]), coeffs)$ +/* TODO: 17 31 34 slow due to squares? */ +/* BUG: diff(λc[0],θ)=0 does not get substituted; due to missing ev? */ +e_hs_eqs[3] : subst(coeffs, e_hs_eqs[3])$ +ce_hs_eqs[3] : coeff_equations(e_hs_eqs[3])$ +B_coeffs : block( + [vals : []], + for i : 1 thru expansion_order do ( + if i=2 then ( + vals : append(vals, [Bc[0]=-2*M])) + else ( + vals : append(vals, solve(subst(vals, ce_hs_eqs[3][i][2]), Bc[i-2])))), + ev(vals, eval, diff, expand))$ + +coeffs : append(coeffs, B_coeffs)$ + + +/* Evolution equations */ + +depends(D, [u, θ]); + +/* Equation 4 : determine λ */ +e_sw_eq : expand_equation(sw_eq, coeffs)$ +ce_sw_eq : coeff_equations(e_sw_eq)$ +Φu_coeffs : block( + [vals : [Φc[1]=D]], + for i : 3 thru 6 do ( + vals : append(vals, solve(subst(vals, ce_sw_eq[i][2]), diff(Φc[i-1],u)))), + vals); + +coeffs : append(coeffs, Φu_coeffs)$ + +depends(C, [u, θ]); +extra_coeffs : [γc[3]=C-c^3/6, Ac[3]=2*N + 3*c*diff(c,θ) + 4*c^2*cot(θ)]$ +coeffs : append(coeffs, extra_coeffs)$ + +/* Equation 5 : determine γ */ +e_ev_eqs[2] : expand_equation(trigreduce(expand(exp(2*β)*exp(2*γ)*ev_eqs[2]/sin(θ)^2)), coeffs)$ +e_ev_eqs[2] : subst(coeffs, e_ev_eqs[2])$ +ce_ev_eqs[2] : coeff_equations(e_ev_eqs[2])$ + +eq_quad : trigreduce(expand(trigsimp(subst(coeffs, + 4*solve(ce_ev_eqs[2][2][2], diff(C, u))[1]))))$ + +subst(coeffs,ce_ev_eqs[2][1]); + +/* Relation of c to c_AB */ +ce_ev_eqs[2][1]; /* TODO: D_u * c = c_u * D ??? */ + + +/* Supplementary conditions */ + +/* Supplementary Condition 1 */ +e_sc_eqs[1] : expand_equation(expand(exp(2*β)*sc_eqs[1]), coeffs)$ +/* BUG */ +e_sc_eqs[1] : subst(coeffs, e_sc_eqs[1])$ +eq_mono : block( + [eq : coeff(e_sc_eqs[1], r, -2)=0], + trigreduce(expand(solve(eq, diff(M,u))))); + +/* Supplementary Condition 2 */ +e_sc_eqs[2] : expand_equation(sc_eqs[2], coeffs); +eq_dipo : block( + [eq : coeff(e_sc_eqs[2], r, -2)=0], + trigreduce(expand(-3*solve(eq, diff(N,u))))); + + +/* Cache */ + +path(name) := printf(false, "cache/04-bbmd-jor/~a.lisp", name); + +save(path("e_hs_eqs"), e_hs_eqs); +save(path("ce_hs_eqs"), ce_hs_eqs); +save(path("e_sw_eq"), e_sw_eq); +save(path("ce_sw_eq"), ce_sw_eq); +save(path("e_ev_eqs"), e_ev_eqs); +save(path("ce_ev_eqs"), ce_ev_eqs); + +save(path("beta_coeffs"), β_coeffs); +save(path("a_coeffs"), A_coeffs); +save(path("b_coeffs"), B_coeffs); +save(path("phiu_coeffs"), Φu_coeffs); + +save(path("e_sc_eqs"), e_sc_eqs); +save(path("coeffs"), coeffs) + +save(path("eq_quad"), eq_quad); +save(path("eq_mono"), eq_mono); +save(path("eq_dipo"), eq_dipo); + +load_cache() := block( + [cache : [ + "e_hs_eqs", "ce_hs_eqs", + "e_sw_eq", "ce_sw_eq", + "e_ev_eqs", "ce_ev_eqs", + "beta_coeffs", "a_coeffs", "b_coeffs", "phiu_coeffs", + "e_sc_eqs", + "coeffs", + "eq_quad", "eq_mono", "eq_dipo"]], + for file in cache do load(path(file))); + +load_cache(); |
