testSpline.f90 Source File

This File Depends On

sourcefile~~testspline.f90~~EfferentGraph sourcefile~testspline.f90 testSpline.f90 sourcefile~array.f90 array.f90 sourcefile~array.f90->sourcefile~testspline.f90 sourcefile~plplotlib.f90 plplotlib.f90 sourcefile~array.f90->sourcefile~plplotlib.f90 sourcefile~spline.f90 spline.f90 sourcefile~array.f90->sourcefile~spline.f90 sourcefile~plplotlib.f90->sourcefile~testspline.f90 sourcefile~spline.f90->sourcefile~testspline.f90 sourcefile~kinds.f90 kinds.f90 sourcefile~kinds.f90->sourcefile~testspline.f90 sourcefile~kinds.f90->sourcefile~array.f90 sourcefile~kinds.f90->sourcefile~plplotlib.f90 sourcefile~kinds.f90->sourcefile~spline.f90 sourcefile~text.f90 text.f90 sourcefile~kinds.f90->sourcefile~text.f90 sourcefile~time.f90 time.f90 sourcefile~kinds.f90->sourcefile~time.f90 sourcefile~text.f90->sourcefile~plplotlib.f90 sourcefile~time.f90->sourcefile~text.f90
Help

Source Code


Source Code

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