diff options
author | eschnett <> | 2001-03-01 11:40:00 +0000 |
---|---|---|
committer | eschnett <> | 2001-03-01 11:40:00 +0000 |
commit | 310f0ea48d18866b773136aed11200b6eda6378b (patch) | |
tree | 445d3e34ce8b89812994b6614f7bc9f4acbc7fe2 /CarpetExtra/HydroToy/src |
Initial revision
darcs-hash:20010301114010-f6438-12fb8a9ffcc80e86c0a97e37b5b0dae0dbc59b79.gz
Diffstat (limited to 'CarpetExtra/HydroToy/src')
-rw-r--r-- | CarpetExtra/HydroToy/src/HydroToy.F77 | 186 | ||||
-rw-r--r-- | CarpetExtra/HydroToy/src/InitSymBound.F77 | 22 | ||||
-rw-r--r-- | CarpetExtra/HydroToy/src/Startup.F77 | 15 | ||||
-rw-r--r-- | CarpetExtra/HydroToy/src/make.code.defn | 9 |
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 = + |