GithubHelp home page GithubHelp logo

camarman / gtrpy Goto Github PK

View Code? Open in Web Editor NEW
7.0 2.0 1.0 3.44 MB

GTRPy is a GUI based application that allows users to perform Tensor and 6 different type of field operations in both 3D and 4D

Home Page: https://pypi.org/project/gtrpy/

License: MIT License

Python 100.00%
physics astrophyics cosmology general-relativity gui-application tensor einstein-field-equations einstein-summation scalar-field tensor-calculus

gtrpy's Introduction

GTRPy

GTRPy is a python package that allows you to calculate the well-known tensors in the General Theory of Relativity without writing a single line of code. Furthermore, you can apply many operations to 6 different types of fields, in both 3D and 4D.

It's tested for GNU/Linux. However, it should also work in macOS. If you ever encounter with a problem, feel free to create an issue.

Installation

You can easily install the GTRPy via

python3 -m pip install gtrpy

or, you can directly clone the repository

git clone https://github.com/camarman/GTRPy.git

to your favourite directory

Requirements

Install the python3 requirements by running

python3 -m pip install numpy Pillow pysimplegui sympy

Additionally, you will also need tkinter and LaTeX support to run the GTRPy. These can be installed by running:

in Fedora

sudo dnf install dvipng python3-tkinter texlive-collection-latex texlive-collection-latexextra

in Ubuntu

sudo apt install dvipng python3-tk texlive-latex-base texlive-latex-extra

User Guide

To start GTRPy, simply run

python3 -m gtrpy.run

The program will create the logs directory under your current directory, which will contain the outputs of the performed operations.

Please look at the docs/user_guide.md for a summary of the GTRPy. You can look at the demos directory, to see more detailed examples.

Current Features

GTR Tensors

Either by using predefined coordinates or by defining the coordinate system yourself, you can calculate:

  1. Inverse Metric Tensor
  2. Christoffel Symbol
  3. Riemann Tensor
  4. Ricci Tensor
  5. Ricci Scalar
  6. Weyl Tensor
  7. Traceless Ricci Tensor
  8. Einstein Tensor
  9. Kretschmann Scalar

The one important point in GTRPy is that the variables defined in the metric tensor must be constant. For example, you can write the Schwarzschild Coordinates System as

g = diag[-(1-r_s/r), (1-r_s/r)**(-1), r^2, r^2sin^2(theta)]

and that is totally fine for GTRPy, since r_s = 2GM/c^2 is a constant.

Let us suppose you have another variable called F(r) which is a function of r. And the metric is given as

g = diag[-1, F, r^2, r^2sin^2(theta)]

Sadly, the GTRPy will interpret this F as a constant and not as a function of r. So the result will be wrong. On the other hand, if you know what that function is, for instance if F(r) = r^3, then you should write r^3 instead of F and use the GTRPy in that way. Thus, you should write the metric as

g = diag[-1, r^3, r^2, r^2sin^2(theta)]

and now, the GTRPy will work perfectly fine.

Fields

Currently, there are 6 different types of fields that you can carry out operations. These are:

  1. Scalar Field
  2. Type (1,0) Vector Field
  3. Type (0,1) Vector Field
  4. Type (2,0) Tensor Field
  5. Type (1,1) Tensor Field
  6. Type (0,2) Tensor Field

Available Operations in GTRPy

  1. Print out the equations obtained from each operation by clicking a single button
  2. Checking the Killing field condition for a given vector field
  3. Varying the type of a given vector and tensor field
  4. Calculating Covariant and Lie derivatives for scalar, vector, and tensor fields

Overview

4D/Main Page 3D/Main Page
4d_main 3d_main
4D/Scalar Field 4D/Vector Field 4D/Tensor Field
4d_scalar 4d_vector 4d-tensor
3D/Scalar Field 3D/Vector Field 3D/Tensor Field
3d_scalar 3d_vector Screenshot from 2023-01-28 22-47-14

Upcoming Features

  1. Gradient, Divergence, Curl, and Laplace operations on fields
  2. Partial and Covariant derivatives of the GTR tensors
  3. Including more coordinate systems
  4. Adding a user-defined (custom) function support

Contributing

I am looking for developers who would like to contribute to the project. If you are interested, feel free to create an issue by stating how would you like to contribute. Any help or idea is appreciated. For more information, you can also look at the CONTRIBUTING.md.

gtrpy's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

lewton1644

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.