Sunday, December 23, 2012

xTras 1.0.6

Just in time for the holidays, a new version of xTras, my xAct Mathematica package, has hit the selves. Version 1.0.6 updates AllContractions, which should be much faster. You can now compute all possible contractions of your favorite tensors in a reasonable amount of time (provided there aren't too many indices to contract over), like so:
In:    AllContractions[ RiemannCD[a,b,c,d]RiemannCD[e,f,g,h] ];
Out: { \( R^2, R_{ab} R^{ab}, R_{abcd} R^{abcd}, R_{acbd} R^{abcd} \) }
The last two contractions are actually not independent, but are related to each other via the Bianchi identity. But that's a multi-term symmetry, and unfortunately AllContractions doesn't take those into account.

Other functions, such as TensorCollect and SolveConstants should also see some speed improvements. And besides the usual bugfixes there are nice new functions such as SolveTensors (which can solve a system of linear tensorial equations in terms of tensors) and IndexConfigurations. The latter gives all possible independent index configurations of an expression. For example:
In:    IndexConfigurations[ metric[a,b]metric[c,d] ];
Out: { \(g^{ab} g^{cd}, g^{ac} g^{bd}, g^{ad} g^{bc}\) }
Here's another example:
In:    IndexConfigurations[ RiemannCD[a,b,c,d] ];
Out: { \(R^{abcd}, R^{acbd}, R^{adbc} \) }
Note that the three different index configurations of the Riemann tensor are actually not independent due to the Bianchi identity. Like AllContractions, IndexConfigurations doesn't take these multi-term symmetries into account.

xTras 1.0.6 has some more improvements; check the Changelog for details. As usual, the new version can be downloaded from its www.xact.es/xtras.

Wednesday, November 7, 2012

xAct notebooks

I put some notebooks for xAct on my website, at http://www.aei.mpg.de/~nutma/. There's an introductory notebook, and two more advanced ones covering the Noether procedure for spin 2 and some calculations for spin 3. Go have a look!

Update (30-04-2016): the above links are dead, but the majority of material in the notebooks have made its way into the xTras documentation as tutorials. The online version can be found here.

Sunday, March 25, 2012

xTras for xAct

I'm a big fan of xAct, a tensor algebra package for Mathematica. While there are other tensor packages for Mathematica on the market, xAct is by far the best. It canonicalizes tensorial expressions blazingly fast, and its perturbation capabilities are state-of-the-art. If you've always wanted to do second-order perturbations of four-derivative curvature tensors but were afraid the actual calculation might take you some weeks, xAct is your man. It does it in a few seconds, and more importantly, doesn't mess up minus signs.

In fact, I like xAct so much, I wrote an additional package for. It's aptly called xTras, and its available over on www.xact.es/xtras. It brings some functionality that I found missing in xAct, like computing equations of motion for the metric, perturbations around AdS spaces, and Young projectors (yes, this also includes Bianchi identities).

I'll demonstrate some of the new functionality by computing the linearization of the Einstein tensor around AdS spaces. Here goes!
First, open up Mathematica, and enter the following line:
   In:    <<xAct`xTras`
This loads the xTras package (assuming you're managed to download and install it). Next we'll define a manifold and a metric:
   In:    DefConstantSymbol[dimension,PrintAs->"D"]
   In:    DefManifold[M,dimension,IndexRange[a,f]]
   In:    DefMetric[-1,g[-a,-b],CD]
We'll be doing stuff on AdS spaces, which has a constant curvature. Hence we need to define a constant symbol to indicate that curvature:
   In:    DefConstantSymbol[L]
Now we're ready to define the standard Lagrangian for gravity with a cosmological constant:
   In:    lagrangian = RicciScalarCD[] -(dimension-2)(dimension-1)L
We'd like to compute the equations of motion that follow from this Lagrangian. To do so, we first write the command
   In:    DefMetricVariation[g,h,eps]
This command makes it possible to do covariant metric variations. It also registers the command VarL, which varies Lagrangians:
   In:    eom = VarL[g[a,b]][lagrangian] //TensorCollect
Out:    \( \frac{1}{2} (2 - 3 D + D^2) L g_{ab} + R_{ab} - \frac{1}{2} g_{ab} R\)
The equations of motion should allow for AdS spaces. To check this, we first generate a list of replacement rules for curvature tensors of the covariant derivative CD on symmetric spaces:
   In:    AdSrules = SymmetricSpaceRules[CD,L]
 And indeed, the equations of motion are zero for this background:
   In:    eom /. AdSrules // ToCanonical
Out:    \( 0 \)
This means we can perturb around this solution. So without any further ado, here's the linear perturbation of the Einstein tensor:
   In:    ExpandBackground[eom, BackgroundSolution -> AdSrules] // TensorCollect
Out:    \( (l -  D l) h^{1}{}_{ab} + \frac{1}{2} (-1 + D) l g_{ab} h^{1c}{}_{c} - \frac{1}{2} \triangledown_{a}\triangledown_{b}h^{1c}{}_{c} + \frac{1}{2} \triangledown_{c}\triangledown_{a}h^{1}{}_{b}{}^{c} + \frac{1}{2} \triangledown_{c}\triangledown_{b}h^{1}{}_{a}{}^{c} \)
                                      \(- \frac{1}{2} \triangledown_{c}\triangledown^{c}h^{1}{}_{ab} - \frac{1}{2} g_{ab} \triangledown_{d}\triangledown_{c}h^{1cd} + \frac{1}{2} g_{ab} \triangledown_{d}\triangledown^{d}h^{1c}{}_{c} \)
 And that's it! Granted, we could also have done this by hand. But the power of xAct is that it can do much more complicated calculations without breaking a sweat. If we would like to know the second order pertubation of the Einstein tensor, we can simply replace the above input by ExpandBackground[eom,2,BackgroundSolution->AdSrules]. Pretty cool, right?

Monday, March 29, 2010

Affine root systems

Currently I'm working on my PhD thesis. It isn't finished yet, but I decided the following images were worth a sneak peak:


Besides looking nice, the pictures actually convey some information. They're so-called Hasse diagrams of the root systems of a few affine Lie algebras. From left to right we have the following affine algebras: (a) A1+, (b) C2+, (c) D4+, (d) A8+, (e) D7+, and (f) E7+. But luckily you don't need to fully understand the mathematical background, which is admittedly quite complicated, to enjoy their beauty.

Tuesday, February 16, 2010

Matching fonts in Keynote and LaTeX

LaTeX is great if you want to typeset documents with lots of mathematics in them, but what if you want to make presentations with lots of math? Sure, there are LaTeX packages like Beamer with which you can straightforwardly make decent looking presentations using nothing but LaTeX. But none of those packages lets you easily control where items end up on a page, make subtle changes to overall lay-out, or add some motion to your slides.

Keynote does all of those things, and a bit more. Here's for example a slide of presentation I gave some time ago:


The things in the image are all created within Keynote (not in a separate drawing program like Adobe Illustrator), and some of them are even animated. This is simply impossible to do solely with LaTeX, and that's why I've been using Keynote for quite some time now for all my presentations.

However, there was always something annoying me: the fonts in formulae I got from LaTeXiT (a small program that lets you insert LaTeX formula in Keynote) didn't match the font over the overall presentation. And if you're a typesetting nerd like me, that's pretty annoying. Luckily, I found a solution. Here's an example with both type of fonts:


The difference is subtle, but certainly noticable. The greek letters haven't changed, but the others are in the same font in the second equation. Here is how you change fonts:

  1. First, go to the LaTeXiT preferences, and change the default configuration to use xelatex instead of pdflatex:

  2. Next, add the following to the LaTeXiT preamble:

    \usepackage{mathspec}
    \usepackage{xunicode}
    \usepackage{xltxtra}
    \setmainfont{Gill Sans}
    \setmathsfont(Digits,Latin,Greek){Gill Sans}


    Be sure to change the "Gill Sans" to match whatever font you're using in Keynote.

And that's it! After restarting LaTeXiT, all new equations you'll typeset will be in the correct font. Enjoy!

Sunday, January 3, 2010

End of the year lists

2009 is behind us, which can only mean one thing: endless amounts of end-of-the-year-lists! Around this time of the year every respectable music website or blogger will produce his or her list of best albums, best singles, and whatnot. For example, have a look at the lists of  Pitchfork, Paste, and Kindamuzik (Dutch). Having compiled my list for the Vera poll, it's a small effort to also put it here. So here are my two cents for 2009:



10. Built To Spill - There is no enemy 
MP3: Hindsight

Myspace


9. Throw Me The Statue - Createresque
MP3: Ancestors

Myspace

8. Wake The President - You can't change that boy
Myspace


7. Jay Reatard - Watch me fall
MP3: Wounded

Myspace


6. The Pains Of Being Pure At Heat - s/t

Myspace

5. Sunset Rubdown - Dragonslayer

Myspace


4. Phoenix - Wolfgang Amadeus Phoenix
MP3: 1901

Myspace

3. The Maccabees - Wall of arms

Myspace

2. Dan Auerbach - Keep it hid

Myspace


1. Bill Callahan - Sometimes I wish we were an eagle

Myspace





Sunday, November 1, 2009

Mac free software list

Having updated to Snow Leopard this weekend, I once more downloaded and installed the latest version of all the free applications I use. Almost all of them were compatible with Snow Leopard, a thing I checked beforehand for only a few of them. Here's a careful selection of the apps I couldn't live without:

Internet related:
  • Adium
    The multi-protocol instant messaging client for the Mac. Handy if you have MSN, ICQ, and Google Talk accounts (like me).
  • GlimmerBlocker
    The only adblocker for Safari that isn't implemented as a hack -- this one is actually a proxy that filters out the stuff you don't want to see.
  • Transmission
    Simply the best torrent client for OS X.
  • Google Notifier + Google + Growl
    A menu bar app that notifies you when there's new mail in you Gmail inbox. The Google + Growl utility makes sure the notifications are Growl compliant.
LaTeX:
  • BasicTex
    A TeX distribution that's small (54mb) but still has all you need.
  • LaTeXiT
    Unmissable app if you quickly want to typeset formulas and paste them into, say, Keynote.
  • TeXlipse
    A plugin for Eclipse that turns it into one of the most powerful LaTeX editors around.
System tools:
  • Growl
    A notification system for Mac OS X. Many programs are capable of using it, and it's a functionality that's lacking by default in OS X.
  • USB Overdrive
    The default mouse acceleration is really crappy on OS X. USB Overdrive lets you change it according to your own tastes.
  • CDto
    CDto adds a button to Finder that opens a Terminal window and changes its active directory to the Finder directory.
Media:
  • Plex
    Plex is a home theatre app that is much more versatile than Front Row. Amongst other things, it can pull content directly from the internet to your TV.
  • Perian
    Perian adds playback support to QuickTime for a whole range of media format.
  • Flip4Mac
    Adds WMV support to QuickTime.
  • ScrobblePod
    If you've got a Last.FM account, this little app is for you. It scrobbles all your plays in iTunes.
Other:
  • Jin
    Jin is the only chess client that runs on a Mac and supports the Free Internet Chess Server. So if you're a cheap bastard like me and enjoy a game of chess, Jin is the way to go.