diff options
author | eschnett <> | 2001-03-17 15:05:00 +0000 |
---|---|---|
committer | eschnett <> | 2001-03-17 15:05:00 +0000 |
commit | ef1433fcc8f8e7521674f229d75a408c16af0f90 (patch) | |
tree | 8d4093b8485058b3fa9363588ba106a3b34dfd7f | |
parent | b0432e3310d34454b72e6b674e249e64561c7e1c (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
-rw-r--r-- | CarpetExtra/IDSpaceTimeToy/README | 4 | ||||
-rw-r--r-- | CarpetExtra/IDSpaceTimeToy/interface.ccl | 4 | ||||
-rw-r--r-- | CarpetExtra/IDSpaceTimeToy/param.ccl | 6 | ||||
-rw-r--r-- | CarpetExtra/IDSpaceTimeToy/schedule.ccl | 7 | ||||
-rw-r--r-- | CarpetExtra/IDSpaceTimeToy/src/InitialData.F77 | 116 | ||||
-rw-r--r-- | CarpetExtra/SpaceTimeToy/interface.ccl | 22 | ||||
-rw-r--r-- | CarpetExtra/SpaceTimeToy/par/spacetimetoy_periodic_coarse.par | 49 | ||||
-rw-r--r-- | CarpetExtra/SpaceTimeToy/param.ccl | 15 | ||||
-rw-r--r-- | CarpetExtra/SpaceTimeToy/schedule.ccl | 64 | ||||
-rw-r--r-- | CarpetExtra/SpaceTimeToy/src/InitSymBound.F77 | 8 | ||||
-rw-r--r-- | CarpetExtra/SpaceTimeToy/src/SpaceTimeToy.F77 | 176 | ||||
-rw-r--r-- | CarpetExtra/WaveToyF77/param.ccl | 4 |
12 files changed, 125 insertions, 350 deletions
diff --git a/CarpetExtra/IDSpaceTimeToy/README b/CarpetExtra/IDSpaceTimeToy/README index 28838ffce..1f82fb9ed 100644 --- a/CarpetExtra/IDSpaceTimeToy/README +++ b/CarpetExtra/IDSpaceTimeToy/README @@ -1,6 +1,6 @@ Cactus Code Thorn IDSpaceTimeToy -Authors : Erik Schnetter <schnetter@uni-tuebingen.de> -CVS info : $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/IDSpaceTimeToy/README,v 1.2 2001/03/18 22:37:10 eschnett Exp $ +Authors : Erik Schnetter +CVS info : $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/IDSpaceTimeToy/README,v 1.1 2001/03/17 16:05:49 eschnett Exp $ -------------------------------------------------------------------------- Purpose of the thorn: diff --git a/CarpetExtra/IDSpaceTimeToy/interface.ccl b/CarpetExtra/IDSpaceTimeToy/interface.ccl index 6e67bea74..801f8550b 100644 --- a/CarpetExtra/IDSpaceTimeToy/interface.ccl +++ b/CarpetExtra/IDSpaceTimeToy/interface.ccl @@ -1,5 +1,5 @@ # Interface definition for thorn IDSpaceTimeToy -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/IDSpaceTimeToy/interface.ccl,v 1.2 2001/03/20 17:27:26 eschnett Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/IDSpaceTimeToy/interface.ccl,v 1.1 2001/03/17 16:05:49 eschnett Exp $ implements: idspacetimetoy -inherits: spacetimetoy hydrotoy grid +inherits: spacetimetoy grid diff --git a/CarpetExtra/IDSpaceTimeToy/param.ccl b/CarpetExtra/IDSpaceTimeToy/param.ccl index ac7cea505..8a708604c 100644 --- a/CarpetExtra/IDSpaceTimeToy/param.ccl +++ b/CarpetExtra/IDSpaceTimeToy/param.ccl @@ -1,9 +1,9 @@ # Parameter definitions for thorn IDSpaceTimeToy -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/IDSpaceTimeToy/param.ccl,v 1.3 2002/03/23 20:21:00 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/IDSpaceTimeToy/param.ccl,v 1.1 2001/03/17 16:05:49 eschnett Exp $ -shares: hydrotoy +shares: grid -USES BOOLEAN hydrotoy_active +USES KEYWORD type restricted: diff --git a/CarpetExtra/IDSpaceTimeToy/schedule.ccl b/CarpetExtra/IDSpaceTimeToy/schedule.ccl index 8a6c9e306..763983419 100644 --- a/CarpetExtra/IDSpaceTimeToy/schedule.ccl +++ b/CarpetExtra/IDSpaceTimeToy/schedule.ccl @@ -1,14 +1,13 @@ # Schedule definitions for thorn IDSpaceTimeToy -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/IDSpaceTimeToy/schedule.ccl,v 1.5 2003/11/05 16:18:40 schnetter Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/IDSpaceTimeToy/schedule.ccl,v 1.1 2001/03/17 16:05:50 eschnett Exp $ schedule IDSpaceTimeToy_Startup at STARTUP { LANG: Fortran } "Register banner" -schedule IDSpaceTimeToy_InitialData as SpaceTimeToy_InitialData at INITIAL \ - after IDHydroToy_InitialData +schedule IDSpaceTimeToy_InitialData as SpaceTimeToy_InitialData at INITIAL { LANG: Fortran - STORAGE: spacetimetoy::spacetimeevolve[3] + STORAGE: spacetimetoy::scalarevolve } "Initial data for 3D wave equation" diff --git a/CarpetExtra/IDSpaceTimeToy/src/InitialData.F77 b/CarpetExtra/IDSpaceTimeToy/src/InitialData.F77 index 118f0d075..ea770344b 100644 --- a/CarpetExtra/IDSpaceTimeToy/src/InitialData.F77 +++ b/CarpetExtra/IDSpaceTimeToy/src/InitialData.F77 @@ -1,10 +1,9 @@ c -*-Fortran-*- -c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/IDSpaceTimeToy/src/InitialData.F77,v 1.8 2003/11/05 16:18:40 schnetter Exp $ +c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/IDSpaceTimeToy/src/InitialData.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" +#include "cctk_Arguments.h" subroutine IDSpaceTimeToy_InitialData (CCTK_ARGUMENTS) @@ -16,42 +15,24 @@ c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/IDSpaceTimeToy/src/Ini CCTK_REAL pi CCTK_REAL omega - CCTK_REAL dt - CCTK_REAL x,y,z, r integer i,j,k pi = 4*atan(1.d0) omega = sqrt(kx**2+ky**2+kz**2) - dt = CCTK_DELTA_TIME - if (CCTK_EQUALS(initial_data,"plane")) then do k=1,cctk_lsh(3) do j=1,cctk_lsh(2) do i=1,cctk_lsh(1) - x = cart3d_x(i,j,k) - y = cart3d_y(i,j,k) - z = cart3d_z(i,j,k) - phi(i,j,k) = amplitude - $ * cos((kx*x + ky*y + kz*z + omega*cctk_time) * pi) + $ * cos((kx*cart3d_x(i,j,k) + ky*cart3d_y(i,j,k) + $ + kz*cart3d_z(i,j,k) + omega*cctk_time) * pi) psi(i,j,k) = - amplitude - $ * sin((kx*x + ky*y + kz*z + omega*cctk_time) * pi) - $ * pi * omega - - phi_p(i,j,k) = amplitude - $ * cos((kx*x + ky*y + kz*z + omega*(cctk_time - dt)) * pi) - psi_p(i,j,k) = - amplitude - $ * sin((kx*x + ky*y + kz*z + omega*(cctk_time - dt)) * pi) - $ * pi * omega - - phi_p_p(i,j,k) = amplitude - $ * cos((kx*x + ky*y + kz*z + omega*(cctk_time - 2*dt)) * pi) - psi_p_p(i,j,k) = - amplitude - $ * sin((kx*x + ky*y + kz*z + omega*(cctk_time - 2*dt)) * pi) + $ * sin((kx*cart3d_x(i,j,k) + ky*cart3d_y(i,j,k) + $ + kz*cart3d_z(i,j,k) + omega*cctk_time) * pi) $ * pi * omega end do @@ -64,22 +45,12 @@ c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/IDSpaceTimeToy/src/Ini do j=1,cctk_lsh(2) do i=1,cctk_lsh(1) - r = spher3d_r(i,j,k) - - phi(i,j,k) = amplitude / r - $ * exp(- (r - radius - cctk_time)**2 / sigma**2) - psi(i,j,k) = phi(i,j,k) - $ * 2 * (r - radius - cctk_time) / sigma**2 - - phi_p(i,j,k) = amplitude / r - $ * exp(- (r - radius - (cctk_time - dt))**2 / sigma**2) - psi_p(i,j,k) = phi(i,j,k) - $ * 2 * (r - radius - (cctk_time - dt)) / sigma**2 - - phi_p_p(i,j,k) = amplitude / r - $ * exp(- (r - radius - (cctk_time - 2*dt))**2 / sigma**2) - psi_p_p(i,j,k) = phi(i,j,k) - $ * 2 * (r - radius - (cctk_time - 2*dt)) / sigma**2 + phi(i,j,k) = amplitude + $ * exp(- (spher3d_r(i,j,k) - radius + cctk_time)**2 + $ / sigma**2) + psi(i,j,k) = - phi(i,j,k) + $ * 2 * (spher3d_r(i,j,k) - radius + cctk_time) + $ / sigma**2 end do end do @@ -93,46 +64,19 @@ c Use kx,ky,kz as number of modes in each direction. do j=1,cctk_lsh(2) do i=1,cctk_lsh(1) - x = cart3d_x(i,j,k) - y = cart3d_y(i,j,k) - z = cart3d_z(i,j,k) - phi(i,j,k) = amplitude - $ * sin(kx * (x - 0.5d0) * pi) - $ * sin(ky * (y - 0.5d0) * pi) - $ * sin(kz * (z - 0.5d0) * pi) + $ * sin(kx * (cart3d_x(i,j,k) - 0.5d0) * pi) + $ * sin(ky * (cart3d_y(i,j,k) - 0.5d0) * pi) + $ * sin(kz * (cart3d_z(i,j,k) - 0.5d0) * pi) $ * cos(omega * cctk_time * pi) + psi(i,j,k) = - amplitude - $ * sin(kx * (x - 0.5d0) * pi) - $ * sin(ky * (y - 0.5d0) * pi) - $ * sin(kz * (z - 0.5d0) * pi) + $ * sin(kx * (cart3d_x(i,j,k) - 0.5d0) * pi) + $ * sin(ky * (cart3d_y(i,j,k) - 0.5d0) * pi) + $ * sin(kz * (cart3d_z(i,j,k) - 0.5d0) * pi) $ * sin(omega * cctk_time * pi) $ * omega * pi - phi_p(i,j,k) = amplitude - $ * sin(kx * (x - 0.5d0) * pi) - $ * sin(ky * (y - 0.5d0) * pi) - $ * sin(kz * (z - 0.5d0) * pi) - $ * cos(omega * (cctk_time - dt) * pi) - psi_p(i,j,k) = - amplitude - $ * sin(kx * (x - 0.5d0) * pi) - $ * sin(ky * (y - 0.5d0) * pi) - $ * sin(kz * (z - 0.5d0) * pi) - $ * sin(omega * (cctk_time - dt) * pi) - $ * omega * pi - - phi_p_p(i,j,k) = amplitude - $ * sin(kx * (x - 0.5d0) * pi) - $ * sin(ky * (y - 0.5d0) * pi) - $ * sin(kz * (z - 0.5d0) * pi) - $ * cos(omega * (cctk_time - 2*dt) * pi) - psi_p_p(i,j,k) = - amplitude - $ * sin(kx * (x - 0.5d0) * pi) - $ * sin(ky * (y - 0.5d0) * pi) - $ * sin(kz * (z - 0.5d0) * pi) - $ * sin(omega * (cctk_time - 2*dt) * pi) - $ * omega * pi - end do end do end do @@ -146,32 +90,10 @@ c Use kx,ky,kz as number of modes in each direction. phi(i,j,k) = 0 psi(i,j,k) = 0 - phi_p(i,j,k) = 0 - psi_p(i,j,k) = 0 - - phi_p_p(i,j,k) = 0 - psi_p_p(i,j,k) = 0 - end do end do end do end if - if (hydrotoy_active.eq.1) then - - do k=1,cctk_lsh(3) - do j=1,cctk_lsh(2) - do i=1,cctk_lsh(1) - - psi(i,j,k) = psi(i,j,k) - u(i,j,k) - psi_p(i,j,k) = psi_p(i,j,k) - u_p(i,j,k) - psi_p_p(i,j,k) = psi_p_p(i,j,k) - u_p_p(i,j,k) - - end do - end do - end do - - end if - end 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 diff --git a/CarpetExtra/WaveToyF77/param.ccl b/CarpetExtra/WaveToyF77/param.ccl index 403f70877..a8ff624c4 100644 --- a/CarpetExtra/WaveToyF77/param.ccl +++ b/CarpetExtra/WaveToyF77/param.ccl @@ -1,5 +1,5 @@ # Parameter definitions for thorn WaveToyF77 -# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyF77/param.ccl,v 1.1 2001/03/01 13:40:11 eschnett Exp $ +# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/WaveToyF77/param.ccl,v 1.2 2001/03/17 16:05:56 eschnett Exp $ private: @@ -11,5 +11,3 @@ KEYWORD bound "Type of boundary condition to use" "robin" :: "Robin boundary condition" "zero" :: "Zero boundary condition" } "none" - - |