linmx Subroutine

private subroutine linmx(nx, x, mx, xx, ix, dx)

set x grid pointers for xx grid and interpolation scale terms

Arguments

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

Called by

proc~~linmx~~CalledByGraph proc~linmx regridpack_module::linmx proc~rgrd1 regridpack_module::rgrd1 proc~rgrd1->proc~linmx proc~rgrd2 regridpack_module::rgrd2 proc~rgrd2->proc~linmx proc~rgrd3 regridpack_module::rgrd3 proc~rgrd3->proc~linmx proc~rgrd4 regridpack_module::rgrd4 proc~rgrd4->proc~linmx interface~regrid regridpack_module::regrid interface~regrid->proc~rgrd1 interface~regrid->proc~rgrd2 interface~regrid->proc~rgrd3 interface~regrid->proc~rgrd4 proc~rgrd1_wrapper regridpack_module::rgrd1_wrapper interface~regrid->proc~rgrd1_wrapper proc~rgrd2_wrapper regridpack_module::rgrd2_wrapper interface~regrid->proc~rgrd2_wrapper proc~rgrd3_wrapper regridpack_module::rgrd3_wrapper interface~regrid->proc~rgrd3_wrapper proc~rgrd4_wrapper regridpack_module::rgrd4_wrapper interface~regrid->proc~rgrd4_wrapper proc~rgrd1_wrapper->proc~rgrd1 proc~rgrd2_wrapper->proc~rgrd2 proc~rgrd3_wrapper->proc~rgrd3 proc~rgrd4_wrapper->proc~rgrd4

Source Code

    subroutine linmx(nx,x,mx,xx,ix,dx)

    implicit none

    real(wp) :: x(*),xx(*),dx(*)
    integer :: ix(*),isrt,ii,i,nx,mx

    isrt = 1

    do ii=1,mx
        ! find x(i) s.t. x(i) < xx(ii) <= x(i+1)
        do i=isrt,nx-1
            if (x(i+1) >= xx(ii)) then
                isrt = i
                ix(ii) = i
                exit
            end if
        end do
    end do

    ! set linear scale term
    do ii=1,mx
        i = ix(ii)
        dx(ii) = (xx(ii)-x(i))/(x(i+1)-x(i))
    end do

    end subroutine linmx