1 / 26

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

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

olin
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. آشنایی با نرم افزار CADABRA بابک صالحی کسمایی گرانش و نسبیت عام استاد درس: دکتر رضا منصوری

  2. کادابرا توسط Kasper Peeters از موسسه ماکس پلانک طراحی شده است. http://www.aei.mpg.de/~peekas/ “My private C++ version of Abra” • Open source C++ code • تحت لینوکس (و نه ویندوز!) • نشان گذاری TeX • Both command-line and GUI

  3. 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”

  4. برخی ویژگی های کادابرا • در اصل برای محاسبات نظریه میدان طراحی شده است. • 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

  5. نظریه میدان و محاسبات کامپیوتری • میدان ها در فیزیک: • نرده ای • برداری • تانسوری • اسپینوری There is a number of characteristic features of “field theory problems” which often make them unsuited for a direct solution using standard general purpose symbolic computer algebra systems…..

  6. 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.

  7. 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

  8. 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 as“Spinor”, which combine various properties in one easyto remember shortcut, exist as well. The program knows about many concepts which are common in field theory. It handles anti-commuting and non-commuting objects without special notations for their products, it knows about gamma matrix algebra, Fierz identities, Dirac conjugation, vielbeine, flat and curved, covariant and contravariant indices, implicit dependence of tensors on coordinates, partial and covariant derivatives. • 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.

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

  10. Examples • Indices 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!(%);

  11. 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};

  12. 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!(%);

  13. 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};

  14. ExamplesDerivatives and dependencies \nabla_{m p}( A_{q r} V_{n} ) A^{p m}; @canonicalise!(%); @unwrap!(%);

  15. 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!(%);

  16. 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!(%);

  17. 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}};

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

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

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

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

  22. @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};

  23. More with CADABRA Check this paper: Riemann Normal Coordinate expansions using Cadabra Leo Brewin Class.Quantum.Grav. 26 175017 (2009)

  24. The famous AbraCadabra

  25. Thank You.

More Related