Neko 1.99.1
A portable framework for high-order spectral element flow simulations
|
Implements global_interpolation given a dofmap.
Data Types | |
type | global_interpolation_t |
Implements global interpolation for arbitrary points in the domain. More... | |
Functions/Subroutines | |
subroutine | global_interpolation_init_dof (this, dof, comm, tol, pad) |
Initialize the global interpolation object on a dofmap. | |
subroutine | global_interpolation_init_xyz (this, x, y, z, gdim, nelv, xh, comm, tol, pad) |
Initialize the global interpolation object on a set of coordinates. | |
subroutine | global_interpolation_free (this) |
Destructor. | |
subroutine | global_interpolation_free_points (this) |
Destructor for point arrays. | |
subroutine | global_interpolation_free_points_local (this) |
subroutine | global_interpolation_find_common (this) |
Common routine for finding the points. | |
subroutine | global_interpolation_check_points (this, x, y, z) |
Check the points for validity This is used to check that the points are valid and that the interpolation is correct. It checks that the points are within the tolerance. | |
subroutine | global_interpolation_find_coords (this, x, y, z, n_points) |
Finds the corresponding r,s,t coordinates in the correct global element as well as which process that owns the point. After this the values at these points can be evaluated. | |
subroutine | global_interpolation_find_coords1d (this, x, y, z, n_points) |
Finds the corresponding r,s,t coordinates in the correct global element as well as which process that owns the point. After this the values at these points can be evaluated. | |
subroutine | global_interpolation_init_point_arrays (this) |
subroutine | global_interpolation_find_xyz (this, xyz, n_points) |
Finds the corresponding r,s,t coordinates in the correct global element as well as which process that owns the point. After this the values at these points can be evaluated. If the locations of the points change this must be called again. | |
subroutine | global_interpolation_find_and_redist (this, xyz, n_points) |
Finds the corresponding r,s,t coordinates and redistributes the points to the owning rank in the correct global element as well as which process that owns the point. There will be some redundancy as for example xyz and xyz_local will have the same values After this the values at these points can be evaluated without MPI. | |
subroutine | global_interpolation_evaluate (this, interp_values, field, on_host) |
Evalute the interpolated value in the points given a field. | |
logical function | rst_cmp (rst1, rst2, res1, res2, tol) |
Compares two sets of rst coordinates and checks whether rst2 is better than rst1 given a tolerance res1 and res2 are the distances to the interpolated xyz coordinate and true xyz coord for point 1 and 2 tol specifies the range for the rst coordinate to be within: (r,s,t) in (-1+tol,1+tol)^3. | |
Variables | |
integer, parameter, public | glob_map_size = 4096 |
|
private |
Definition at line 896 of file global_interpolation.f90.
|
private |
interp_values | Array of values in the given points. |
field | Array of values used for interpolation. |
on_host | If interpolation should be carried out on the host |
Definition at line 1109 of file global_interpolation.f90.
|
private |
xyz | The coordinates of the points. |
n_points | The number of points. |
make deep copy incase xyz goes out of scope or deallocated
Definition at line 1065 of file global_interpolation.f90.
|
private |
Find element candidates at this rank
Copy xyz coords to each element candidate
Definition at line 449 of file global_interpolation.f90.
|
private |
x | The x-coordinates of the points. |
y | The y-coordinates of the points. |
z | The z-coordinates of the points. |
n_points | The number of points. |
Definition at line 950 of file global_interpolation.f90.
|
private |
x | The x-coordinates of the points. |
y | The y-coordinates of the points. |
z | The z-coordinates of the points. |
n_points | The number of points. |
Definition at line 985 of file global_interpolation.f90.
|
private |
xyz | The coordinates of the points. |
n_points | The number of points. |
make deep copy incase xyz goes out of scope or deallocated
Definition at line 1036 of file global_interpolation.f90.
|
private |
Definition at line 366 of file global_interpolation.f90.
|
private |
|
private |
subroutine global_interpolation::global_interpolation_init_dof | ( | class(global_interpolation_t), intent(inout), target | this, |
type(dofmap_t) | dof, | ||
type(mpi_comm), intent(in), optional | comm, | ||
real(kind=rp), optional | tol, | ||
real(kind=rp), optional | pad | ||
) |
dof | Dofmap on which the interpolation is to be carried out. |
tol | Tolerance for Newton iterations. |
Definition at line 182 of file global_interpolation.f90.
|
private |
Definition at line 1012 of file global_interpolation.f90.
|
private |
x | x-coordinates. |
y | y-coordinates. |
z | z-coordinates. |
gdim | Geometric dimension. |
nelv | Number of elements of the mesh in which to search for the points. |
Xh | Space on which to interpolate. |
tol | Tolerance for Newton iterations. |
pad | Padding of the bounding boxes. |
Definition at line 219 of file global_interpolation.f90.
|
private |
rst1 | local coordinates for point 1 |
rst2 | local coordinates for point 2 |
rst1 | distance between xyz(rst1) and the true xyz coordinate |
rst2 | distance between xyz(rst2) and the true xyz coordinate |
tol | Tolerance for how much rst1 and rst2 can over/undershoot [-1,1] |
Else we check rst2 is inside and has a smaller distance
Definition at line 1149 of file global_interpolation.f90.
Definition at line 68 of file global_interpolation.f90.