aboutsummaryrefslogtreecommitdiff
path: root/CarpetExtra/HydroToy/src
diff options
context:
space:
mode:
authoreschnett <>2001-03-01 11:40:00 +0000
committereschnett <>2001-03-01 11:40:00 +0000
commit310f0ea48d18866b773136aed11200b6eda6378b (patch)
tree445d3e34ce8b89812994b6614f7bc9f4acbc7fe2 /CarpetExtra/HydroToy/src
Initial revision
darcs-hash:20010301114010-f6438-12fb8a9ffcc80e86c0a97e37b5b0dae0dbc59b79.gz
Diffstat (limited to 'CarpetExtra/HydroToy/src')
-rw-r--r--CarpetExtra/HydroToy/src/HydroToy.F77186
-rw-r--r--CarpetExtra/HydroToy/src/InitSymBound.F7722
-rw-r--r--CarpetExtra/HydroToy/src/Startup.F7715
-rw-r--r--CarpetExtra/HydroToy/src/make.code.defn9
4 files changed, 232 insertions, 0 deletions
diff --git a/CarpetExtra/HydroToy/src/HydroToy.F77 b/CarpetExtra/HydroToy/src/HydroToy.F77
new file mode 100644
index 000000000..559f66497
--- /dev/null
+++ b/CarpetExtra/HydroToy/src/HydroToy.F77
@@ -0,0 +1,186 @@
+c -*-Fortran-*-
+c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/HydroToy/src/HydroToy.F77,v 1.7 2003/11/05 16:18:39 schnetter Exp $
+
+#include "cctk.h"
+#include "cctk_Arguments.h"
+#include "cctk_Functions.h"
+#include "cctk_Parameters.h"
+
+
+
+ subroutine HydroToy_EulerPredictor (CCTK_ARGUMENTS)
+
+ implicit none
+
+ DECLARE_CCTK_ARGUMENTS
+ DECLARE_CCTK_FUNCTIONS
+ DECLARE_CCTK_PARAMETERS
+
+ integer i,j,k
+
+c Copy
+ 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
+
+c Evolve
+ call HydroToy_Step (CCTK_PASS_FTOF)
+
+c Apply boundaries
+ call HydroToy_Boundaries (CCTK_PASS_FTOF)
+
+ end
+
+
+
+ subroutine HydroToy_EulerCorrector (CCTK_ARGUMENTS)
+
+ implicit none
+
+ DECLARE_CCTK_ARGUMENTS
+ DECLARE_CCTK_FUNCTIONS
+ DECLARE_CCTK_PARAMETERS
+
+ CCTK_REAL two, half
+ parameter (two=2, half=1/two)
+
+ integer i,j,k
+
+c Copy
+ do k=1,cctk_lsh(3)
+ do j=1,cctk_lsh(2)
+ do i=1,cctk_lsh(1)
+
+ 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
+ call HydroToy_Step (CCTK_PASS_FTOF)
+
+c Average
+ do k=1,cctk_lsh(3)
+ do j=1,cctk_lsh(2)
+ do i=1,cctk_lsh(1)
+
+ u(i,j,k) = half * (u_p(i,j,k) + u(i,j,k))
+ vx(i,j,k) = half * (vx_p(i,j,k) + vx(i,j,k))
+ vy(i,j,k) = half * (vy_p(i,j,k) + vy(i,j,k))
+ vz(i,j,k) = half * (vz_p(i,j,k) + vz(i,j,k))
+
+ end do
+ end do
+ end do
+
+c Apply boundaries
+ call HydroToy_Boundaries (CCTK_PASS_FTOF)
+
+ end
+
+
+
+ subroutine HydroToy_Step (CCTK_ARGUMENTS)
+
+ implicit none
+
+ DECLARE_CCTK_ARGUMENTS
+ DECLARE_CCTK_FUNCTIONS
+ DECLARE_CCTK_PARAMETERS
+
+ CCTK_REAL dx,dy,dz,dt
+ integer i,j,k
+
+ dx = CCTK_DELTA_SPACE(1)
+ dy = CCTK_DELTA_SPACE(2)
+ dz = CCTK_DELTA_SPACE(3)
+ dt = CCTK_DELTA_TIME
+
+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)
+
+ u(i,j,k) = u_i(i,j,k)
+ $ + 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)
+
+ vx(i,j,k) = vx_i(i,j,k)
+ $ + dt * (u_i(i+1,j,k) - u_i(i-1,j,k)) / (2*dx)
+ vy(i,j,k) = vy_i(i,j,k)
+ $ + dt * (u_i(i,j+1,k) - u_i(i,j-1,k)) / (2*dy)
+ vz(i,j,k) = vz_i(i,j,k)
+ $ + dt * (u_i(i,j,k+1) - u_i(i,j,k-1)) / (2*dz)
+
+ end do
+ end do
+ end do
+
+ end
+
+
+
+ subroutine HydroToy_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
+ parameter (finf=1)
+ integer npow
+ parameter (npow=1)
+
+ integer sw(3)
+ integer ierr
+
+ sw(1) = cctk_nghostzones(1)
+ sw(2) = cctk_nghostzones(2)
+ sw(3) = cctk_nghostzones(3)
+
+c Apply boundary condition
+ if (CCTK_EQUALS(bound, "flat")) then
+ call BndFlatGN (ierr, cctkGH, sw, "hydrotoy::hydroevolve")
+ else if (CCTK_EQUALS(bound, "zero")) then
+ call BndScalarGN (ierr, cctkGH, sw, zero,
+ $ "hydrotoy::hydroevolve")
+ else if (CCTK_EQUALS(bound, "radiation")) then
+ call BndRadiativeGN (ierr, cctkGH, sw, zero, one,
+ $ "hydrotoy::hydroevolve", "hydrotoy::hydroevolve")
+ else if (CCTK_EQUALS(bound, "robin")) then
+ call BndRobinGN (ierr, cctkGH, sw, finf, npow,
+ $ "hydrotoy::hydroevolve")
+ else if (CCTK_EQUALS(bound, "none")) then
+ ierr = 0
+ 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 Cart3dSymGN (ierr, cctkGH, "hydrotoy::hydroevolve")
+ if (ierr .lt. 0) then
+ call CCTK_WARN (0, "Error while applying boundary condition")
+ end if
+
+ end
diff --git a/CarpetExtra/HydroToy/src/InitSymBound.F77 b/CarpetExtra/HydroToy/src/InitSymBound.F77
new file mode 100644
index 000000000..20fb46456
--- /dev/null
+++ b/CarpetExtra/HydroToy/src/InitSymBound.F77
@@ -0,0 +1,22 @@
+c -*-Fortran-*-
+c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/HydroToy/src/InitSymBound.F77,v 1.3 2003/11/05 16:18:39 schnetter Exp $
+
+#include "cctk.h"
+#include "cctk_Arguments.h"
+#include "cctk_Functions.h"
+#include "cctk_Parameters.h"
+
+ subroutine HydroToy_InitSymBound (CCTK_ARGUMENTS)
+
+ implicit none
+
+ DECLARE_CCTK_ARGUMENTS
+ DECLARE_CCTK_FUNCTIONS
+ DECLARE_CCTK_PARAMETERS
+
+ integer ierr
+
+ call Cart3dSetTensorTypeVN (ierr, cctkGH, "HydroToy::u", "scalar")
+ call Cart3dSetTensorTypeVN (ierr, cctkGH, "HydroToy::vx HydroToy::vy HydroToy::vz", "vector")
+
+ end
diff --git a/CarpetExtra/HydroToy/src/Startup.F77 b/CarpetExtra/HydroToy/src/Startup.F77
new file mode 100644
index 000000000..59c520b21
--- /dev/null
+++ b/CarpetExtra/HydroToy/src/Startup.F77
@@ -0,0 +1,15 @@
+c -*-Fortran-*-
+c $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/HydroToy/src/Startup.F77,v 1.1 2001/03/18 22:37:09 eschnett Exp $
+
+#include "cctk.h"
+
+ subroutine HydroToy_Startup
+
+ implicit none
+
+ integer ierr
+
+ call CCTK_RegisterBanner
+ $ (ierr, "HydroToy: Evolutions of a Scalar and a Vector Field")
+
+ end
diff --git a/CarpetExtra/HydroToy/src/make.code.defn b/CarpetExtra/HydroToy/src/make.code.defn
new file mode 100644
index 000000000..3a7f14213
--- /dev/null
+++ b/CarpetExtra/HydroToy/src/make.code.defn
@@ -0,0 +1,9 @@
+# Main make.code.defn file for thorn HydroToy
+# $Header: /home/eschnett/C/carpet/Carpet/CarpetExtra/HydroToy/src/make.code.defn,v 1.1 2001/03/18 22:37:09 eschnett Exp $
+
+# Source files in this directory
+SRCS = HydroToy.F77 InitSymBound.F77 Startup.F77
+
+# Subdirectories containing source files
+SUBDIRS =
+