# tem_intp_trilinearReduced_scal Function

## private function tem_intp_trilinearReduced_scal(srcVal, targetCoord) result(phi)

This function returns the tri-linearly interpolated values from the seven source points to the target position located at targetCoord. The source points are arranged in a square from (0,0,0)x(1,1,1) The order of the source points are according to the morton curve

### Arguments

Type IntentOptional AttributesName
real(kind=rk), intent(in) :: srcVal(7)

source values of the square corners

real(kind=rk), intent(in) :: targetCoord(3)

interpolation location within the square

### Return Value real(kind=rk)

interpolated value

## Source Code

  function tem_intp_trilinearReduced_scal( srcVal, targetCoord ) result( phi )
! ---------------------------------------------------------------------------
!> source values of the square corners
real(kind=rk), intent(in) :: srcVal(7)
!> interpolation location within the square
real(kind=rk), intent(in) :: targetCoord(3)
!> interpolated value
real(kind=rk) :: phi
! ---------------------------------------------------------------------------
real(kind=rk) :: phi_northFront, phi_southFront
real(kind=rk) :: phi_northBack, phi_southBack
real(kind=rk) :: phi_front, phi_back
! ---------------------------------------------------------------------------
! Linear interpolation on the cube front side (z = 0 )
phi_northFront = (1._rk - targetCoord(1))* srcVal(3)                       &
&                     + targetCoord(1) * srcVal(4)
phi_southFront = (1._rk - targetCoord(1))* srcVal(1)                       &
&                     + targetCoord(1) * srcVal(2)
! Linear interpolation on the cube back side (z = 1 )
phi_northBack  = srcVal(7) !(1._rk - targetCoord(1))* srcVal(7) ! + targetCoord(1)*srcVal(8)
phi_southBack  = (1._rk - targetCoord(1))* srcVal(5)                       &
&                     + targetCoord(1) * srcVal(6)
! Linear interpolation on the cube front side (z = 0 )
phi_front = (1._rk - targetCoord(2))* phi_southFront                       &
&                + targetCoord(2) * phi_northFront
! Linear interpolation on the cube back side (z = 1 )
phi_back  = (1._rk - targetCoord(2))* phi_southBack                        &
&                + targetCoord(2) * phi_northBack
phi       = (1._rk - targetCoord(3))* phi_front                            &
&                + targetCoord(3) * phi_back

end function tem_intp_trilinearReduced_scal