From 5a10b056bae14fb944fdbdf5a025594d1c089fad Mon Sep 17 00:00:00 2001 From: schnetter Date: Wed, 5 Nov 2003 19:58:30 +0000 Subject: Schedule boundary conditions at postrestrict. git-svn-id: http://svn.cactuscode.org/arrangements/CactusWave/WaveToyC/trunk@93 90eea020-d82d-4da5-bf6e-4ee79ff7632f --- src/WaveToy.c | 208 ++++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 181 insertions(+), 27 deletions(-) (limited to 'src') diff --git a/src/WaveToy.c b/src/WaveToy.c index 7c98b1e..5ecbdd8 100644 --- a/src/WaveToy.c +++ b/src/WaveToy.c @@ -8,8 +8,15 @@ @version $Header$ @@*/ - -#include "cctk.h" +#include + +#if 0 +#include +#include +#include +#endif + +#include "cctk.h" #include "cctk_Arguments.h" #include "cctk_Parameters.h" @@ -20,7 +27,44 @@ static const char *rcsid = "$Header$"; CCTK_FILEVERSION(CactusWave_WaveToyC_WaveToy_c); void WaveToyC_Boundaries(CCTK_ARGUMENTS); -void WaveToyC_Evolution(CCTK_ARGUMENTS); +void WaveToyC_Evolution(CCTK_ARGUMENTS); + +#define DEBUG 0 + + + +static inline int min (int const a, int const b) +{ + return ab ? a : b; +} + +#if 0 +static inline long long timeval2longlong (const struct timeval * const tv) +{ + return tv->tv_sec * 1000000LL + tv->tv_usec; +} + +static long long currenttime (void) +{ + struct rusage ru; + getrusage (RUSAGE_SELF, &ru); + return timeval2longlong (ru.ru_utime) + timeval2longlong (ru.ru_stime); +} +#endif + +static long long currenttime (void) +{ + unsigned long eax, edx; + asm volatile ("rdtsc" : "=a" (eax), "=d" (edx)); + return (unsigned long long)edx << 32 | (unsigned long long)eax; +} + + /*@@ @routine WaveToyC_Evolution @@ -37,14 +81,14 @@ void WaveToyC_Evolution(CCTK_ARGUMENTS); void WaveToyC_Evolution(CCTK_ARGUMENTS) { - DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; int i,j,k; int index; int istart, jstart, kstart, iend, jend, kend; CCTK_REAL dx,dy,dz,dt,dx2,dy2,dz2,dt2; - CCTK_REAL dx2i,dy2i,dz2i; + CCTK_REAL dt2dx2i,dt2dy2i,dt2dz2i; CCTK_REAL factor; @@ -59,9 +103,9 @@ void WaveToyC_Evolution(CCTK_ARGUMENTS) dz2 = dz*dz; dt2 = dt*dt; - dx2i = 1.0/dx2; - dy2i = 1.0/dy2; - dz2i = 1.0/dz2; + dt2dx2i = dt2/dx2; + dt2dy2i = dt2/dy2; + dt2dz2i = dt2/dz2; istart = 1; jstart = 1; @@ -72,29 +116,139 @@ void WaveToyC_Evolution(CCTK_ARGUMENTS) kend = cctk_lsh[2]-1; /* Do the evolution */ - factor = 2*(1 - (dt2)*(dx2i + dy2i + dz2i)); + factor = 2 * (1 - (dt2dx2i + dt2dy2i + dt2dz2i)); - for (k=kstart; k