Neko 0.9.99
A portable framework for high-order spectral element flow simulations
Loading...
Searching...
No Matches
point_interpolator Module Reference

Routines to interpolate fields on a given element on a point in that element with given r,s,t coordinates.

Data Types

type  point_interpolator_t
 Field interpolator to arbitrary points within an element. Tailored for experimentation, and convenience, not performance Does all interpolation on the CPU. Only considers one element If performant interpolation on many elements is required Look at local_interpolator_t, similar but with less functionality. More...
 

Functions/Subroutines

subroutine point_interpolator_init (this, xh)
 Initialization of point interpolation.
 
subroutine point_interpolator_free (this)
 Free pointers.
 
subroutine point_interpolator_compute_weights (this, r, s, t, wr, ws, wt)
 Computes interpolation weights \( w_r, w_s, w_t \) for a list of points.
 
real(kind=rp) function, dimension(:), allocatable point_interpolator_interpolate_scalar (this, rst, x)
 Interpolates a scalar field \( X \) on a set of \( N \) points \( \mathbf{r}_i , i\in[1,N]\). Returns a vector of N coordinates \( [x_i(\mathbf{r}_i)], i\in[1,N]\).
 
type(point_t) function, dimension(:), allocatable point_interpolator_interpolate_vector (this, rst, x, y, z)
 Interpolates a vector field \( \vec f = (X,Y,Z) \) on a set of \( N \) points \( \mathbf{r}_i \). Returns an array of N points \( [x(\mathbf{r}_i), y(\mathbf{r}_i), z(\mathbf{r}_i)], i\in[1,N]\).
 
type(point_t) function point_interpolator_interpolate_vector_jacobian (this, jac, rst, x, y, z)
 Interpolates a vector field \( \vec f = (X,Y,Z) \) and constructs the Jacobian at a point \( (r,s,t) \). Returns a vector \( [x(\mathbf{r}_i), y(\mathbf{r}_i), z(\mathbf{r}_i)], i\in[1,N]\).
 
real(kind=rp) function, dimension(3, 3) point_interpolator_interpolate_jacobian (this, rst, x, y, z)
 Constructs the Jacobian, returns a 3-by-3 array where \( [J(\mathbf{r}]_{ij} = \frac{d\mathbf{x}_i}{d\mathbf{r}_j}\).
 

Function/Subroutine Documentation

◆ point_interpolator_compute_weights()

subroutine point_interpolator::point_interpolator_compute_weights ( class(point_interpolator_t), intent(inout this,
real(kind=rp), dimension(:), intent(in r,
real(kind=rp), dimension(:), intent(in s,
real(kind=rp), dimension(:), intent(in t,
real(kind=rp), dimension(:,:), intent(inout wr,
real(kind=rp), dimension(:,:), intent(inout ws,
real(kind=rp), dimension(:,:), intent(inout wt 
)
private
Parameters
rlocal r-coordinates.
slocal s-coordinates.
tlocal t-coordinates.
wrWeights in the r-direction.
wsWeights in the s-direction.
wtWeights in the t-direction.
Note
wr, ws and wt must be arrays of dimensions (lx, N) where N is the number of points (size of the r,s,t arrays).

Definition at line 117 of file point_interpolator.f90.

Here is the call graph for this function:

◆ point_interpolator_free()

subroutine point_interpolator::point_interpolator_free ( class(point_interpolator_t), intent(inout this)
private

Definition at line 100 of file point_interpolator.f90.

◆ point_interpolator_init()

subroutine point_interpolator::point_interpolator_init ( class(point_interpolator_t), intent(inout), target  this,
type(space_t), intent(in), target  xh 
)
Parameters
xhFunction space.

Definition at line 86 of file point_interpolator.f90.

◆ point_interpolator_interpolate_jacobian()

real(kind=rp) function, dimension(3,3) point_interpolator::point_interpolator_interpolate_jacobian ( class(point_interpolator_t), intent(in this,
type(point_t), intent(in rst,
real(kind=rp), dimension(this%xh%lx, this%xh%ly, this%xh%lz), intent(inout x,
real(kind=rp), dimension(this%xh%lx, this%xh%ly, this%xh%lz), intent(inout y,
real(kind=rp), dimension(this%xh%lx, this%xh%ly, this%xh%lz), intent(inout z 
)
private
Parameters
rstr,s,t coordinates.
XValues of the field \( X \) at GLL points.
YValues of the field \( Y \) at GLL points.
ZValues of the field \( Z \) at GLL points.

Definition at line 328 of file point_interpolator.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ point_interpolator_interpolate_scalar()

real(kind=rp) function, dimension(:), allocatable point_interpolator::point_interpolator_interpolate_scalar ( class(point_interpolator_t), intent(in this,
type(point_t), dimension(:), intent(in rst,
real(kind=rp), dimension(this%xh%lx, this%xh%ly, this%xh%lz), intent(inout x 
)
private
Parameters
rstr,s,t coordinates.
XValues of the field \( X \) at GLL points in one element.

Definition at line 139 of file point_interpolator.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ point_interpolator_interpolate_vector()

type(point_t) function, dimension(:), allocatable point_interpolator::point_interpolator_interpolate_vector ( class(point_interpolator_t), intent(in this,
type(point_t), dimension(:), intent(in rst,
real(kind=rp), dimension(this%xh%lx, this%xh%ly, this%xh%lz), intent(inout x,
real(kind=rp), dimension(this%xh%lx, this%xh%ly, this%xh%lz), intent(inout y,
real(kind=rp), dimension(this%xh%lx, this%xh%ly, this%xh%lz), intent(inout z 
)
private
Parameters
Nnumber of points (use 1 to interpolate a scalar).
XValues of the field \( X \) at GLL points in one element.
YValues of the field \( Y \) at GLL points in one element.
ZValues of the field \( Z \) at GLL points in one element.

Definition at line 200 of file point_interpolator.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ point_interpolator_interpolate_vector_jacobian()

type(point_t) function point_interpolator::point_interpolator_interpolate_vector_jacobian ( class(point_interpolator_t), intent(in this,
real(kind=rp), dimension(3,3), intent(inout jac,
type(point_t), intent(in rst,
real(kind=rp), dimension(this%xh%lx, this%xh%ly, this%xh%lz), intent(inout x,
real(kind=rp), dimension(this%xh%lx, this%xh%ly, this%xh%lz), intent(inout y,
real(kind=rp), dimension(this%xh%lx, this%xh%ly, this%xh%lz), intent(inout z 
)
private
Parameters
jacJacobian.
rstr,s,t coordinates;
XValues of the field \( X \) at GLL points in one element.
YValues of the field \( Y \) at GLL points in one element.
ZValues of the field \( Z \) at GLL points in one element.

Definition at line 274 of file point_interpolator.f90.

Here is the call graph for this function:
Here is the caller graph for this function: