From ef1433fcc8f8e7521674f229d75a408c16af0f90 Mon Sep 17 00:00:00 2001 From: eschnett <> Date: Sat, 17 Mar 2001 15:05:00 +0000 Subject: 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 --- CarpetExtra/SpaceTimeToy/interface.ccl | 22 +-- .../par/spacetimetoy_periodic_coarse.par | 49 +++--- CarpetExtra/SpaceTimeToy/param.ccl | 15 +- CarpetExtra/SpaceTimeToy/schedule.ccl | 64 ++------ CarpetExtra/SpaceTimeToy/src/InitSymBound.F77 | 8 +- CarpetExtra/SpaceTimeToy/src/SpaceTimeToy.F77 | 176 ++++++--------------- 6 files changed, 95 insertions(+), 239 deletions(-) (limited to 'CarpetExtra/SpaceTimeToy') 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 -- cgit v1.2.3