diff options
author | jthorn <jthorn@e296648e-0e4f-0410-bd07-d597d9acff87> | 2002-06-16 18:42:41 +0000 |
---|---|---|
committer | jthorn <jthorn@e296648e-0e4f-0410-bd07-d597d9acff87> | 2002-06-16 18:42:41 +0000 |
commit | f7216a27e1388f70b04fe68c2bd43449d668f457 (patch) | |
tree | 0c7673b21efc4745fd16afb6b320c63489eb3150 /src/metric.F | |
parent | cf2fb9a92562b9471403b8205ce75d975de144d4 (diff) |
[[This is a redo of my "cvs import" of 2002/06/11, this time using proper
cvs operations (commit/delete/add) to preserve the full CVS history of this
thorn.]]
This is a major cleanup/revision of AEIThorns/Exact.
Major user-visible changes:
* major expansion of doc/documentation.tex
* major expansion of documentation in param.ccl file
* rename all parameters, systematize spacetime/coordinate/parameter names
(there is a perl script in par/convert-pars.pl to convert old parameter
files to the new names)
* [from Mitica Vulcanov] many additions and fixes to
cosmological solutions and Schwarzschild-Lemaitre
* fix stress-energy tensor computations so they work -- before they were
all disabled in CVS (INCLUDES lines were commented out in interface.ccl)
due to requiring excessive friendship with evolution thorns
and/or public parameters; new code copies parameters to restricted
grid scalars, which Cactus automagically "pushes" to friends
* added some more tests to testsuite, though these don't yet work fully
Additional internal changes:
* rename many Fortran subroutines (and a few C ones too)
so their names start with the thorn name
to reduce the chances of name collisions with other thorns
* move all metrics to subdirectory so the main source directory isn't
so cluttered
* move two files containing subroutines which were never called
(they didn't belong in this thorn, but somehow got into cvs by accident)
into new archive/ directory
* some (small) improvements in efficiency -- the exact_model parameter
is now decoded from a keyword (string) to an integer once at INITIAL,
and that integer tested by the stress-energy tensor code,
rather than requiring a separate series of string tests at each grid
point (!) like the old stress-energy tensor code did
Modified Files:
ParamCheck.c added a check to make sure we don't try
to set the shift if it doesn't have storage
Startup.c
make.code.defn
slice_data.F
slice_evolve.F
slice_initialize.F
Added Files:
Bona_Masso_data.F moved from old exactdata.F
blended_boundary.F moved from old exactblendbound.F
boundary.F moved from old exactboundary.F
decode_pars.F new file to decode exact_model into integer,
copy parameters to grid scalars for Calc_Tmunu
code
gauge.F moved from old exactgauge.F
initialize.F moved from old exactinitialize.F
linear_extrap_one_bndry.F moved from old linextraponebound.F
metric.F moved from old exactmetric.F
xyz_blended_boundary.F moved from old exactcartblendbound.F
git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinInitialData/Exact/trunk@101 e296648e-0e4f-0410-bd07-d597d9acff87
Diffstat (limited to 'src/metric.F')
-rw-r--r-- | src/metric.F | 288 |
1 files changed, 288 insertions, 0 deletions
diff --git a/src/metric.F b/src/metric.F new file mode 100644 index 0000000..912f399 --- /dev/null +++ b/src/metric.F @@ -0,0 +1,288 @@ +c This subroutine calculates the 4-metric and its inverse at an event, +c by decoding decoded_exact_model and calling the appropriate subroutine +C $Header$ + +#include "cctk.h" +#include "cctk_Parameters.h" +#include "cctk_Arguments.h" + +#include "param_defs.inc" + + subroutine Exact__metric( + $ decoded_exact_model, + $ x, y, z, t, + $ gdtt, gdtx, gdty, gdtz, + $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, + $ gutt, gutx, guty, gutz, + $ guxx, guyy, guzz, guxy, guyz, guxz,rama) + + implicit none + DECLARE_CCTK_FUNCTIONS + +c arguments + CCTK_INT decoded_exact_model + CCTK_REAL x, y, z, t, + $ gdtt, gdtx, gdty, gdtz, + $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, + $ gutt, gutx, guty, gutz, + $ guxx, guyy, guzz, guxy, guyz, guxz, rama + +cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc + +c +c Minkowski spacetime +c + + if (decoded_exact_model .eq. EXACT__Minkowski) then + call Exact__Minkowski( + $ x, y, z, t, + $ gdtt, gdtx, gdty, gdtz, + $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, + $ gutt, gutx, guty, gutz, + $ guxx, guyy, guzz, guxy, guyz, guxz) + + elseif (decoded_exact_model .eq. EXACT__Minkowski_shift) then + call Exact__Minkowski_shift( + $ x, y, z, t, + $ gdtt, gdtx, gdty, gdtz, + $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, + $ gutt, gutx, guty, gutz, + $ guxx, guyy, guzz, guxy, guyz, guxz) + + elseif (decoded_exact_model .eq. EXACT__Minkowski_funny) then + call Exact__Minkowski_funny( + $ x, y, z, t, + $ gdtt, gdtx, gdty, gdtz, + $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, + $ gutt, gutx, guty, gutz, + $ guxx, guyy, guzz, guxy, guyz, guxz) + + elseif (decoded_exact_model .eq. EXACT__Minkowski_gauge_wave) then + call Exact__Minkowski_gauge_wave( + $ x, y, z, t, + $ gdtt, gdtx, gdty, gdtz, + $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, + $ gutt, gutx, guty, gutz, + $ guxx, guyy, guzz, guxy, guyz, guxz) + +cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc + +c +c black hole spacetimes +c + + elseif (decoded_exact_model .eq. EXACT__Schwarzschild_EF) then + call Exact__Schwarzschild_EF( + $ x, y, z, t, + $ gdtt, gdtx, gdty, gdtz, + $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, + $ gutt, gutx, guty, gutz, + $ guxx, guyy, guzz, guxy, guyz, guxz) + + elseif (decoded_exact_model .eq. EXACT__Schwarzschild_PG) then + call Exact__Schwarzschild_PG( + $ x, y, z, t, + $ gdtt, gdtx, gdty, gdtz, + $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, + $ gutt, gutx, guty, gutz, + $ guxx, guyy, guzz, guxy, guyz, guxz) + + elseif (decoded_exact_model .eq. EXACT__Schwarzschild_Novikov) then + call Exact__Schwarzschild_Novikov(x,y,z,t, + $ gdtt, gdtx, gdty, gdtz, + $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, + $ gutt, gutx, guty, gutz, + $ guxx, guyy, guzz, guxy, guyz, guxz) + + elseif (decoded_exact_model .eq. EXACT__Kerr_BoyerLindquist) then + call Exact__Kerr_BoyerLindquist( + $ x, y, z, t, + $ gdtt, gdtx, gdty, gdtz, + $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, + $ gutt, gutx, guty, gutz, + $ guxx, guyy, guzz, guxy, guyz, guxz) + + elseif (decoded_exact_model .eq. EXACT__Kerr_KerrSchild) then + call Exact__Kerr_KerrSchild( + $ x, y, z, t, + $ gdtt, gdtx, gdty, gdtz, + $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, + $ gutt, gutx, guty, gutz, + $ guxx, guyy, guzz, guxy, guyz, guxz) + + elseif (decoded_exact_model .eq. EXACT__Schwarzschild_Lemaitre) then + call Exact__Schwarzschild_Lemaitre( + $ x, y, z, t, + $ gdtt, gdtx, gdty, gdtz, + $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, + $ gutt, gutx, guty, gutz, + $ guxx, guyy, guzz, guxy, guyz, guxz) + + elseif (decoded_exact_model .eq. EXACT__multi_BH) then + call Exact__multi_BH( + $ x, y, z, t, + $ gdtt, gdtx, gdty, gdtz, + $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, + $ gutt, gutx, guty, gutz, + $ guxx, guyy, guzz, guxy, guyz, guxz) + +c +c not fully implemented yet -- see Nina Jansen for details +c +c elseif (decoded_exact_model .eq. EXACT__Alvi) then +c call Exact__Alvi( +c $ x, y, z, t, +c $ gdtt, gdtx, gdty, gdtz, +c $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, +c $ gutt, gutx, guty, gutz, +c $ guxx, guyy, guzz, guxy, guyz, guxz) +c + + elseif (decoded_exact_model .eq. EXACT__Thorne_fakebinary) then + call Exact__Thorne_fakebinary( + $ x, y, z, t, + $ gdtt, gdtx, gdty, gdtz, + $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, + $ gutt, gutx, guty, gutz, + $ guxx, guyy, guzz, guxy, guyz, guxz) + +cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc + +c +c cosmological spacetimes +c + + elseif (decoded_exact_model .eq. EXACT__Lemaitre) then + call Exact__Lemaitre( + $ x, y, z, t, + $ gdtt, gdtx, gdty, gdtz, + $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, + $ gutt, gutx, guty, gutz, + $ guxx, guyy, guzz, guxy, guyz, guxz) + + elseif (decoded_exact_model .eq. EXACT__Robertson_Walker) then + call Exact__Robertson_Walker( + $ x, y, z, t, + $ gdtt, gdtx, gdty, gdtz, + $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, + $ gutt, gutx, guty, gutz, + $ guxx, guyy, guzz, guxy, guyz, guxz,rama) + + elseif (decoded_exact_model .eq. EXACT__de_Sitter) then + call Exact__de_Sitter( + $ x, y, z, t, + $ gdtt, gdtx, gdty, gdtz, + $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, + $ gutt, gutx, guty, gutz, + $ guxx, guyy, guzz, guxy, guyz, guxz) + + elseif (decoded_exact_model .eq. EXACT__de_Sitter_Lambda) then + call Exact__de_Sitter_Lambda( + $ x, y, z, t, + $ gdtt, gdtx, gdty, gdtz, + $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, + $ gutt, gutx, guty, gutz, + $ guxx, guyy, guzz, guxy, guyz, guxz) + + elseif (decoded_exact_model .eq. EXACT__anti_de_Sitter_Lambda) then + call Exact__anti_de_Sitter_Lambda( + $ x, y, z, t, + $ gdtt, gdtx, gdty, gdtz, + $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, + $ gutt, gutx, guty, gutz, + $ guxx, guyy, guzz, guxy, guyz, guxz) + + elseif (decoded_exact_model .eq. EXACT__Bianchi_I) then + call Exact__Bianchi_I( + $ x, y, z, t, + $ gdtt, gdtx, gdty, gdtz, + $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, + $ gutt, gutx, guty, gutz, + $ guxx, guyy, guzz, guxy, guyz, guxz) + + elseif (decoded_exact_model .eq. EXACT__Goedel) then + call Exact__Goedel( + $ x, y, z, t, + $ gdtt, gdtx, gdty, gdtz, + $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, + $ gutt, gutx, guty, gutz, + $ guxx, guyy, guzz, guxy, guyz, guxz) + + elseif (decoded_exact_model .eq. EXACT__Bertotti) then + call Exact__Bertotti( + $ x, y, z, t, + $ gdtt, gdtx, gdty, gdtz, + $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, + $ gutt, gutx, guty, gutz, + $ guxx, guyy, guzz, guxy, guyz, guxz) + + elseif (decoded_exact_model .eq. EXACT__Kasner_like) then + call Exact__Kasner_like( + $ x, y, z, t, + $ gdtt, gdtx, gdty, gdtz, + $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, + $ gutt, gutx, guty, gutz, + $ guxx, guyy, guzz, guxy, guyz, guxz) + + elseif (decoded_exact_model .eq. EXACT__Kasner_axisymmetric) then + call Exact__Kasner_axisymmetric( + $ x, y, z, t, + $ gdtt, gdtx, gdty, gdtz, + $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, + $ gutt, gutx, guty, gutz, + $ guxx, guyy, guzz, guxy, guyz, guxz) + + elseif (decoded_exact_model .eq. EXACT__Kasner_generalized) then + call Exact__Kasner_generalized( + $ x, y, z, t, + $ gdtt, gdtx, gdty, gdtz, + $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, + $ gutt, gutx, guty, gutz, + $ guxx, guyy, guzz, guxy, guyz, guxz) + + elseif (decoded_exact_model .eq. EXACT__Milne) then + call Exact__Milne( + $ x, y, z, t, + $ gdtt, gdtx, gdty, gdtz, + $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, + $ gutt, gutx, guty, gutz, + $ guxx, guyy, guzz, guxy, guyz, guxz) + +cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc + +c +c miscellaneous spacetimes +c + + elseif (decoded_exact_model .eq. EXACT__boost_rotation_symmetric) then + call Exact__boost_rotation_symmetric( + $ x, y, z, t, + $ gdtt, gdtx, gdty, gdtz, + $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, + $ gutt, gutx, guty, gutz, + $ guxx, guyy, guzz, guxy, guyz, guxz) + + elseif (decoded_exact_model .eq. EXACT__bowl) then + call Exact__bowl( + $ x, y, z, t, + $ gdtt, gdtx, gdty, gdtz, + $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, + $ gutt, gutx, guty, gutz, + $ guxx, guyy, guzz, guxy, guyz, guxz) + + elseif (decoded_exact_model .eq. EXACT__constant_density_star) then + call Exact__constant_density_star( + $ x, y, z, t, + $ gdtt, gdtx, gdty, gdtz, + $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, + $ gutt, gutx, guty, gutz, + $ guxx, guyy, guzz, guxy, guyz, guxz) + +cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc + + else + call CCTK_WARN(0,"Unknown value of decoded_exact_model") + endif + + return + end |