Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.
Source Code
function finter2d(func,x,y)real(8)::x,ytype(finter2d_type)::funcreal(8)::finter2dreal(8)::f,dfinteger::itmp,jtmp,kx,ky,k0x,k0y,k1x,k1yinteger::nN=func%N!order of polynomial interpolationfinter2d=0.d0itmp=locate(func%X(func%Imin:func%Imax),x)jtmp=locate(func%Y(func%Jmin:func%Jmax),y)kx=max(itmp-(N-1)/2,1)ky=max(jtmp-(N-1)/2,1)k0x=kx;if(k0x<func%Imin)k0x=func%Imink0y=ky;if(k0y<func%Jmin)k0y=func%Jmink1x=kx+N+1if(k1x>func%Imax)then k1x=func%Imaxk0x=k1x-N-1endifk1y=ky+N+1if(k1y>func%Jmax)thenk1y=func%Jmaxk0y=k1y-N-1endif call polin2(func%X(k0x:k1x),func%Y(k0y:k1y),func%F(k0x:k1x,k0y:k1y),x,y,f,df)finter2d=freturnend function finter2d