set x grid pointers for xx grid and interpolation scale terms
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer | :: | nx | ||||
real(kind=wp) | :: | x(*) | ||||
integer | :: | mx | ||||
real(kind=wp) | :: | xx(*) | ||||
integer | :: | ix(*) | ||||
real(kind=wp) | :: | dx(*) |
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