aboutsummaryrefslogtreecommitdiff
path: root/CarpetExtra/SpaceTimeToy
diff options
context:
space:
mode:
authoreschnett <>2001-03-17 15:05:00 +0000
committereschnett <>2001-03-17 15:05:00 +0000
commitef1433fcc8f8e7521674f229d75a408c16af0f90 (patch)
tree8d4093b8485058b3fa9363588ba106a3b34dfd7f /CarpetExtra/SpaceTimeToy
parentb0432e3310d34454b72e6b674e249e64561c7e1c (diff)
Added new thorns SpaceTimeToy and IDSpaceTimeToy that implement the
Added new thorns SpaceTimeToy and IDSpaceTimeToy that implement the scalar wave equations with two scalar first-order equations using ICN integration. darcs-hash:20010317150549-f6438-0b30f528e2d969d7ff733be1c2d2de4ec0891725.gz
Diffstat (limited to 'CarpetExtra/SpaceTimeToy')
-rw-r--r--CarpetExtra/SpaceTimeToy/interface.ccl22
-rw-r--r--CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_coarse.par49
-rw-r--r--CarpetExtra/SpaceTimeToy/param.ccl15
-rw-r--r--CarpetExtra/SpaceTimeToy/schedule.ccl64
-rw-r--r--CarpetExtra/SpaceTimeToy/src/InitSymBound.F778
-rw-r--r--CarpetExtra/SpaceTimeToy/src/SpaceTimeToy.F77176
6 files changed, 95 insertions, 239 deletions
diff --git a/CarpetExtra/SpaceTimeToy/interface.ccl b/CarpetExtra/SpaceTimeToy/interface.ccl
index 1b0eaab8a..3d2a7c38c 100644
--- a/CarpetExtra/SpaceTimeToy/interface.ccl
+++ b/CarpetExtra/SpaceTimeToy/interface.ccl
@@ -1,37 +1,25 @@
# Interface definition for thorn SpaceTimeToy
-# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/interface.ccl,v 1.8 2004/05/21 17:43:57 schnetter Exp $
+# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/interface.ccl,v 1.1 2001/03/17 16:05:56 eschnett Exp $
implements: spacetimetoy
-inherits: hydrotoy grid
-
-
-
-CCTK_INT FUNCTION Boundary_SelectGroupForBC(CCTK_POINTER_TO_CONST IN GH, \
- CCTK_INT IN faces, CCTK_INT IN boundary_width, CCTK_INT IN table_handle, \
- CCTK_STRING IN group_name, CCTK_STRING IN bc_name)
-REQUIRES FUNCTION Boundary_SelectGroupForBC
+inherits: grid
public:
-CCTK_REAL spacetimeevolve type=GF timelevels=3
+CCTK_REAL scalarevolve type=GF timelevels=2
{
phi psi
-} "The evolved spacetime fields"
+} "The evolved scalar fields"
private:
-CCTK_REAL spacetimetemps type=GF
+CCTK_REAL scalartemps 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/par/spacetimetoy_periodic_coarse.par b/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_coarse.par
index ca078c0d4..beb11042c 100644
--- a/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_coarse.par
+++ b/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_coarse.par
@@ -7,54 +7,45 @@
# @enddesc
# @@*/
#
-# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_coarse.par,v 1.11 2004/03/23 12:00:15 schnetter Exp $
+# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_coarse.par,v 1.1 2001/03/17 16:05:56 eschnett Exp $
-ActiveThorns = "Boundary IOBasic IOUtil Time Cart3d Slab Carpet CarpetIOASCII CarpetIOFlexIO CarpetLib CarpetReduce CarpetRegrid CarpetSlab IDSpaceTimeToy SpaceTimeToy Hydrotoy"
-
-Carpet::poison_new_timelevels = yes
-#Carpet::check_for_poison = yes
-Carpet::checksum_timelevels = yes
+ActiveThorns = "Boundary IOBasic IOUtil Time Cart3d Carpet CarpetIOASCII CarpetIOFlexIO CarpetLib CarpetSlab IDSpaceTimeToy SpaceTimeToy"
Cactus::cctk_itlast = 60
Time::dtfac = 0.5
-driver::global_nx = 19
-driver::global_ny = 26
-driver::global_nz = 34
-
-driver::ghost_size = 2
+driver::global_nx = 17
+driver::global_ny = 24
+driver::global_nz = 32
grid::type = byrange
-grid::xmin = -5.4
-grid::ymin = -7.2
-grid::zmin = -9.6
-grid::xmax = 5.4
-grid::ymax = 7.8
-grid::zmax = 10.2
+grid::xmin = -4.8
+grid::ymin = -6.6
+grid::zmin = -9.0
+grid::xmax = 4.8
+grid::ymax = 7.2
+grid::zmax = 9.6
grid::mode = periodic
-IO::out_dir = "spacetimetoy_periodic_coarse"
+IO::outdir = "spacetimetoy_periodic_coarse"
IOBasic::outinfo_every = 1 # 10
-IOBasic::outinfo_vars = "spacetimetoy::spacetimeevolve"
+#IOBasic::outinfo_vars = "spacetimetoy::scalarevolve"
-IOBasic::outScalar_every = 1 # 2
-IOBasic::outScalar_vars = "spacetimetoy::spacetimeevolve"
+#IOBasic::outScalar_every = 2
+#IOBasic::outScalar_vars = "spacetimetoy::scalarevolve"
IOASCII::out1D_every = 1 # 2
-IOASCII::out1D_vars = "spacetimetoy::spacetimeevolve grid::coordinates"
+IOASCII::out1D_vars = "spacetimetoy::scalarevolve grid::coordinates"
-#IOFlexIO::out3D_every = 12
-#IOFlexIO::out3D_vars = "spacetimetoy::spacetimeevolve"
-#IOFlexIO::out3D_format = IEEE
-#IOFlexIO::out3D_extension = ".vcamr"
+IOFlexIO::out3D_every = 12
+IOFlexIO::out3D_vars = "spacetimetoy::scalarevolve"
+IOFlexIO::out3D_format = IEEE
-SpaceTimeToy::icn_iterations = 2
+SpaceTimeToy::icn_iterations = 1
SpaceTimeToy::bound = radiation
-HydroToy::hydrotoy_active = no
-
IDSpaceTimeToy::initial_data = plane
IDSpaceTimeToy::kx = 0.222222222222222 # 2 / ((32-2) * 0.3)
IDSpaceTimeToy::ky = 0.151515151515152 # 2 / ((46-2) * 0.3)
diff --git a/CarpetExtra/SpaceTimeToy/param.ccl b/CarpetExtra/SpaceTimeToy/param.ccl
index d129baa51..8a7f8b783 100644
--- a/CarpetExtra/SpaceTimeToy/param.ccl
+++ b/CarpetExtra/SpaceTimeToy/param.ccl
@@ -1,16 +1,15 @@
# Parameter definitions for thorn SpaceTimeToy
-# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/param.ccl,v 1.4 2003/06/18 18:24:29 schnetter Exp $
-
-shares: hydrotoy
-
-USES BOOLEAN hydrotoy_active
+# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/param.ccl,v 1.1 2001/03/17 16:05:56 eschnett Exp $
private:
-STRING bound "Type of boundary condition to use"
+KEYWORD bound "Type of boundary condition to use"
{
- ".*" :: "Must be a registered boundary condition"
-} "Static"
+ "flat" :: "Flat boundary condition"
+ "radiation" :: "Radiation boundary condition"
+ "robin" :: "Robin boundary condition"
+ "zero" :: "Zero boundary condition"
+} "zero"
CCTK_INT icn_iterations "Number of ICN iterations to take after the initial Euler step"
{
diff --git a/CarpetExtra/SpaceTimeToy/schedule.ccl b/CarpetExtra/SpaceTimeToy/schedule.ccl
index 85afb3e27..5e4c70ccd 100644
--- a/CarpetExtra/SpaceTimeToy/schedule.ccl
+++ b/CarpetExtra/SpaceTimeToy/schedule.ccl
@@ -1,7 +1,7 @@
# Schedule definitions for thorn SpaceTimeToy
-# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/schedule.ccl,v 1.8 2003/11/05 16:18:40 schnetter Exp $
+# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/schedule.ccl,v 1.1 2001/03/17 16:05:56 eschnett Exp $
-STORAGE: spacetimeevolve[3]
+STORAGE: scalarevolve
STORAGE: icn_state
@@ -21,64 +21,20 @@ schedule SpaceTimeToy_InitSymBound at BASEGRID
-# Iterative Crank-Nicholson integration
+# ICN integration
-schedule SpaceTimeToy_EulerStep at EVOL \
- after HydroToy_EulerPredictor
+schedule SpaceTimeToy_EulerStep at EVOL
{
LANG: Fortran
- STORAGE: spacetimetemps hydrotemps
+ STORAGE: scalartemps
+ SYNC: scalarevolve
} "Initial Euler step"
-
-schedule SpaceTimeToy_Boundaries at EVOL \
- after SpaceTimeToy_EulerStep
-{
- LANG: Fortran
- SYNC: spacetimeevolve
-} "Select boundary conditions after initial Euler step"
-
-schedule GROUP ApplyBCs at EVOL \
- after SpaceTimeToy_Boundaries
-{
-} "Apply boundary conditions after initial Euler step"
-
-
-
-schedule GROUP SpaceTimeToy_ICNLoop at EVOL \
+
+schedule SpaceTimeToy_ICNStep at EVOL \
after SpaceTimeToy_EulerStep \
- after HydroToy_EulerPredictor \
- before HydroToy_EulerCorrector \
while SpaceTimeToy::do_iterate
{
-} "All ICN steps"
-
-schedule SpaceTimeToy_ICNStep in SpaceTimeToy_ICNLoop
-{
LANG: Fortran
- STORAGE: spacetimetemps hydrotemps
+ STORAGE: scalartemps
+ SYNC: scalarevolve
} "One ICN step"
-
-schedule SpaceTimeToy_Boundaries in SpaceTimeToy_ICNLoop \
- after SpaceTimeToy_ICNStep
-{
- LANG: Fortran
- SYNC: spacetimeevolve
-} "Select boundary conditions after ICN step"
-
-schedule GROUP ApplyBCs in SpaceTimeToy_ICNLoop \
- after SpaceTimeToy_Boundaries
-{
-} "Apply boundary conditions after ICN step"
-
-
-
-schedule SpaceTimeToy_Boundaries at POSTRESTRICT
-{
- LANG: Fortran
- SYNC: spacetimeevolve
-} "Select boundary conditions after restricting"
-
-schedule GROUP ApplyBCs at POSTRESTRICT \
- after SpaceTimeToy_Boundaries
-{
-} "Apply boundary conditions after restricting"
diff --git a/CarpetExtra/SpaceTimeToy/src/InitSymBound.F77 b/CarpetExtra/SpaceTimeToy/src/InitSymBound.F77
index ab98da34a..99e402925 100644
--- a/CarpetExtra/SpaceTimeToy/src/InitSymBound.F77
+++ b/CarpetExtra/SpaceTimeToy/src/InitSymBound.F77
@@ -1,9 +1,8 @@
c -*-Fortran-*-
-c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/src/InitSymBound.F77,v 1.4 2003/11/05 16:18:40 schnetter Exp $
+c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/src/InitSymBound.F77,v 1.1 2001/03/17 16:05:56 eschnett Exp $
#include "cctk.h"
#include "cctk_Arguments.h"
-#include "cctk_Functions.h"
#include "cctk_Parameters.h"
subroutine SpaceTimeToy_InitSymBound (CCTK_ARGUMENTS)
@@ -15,6 +14,11 @@ c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/src/InitS
DECLARE_CCTK_PARAMETERS
integer ierr
+ integer sym(3)
+
+ sym(1) = 1
+ sym(2) = 1
+ sym(3) = 1
call Cart3dSetTensorTypeVN (ierr, cctkGH, "SpaceTimeToy::phi", "scalar")
call Cart3dSetTensorTypeVN (ierr, cctkGH, "SpaceTimeToy::psi", "scalar")
diff --git a/CarpetExtra/SpaceTimeToy/src/SpaceTimeToy.F77 b/CarpetExtra/SpaceTimeToy/src/SpaceTimeToy.F77
index 0fbc5963e..cc7f58ed6 100644
--- a/CarpetExtra/SpaceTimeToy/src/SpaceTimeToy.F77
+++ b/CarpetExtra/SpaceTimeToy/src/SpaceTimeToy.F77
@@ -1,10 +1,9 @@
c -*-Fortran-*-
-c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/src/SpaceTimeToy.F77,v 1.12 2003/11/05 16:18:40 schnetter Exp $
+c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/SpaceTimeToy/src/SpaceTimeToy.F77,v 1.1 2001/03/17 16:05:56 eschnett Exp $
-#include "cctk.h"
-#include "cctk_Arguments.h"
-#include "cctk_Functions.h"
+#include "cctk.h"
#include "cctk_Parameters.h"
+#include "cctk_Arguments.h"
@@ -23,46 +22,14 @@ c Copy
do j=1,cctk_lsh(2)
do i=1,cctk_lsh(1)
- phi_i(i,j,k) = phi_p(i,j,k)
- psi_i(i,j,k) = psi_p(i,j,k)
+ phi_i(i,j,k) = phi(i,j,k)
+ psi_i(i,j,k) = psi(i,j,k)
end do
end do
end do
- if (hydrotoy_active.eq.1) then
-
- do k=1,cctk_lsh(3)
- do j=1,cctk_lsh(2)
- do i=1,cctk_lsh(1)
-
- u_i(i,j,k) = u_p(i,j,k)
- vx_i(i,j,k) = vx_p(i,j,k)
- vy_i(i,j,k) = vy_p(i,j,k)
- vz_i(i,j,k) = vz_p(i,j,k)
-
- end do
- end do
- end do
-
- else
-
- do k=1,cctk_lsh(3)
- do j=1,cctk_lsh(2)
- do i=1,cctk_lsh(1)
-
- u_i(i,j,k) = 0
- vx_i(i,j,k) = 0
- vy_i(i,j,k) = 0
- vz_i(i,j,k) = 0
-
- end do
- end do
- end do
-
- end if
-
-c Evolve
+c Evolve and apply boundaries
call SpaceTimeToy_Step (CCTK_PASS_FTOF)
c Initialise ICN iterations
@@ -94,46 +61,14 @@ c Average
do j=1,cctk_lsh(2)
do i=1,cctk_lsh(1)
- phi_i(i,j,k) = half * (phi_p(i,j,k) + phi(i,j,k))
- psi_i(i,j,k) = half * (psi_p(i,j,k) + psi(i,j,k))
+ 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))
end do
end do
end do
- if (hydrotoy_active.eq.1) then
-
- do k=1,cctk_lsh(3)
- do j=1,cctk_lsh(2)
- do i=1,cctk_lsh(1)
-
- u_i(i,j,k) = half * (u_p(i,j,k) + u(i,j,k))
- vx_i(i,j,k) = half * (vx_p(i,j,k) + vx(i,j,k))
- vy_i(i,j,k) = half * (vy_p(i,j,k) + vy(i,j,k))
- vz_i(i,j,k) = half * (vz_p(i,j,k) + vz(i,j,k))
-
- end do
- end do
- end do
-
- else
-
- do k=1,cctk_lsh(3)
- do j=1,cctk_lsh(2)
- do i=1,cctk_lsh(1)
-
- u_i(i,j,k) = 0
- vx_i(i,j,k) = 0
- vy_i(i,j,k) = 0
- vz_i(i,j,k) = 0
-
- end do
- end do
- end do
-
- end if
-
-c Evolve
+c Evolve and apply boundaries
call SpaceTimeToy_Step (CCTK_PASS_FTOF)
c Step ICN iterations
@@ -154,82 +89,65 @@ 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=1+cctk_nghostzones(3),cctk_lsh(3)-cctk_nghostzones(3)
- do j=1+cctk_nghostzones(2),cctk_lsh(2)-cctk_nghostzones(2)
- do i=1+cctk_nghostzones(1),cctk_lsh(1)-cctk_nghostzones(1)
+ do k=2,cctk_lsh(3)-1
+ do j=2,cctk_lsh(2)-1
+ do i=2,cctk_lsh(1)-1
- phi(i,j,k) = phi_p(i,j,k)
+ phi_n(i,j,k) = phi(i,j,k)
$ + dt * psi_i(i,j,k)
- $ + dt * u_i(i,j,k)
- psi(i,j,k) = psi_p(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
-
- character fbound*1000
- CCTK_INT fboundlen
-
- integer options
-
- CCTK_INT boundary_width
- CCTK_INT options1
-
- integer d
- integer ierr
-
- boundary_width = cctk_nghostzones(1)
- do d=1,3
- if (cctk_nghostzones(d) .ne. boundary_width) then
- call CCTK_WARN (0, "internal error")
- end if
- end do
-
- call Util_TableCreateFromString (options, "")
- if (options .lt. 0) call CCTK_WARN (0, "internal error")
-
- call CCTK_FortranString (fboundlen, bound, fbound)
-
- options1 = options
- ierr = Boundary_SelectGroupForBC (cctkGH, CCTK_ALL_FACES, boundary_width, options1, "spacetimetoy::spacetimeevolve", fbound)
- if (ierr .lt. 0) then
- call CCTK_WARN (0, "Error while selecting boundary condition")
+c Apply boundary condition
+ if (CCTK_EQUALS(bound, "flat")) then
+ call BndFlatGN (ierr, cctkGH, sw, "spacetimetoy::scalarevolve")
+ else if (CCTK_EQUALS(bound, "zero")) then
+ call BndScalarGN (ierr, cctkGH, zero, sw,
+ $ "spacetimetoy::scalarevolve")
+ else if (CCTK_EQUALS(bound, "radiation")) then
+ call BndRadiativeGN (ierr, cctkGH, sw, zero, one,
+ $ "spacetimetoy::scalarevolve", "spacetimetoy::scalarevolve")
+ else if (CCTK_EQUALS(bound, "robin")) then
+ call BndRobinGN (ierr, cctkGH, sw, finf, npow,
+ $ "spacetimetoy::scalarevolve")
+ else
+ call CCTK_WARN (0, "Internal error")
+ end if
+ if (ierr .lt. 0) then
+ call CCTK_WARN (0, "Error while applying boundary condition")
end if
- call Util_TableDestroy (ierr, options)
- if (ierr .lt. 0) call CCTK_WARN (0, "internal error")
-
- call Cart3dSymGN (ierr, cctkGH, "spacetimetoy::spacetimeevolve")
- if (ierr .lt. 0) then
- call CCTK_WARN (0, "Error while applying symmetry condition")
+ call Cart3dSymGN (ierr, cctkGH, "spacetimetoy::scalarevolve")
+ if (ierr .lt. 0) then
+ call CCTK_WARN (0, "Error while applying boundary condition")
end if
-
+
end