# tem_intp_bilinear_vec Function

## private function tem_intp_bilinear_vec(srcVal, targetCoord, nVals) result(phi)

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)

### Arguments

Type IntentOptional 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

### Return Value real(kind=rk), (nVals)

interpolated values

## Source Code

  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