This function returns the bi-linearly interpolated values from the four source points to the target position located at targetCoord. The source points are arranged in a square from (0,0)x(1,1) The order of the source points are according to the morton curve 1 2 3 4 (0,0); (1,0); (0,1); (1,1)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=rk), | intent(in) | :: | srcVal(nVals,4) |
source values of the square corners |
||
real(kind=rk), | intent(in) | :: | targetCoord(2) |
interpolation location within the square |
||
integer, | intent(in) | :: | nVals |
number of values |
interpolated values
function tem_intp_bilinear_vec( srcVal, targetCoord, nVals ) result( phi ) ! -------------------------------------------------------------------- ! !> number of values integer, intent(in) :: nVals !> source values of the square corners real(kind=rk), intent(in) :: srcVal(nVals,4) !> interpolation location within the square real(kind=rk), intent(in) :: targetCoord(2) !> interpolated values real(kind=rk) :: phi(nVals) ! -------------------------------------------------------------------- ! real(kind=rk) :: phi_north, phi_south integer :: iVal ! -------------------------------------------------------------------- ! do iVal = 1, nVals ! Linear interpolation on the north nodes phi_north = (1._rk - targetCoord(1)) * srcVal(iVal,3) & & + targetCoord(1) * srcVal(iVal,4) phi_south = (1._rk - targetCoord(1)) * srcVal(iVal,1) & & + targetCoord(1)*srcVal(iVal,2) phi(iVal) = (1._rk - targetCoord(2)) * phi_south & & + targetCoord(2)*phi_north end do end function tem_intp_bilinear_vec