Skip to main content

Newman-Penrose calculations for SageMath

Project description

SageNP: Newman-Penrose calculations for SageMath.

The class SageNP includes functions for some calculations defined in the Newman-Penrose formalism. The code is based on SageManifolds.

Coded by:

  • Tolga Birkandan (Corr.: birkandant@itu.edu.tr)

  • Emir Baysazan

  • Pelin Ozturk

  • Special thanks to Eric Gourgoulhon

FILES:

  • SageNP.py: Main file to import in SageMath.

  • SageNP_Tutorial.ipynb: Tutorial (ipynb file) - Definitions and calculations for the Schwarzschild (with covariant null-tetrad vectors) and Reissner-Nordstrom (with contravariant null-tetrad vectors) spacetimes.

  • SageNP_Tutorial.pdf: Tutorial (PDF file)

REFERENCE:

The reference for all definitions and calculations:

H. Stephani, D. Kramer, M. MacCallum, C. Hoenselaers, and E. Herlt, "Exact Solutions of Einstein’s Field Equations", 2nd ed. Cambridge: Cambridge University Press, 2003.

BASIC DEFINITIONS AND NOTATION:

  • We will use the Metric signature: (- + + +)

  • For the null-tetrad vector names, the ref. book uses (k,l,m,mbar). However, in the code we will use (l,n,m,mbar) like the rest of the literature. Therefore one should set k->l, l->n in the ref. book

  • Products of the vectors are given by: ln = -1, mmbar = 1, all others zero.

  • The metric is found using the covariant null-tetrad vectors as:

    g = -2ln + 2mmbar

    and,

    g = [[0 1 0 0], [1 0 0 0], [0 0 0 -1], [0 0 -1 0]]

  • Please check the reference book for the details and further definitions.

INSTRUCTIONS WITH EXAMPLES:

  • Import the class:

    from SageNP import NewmanPenrose

  • Define your manifold:

    MyManifold = Manifold(4 , 'MyManifold', r'\mathcal{Man}')

  • Define your coordinates:

    MyCoordinates.<t,r,th,ph> = MyManifold.chart(r't r th:\theta ph:\phi')

  • Define the metric functions (if needed):

    var('M') Delta=r^2-2Mr

  • Enter null tetrad elements:

    lvec=[1,-(r^2)/Delta,0,0]

    nvec=[Delta/(2*r^2),1/2,0,0]

    mvec=[0,0,(-r/sqrt(2)),(-I*r/sqrt(2))*sin(th)]

    mbarvec=[0,0,(-r/sqrt(2)),(I*r/sqrt(2))*sin(th)]

    • Here, the element ordering is the same as the coordinate ordering. (The first element is the t element, the second is the r element, etc.)
  • Define an object of the class:

    schw=SageNP(MyManifold,MyCoordinates,lvec,nvec,mvec,mbarvec,'covariant')

    • Here, our null-tetrad vectors lvec, nvec, mvec and mbarvec are covariant. Thus we used the keyword 'covariant'.

    • If they were contravariant, then we should use the keyword 'contravariant'.

  • Once the object is defined, the code calculates the metric and displays it on the screen. It is recommended that you check your metric.

FUNCTIONS:

  • All page and equation numbers belong to the reference book.

  • test_nulltetrad(): Checks the products of the vectors ln = -1, mmbar = 1, all others zero.

  • Spin coefficients (Page 75-76, Eq.(7.2)):

    • calculate_spincoefficients(): Calculates the spin coefficients.

    • show_spincoefficients(): Displays the spin coefficients

    • All spin coefficients are available under their names:

      kappaNP, kappabarNP, tauNP, taubarNP, sigmaNP, sigmabarNP, rhoNP, rhobarNP, piNP, pibarNP, nuNP, nubarNP, muNP, mubarNP, lambdaNP, lambdabarNP, epsilonNP, epsilonbarNP, gammaNP, gammabarNP, betaNP, betabarNP, alphaNP, alphabarNP

  • Directional derivatives (Page 43, Eq.(3.82)):

    • DlNP(X): Given X, calculates the D derivative (l direction).

    • DeltanNP(X): Given X, calculates the Delta derivative (n direction)

    • deltamNP(X): Given X, calculates the delta derivative (m direction)

    • deltambarNP(X): Given X, calculates the deltabar derivative (mbar direction)

  • Commutators (Page 77, Eq.(7.6)):

    • The right-hand sides of the commutation relations are calculated.

    • Deltan_Dl_commNP(X): Given X, calculates the [Delta,D] commutator.

    • deltam_Dl_commNP(X): Given X, calculates the [delta,D] commutator.

    • deltam_Deltan_commNP(X): Given X, calculates the [delta,Delta] commutator.

    • deltambar_deltam_commNP(X): Given X, calculates the [deltabar,delta] commutator.

  • Weyl tensor components (Page 38, Eq.(3.59)):

    • calculate_Weyl(): Calculates the Weyl tensor components.

    • show_Weyl(): Displays the Weyl tensor components.

    • All Weyl tensor components are available under their names:

      Psi0NP, Psi1NP, Psi2NP, Psi3NP, Psi4NP

  • Ricci components (Page 78, Eq.(7.10-7.15)):

    • calculate_Ricci(): Calculates the Ricci tensor components.

    • show_Ricci(): Displays the Ricci tensor components.

    • All Ricci tensor components are available under their names:

      Phi00NP, Phi01NP, Phi10NP, Phi02NP, Phi20NP, Phi11NP, Phi12NP, Phi21NP, Phi22NP, LambdaNP

  • Ricci (Newman-Penrose) equations (Page 79, Eq.(7.21)):

    • All Newman-Penrose equations are defined as 0 = -(left hand side)+(right hand side) of the equations.

    • calculate_NPeq(): Calculates the Newman-Penrose equations

    • show_NPeq(): Displays the Newman-Penrose equations

    • All Newman-Penrose equations are available under their names in the order they are given in the reference:

      NPeq1, NPeq2, NPeq3, NPeq4, NPeq5, NPeq6, NPeq7, NPeq8, NPeq9, NPeq10, NPeq11, NPeq12, NPeq13, NPeq14, NPeq15, NPeq16, NPeq17, NPeq18

  • Bianchi identities (Page 81, Eq.(7.32)):

    • All Bianchi identities are defined as 0 = -(left hand side)+(right hand side) of the equations.

    • calculate_Bianchi(): Calculates the Bianchi identities

    • show_Bianchi(): Displays the Bianchi identities

    • All Bianchi identities are available under their names in the order they are given in the reference:

      BI1, BI2, BI3, BI4, BI5, BI6, BI7, BI8, BI9, BI10, BI11

  • Petrov invariants I, J, K, L, N (Kramer p.121, 9.6; p.54, 4.19):

    (also check diagram Fig. 9.1 on p. 122)

    • calculate_PetrovinvINP(): Calculates the Petrov invariant I

    • calculate_PetrovinvJNP(): Calculates the Petrov invariant J

    • calculate_PetrovinvKNP(): Calculates the Petrov invariant K

    • calculate_PetrovinvLNP(): Calculates the Petrov invariant L

    • calculate_PetrovinvNNP(): Calculates the Petrov invariant N

    • All Petrov invariants are available under their names:

      PetrovinvINP, PetrovinvJNP, PetrovinvKNP, PetrovinvLNP, PetrovinvNNP

  • Petrov type of the spacetime:

    • Petrov_frominvariants(): Calculates the Petrov type using I, J, K, L, N.

    • Petrov_fromWeyl(): Calculates the Petrov type using the Weyl components

  • calculate_allNP(): Runs the following functions:

    • calculate_spincoefficients()

    • calculate_Weyl()

    • calculate_Ricci()

    • calculate_NPeq()

    • calculate_Bianchi()

    • Petrov_frominvariants()

    • Petrov_fromWeyl()

  • show_allNP(): Runs the following functions:

    • show_spincoefficients()

    • show_Weyl()

    • show_Ricci()

    • show_NPeq()

    • show_Bianchi()

    • Petrov_frominvariants()

    • Petrov_fromWeyl()

Project details


Release history Release notifications | RSS feed

This version

0.1

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sagenp-0.1.tar.gz (21.5 kB view hashes)

Uploaded Source

Built Distribution

SageNP-0.1-py3-none-any.whl (20.6 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page