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
subroutine cubnmx(nx,x,mx,xx,ix,dxm,dx,dxp,dxpp)implicit nonereal(wp)::x(*),xx(*),dxm(*),dx(*),dxp(*),dxpp(*)integer::ix(*),mx,nx,i,ii,isrtisrt=1do ii=1,mx! set i in [2,nx-2] closest s.t.! x(i-1),x(i),x(i+1),x(i+2) can interpolate xx(ii)do i=isrt,nx-1if(x(i+1)>=xx(ii))thenix(ii)=min(nx-2,max(2,i))isrt=ix(ii)exit end if end do end do! set cubic scale termsdo ii=1,mxi=ix(ii)dxm(ii)=(xx(ii)-x(i))*(xx(ii)-x(i+1))*(xx(ii)-x(i+2))/((x(i-1)-x(i))*(x(i-1)-x(i+1))*(x(i-1)-x(i+2)))dx(ii)=(xx(ii)-x(i-1))*(xx(ii)-x(i+1))*(xx(ii)-x(i+2))/((x(i)-x(i-1))*(x(i)-x(i+1))*(x(i)-x(i+2)))dxp(ii)=(xx(ii)-x(i-1))*(xx(ii)-x(i))*(xx(ii)-x(i+2))/((x(i+1)-x(i-1))*(x(i+1)-x(i))*(x(i+1)-x(i+2)))dxpp(ii)=(xx(ii)-x(i-1))*(xx(ii)-x(i))*(xx(ii)-x(i+1))/((x(i+2)-x(i-1))*(x(i+2)-x(i))*(x(i+2)-x(i+1)))end do end subroutine cubnmx