subroutine interp_linear_multiD(xc,xp,wc,wp,nwc)
! get point values from nearby cells via linear interpolation
! multi-D method
integer :: nwc
double precision :: xc(0:1,0:1,0:1,1:ndim),xp(1:ndim)
double precision :: wc(0:1,0:1,0:1,1:nwc),wp(1:nwc)
integer :: ix1,ix2,ix3,iw
double precision :: factor(0:1,0:1,0:1)
call get_interp_factor_linear(xc,xp,factor)
wp=0.d0
do iw=1,nwc
do ix3=0,1
do ix2=0,1
do ix1=0,1
wp(iw)=wp(iw)+wc(ix1,ix2,ix3,iw)*factor(ix1,ix2,ix3)
enddo
enddo
enddo
enddo
end subroutine interp_linear_multiD