=================
 FDTD-2D
=================

Code:

for(t=0; t<=T-1; t++) 
  {
    for (j=0; j<=N-1; j++)
      ey[0][j] = t;
    for (i=1; i<=N-1; i++)
      for (j=0; j<=N-1; j++)
        ey[i][j] = ey[i][j] - 0.5*(hz[i][j]-hz[i-1][j]);
    for (i=0; i<=N-1; i++)
      for (j=1; j<=N-1; j++)
        ex[i][j] = ex[i][j] - 0.5*(hz[i][j]-hz[i][j-1]);
    for (i=0; i<=N-1; i++)
      for (j=0; j<=N-1; j++)
        hz[i][j] = hz[i][j] - 0.7*(ex[i][j+1]-ex[i][j]+ey[i+1][j]-ey[i][j]);
  }


Total number of operations = (6*T*(N-1)*N+5*T*N*N)

*********************
Sequential version
*********************
T=512
N   icc -fast       pluto       pluto+ancc
----------------------------------------------------------------------------------------
seconds:
  125    0.038430     0.038636     0.038480
  250    0.135408     0.151022     0.147102
  500    1.409527     0.624459     0.594477
 1000    7.636443     2.477117     2.346793
 2000   30.508238     9.896371     9.297674
 4000  124.651984    61.721075    36.827260
gflops:
  125   2.23  2.21  2.23
  250   2.53  2.27  2.33
  500   0.97  2.20  2.31
 1000   0.72  2.22  2.34
 2000   0.72  2.22  2.37
 4000   0.71  1.43  2.39

*********************
Parallel version
*********************
T=500
N=2000
----------------------------------------------------------------------------------------
 #cores   icc -fast -parallel    pluto   pluto+ancc
----------------------------------------------------------------------------------------
seconds:
  1    30.855419     9.822442    9.294520
  2    25.602739     6.191355    4.899951
  3    26.817797     6.190691    3.556831
  4    26.296080     6.196744    2.839169
gflops:
  1  0.71  2.24  2.37
  2  0.86  3.55  4.49
  3  0.82  3.55  6.18
  4  0.84  3.55  7.75

 IVEC = True
 PAR = True
 PERM = [0, 2, 1]
 SCREP = True
 T1_1 = 32
 T1_2 = 64
 T1_3 = 8
 T2_1 = 1
 T2_2 = 1
 T2_3 = 1
 U1 = 3
 U2 = 1
 U3 = 1
