test_calculate.f90 Source File


Source Code

program test_calculate

use m_parameters

use m_calculate

implicit none

real*8, allocatable, dimension(:,:,:) :: aaa,bbb,ccc,ddd

integer :: ierr

real*8 :: xx,yy,zz,fxyz

integer :: i,j,k

real*4, dimension(2) :: startt
real*4, dimension(2) :: endt
real*4 :: result

nxp = 512
nyp = 256
nzp = 256

l_0 = 2.0
hyp=l_0*pi/REAL(nyp)
hxp=hyp
hzp=hyp

allocate(aaa(nxp, nyp, nzp), stat=ierr); aaa=0.0
allocate(bbb(nxp, nyp, nzp), stat=ierr); bbb=0.0
allocate(ccc(nxp, nyp, nzp), stat=ierr); ccc=0.0
allocate(ddd(nxp, nyp, nzp), stat=ierr); ddd=0.0


call m_calculate_init


write(*,*) "dimension - ", nxp, nyp, nzp
write(*,*) "spacing   - ", hxp, hyp, hzp

do k = 1,nzp
do j = 1,nyp
do i = 1,nxp

xx = i * hxp
yy = j * hyp
zz = k * hzp

aaa(i,j,k) = sin(1.1 * xx) * sin(3.0 * yy) * sin(2.0 * zz)

end do
end do
end do

write(*,*) "test ddx"

call ETIME(startt, result)


call ddx(bbb, aaa)
call ETIME(endt, result)
print *, "usert", endt(1) - startt(1)
print *, "systt", endt(2) - startt(2)

do k = 1,nzp
do j = 1,nyp
do i = nxp/4,3*nxp/4

xx = i * hxp
yy = j * hyp
zz = k * hzp
fxyz = (1.1 * cos(1.1 * xx) * sin(3.0 * yy) * sin(2.0 * zz))
ccc(i,j,k) = (bbb(i,j,k) - fxyz) / (fxyz)

if ((abs(ccc(i,j,k)) > 0.01 ) .and. (abs(bbb(i,j,k)) > 1.0e-14 )) write(*,*) bbb(i,j,k), fxyz

end do
end do
end do

write(*,*) "relerr_min_max", minval(ccc), maxval(ccc)



write(*,*) "test ddy"

call ETIME(startt, result)


call ddy(bbb, aaa)
call ETIME(endt, result)
print *, "usert", endt(1) - startt(1)
print *, "systt", endt(2) - startt(2)

do k = 1,nzp
do j = 1,nyp
do i = nxp/4,3*nxp/4

xx = i * hxp
yy = j * hyp
zz = k * hzp
fxyz = (3.0 * sin(1.1 * xx) * cos(3.0 * yy) * sin(2.0 * zz))
ccc(i,j,k) = (bbb(i,j,k) - fxyz) / (fxyz)

if ((abs(ccc(i,j,k)) > 0.01 ) .and. (abs(bbb(i,j,k)) > 1.0e-14 )) write(*,*) bbb(i,j,k), fxyz
end do
end do
end do

write(*,*) "relerr_min_max", minval(ccc), maxval(ccc)





write(*,*) "test ddz"

call ETIME(startt, result)


call ddz(bbb, aaa)
call ETIME(endt, result)
print *, "usert", endt(1) - startt(1)
print *, "systt", endt(2) - startt(2)

do k = 1,nzp
do j = 1,nyp
do i = nxp/4,3*nxp/4

xx = i * hxp
yy = j * hyp
zz = k * hzp
fxyz = (2.0 * sin(1.1 * xx) * sin(3.0 * yy) * cos(2.0 * zz))
ccc(i,j,k) = (bbb(i,j,k) - fxyz) / (fxyz)

if ((abs(ccc(i,j,k)) > 0.01 ) .and. (abs(bbb(i,j,k)) > 1.0e-14 )) write(*,*) bbb(i,j,k), fxyz
end do
end do
end do

write(*,*) "relerr_min_max", minval(ccc), maxval(ccc)





write(*,*) "test d2dx"

call ETIME(startt, result)


call d2dx(bbb, aaa)
call ETIME(endt, result)
print *, "usert", endt(1) - startt(1)
print *, "systt", endt(2) - startt(2)

do k = 1,nzp
do j = 1,nyp
do i = nxp/4,3*nxp/4

xx = i * hxp
yy = j * hyp
zz = k * hzp
fxyz = -(1.21 * sin(1.1 * xx) * sin(3.0 * yy) * sin(2.0 * zz))
ccc(i,j,k) = (bbb(i,j,k) - fxyz) / (fxyz)

if ((abs(ccc(i,j,k)) > 0.01 ) .and. (abs(fxyz) > 1.0e-14 )) write(*,*) bbb(i,j,k), fxyz

end do
end do
end do

write(*,*) "relerr_min_max", minval(ccc), maxval(ccc)



write(*,*) "test d2dy"

call ETIME(startt, result)


call d2dy(bbb, aaa)
call ETIME(endt, result)
print *, "usert", endt(1) - startt(1)
print *, "systt", endt(2) - startt(2)

do k = 1,nzp
do j = 1,nyp
do i = nxp/4,3*nxp/4

xx = i * hxp
yy = j * hyp
zz = k * hzp
fxyz = -(9.0 * sin(1.1 * xx) * sin(3.0 * yy) * sin(2.0 * zz))
ccc(i,j,k) = (bbb(i,j,k) - fxyz) / (fxyz)

if ((abs(ccc(i,j,k)) > 0.01 ) .and. (abs(fxyz) > 1.0e-14 )) write(*,*) bbb(i,j,k), fxyz
end do
end do
end do

write(*,*) "relerr_min_max", minval(ccc), maxval(ccc)


write(*,*) "test d2dz"

call ETIME(startt, result)


call d2dz(bbb, aaa)
call ETIME(endt, result)
print *, "usert", endt(1) - startt(1)
print *, "systt", endt(2) - startt(2)


do k = 1,nzp
do j = 1,nyp
do i = nxp/4,3*nxp/4

xx = i * hxp
yy = j * hyp
zz = k * hzp
fxyz = -(4.0 * sin(1.1 * xx) * sin(3.0 * yy) * sin(2.0 * zz))
ccc(i,j,k) = (bbb(i,j,k) - fxyz) / (fxyz)

if ((abs(ccc(i,j,k)) > 0.01 ) .and. (abs(fxyz) > 1.0e-14 )) write(*,*) bbb(i,j,k), fxyz
end do
end do
end do

write(*,*) "relerr_min_max", minval(ccc), maxval(ccc)





call m_calculate_finalize


deallocate(aaa)
deallocate(bbb)
deallocate(ccc)
deallocate(ddd)

end program