aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorschnetter <schnetter@e296648e-0e4f-0410-bd07-d597d9acff87>2005-03-20 16:47:38 +0000
committerschnetter <schnetter@e296648e-0e4f-0410-bd07-d597d9acff87>2005-03-20 16:47:38 +0000
commitff281c277ae66fd72d98e327420027aabf9bb625 (patch)
tree2922a37d9c8dd8df28a6b1a52f6a4f517353cade /src
parent926d3ad367fe20e47e77e90d0dfe630fc9639760 (diff)
Add the shifted gauge wave exact solution
git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinInitialData/Exact/trunk@219 e296648e-0e4f-0410-bd07-d597d9acff87
Diffstat (limited to 'src')
-rw-r--r--src/decode_pars.F772
-rw-r--r--src/include/Scalar_CalcTmunu.inc2
-rw-r--r--src/include/param_defs.inc11
-rw-r--r--src/metric.F779
-rw-r--r--src/metrics/Minkowski_shifted_gauge_wave.F77118
5 files changed, 137 insertions, 5 deletions
diff --git a/src/decode_pars.F77 b/src/decode_pars.F77
index 6574d23..1b7da46 100644
--- a/src/decode_pars.F77
+++ b/src/decode_pars.F77
@@ -58,6 +58,8 @@ c Minkowski spacetime
decoded_exact_model = EXACT__Minkowski_funny
elseif (CCTK_Equals(exact_model, "Minkowski/gauge wave") .ne. 0) then
decoded_exact_model = EXACT__Minkowski_gauge_wave
+ elseif (CCTK_Equals(exact_model, "Minkowski/shifted gauge wave") .ne. 0) then
+ decoded_exact_model = EXACT__Minkowski_shifted_gauge_wave
elseif (CCTK_Equals(exact_model, "Minkowski/conf wave") .ne. 0) then
decoded_exact_model = EXACT__Minkowski_conf_wave
diff --git a/src/include/Scalar_CalcTmunu.inc b/src/include/Scalar_CalcTmunu.inc
index 6da31cb..346fe09 100644
--- a/src/include/Scalar_CalcTmunu.inc
+++ b/src/include/Scalar_CalcTmunu.inc
@@ -40,6 +40,8 @@ c no stress-energy tensor in this model
c no stress-energy tensor in this model
elseif (decoded_exact_model .eq. EXACT__Minkowski_gauge_wave) then
c no stress-energy tensor in this model
+ elseif (decoded_exact_model .eq. EXACT__Minkowski_shifted_gauge_wave) then
+c no stress-energy tensor in this model
elseif (decoded_exact_model .eq. EXACT__Minkowski_conf_wave) then
c no stress-energy tensor in this model
diff --git a/src/include/param_defs.inc b/src/include/param_defs.inc
index 2361c5f..10bbefa 100644
--- a/src/include/param_defs.inc
+++ b/src/include/param_defs.inc
@@ -30,11 +30,12 @@ c of subroutines for the individual metric types!
c
c Minkowski spacetime
-#define EXACT__Minkowski 1
-#define EXACT__Minkowski_shift 2
-#define EXACT__Minkowski_funny 3
-#define EXACT__Minkowski_gauge_wave 4
-#define EXACT__Minkowski_conf_wave 5
+#define EXACT__Minkowski 1
+#define EXACT__Minkowski_shift 2
+#define EXACT__Minkowski_funny 3
+#define EXACT__Minkowski_gauge_wave 4
+#define EXACT__Minkowski_shifted_gauge_wave 5
+#define EXACT__Minkowski_conf_wave 6
c black hole spacetimes
#define EXACT__Schwarzschild_EF 10
diff --git a/src/metric.F77 b/src/metric.F77
index 1fdc0b5..a93ea12 100644
--- a/src/metric.F77
+++ b/src/metric.F77
@@ -77,6 +77,15 @@ c
$ guxx, guyy, guzz, guxy, guyz, guxz,
$ psi, Tmunu_flag)
+ elseif (decoded_exact_model .eq. EXACT__Minkowski_shifted_gauge_wave) then
+ call Exact__Minkowski_shifted_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,
+ $ psi, Tmunu_flag)
+
elseif (decoded_exact_model .eq. EXACT__Minkowski_conf_wave) then
call Exact__Minkowski_conf_wave(
$ x, y, z, t,
diff --git a/src/metrics/Minkowski_shifted_gauge_wave.F77 b/src/metrics/Minkowski_shifted_gauge_wave.F77
new file mode 100644
index 0000000..2806a58
--- /dev/null
+++ b/src/metrics/Minkowski_shifted_gauge_wave.F77
@@ -0,0 +1,118 @@
+C This subroutine sets up Minkowski spacetime with a gague wave.
+C
+c $Header$
+C
+C Author: unknown
+C Copyright/License: unknown
+C
+
+#include "cctk.h"
+#include "cctk_Parameters.h"
+#include "cctk_Functions.h"
+
+#define Pi (4 * atan(1.d0))
+
+
+ subroutine Exact__Minkowski_shifted_gauge_wave(
+ $ x, y, z, t,
+ $ gdtt, gdtx, gdty, gdtz,
+ $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx,
+ $ gutt, gutx, guty, gutz,
+ $ guxx, guyy, guzz, guxy, guyz, guzx,
+ $ psi, Tmunu_flag)
+
+ implicit none
+ DECLARE_CCTK_PARAMETERS
+ DECLARE_CCTK_FUNCTIONS
+
+c input arguments
+ CCTK_REAL x, y, z, t
+
+c output arguments
+ CCTK_REAL gdtt, gdtx, gdty, gdtz,
+ $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx,
+ $ gutt, gutx, guty, gutz,
+ $ guxx, guyy, guzz, guxy, guyz, guzx
+ CCTK_REAL psi
+ LOGICAL Tmunu_flag
+
+c local parameter copies
+ CCTK_REAL a, o, d, fs
+
+c local variables
+ CCTK_REAL H
+ character*100 warn_buffer
+
+c constants
+ CCTK_REAL zero,half,one
+ parameter (zero = 0.0d0, half=0.5d0, one=1.0d0)
+
+C This is a vacuum spacetime with no cosmological constant
+ Tmunu_flag = .false.
+
+C Get parameters of the exact solution.
+ a = Minkowski_gauge_wave__amplitude
+ o = Minkowski_gauge_wave__omega
+ d = Minkowski_gauge_wave__lambda
+ fs = Minkowski_gauge_wave__phase
+
+C How should the wave look like.
+ if (CCTK_EQUALS(Minkowski_gauge_wave__what_fn,"sin")) then
+ d = Minkowski_gauge_wave__lambda * half / Pi
+ if (Minkowski_gauge_wave__diagonal.ne.0) then
+ H = a * sin((x-y)/d - o*t/d - fs)
+ else
+ H = a * sin((x-o*t)/d - fs)
+ end if
+ else
+ write (warn_buffer, '(a,a,a)')
+ $ 'Unknown Minkowski_gauge_wave__what_fn = "',
+ $ Minkowski_gauge_wave__what_fn, '"'
+ call CCTK_WARN(0, warn_buffer)
+ end if
+
+C write metric.
+
+ if (Minkowski_gauge_wave__diagonal.ne.0) then
+
+ gdxx = half * H + one
+ gdxy = - half * H
+ gdyy = half * H + one
+
+ guxx = - half * H + one
+ guxy = half * H
+ guyy = - half * H + one
+
+ else
+
+ gdxx = H + one
+ gdxy = zero
+ gdyy = one
+
+ guxx = - H + one
+ guxy = zero
+ guyy = one
+
+ end if
+
+ gdtt = H - one
+ gdtx = - H
+ gdty = zero
+ gdtz = zero
+
+ gdzx = zero
+ gdyz = zero
+ gdzz = one
+
+C and upper metric.
+
+ gutt = - H - one
+ gutx = - H
+ guty = zero
+ gutz = zero
+
+ guyz = zero
+ guzx = zero
+ guzz = one
+
+ end