Skip to content

Commit

Permalink
Initial checkin: GRG 3.2 Release 6 (July 16, 2000)
Browse files Browse the repository at this point in the history
  • Loading branch information
johnsonjh committed Mar 1, 2021
0 parents commit f8c7dc1
Show file tree
Hide file tree
Showing 44 changed files with 27,471 additions and 0 deletions.
13 changes: 13 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
The system with source code and documentation is distributed
in the hope that it will be useful but without any warranty.
You may modify it for personal use, but you are not allowed
to remove author's name and/or to distribute modified files.

Vadim V. Zhytnikov
Physics Department, Faculty of Mathematics,
Moscow State Pedagogical University,
Davydovskii per. 4, Moscow 107140, Russia
Tel(home): (095) 188-16-11
E-mail: [email protected]
[email protected]

49 changes: 49 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# GRG

## Computer Algebra System for Differential Geometry, Gravitation and Field Theory

The computer algebra system GRG is designed to make calculation in differential geometry and field theory as simple and natural as possible. GRG is based on the computer algebra system REDUCE but GRG has its own simple input language whose commands resemble short English phrases.

GRG understands tensors, spinors, vectors, differential forms and knows all standard operations with these quantities. Input form for mathematical expressions is very close to traditional mathematical notation including Einstein summation rule. GRG knows covariant properties of the objects: one can easily raise and lower indices, compute covariant and Lie derivatives, perform coordinate and frame transformations etc. GRG works in any dimension and allows one to represent tensor quantities with respect to holonomic, orthogonal and even any other arbitrary frame.

One of the key features of GRG is that it knows a large number of built-in usual field-theoretical and geometrical quantities and formulas for their computation providing ready solutions to many standard problems.

Another unique feature of GRG is that it can export results of calculations into other computer algebra system such as Maple, Mathematica, Macsyma or REDUCE in order to use these systems to proceed with analysis of the data. The LaTeX output format is supported as well. GRG is compatible with the REDUCE graphics shells providing nice book-quality output with Greek letters, integral signs etc.

The main built-in GRG capabilities are:

- Connection, torsion and nonmetricity.
- Curvature.
- Spinorial formalism.
- Irreducible decomposition of the curvature, torsion, and nonmetricity in any dimension.
- Einstein equations.
- Scalar field with minimal and non-minimal interaction.
- Electromagnetic field.
- Yang-Mills field.
- Dirac spinor field.
- Geodesic equation.
- Null congruences and optical scalars.
- Kinematics for time-like congruences.
- Ideal and spin fluid.
- Newman-Penrose formalism.
- Gravitational equations for the theory with arbitrary gravitational Lagrangian in Riemann and Riemann-Cartan spaces.

The detailed documentation including complete manual and short reference guide is provided.

GRG is free of charge.

The address for correspondence:

```text
Vadim V. Zhytnikov
Physics Department, Faculty of Mathematics,
Moscow State Pedagogical University,
Davydovskii per. 4, Moscow 107140, Russia
Telephone (Home): (095) 188-16-11
E-mail: [email protected]
E-mail: [email protected]
Subject: for Zhytnikov
```
17 changes: 17 additions & 0 deletions bondi.low
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
Output "bondi.out";
Zero Time;
Comment: Bondi metric;
Coordinates u,r,theta,phi;
Functions Beta(u,r,theta),V(u,r,theta),U(u,r,theta),Gamma(u,r,theta);
Null Metric;
Frame
T0 = e^Beta*d u,
T1 = e^Beta*(d r + (V/r)*d u),
T2 = r*(-U*e^Gamma*d u+e^Gamma*d theta
+i*sin(theta)*e^(-Gamma)*d phi)/sqrt(2),
T3 = r*(-U*e^Gamma*d u+e^Gamma*d theta
-i*sin(theta)*e^(-Gamma)*d phi)/sqrt(2);
Off WRS;
Find and Write Curvature Spinors;
Time;
Quit;
17 changes: 17 additions & 0 deletions bondi.up
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
Output "bondi.out";
Zero Time;
Comment: Bondi metric;
Coordinates u,r,theta,phi;
Functions Beta(u,r,theta),V(u,r,theta),U(u,r,theta),Gamma(u,r,theta);
Null Metric;
Frame
T0 = E^Beta*d u,
T1 = E^Beta*(d r + (V/r)*d u),
T2 = r*(-U*E^Gamma*d u+E^Gamma*d theta
+I*SIN(theta)*E^(-Gamma)*d phi)/SQRT(2),
T3 = r*(-U*E^Gamma*d u+E^Gamma*d theta
-I*SIN(theta)*E^(-Gamma)*d phi)/SQRT(2);
Off WRS;
Find and Write Curvature Spinors;
Time;
Quit;
72 changes: 72 additions & 0 deletions compare.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@

This file is part of GRG 3.2 Copyright (C) 1997 Vadim V. Zhytnikov

Disclaimer: The opinion expressed here is the opinion of V.Zhytnikov
and nobody else.


GRG 3.2 versus EXCALC

The GRG 3.2 and EXCALC are two rather similar programs. Both are
based on the computer algebra system REDUCE and designed for the
problems in differential geometry. They work with the differential
forms, vectors, tensors and use convenient notation very similar
to the traditional mathematical one. Both programs work with spaces
of any dimensionality and can represent tensors with respect to
arbitrary frame.

On the other hand there are also a number of important differences
between EXCALC and GRG 3.2. In particular:

1. EXCALC works with tensors whose components are presented with
respect to certain frame. GRG 3.2 understands more complicate
quantities having coordinate, frame, spinorial and enumerating
indices. GRG 3.2 understands also pseudo-tensors and tensor
densities. I'd like to emphasize also GRG's ability to work with
spinors.

2. Working with tensors EXCALC actually knows very little about the
"covariant" properties of these quantities. On the other hand
GRG knows all standard covariant operations and operators.
In particular GRG 3.2 performs frame, spinor and coordinate
transformations. It automatically computes Lie derivatives,
covariant derivatives and differentials of any tensor or spinor
quantity. GRG can easily transform the frame indices to coordinate
ones and vice versa.

3. GRG 3.2 allows one to save the result of computations in
the form which can be later used in other computer algebra
programs: Mathematica, Maple and Macsyma.

4. Unlike EXCALC the GRG 3.2 knows almost 150 built-in quantities
and numerous built-in formulas for their calculation. So, in
GRG you have already solutions for many standard problems.
On the contrary to obtain any result with EXCALC it is
necessary to write your own program.

5. GRG requires all variables and functions to be declared which
makes it more reliable than EXCALC.

6. The input languages of GRG and EXCALC are very different.
EXCALC in fact has no any special language and uses the
REDUCE programming language with all control instructions:
loops, if-then-else, procedures etc. GRG uses the completely
different approach. It has its own quite simple language
which lacks the aforementioned programming facilities.
Commands of GRG input language resemble simple English
phrases. This is especially convenient for people who are
not interested (or skillful) in programming.

7. The performance of both programs (say the run time for
analogous problems) is approximately equal.

8. The advantage of EXCALC is that it can operate with abstract
p-forms while in GRG any p-form is always represented
as the exterior product of p frame 1-forms (frame may be
arbitrary).

9. Another potential advantage of EXCALC is the ability to compute
the variational derivatives. Unfortunately in practice this
facility is rather limited and buggy.

----------------------------------------------------------------------
48 changes: 48 additions & 0 deletions compile.csl
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
off echo$
%==========================================================================%
% GRG 3.2 Compilation [CSL] (C) 1988-97 Vadim V. Zhytnikov %
%==========================================================================%
% This file is distributed without any warranty. You may modify it but you %
% are not allowed to remove author's name and/or distribute modified file. %
%==========================================================================%

<< prin2 "Compiling GRG 3.2, wait few minutes."; terpri() >>$

out "grgcomp.log"$

in "expand.csl"$

lisp$

off lower$
off raise$

rdf "xdecl.sl"$

load!_package compiler$

faslout "grgdecl" $ rdf "xdecl.sl" $ faslend$
faslout "grggeom" $ rdf "xgeom.sl" $ faslend$
faslout "grggrav" $ rdf "xgrav.sl" $ faslend$
faslout "grginit" $ rdf "xinit.sl" $ faslend$
faslout "grgclass"$ rdf "xclass.sl"$ faslend$
faslout "grgcomm" $ rdf "xcomm.sl" $ faslend$
faslout "grgcoper"$ rdf "xcoper.sl"$ faslend$
faslout "grgmain" $ rdf "xmain.sl" $ faslend$
faslout "grgmater"$ rdf "xmater.sl"$ faslend$
faslout "grgprin" $ rdf "xprin.sl" $ faslend$
faslout "grgproc" $ rdf "xproc.sl" $ faslend$
faslout "grgtrans"$ rdf "xtrans.sl"$ faslend$
faslout "grgcfg" $ rdf "grgcfg.sl"$ faslend$
faslout "grg32" $ rdf "grg32.sl" $ faslend$
faslout "grg" $ rdf "grg.sl" $ faslend$

shut "grgcomp.log"$

<< terpri(); prin2 "GRG has been compiled."; terpri(); >>$

bye$

end;

%==========================================================================%
48 changes: 48 additions & 0 deletions compile.grg
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
off echo$
% This file is the part of GRG 3.2 (C) 1997 V.V.Zhytnikov
lisp$
begin
psl := getd 'dskin;
low := getd '!c!a!r;
if psl then lis := "PSL" else lis:= "CSL";
if low then cas := "Lower" else cas := "Upper";
prin2 "This REDUCE is based on ";
prin2 lis;
prin2 " and is ";
prin2 cas;
prin2 "-Cased.";
terpri();
if low then <<
prin2 "Use lower-case symbols for built-in constants and functions:";
terpri();
prin2 " e i pi sin cos log ..."; >>
else <<
prin2 "Use upper-case symbols for built-in constants and functions:";
terpri();
prin2 " E I PI SIN COS LOG ..."; >>;
terpri();
terpri();
compok := errorset('(evload (quote(compiler))),nil,nil);
if atom compok then <<
prin2 "Compiler is absent! Sorry, GRG cannot be installed. ";
terpri();
terpri();
bye; >>
else <<
%prin2 "Compiler is present. I'm about to compile GRG ...";
%if psl then <<
% prin2 "To install GRG use command:";
% terpri();
% prin2 " in ""compile.psl"";"; >>
%else <<
% prin2 "To install GRG use command:";
% terpri();
% prin2 " in ""compile.csl"";"; >>;
%terpri();
%pause;
>>;
end$
if psl then in "compile.psl" else in "compile.csl"$
quit$
end;

4 changes: 4 additions & 0 deletions compile.psl
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
lisp$
off echo$
dskin "grgcomp.sl"$
end;
Binary file added dos/addz.exe
Binary file not shown.
Binary file added dos/cutz.exe
Binary file not shown.
Binary file added dos/dtou.exe
Binary file not shown.
Binary file added dos/utod.exe
Binary file not shown.
23 changes: 23 additions & 0 deletions expand.csl
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
% This file is the part of GRG 3.2 (C) 1997 V.V. Zhytnikov
lisp$
off echo$
rdf "grgxmacr.sl"$
%off lower$
expand!-file!>( "grgdecl.sl" , "xdecl.sl" )$
expand!-file!>( "grggeom.sl" , "xgeom.sl" )$
expand!-file!>( "grggrav.sl" , "xgrav.sl" )$
expand!-file!>( "grginit.sl" , "xinit.sl" )$
expand!-file!>( "grgclass.sl" , "xclass.sl" )$
expand!-file!>( "grgcomm.sl" , "xcomm.sl" )$
expand!-file!>( "grgcoper.sl" , "xcoper.sl" )$
expand!-file!>( "grgmain.sl" , "xmain.sl" )$
expand!-file!>( "grgmater.sl" , "xmater.sl" )$
expand!-file!>( "grgprin.sl" , "xprin.sl" )$
expand!-file!>( "grgproc.sl" , "xproc.sl" )$
expand!-file!>( "grgtrans.sl" , "xtrans.sl" )$
on lower$
terpri()$
prin2 "### Expansion done."$ terpri()$
%quit$
end;

21 changes: 21 additions & 0 deletions expand.psl
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
% This file is the part of GRG 3.2 (C) 1997 V.V. Zhytnikov
lisp$
off echo$
dskin "grgxmacr.sl"$
off lower$
expand!-file!>( "grgdecl.sl" , "xdecl.sl" )$
expand!-file!>( "grggeom.sl" , "xgeom.sl" )$
expand!-file!>( "grggrav.sl" , "xgrav.sl" )$
expand!-file!>( "grginit.sl" , "xinit.sl" )$
expand!-file!>( "grgclass.sl" , "xclass.sl" )$
expand!-file!>( "grgcomm.sl" , "xcomm.sl" )$
expand!-file!>( "grgcoper.sl" , "xcoper.sl" )$
expand!-file!>( "grgmain.sl" , "xmain.sl" )$
expand!-file!>( "grgmater.sl" , "xmater.sl" )$
expand!-file!>( "grgprin.sl" , "xprin.sl" )$
expand!-file!>( "grgproc.sl" , "xproc.sl" )$
expand!-file!>( "grgtrans.sl" , "xtrans.sl" )$
on lower$
prin2 "### All done."$ terpri()$
quit$
end;
18 changes: 18 additions & 0 deletions grg.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
%==========================================================================%
% GRG 3.2 Local Configuration File (C) 1988-96 Vadim V. Zhytnikov %
%==========================================================================%

% Default Dimensionality and Signature:
%(signature!> - + + + )

% Changing the default on/off switch position:
%(on!> page)

% Pre-loading the packages:
%(package!> specfn)

% Newer remove the following line!
nil

%======= End of grg.cfg ===================================================%

35 changes: 35 additions & 0 deletions grg.sl
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
%==========================================================================%
% GRG 3.2 Startup File (C) 1988-2000 Vadim V. Zhytnikov %
%==========================================================================%
% This file is distributed without any warranty. You may modify it but you %
% are not allowed to remove author's name and/or distribute modified file. %
%==========================================================================%

(global '(![version!]))

(setq ![version!] "This is GRG 3.2 release 6 (July 16, 2000) ..." )

% Loading modules ...
(evload '(
grgdecl
grggeom
grggrav
grginit
grgclass
grgcomm
grgcoper
grgmain
grgmater
grgprin
grgproc
grgtrans
grgcfg
))
(matrix nil)

% Starting GRG ...
(cond (![autostart!] (grg))
(t(progn (terpri) (prin2 "Type ``grg;'' to start GRG ...") (terpri))))

%==========================================================================%

Loading

0 comments on commit f8c7dc1

Please sign in to comment.