Loading [MathJax]/jax/output/HTML-CSS/jax.js
Cadabra
a field-theory motivated approach to computer algebra

cdb.core.component

Simple access to component expressions
This package contains helper functions to access components of tensors, as they are computed by e.g. evaluate.

get_component(ex: Ex, component: Ex) -> Ex

Extract a single component from an expression.
Gets a component of an expression including those from an evaluate command. The component argument for vector-like objects should be e.g. $t$, and for higher-rank tensors like e.g. $x, t$.
{t,x}::Coordinate; {i,j}::Indices(values={t,x}); ex:= b_{i} = a_{i}; evaluate(ex, $a_{t}=1, a_{x}=2$, rhsonly=True); get_component(ex, $x$);
Property Coordinate attached to [t,x].
Property Indices(position=free) attached to [i,j].
bi=ai
b_{i} = a_{i}
bi=i{t=1x=2
b_{i} = \components_{i}({{t} = 1, {x} = 2})
bx=2
b_{x} = 2
ex := 0 = 6(\Phi)**1 a2 k_{\nu} k_{\mu}- (\Phi)**1 b2 \eta^{\sigma \rho} \partial_{\rho}(z) \omega (c)**(-1) B_{\nu \sigma} k_{\mu}- 2(\Phi)**1 a2 k_{\mu} k_{\nu} + (\Phi)**1 b2 \partial_{\sigma}(z) \omega (c)**(-1) B_{\nu \mu} k_{\rho} \eta^{\sigma \rho} + (\Phi)**1 b2 \eta^{\sigma \rho} \partial_{\rho}(z) \omega (c)**(-1) B_{\nu \mu} k_{\sigma}- (\Phi)**1 b2 \partial_{\alpha}(z) \omega (c)**(-1) B_{\rho \mu} k_{\nu} \eta^{\alpha \rho} - 1/2 A_{\rho \sigma} k_{\nu} A_{\beta \alpha} k_{\mu} \eta^{\beta \rho} \eta^{\sigma \alpha} - 1/2 A_{\rho \sigma} A_{\beta \alpha} k_{\nu} k_{\mu} \eta^{\beta \rho} \eta^{\sigma \alpha} + 1/4 A_{\alpha \beta} k_{\nu} A_{\sigma \rho} k_{\mu} \eta^{\beta \sigma} \eta^{\rho \alpha}; get_component(ex, $t, t$);
0=6Φ1a2kνkμΦ1b2ησρρ(z)ωc1Bνσkμ2Φ1a2kμkν+Φ1b2σ(z)ωc1Bνμkρησρ+Φ1b2ησρρ(z)ωc1BνμkσΦ1b2α(z)ωc1Bρμkνηαρ12AρσkνAβαkμηβρησα12AρσAβαkνkμηβρησα+14AαβkνAσρkμηβσηρα
0 = 6(\Phi)**1 a2 k_{\nu} k_{\mu}-(\Phi)**1 b2 \eta^{\sigma \rho} \partial_{\rho}(z) \omega (c)**(-1) B_{\nu \sigma} k_{\mu}-2(\Phi)**1 a2 k_{\mu} k_{\nu} + (\Phi)**1 b2 \partial_{\sigma}(z) \omega (c)**(-1) B_{\nu \mu} k_{\rho} \eta^{\sigma \rho} + (\Phi)**1 b2 \eta^{\sigma \rho} \partial_{\rho}(z) \omega (c)**(-1) B_{\nu \mu} k_{\sigma}-(\Phi)**1 b2 \partial_{\alpha}(z) \omega (c)**(-1) B_{\rho \mu} k_{\nu} \eta^{\alpha \rho} - 1/2 A_{\rho \sigma} k_{\nu} A_{\beta \alpha} k_{\mu} \eta^{\beta \rho} \eta^{\sigma \alpha} - 1/2 A_{\rho \sigma} A_{\beta \alpha} k_{\nu} k_{\mu} \eta^{\beta \rho} \eta^{\sigma \alpha} + 1/4 A_{\alpha \beta} k_{\nu} A_{\sigma \rho} k_{\mu} \eta^{\beta \sigma} \eta^{\rho \alpha}
0=6Φ1a2ktktΦ1b2ησρρ(z)ωc1Btσkt2Φ1a2ktkt+Φ1b2σ(z)ωc1Bttkρησρ+Φ1b2ησρρ(z)ωc1BttkσΦ1b2α(z)ωc1Bρtktηαρ12AρσktAβαktηβρησα12AρσAβαktktηβρησα+14AαβktAσρktηβσηρα
0 = 6(\Phi)**1 a2 k_{t} k_{t}-(\Phi)**1 b2 \eta^{\sigma \rho} \partial_{\rho}(z) \omega (c)**(-1) B_{t \sigma} k_{t}-2(\Phi)**1 a2 k_{t} k_{t} + (\Phi)**1 b2 \partial_{\sigma}(z) \omega (c)**(-1) B_{t t} k_{\rho} \eta^{\sigma \rho} + (\Phi)**1 b2 \eta^{\sigma \rho} \partial_{\rho}(z) \omega (c)**(-1) B_{t t} k_{\sigma}-(\Phi)**1 b2 \partial_{\alpha}(z) \omega (c)**(-1) B_{\rho t} k_{t} \eta^{\alpha \rho} - 1/2 A_{\rho \sigma} k_{t} A_{\beta \alpha} k_{t} \eta^{\beta \rho} \eta^{\sigma \alpha} - 1/2 A_{\rho \sigma} A_{\beta \alpha} k_{t} k_{t} \eta^{\beta \rho} \eta^{\sigma \alpha} + 1/4 A_{\alpha \beta} k_{t} A_{\sigma \rho} k_{t} \eta^{\beta \sigma} \eta^{\rho \alpha}

remove_zero_components(ex: Ex) -> Ex

Remove all components of an expression that are equal to zero.
{x, y, z}::Coordinate. {i, j}::Indices(values={x, y, z}, position=fixed). ex := a_{i}a_{j}; evaluate(ex, $a_{x} = k, a_{y} = l, a_{z} = m$) substitute(ex, $k m -> 0$); remove_zero_components(ex);
aiaj
a_{i} a_{j}
ij{xx=k2xy=klxz=0yx=klyy=l2yz=lmzx=0zy=lmzz=m2
\components_{i j}({{x, x} = (k)**2, {x, y} = k l, {x, z} = 0, {y, x} = k l, {y, y} = (l)**2, {y, z} = l m, {z, x} = 0, {z, y} = l m, {z, z} = (m)**2})
ij{xx=k2xy=klyx=klyy=l2yz=lmzy=lmzz=m2
\components_{i j}({{x, x} = (k)**2, {x, y} = k l, {y, x} = k l, {y, y} = (l)**2, {y, z} = l m, {z, y} = l m, {z, z} = (m)**2})

components_to_subrule(ex: Ex) -> Ex

Turn a component expression (the result of a \texttt{evaluate
command) into a set of substitution rules}
{x, y, z}::Coordinate. {i, j}::Indices(values={x, y, z}, position=fixed). ex := b_{i j} = a_{i}a_{j}; evaluate(ex, $a_{x} = k, a_{y} = l, a_{z} = m$, rhsonly=True); # substitute(ex, $k m -> 0$); components_to_subrule(ex);
bij=aiaj
b_{i j} = a_{i} a_{j}
bij=ij{xx=k2xy=klxz=kmyx=klyy=l2yz=lmzx=kmzy=lmzz=m2
b_{i j} = \components_{i j}({{x, x} = (k)**2, {x, y} = k l, {x, z} = k m, {y, x} = k l, {y, y} = (l)**2, {y, z} = l m, {z, x} = k m, {z, y} = l m, {z, z} = (m)**2})
[bxxk2,bxykl,bxzkm,byxkl,byyl2,byzlm,bzxkm,bzylm,bzzm2]
{b_{x x} -> (k)**2, b_{x y} -> k l, b_{x z} -> k m, b_{y x} -> k l, b_{y y} -> (l)**2, b_{y z} -> l m, b_{z x} -> k m, b_{z y} -> l m, b_{z z} -> (m)**2}
Copyright © 2001-2024 Kasper Peeters
Questions? info@cadabra.science