diff options
author | goodale <goodale@50555cc7-fb31-491a-85db-9a2874240742> | 2000-03-28 07:04:06 +0000 |
---|---|---|
committer | goodale <goodale@50555cc7-fb31-491a-85db-9a2874240742> | 2000-03-28 07:04:06 +0000 |
commit | 06b619c73980740e6ce2bce7ed7bbc6b6a72e002 (patch) | |
tree | 4341cf0b7ba7ce0d1dbe33923a5aeec35a1d12d6 /src | |
parent | b6f7aa44c468d6ca538d20f796e02deec6761845 (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.cc | 56 |
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]; } } |