linmxu Subroutine

private subroutine linmxu(nx, mx, ix, dx)

set linear interpolation terms

Arguments

Type IntentOptional Attributes Name
integer :: nx
integer :: mx
integer :: ix(mx)
real(kind=wp) :: dx(mx)

Called by

proc~~linmxu~~CalledByGraph proc~linmxu regridpack_module::linmxu proc~rgrd1u regridpack_module::rgrd1u proc~rgrd1u->proc~linmxu proc~rgrd2u regridpack_module::rgrd2u proc~rgrd2u->proc~linmxu proc~rgrd3u regridpack_module::rgrd3u proc~rgrd3u->proc~linmxu proc~rgrd4u regridpack_module::rgrd4u proc~rgrd4u->proc~linmxu interface~regrid regridpack_module::regrid interface~regrid->proc~rgrd1u interface~regrid->proc~rgrd2u interface~regrid->proc~rgrd3u interface~regrid->proc~rgrd4u

Source Code

    subroutine linmxu(nx,mx,ix,dx)

    implicit none

    integer :: nx,mx,ix(mx),i,ii
    real(wp) :: dx(mx),dnx,dmx,x,xx

    ! set "virtual" uniform increments
    dnx = 1.0_wp/(nx-1)
    dmx = 1.0_wp/(mx-1)

    ! set ix(ii) = i  s.t. i,i+1 can interpolate for ii
    do ii=1,mx
        xx = (ii-1)*dmx
        ix(ii) = min(int(xx/dnx)+1,nx-1)
        ! set scale term for linear
        i = ix(ii)
        x = (i-1)*dnx
        dx(ii) = (xx-x)/dnx
    end do

    end subroutine linmxu