Test program for Spline_mod
Type | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|
real(kind=wp), | parameter, dimension(5,2) | :: | x0 | = | reshape([-2.0_wp, -1.0_wp, 0.0_wp, 1.0_wp, 2.0_wp, 3.0_wp, 0.0_wp, -1.0_wp, 0.0_wp, 3.0_wp], [5, 2]) | |
real(kind=wp), | parameter, dimension(5) | :: | t0 | = | [0.00_wp, 0.25_wp, 0.50_wp, 0.75_wp, 1.00_wp] |
program testSpline_prg
!! Test program for Spline_mod
use kinds_mod
use spline_mod
use plplotlib_mod
use array_mod
implicit none
real(wp),dimension(5,2),parameter::x0 = reshape( [ &
& -2.0_wp,-1.0_wp, 0.0_wp,1.0_wp,2.0_wp , &
& 3.0_wp, 0.0_wp,-1.0_wp,0.0_wp,3.0_wp &
& ],[5,2])
real(wp),dimension(5),parameter::t0 = &
& [ 0.00_wp,0.25_wp,0.50_wp,0.75_wp,1.00_wp]
call testNewSpline
call testSplineX
contains
subroutine testNewSpline
type(cubicSpline_t)::spline
spline = cubicSpline_t(t0,x0)
end subroutine testNewSpline
subroutine testSplineX
type(cubicSpline_t)::sf,sc
type(linearSpline_t)::sl
real(wp),dimension(:,:),allocatable::xl,xf,xc,xt
real(wp)::t
integer::N,k
N = 100
sl = linearSpline_t(t0,x0)
sf = cubicSpline_t(t0,x0,'finiteDifference')
sc = cubicSpline_t(t0,x0,'conventional')
allocate( xl(N,2) , xf(N,2) , xc(N,2) , xt(N,2) )
do k=1,N
t = real(k-1,wp)/real(N-1,wp)
xl(k,1:2) = sl%x(t)
xf(k,1:2) = sf%x(t)
xc(k,1:2) = sc%x(t)
xt(k,1:2) = [4.0_wp*t-2.0_wp,(4.0_wp*t-2.0_wp)**2-1.0_wp]
end do
call setup(fileName='spline-%n.svg',figSize=[400,300])
call figure()
call subplot(1,1,1)
call xylim(mixval(xt(:,1)),mixval(xt(:,2)))
call plot(xt(:,1),xt(:,2),lineStyle='-' ,lineColor='r',lineWidth=2.0_wp)
call plot(xl(:,1),xl(:,2),lineStyle=':' ,lineColor='m',lineWidth=2.0_wp)
call plot(xf(:,1),xf(:,2),lineStyle='-' ,lineColor='b',lineWidth=2.0_wp)
call plot(xc(:,1),xc(:,2),lineStyle='--',lineColor='c',lineWidth=2.0_wp)
call plot(x0(:,1),x0(:,2),lineStyle='' ,markStyle='x',markColor='k')
call ticks()
call labels('x','y','Spline Test')
call figure()
call subplot(1,1,1)
call xylim(mixval(xt(:,1)),[-2.0_wp,2.0_wp])
call plot(xl(:,1),xl(:,2)-xt(:,2),lineStyle=':' ,lineColor='m',lineWidth=2.0_wp)
call plot(xt(:,1),xt(:,2)-xt(:,2),lineStyle='-' ,lineColor='r',lineWidth=2.0_wp)
call plot(xf(:,1),xf(:,2)-xt(:,2),lineStyle='-' ,lineColor='b',lineWidth=2.0_wp)
call plot(xc(:,1),xc(:,2)-xt(:,2),lineStyle='--',lineColor='c',lineWidth=2.0_wp)
call plot(x0(:,1),x0(:,2)-x0(:,2),lineStyle='' ,markStyle='x',markColor='k')
call ticks()
call labels('x','y','Spline Test')
call show()
end subroutine testSplineX
end program testSpline_prg