Computes this rank's part of the trilinear interpolation of the DIR_X
VERT fields a, b and c at points(1:3, p): vals(1:3, p) sums the
interpolation weight times a, b and c over the corners of the cell
holding point p that this rank owns. Every grid point is owned by one
rank, so an MPI sum over ranks gives the full interpolation without a
halo exchange. Corners beyond a periodic boundary wrap around; corners
outside a non-periodic boundary are skipped. Needs a uniform grid.
No MPI reduction is done, so the caller can reduce once for all points.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(base_backend_t) | :: | self | ||||
| real(kind=dp), | intent(out) | :: | vals(:,:) | |||
| real(kind=dp), | intent(in) | :: | points(:,:) | |||
| class(field_t), | intent(in) | :: | a | |||
| class(field_t), | intent(in) | :: | b | |||
| class(field_t), | intent(in) | :: | c |