From df4a7756bc05f4c73adfb96f45095d746540df40 Mon Sep 17 00:00:00 2001 From: eschnett <> Date: Tue, 20 Mar 2001 15:29:00 +0000 Subject: Coupled SpaceTimeToy and HydroToy. darcs-hash:20010320152952-f6438-ec6766c9c888f4ab4a2f15ff7fbe875db054a5a1.gz --- CarpetExtra/SpaceTimeToy/interface.ccl | 8 +++- CarpetExtra/SpaceTimeToy/schedule.ccl | 7 ++- CarpetExtra/SpaceTimeToy/src/SpaceTimeToy.F77 | 63 ++++++++++++++++++++------- 3 files changed, 60 insertions(+), 18 deletions(-) (limited to 'CarpetExtra/SpaceTimeToy') 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") -- cgit v1.2.3