آشنایی با نرم افزار cadabra

Download آشنایی با نرم افزار  CADABRA

If you can't read please download the document

Upload: olin

Post on 08-Jan-2016

85 views

Category:

Documents


6 download

DESCRIPTION

آشنایی با نرم افزار CADABRA. بابک صالحی کسمایی گرانش و نسبیت عام استاد درس: دکتر رضا منصوری. کادابرا توسط Kasper Peeters از موسسه ماکس پلانک طراحی شده است. http://www.aei.mpg.de/~peekas/ “My private C++ version of Abra” Open source C++ code تحت لینوکس (و نه ویندوز!) نشان گذاری TeX - PowerPoint PPT Presentation

TRANSCRIPT

  • CADABRA

    :

  • Kasper Peeters .http://www.aei.mpg.de/~peekas/My private C++ version of AbraOpen source C++ code ( !) TeX Both command-line and GUI

  • How to Install in The latest Ubuntu versions have Cadabra packages in the standard repositories. Just install with: sudo apt-get install cadabra If you encounter a LaTeX error related to breqn.sty, please do:sudo apt-get install texlive-latex3

  • .tensor computer algebra, tensor polynomial simplification including multi-term symmetries, fermions and anti-commuting variables, Clifford algebras and Fierz transformations, implicit coordinate dependence, multiple index types

  • : There is a number of characteristic features of field theoryproblems which often make them unsuited for a directsolution using standard general purpose symbolic computeralgebra systems..

  • Tensorial expressions are typically graphs: the indices of the tensors can be contracted (dummy indices) and thus form closed loops in the expression. This is in contrast to the list data type often used in general purpose computer algebra systems. (See data structures information, you may search wikipedia )

    Tensors often have symmetries (e.g. symmetry or anti-symmetry in indices, but commonly more complicated ones, like the Bianchi or Ricci identities familiar from differential geometry). This makes that converting an expression to a canonical form, especially when there are also anti-commuting tensors present, often goes beyond what general purpose systems can handle.

    Field-theory notation is extremely compact, and translations to general purpose algebra systems often cumbersome.

  • the most immediately visible aspect of Cadabra is that it accepts field theory expressions written directly in (a subset of) TEX. This makes notebooks particularly easy to read

  • In order to attach meaning to symbols, Cadabra usesthe concept of properties. A symbol can e.g. be declaredto have a certain symmetry property in its indices,or have the property that it is anti-commuting with othersymbols in a list. More complicated properties, such asSpinor, which combine various properties in one easyto remember shortcut, exist as well.

    Tensor polynomial expressions, including those containing anti-commuting and non-commuting tensors or tensors carrying indices which transform under different symmetry groups, are canonicalised using some of the most powerful algorithms currently available. These algorithms deal not only with simple symmetry or antisymmetry, but also with multi-term symmetries such asBianchi or Ricci identities.The program knows about many concepts which arecommon in field theory. It handles anti-commuting andnon-commuting objects without special notations for theirproducts, it knows about gamma matrix algebra, Fierzidentities, Dirac conjugation, vielbeine, flat and curved,covariant and contravariant indices, implicit dependenceof tensors on coordinates, partial and covariant derivatives.

  • Examples{ a, b, c, d }::Indices.A_{a b} B_{b c};

  • ExamplesIndices can be simple letters, as in the example above,but it is also perfectly possible to put accents on them.The following example illustrates this.A_{\dot{a} \dot{b}}::AntiSymmetric.A_{\dot{b} \dot{a}};

    \hat{A}\bar{B}\prime{Q}@canonicalise!(%);

  • Examples

    {a_{1}, a_{2}, a_{3}, a_{4}}::Indices(vector).V_{a_{1}} W_{a_{1}}:@substitute!(%)( V_{a_{2}} -> M_{a_{2} a_{1}} N_{a_{1}} );

    G_{mu nu rho} + F_{mu nu rho};B @substitute!(%)( F_{mu nu rho} -> A_{mu nu} B_{rho} );G_{mu nu rho} + A_{mu nu} B_{rho};

  • Examples

    R_{a b c d}::TableauSymmetry(shape={2,2}, indices={0,2,1,3}).R_{a b c d} R_{d c a b}:@canonicalise!(%);

  • ExamplesDerivatives and dependencies

    \nabla{#}::Derivative.\partial{#}::PartialDerivative.A_{m n}::AntiSymmetric.V_{m}::Depends(\nabla).\partial_{m p}( A_{q r} V_{n} ) A^{p m};

  • ExamplesDerivatives and dependencies

    \nabla_{m p}( A_{q r} V_{n} ) A^{p m};@canonicalise!(%);

    @unwrap!(%);

  • ExamplesBianchi, Ricci identities

    R_{m n p q}::RiemannTensor;D{#}::Derivative.D_{m}{ R_{n p q r} }::SatisfiesBianchi.A^{m n p q}::AntiSymmetric.D_{m}{ R_{n p q r} } A^{m n p q};@canonicalise!(%);(-1) D_{m}{ R_{r n p q} } A^{m n p q};@impose_bianchi!(%);

  • ExamplesVerify that given {a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u#}::Indices.g_{a b}::Metric.\partial_{#}::PartialDerivative.cderiv:=\partial_{c}{g_{a b}} - g_{a d}\Gamma^{d}_{b c}- g_{d b}\Gamma^{d}_{a c};Gamma:=\Gamma^{a}_{b c} -> (1/2) g^{a d} ( \partial_{b}{g_{d c}}+ \partial_{c}{g_{b d}}- \partial_{d}{g_{b c}} );@substitute!(cderiv)(@(Gamma));@distribute!(%);@eliminate_metric!(%);@canonicalise!(%);@collect_terms!(%);

  • Covariant differentiation

    # --- Covariant differentiation -----------------------------------------------{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u#}::Indices.\partial_{#}::PartialDerivative.# --- construct the scalar v_{a} A^{a} ---------------------------------------scalar:=v_{a} A^{a}:# --- compute the derivative -------------------------------------------------derivD:=D^{c}\partial_{c}{@(scalar)}:@distribute!(%):@prodrule!(%):@distribute!(%):@substitute!(%)(D^{a}\partial_{a}{A^{b}} -> -\Gamma^{b}_{ac}A^{a}D^{c}):@substitute!(%)(D^{a}\partial_{a}{D^{b}} -> -\Gamma^{b}_{ac}D^{a}D^{c}):@prodsort!(%):@rename_dummies!(%):@canonicalise!(%):# --- tidy up and display the results ----------------------------------------@factor_out!(scalar){A^{a}}:@factor_out!(scalar){D^{a}};@factor_out!(derivD){A^{a}}:@factor_out!(derivD){D^{a}};

  • Cadabra does not have predefined algorithms for computing covariant derivatives, Riemann tensors, Ricci tensor and so on.

  • ::Metric(signature=integer)

    g_{m n}::Metric(signature=1).g_{m n} A^{n p};@eliminate_metric!(%);A_{m}^{p};

  • ::InverseMetric

    g^{m n}::InverseMetric.g_{m n}::Metric.g_{m q} g^{m n} A_{n p};@eliminate_metric!(%);A_{q p};

  • ::RiemannTensorR_{m n p q}::RiemannTensor;A^{m n p}::AntiSymmetric.A^{m n p} R_{m n p q};@impose_bianchi!(%);0;

    ::WeylTensor

  • @lsolve

    { a0+2*a2 + a3= 3, -a0 - a2 + a3= - (8/3) , a3 = 3};@lsolve(%){a0,a2,a3};{a0 = 34/3, a2 = (-17/3), a3 = 3};

  • More with CADABRACheck this paper:Riemann Normal Coordinate expansionsusing Cadabra

    Leo Brewin

    Class.Quantum.Grav. 26 175017 (2009)

  • The famous AbraCadabra

  • Thank You.