1 #ifndef __PLE_LOCATOR_H__
2 #define __PLE_LOCATOR_H__
31 #include "ple_config.h"
33 #if defined(PLE_HAVE_MPI)
68 PLE_LOCATOR_NUMBERING,
71 } ple_locator_option_t;
110 (ple_mesh_extents_t) (
const void *mesh,
111 ple_lnum_t n_max_extents,
139 (ple_mesh_elements_locate_t) (
const void *mesh,
140 float tolerance_base,
141 float tolerance_fraction,
143 const ple_coord_t point_coords[],
144 const int point_tag[],
145 ple_lnum_t location[],
153 (ple_locator_log_t) (
int event,
161 typedef struct _ple_locator_t ple_locator_t;
188 #if defined(PLE_HAVE_MPI)
249 float tolerance_base,
250 float tolerance_fraction,
253 const ple_lnum_t point_list[],
254 const int point_tag[],
255 const ple_coord_t point_coords[],
257 ple_mesh_extents_t *mesh_extents_f,
258 ple_mesh_elements_locate_t *mesh_elements_locate_f);
294 float tolerance_base,
295 float tolerance_fraction,
297 const ple_lnum_t point_list[],
298 const ple_lnum_t point_tag[],
299 const ple_coord_t point_coords[],
301 ple_mesh_extents_t *mesh_extents_f,
302 ple_mesh_elements_locate_t *mesh_locate_f);
316 ple_lnum_t location_shift);
461 const ple_lnum_t *local_list,
481 double *location_wtime,
482 double *location_cpu_time,
483 double *exchange_wtime,
484 double *exchange_cpu_time);
501 double *location_wtime,
502 double *location_cpu_time,
503 double *exchange_wtime,
504 double *exchange_cpu_time);
524 #if defined(PLE_HAVE_MPI)
539 #if defined(PLE_HAVE_MPI)
562 #if defined(PLE_HAVE_MPI)
ple_locator_t * ple_locator_create(MPI_Comm comm, int n_ranks, int start_rank)
Creation of a locator structure.
Definition: ple_locator.c:2553
const ple_lnum_t * ple_locator_get_exterior_list(const ple_locator_t *this_locator)
Return list of points not located after locator initialization. This list defines a subset of the poi...
Definition: ple_locator.c:3169
ple_lnum_t ple_locator_get_n_dist_points(const ple_locator_t *this_locator)
Return number of distant points after locator initialization.
Definition: ple_locator.c:3043
void ple_locator_set_async_threshold(int threshold)
Set the maximum number of exchanging ranks for which we use asynchronous MPI sends and receives inste...
Definition: ple_locator.c:3559
void ple_locator_dump(const ple_locator_t *this_locator)
Dump printout of a locator structure.
Definition: ple_locator.c:3380
void ple_locator_extend_search(ple_locator_t *this_locator, const void *mesh, const int *options, float tolerance_base, float tolerance_fraction, ple_lnum_t n_points, const ple_lnum_t point_list[], const ple_lnum_t point_tag[], const ple_coord_t point_coords[], float distance[], ple_mesh_extents_t *mesh_extents_f, ple_mesh_elements_locate_t *mesh_locate_f)
Extend search for a locator for which set_mesh has already been called.
Definition: ple_locator.c:2773
int ple_locator_get_async_threshold(void)
Get the maximum number of exchanging ranks for which we use asynchronous MPI sends and receives inste...
Definition: ple_locator.c:3544
const ple_coord_t * ple_locator_get_dist_coords(const ple_locator_t *this_locator)
Return an array of coordinates of each distant point after locator initialization.
Definition: ple_locator.c:3091
void ple_locator_set_mesh(ple_locator_t *this_locator, const void *mesh, const int *options, float tolerance_base, float tolerance_fraction, int dim, ple_lnum_t n_points, const ple_lnum_t point_list[], const ple_lnum_t point_tag[], const ple_coord_t point_coords[], float distance[], ple_mesh_extents_t *mesh_extents_f, ple_mesh_elements_locate_t *mesh_locate_f)
Prepare locator for use with a given mesh representation.
Definition: ple_locator.c:2683
ple_lnum_t ple_locator_get_n_exterior(const ple_locator_t *this_locator)
Return number of points not located after locator initialization.
Definition: ple_locator.c:3152
void ple_locator_exchange_point_var(ple_locator_t *this_locator, void *distant_var, void *local_var, const ple_lnum_t *local_list, size_t type_size, size_t stride, int reverse)
Distribute variable defined on distant points to processes owning the original points (i...
Definition: ple_locator.c:3226
void ple_locator_set_comm_log(ple_locator_log_t *log_function, int start_p_comm, int end_p_comm, int start_g_comm, int end_g_comm)
Register communication logging functions for locator instrumentation.
Definition: ple_locator.c:3582
void ple_locator_get_times(const ple_locator_t *this_locator, double *location_wtime, double *location_cpu_time, double *exchange_wtime, double *exchange_cpu_time)
Return timing information.
Definition: ple_locator.c:3326
const ple_lnum_t * ple_locator_get_interior_list(const ple_locator_t *this_locator)
Return list of points located after locator initialization. This list defines a subset of the point s...
Definition: ple_locator.c:3136
ple_locator_t * ple_locator_destroy(ple_locator_t *this_locator)
Destruction of a locator structure.
Definition: ple_locator.c:2624
const ple_lnum_t * ple_locator_get_dist_locations(const ple_locator_t *this_locator)
Return an array of local element numbers containing (or nearest to) each distant point after locator ...
Definition: ple_locator.c:3067
void ple_locator_discard_exterior(ple_locator_t *this_locator)
Discard list of points not located after locator initialization. This list defines a subset of the po...
Definition: ple_locator.c:3184
void ple_locator_get_comm_times(const ple_locator_t *this_locator, double *location_wtime, double *location_cpu_time, double *exchange_wtime, double *exchange_cpu_time)
Return communication timing information.
Definition: ple_locator.c:3359
void ple_locator_shift_locations(ple_locator_t *this_locator, ple_lnum_t location_shift)
Shift location ids for located points after locator initialization.
Definition: ple_locator.c:3020
ple_lnum_t ple_locator_get_n_interior(const ple_locator_t *this_locator)
Return number of points located after locator initialization.
Definition: ple_locator.c:3114