aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorgoodale <goodale@50555cc7-fb31-491a-85db-9a2874240742>2000-03-28 07:04:06 +0000
committergoodale <goodale@50555cc7-fb31-491a-85db-9a2874240742>2000-03-28 07:04:06 +0000
commit06b619c73980740e6ce2bce7ed7bbc6b6a72e002 (patch)
tree4341cf0b7ba7ce0d1dbe33923a5aeec35a1d12d6 /src
parentb6f7aa44c468d6ca538d20f796e02deec6761845 (diff)
60% more MFlop/s
Tom git-svn-id: http://svn.cactuscode.org/arrangements/CactusWave/WaveToyCXX/trunk@21 50555cc7-fb31-491a-85db-9a2874240742
Diffstat (limited to 'src')
-rw-r--r--src/WaveToy.cc56
1 files changed, 35 insertions, 21 deletions
diff --git a/src/WaveToy.cc b/src/WaveToy.cc
index 9762425..23843fc 100644
--- a/src/WaveToy.cc
+++ b/src/WaveToy.cc
@@ -41,39 +41,52 @@ extern "C" void WaveToyCXX_Evolution(CCTK_ARGUMENTS)
// Set up shorthands
- CCTK_REAL dx = CCTK_DELTA_SPACE(0),
- dy = CCTK_DELTA_SPACE(1),
- dz = CCTK_DELTA_SPACE(2),
- dt = CCTK_DELTA_TIME,
+ CCTK_REAL dx = CCTK_DELTA_SPACE(0);
+ CCTK_REAL dy = CCTK_DELTA_SPACE(1);
+ CCTK_REAL dz = CCTK_DELTA_SPACE(2);
+ CCTK_REAL dt = CCTK_DELTA_TIME;
- dx2=dx*dx,
- dy2=dy*dy,
- dz2=dz*dz,
- dt2=dt*dt,
+ CCTK_REAL dx2 = dx*dx;
+ CCTK_REAL dy2 = dy*dy;
+ CCTK_REAL dz2 = dz*dz;
+ CCTK_REAL dt2 = dt*dt;
- factor = 2*(1 - (dt2)*(1/dx2 + 1/dy2 + 1/dz2));
+ CCTK_REAL dx2i = 1.0/dx2;
+ CCTK_REAL dy2i = 1.0/dy2;
+ CCTK_REAL dz2i = 1.0/dz2;
- int iend = cctk_lsh[0]-1,
- jend = cctk_lsh[1]-1,
- kend = cctk_lsh[2]-1;
+ CCTK_REAL factor = 2*(1 - (dt2)*(dx2i + dy2i + dz2i));
+
+ int istart = 1;
+ int jstart = 1;
+ int kstart = 1;
+
+ int iend = cctk_lsh[0]-1;
+ int jend = cctk_lsh[1]-1;
+ int kend = cctk_lsh[2]-1;
//
// Do the evolution
//
for (int k=1; k<kend; k++)
+ {
for (int j=1; j<jend; j++)
+ {
for (int i=1; i<iend; i++)
{
- val(phi_new, i,j,k) =
- factor* val( phi,i,j,k ) - val( phi_old,i,j,k)
+ int index = CCTK_GFINDEX3D(cctkGH,i,j,k);
+
+ phi_new[index] =
+ factor*phi[index] - phi_old[index]
+ dt2 *
- ( ( val( phi, i+1,j ,k ) + val( phi, i-1,j ,k) )/dx2
- +( val( phi, i ,j+1,k ) + val( phi, i ,j-1,k) )/dy2
- +( val( phi, i ,j ,k+1) + val( phi, i ,j, k-1) )/dz2
+ ( ( val( phi, i+1,j ,k ) + val( phi, i-1,j ,k) )*dx2i
+ +( val( phi, i ,j+1,k ) + val( phi, i ,j-1,k) )*dy2i
+ +( val( phi, i ,j ,k+1) + val( phi, i ,j, k-1) )*dz2i
);
}
-
+ }
+ }
//
// Synchronize before applying boundary conditions
@@ -93,9 +106,10 @@ extern "C" void WaveToyCXX_Evolution(CCTK_ARGUMENTS)
for (int j=0; j<cctk_lsh[1]; j++)
for (int i=0; i<cctk_lsh[0]; i++)
{
- int index = CCTK_GFINDEX3D(cctkGH,i,j,k);
- phi_old[index] = phi[index];
- phi[index] = phi_new[index];
+ int index = CCTK_GFINDEX3D(cctkGH,i,j,k);
+
+ phi_old[index] = phi[index];
+ phi[index] = phi_new[index];
}
}