acou3df.f | acou3df.f | |||
---|---|---|---|---|
! INTEGER N, iters | ||||
! REAL check | ||||
! N = 112 | ||||
! iters = 210 | ||||
! CALL acoustic3d_f77(N,iters,check) | ||||
! PRINT *, check | ||||
! END | ||||
SUBROUTINE acoustic3d_f77(N, niters, check) | SUBROUTINE acoustic3d_f77(N, niters, check) | |||
INTEGER N, niters, iter | INTEGER N, niters, iter | |||
REAL check | REAL check | |||
REAL P1(N,N,N), P2(N,N,N), P3(N,N,N), C(N,N,N) | REAL P1(N,N,N), P2(N,N,N), P3(N,N,N), C(N,N,N) | |||
INTEGER i, j | INTEGER i, j, k | |||
CALL acoust3d_f77_setup(P1, P2, P3, C, N) | CALL acoust3d_f77_setup(P1, P2, P3, C, N) | |||
DO iter=1, niters | DO iter=1, niters | |||
DO k=2,N-1 | DO k=2,N-1 | |||
DO j=2,N-1 | DO j=2,N-1 | |||
DO i=2,N-1 | DO i=2,N-1 | |||
P3(i,j,k) = (2-6*C(i,j,k))*P2(i,j,k) + C(i,j,k) | P3(i,j,k) = (2-6*C(i,j,k))*P2(i,j,k) + C(i,j,k) | |||
. * (P2(i,j-1,k) + P2(i,j+1,k) + P2(i-1,j,k) | . * (P2(i,j-1,k) + P2(i,j+1,k) + P2(i-1,j,k) | |||
. + P2(i+1,j,k) + P2(i,j,k-1) + P2(i,j,k+1)) | . + P2(i+1,j,k) + P2(i,j,k-1) + P2(i,j,k+1)) | |||
skipping to change at line 49 | skipping to change at line 58 | |||
INTEGER i, j, k | INTEGER i, j, k | |||
INTEGER cavityLeft, cavityRight, cavityFront, cavityBack, | INTEGER cavityLeft, cavityRight, cavityFront, cavityBack, | |||
. cavityTop, cavityBottom, cavityTop2, cavityBottom2 | . cavityTop, cavityBottom, cavityTop2, cavityBottom2 | |||
REAL ci, cj, ck, s2 | REAL ci, cj, ck, s2 | |||
! Set up velocity field | ! Set up velocity field | |||
DO k=1,N | DO k=1,N | |||
DO j=1,N | DO j=1,N | |||
DO i=1,N/2 | DO i=1,N/2 | |||
c(i,j,k) = 0.05; | c(i,j,k) = 0.05 | |||
END DO | END DO | |||
DO i=N/2+1,N | DO i=N/2+1,N | |||
c(i,j,k) = 0.3; | c(i,j,k) = 0.3 | |||
END DO | END DO | |||
END DO | END DO | |||
END DO | END DO | |||
! Cavities | ! Cavities | |||
cavityLeft = 3 * N / 7.0 | cavityLeft = 3 * N / 7.0 | |||
cavityRight = 4 * N / 7.0 | cavityRight = 4 * N / 7.0 | |||
cavityFront = 3 * N / 7.0 | cavityFront = 3 * N / 7.0 | |||
cavityBack = 4 * N / 7.0 | cavityBack = 4 * N / 7.0 | |||
cavityTop = 5 * N / 7.0 | cavityTop = 5 * N / 7.0 | |||
cavityBottom = 6 * N / 7.0 | cavityBottom = 6 * N / 7.0 | |||
cavityTop2 = 1 * N / 7.0 | cavityTop2 = 1 * N / 7.0 | |||
cavityBottom2 = 2 * N / 7.0 | cavityBottom2 = 2 * N / 7.0 | |||
DO k=cavityFront, cavityBack | DO k=cavityFront, cavityBack | |||
DO j=cavityLeft, cavityRight | DO j=cavityLeft, cavityRight | |||
DO i=cavityTop, cavityBottom | DO i=cavityTop, cavityBottom | |||
c(i,j,k) = 0.02; | c(i,j,k) = 0.02 | |||
END DO | END DO | |||
DO i=cavityTop2, cavityBottom2 | DO i=cavityTop2, cavityBottom2 | |||
c(i,j,k) = 0.001 | c(i,j,k) = 0.001 | |||
END DO | END DO | |||
END DO | END DO | |||
END DO | END DO | |||
! Initial pressure distribution | ! Initial pressure distribution | |||
ci = N/2.0 | ci = N/2.0 | |||
cj = N/2.0 | cj = N/2.0 | |||
ck = N/2.0 | ck = N/2.0 | |||
s2 = 64.0 * 9.0 / ((N/2.0) ** 2); | s2 = 64.0 * 9.0 / ((N/2.0) ** 2) | |||
DO k=1,N | DO k=1,N | |||
DO j=1,N | DO j=1,N | |||
DO i=1,N | DO i=1,N | |||
P1(i,j,k) = 0.0 | P1(i,j,k) = 0.0 | |||
P2(i,j,k) = exp(- ((i-ci)**2+(j-cj)**2+(k-ck)**2) * s2) | P2(i,j,k) = exp(- ((i-ci)**2+(j-cj)**2+(k-ck)**2) * s2) | |||
P3(i,j,k) = 0.0 | P3(i,j,k) = 0.0 | |||
END DO | END DO | |||
END DO | END DO | |||
END DO | END DO | |||
End of changes. 6 change blocks. | ||||
5 lines changed or deleted | 14 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |