aboutsummaryrefslogtreecommitdiff
path: root/CarpetExtra/SpaceTimeToy
diff options
context:
space:
mode:
authoreschnett <>2001-03-20 15:29:00 +0000
committereschnett <>2001-03-20 15:29:00 +0000
commitdf4a7756bc05f4c73adfb96f45095d746540df40 (patch)
tree3eb4d030743836f2d11dbfa421381eadd7390fd5 /CarpetExtra/SpaceTimeToy
parent0fdb8003034282afe1c05e07080c56b618dfab41 (diff)
Coupled SpaceTimeToy and HydroToy.
darcs-hash:20010320152952-f6438-ec6766c9c888f4ab4a2f15ff7fbe875db054a5a1.gz
Diffstat (limited to 'CarpetExtra/SpaceTimeToy')
-rw-r--r--CarpetExtra/SpaceTimeToy/interface.ccl8
-rw-r--r--CarpetExtra/SpaceTimeToy/schedule.ccl7
-rw-r--r--CarpetExtra/SpaceTimeToy/src/SpaceTimeToy.F7763
3 files changed, 60 insertions, 18 deletions
diff --git a/CarpetExtra/SpaceTimeToy/interface.ccl b/CarpetExtra/SpaceTimeToy/interface.ccl
index 9f89f767b..3bf9427d0 100644
--- a/CarpetExtra/SpaceTimeToy/interface.ccl
+++ b/CarpetExtra/SpaceTimeToy/interface.ccl
@@ -1,7 +1,8 @@
# Interface definition for thorn SpaceTimeToy
-# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/interface.ccl,v 1.2 2001/03/18 22:37:10 eschnett Exp $
+# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/interface.ccl,v 1.3 2001/03/20 16:29:52 eschnett Exp $
implements: spacetimetoy
+inherits: hydrotoy
@@ -19,6 +20,11 @@ CCTK_REAL spacetimetemps type=GF
phi_i psi_i
} "Intermediate values for the integrator"
+CCTK_REAL hydrotemps type=GF
+{
+ u_i vx_i vy_i vz_i
+} "Intermediate vales for the integrator"
+
private:
diff --git a/CarpetExtra/SpaceTimeToy/schedule.ccl b/CarpetExtra/SpaceTimeToy/schedule.ccl
index e4fcc5457..e536f3b56 100644
--- a/CarpetExtra/SpaceTimeToy/schedule.ccl
+++ b/CarpetExtra/SpaceTimeToy/schedule.ccl
@@ -1,5 +1,5 @@
# Schedule definitions for thorn SpaceTimeToy
-# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/schedule.ccl,v 1.2 2001/03/18 22:37:10 eschnett Exp $
+# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/schedule.ccl,v 1.3 2001/03/20 16:29:52 eschnett Exp $
STORAGE: spacetimeevolve
STORAGE: icn_state
@@ -23,7 +23,8 @@ schedule SpaceTimeToy_InitSymBound at BASEGRID
# Iterative Crank-Nicholson integration
-schedule SpaceTimeToy_EulerStep at EVOL
+schedule SpaceTimeToy_EulerStep at EVOL \
+ after HydroToy_EulerPredictor
{
LANG: Fortran
STORAGE: spacetimetemps
@@ -32,6 +33,8 @@ schedule SpaceTimeToy_EulerStep at EVOL
schedule SpaceTimeToy_ICNStep at EVOL \
after SpaceTimeToy_EulerStep \
+ after HydroToy_EulerPredictor \
+ before HydroToy_EulerCorrector \
while SpaceTimeToy::do_iterate
{
LANG: Fortran
diff --git a/CarpetExtra/SpaceTimeToy/src/SpaceTimeToy.F77 b/CarpetExtra/SpaceTimeToy/src/SpaceTimeToy.F77
index 31c2868f9..e62b60bc2 100644
--- a/CarpetExtra/SpaceTimeToy/src/SpaceTimeToy.F77
+++ b/CarpetExtra/SpaceTimeToy/src/SpaceTimeToy.F77
@@ -1,5 +1,5 @@
c -*-Fortran-*-
-c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/src/SpaceTimeToy.F77,v 1.3 2001/03/19 21:30:45 eschnett Exp $
+c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/src/SpaceTimeToy.F77,v 1.4 2001/03/20 16:29:55 eschnett Exp $
#include "cctk.h"
#include "cctk_Parameters.h"
@@ -25,13 +25,21 @@ c Copy
phi_i(i,j,k) = phi(i,j,k)
psi_i(i,j,k) = psi(i,j,k)
+ u_i(i,j,k) = u(i,j,k)
+ vx_i(i,j,k) = vx(i,j,k)
+ vy_i(i,j,k) = vy(i,j,k)
+ vz_i(i,j,k) = vz(i,j,k)
+
end do
end do
end do
-c Evolve and apply boundaries
+c Evolve
call SpaceTimeToy_Step (CCTK_PASS_FTOF)
+c Apply boundaries
+ call SpaceTimeToy_Boundaries (CCTK_PASS_FTOF)
+
c Initialise ICN iterations
icn_iteration = 0
do_iterate = 1
@@ -64,13 +72,21 @@ c Average
phi_i(i,j,k) = half * (phi(i,j,k) + phi_n(i,j,k))
psi_i(i,j,k) = half * (psi(i,j,k) + psi_n(i,j,k))
+ u_i(i,j,k) = half * (u(i,j,k) + u_n(i,j,k))
+ vx_i(i,j,k) = half * (vx(i,j,k) + vx_n(i,j,k))
+ vy_i(i,j,k) = half * (vy(i,j,k) + vy_n(i,j,k))
+ vz_i(i,j,k) = half * (vz(i,j,k) + vz_n(i,j,k))
+
end do
end do
end do
-c Evolve and apply boundaries
+c Evolve
call SpaceTimeToy_Step (CCTK_PASS_FTOF)
+c Apply boundaries
+ call SpaceTimeToy_Boundaries (CCTK_PASS_FTOF)
+
c Step ICN iterations
icn_iteration = icn_iteration + 1
if (icn_iteration .eq. icn_iterations) then
@@ -89,26 +105,14 @@ c Step ICN iterations
DECLARE_CCTK_FUNCTIONS
DECLARE_CCTK_PARAMETERS
- CCTK_REAL zero, one
- parameter (zero=0, one=1)
-
- CCTK_REAL finf, npow
- parameter (finf=1, npow=1)
-
CCTK_REAL dx,dy,dz,dt
integer i,j,k
- integer sw(3)
- integer ierr
dx = CCTK_DELTA_SPACE(1)
dy = CCTK_DELTA_SPACE(2)
dz = CCTK_DELTA_SPACE(3)
dt = CCTK_DELTA_TIME
- sw(1) = 1
- sw(2) = 1
- sw(3) = 1
-
c Evolve
do k=2,cctk_lsh(3)-1
do j=2,cctk_lsh(2)-1
@@ -116,16 +120,45 @@ c Evolve
phi_n(i,j,k) = phi(i,j,k)
$ + dt * psi_i(i,j,k)
+ $ + dt * u_i(i,j,k)
psi_n(i,j,k) = psi(i,j,k)
$ + dt * (phi_i(i-1,j,k) - 2*phi_i(i,j,k) + phi_i(i+1,j,k)) / dx**2
$ + dt * (phi_i(i,j-1,k) - 2*phi_i(i,j,k) + phi_i(i,j+1,k)) / dy**2
$ + dt * (phi_i(i,j,k-1) - 2*phi_i(i,j,k) + phi_i(i,j,k+1)) / dz**2
+ $ - dt * (vx_i(i+1,j,k) - vx_i(i-1,j,k)) / (2*dx)
+ $ - dt * (vy_i(i,j+1,k) - vy_i(i,j-1,k)) / (2*dy)
+ $ - dt * (vz_i(i,j,k+1) - vz_i(i,j,k-1)) / (2*dz)
end do
end do
end do
+ end
+
+
+
+ subroutine SpaceTimeToy_Boundaries (CCTK_ARGUMENTS)
+
+ implicit none
+
+ DECLARE_CCTK_ARGUMENTS
+ DECLARE_CCTK_FUNCTIONS
+ DECLARE_CCTK_PARAMETERS
+
+ CCTK_REAL zero, one
+ parameter (zero=0, one=1)
+
+ CCTK_REAL finf, npow
+ parameter (finf=1, npow=1)
+
+ integer sw(3)
+ integer ierr
+
+ sw(1) = 1
+ sw(2) = 1
+ sw(3) = 1
+
c Apply boundary condition
if (CCTK_EQUALS(bound, "flat")) then
call BndFlatGN (ierr, cctkGH, sw, "spacetimetoy::spacetimeevolve")