aboutsummaryrefslogtreecommitdiff
path: root/CarpetExtra/SpaceTimeToy/src/SpaceTimeToy.F77
diff options
context:
space:
mode:
Diffstat (limited to 'CarpetExtra/SpaceTimeToy/src/SpaceTimeToy.F77')
-rw-r--r--CarpetExtra/SpaceTimeToy/src/SpaceTimeToy.F77176
1 files changed, 47 insertions, 129 deletions
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