field_sample_points_base Subroutine

public subroutine field_sample_points_base(self, vals, points, a, b, c)

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 Bound

base_backend_t

Arguments

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

Calls

proc~~field_sample_points_base~~CallsGraph proc~field_sample_points_base m_base_backend::base_backend_t%field_sample_points_base proc~abort_run m_logger::abort_run proc~field_sample_points_base->proc~abort_run interface~str m_logger::str proc~abort_run->interface~str mpi_abort mpi_abort proc~abort_run->mpi_abort mpi_barrier mpi_barrier proc~abort_run->mpi_barrier mpi_comm_rank mpi_comm_rank proc~abort_run->mpi_comm_rank mpi_comm_size mpi_comm_size proc~abort_run->mpi_comm_size mpi_finalized mpi_finalized proc~abort_run->mpi_finalized mpi_initialized mpi_initialized proc~abort_run->mpi_initialized