YetAnotherCoupler 3.2.0_a
Loading...
Searching...
No Matches
Data Structures | Functions | Variables
interp_method_creep.c File Reference
#include "config.h"
#include <string.h>
#include "interp_method_internal.h"
#include "interp_method_creep.h"
#include "yac_mpi_internal.h"
#include "ensure_array_size.h"
Include dependency graph for interp_method_creep.c:

Go to the source code of this file.

Data Structures

struct  interp_method_creep
 
struct  stencil_info
 
struct  result_stencil
 
struct  result_stencils
 
struct  interp_result
 
struct  tgt_request
 
struct  comm_stuff
 

Functions

static size_t do_search_creep (struct interp_method *method, struct yac_interp_grid *interp_grid, size_t *tgt_points, size_t count, struct yac_interp_weights *weights)
 
static void delete_creep (struct interp_method *method)
 
static MPI_Datatype yac_get_stencil_info_mpi_datatype (MPI_Comm comm)
 
static void get_result_stencil_pack_sizes (void *results, size_t result_count, size_t result_size, struct result_stencil *(*get_stencil)(void *), size_t *pack_order, int *pack_sizes, MPI_Datatype stencil_info_dt, MPI_Comm comm)
 
static void pack_result_stencil (struct result_stencil *stencil, void *buffer, int buffer_size, int *position, MPI_Datatype stencil_info_dt, MPI_Comm comm)
 
static void pack_result_stencils (void *results, size_t result_count, size_t result_size, struct result_stencil *(*get_stencil)(void *), size_t *pack_order, void **pack_data, int *pack_sizes, MPI_Datatype stencil_info_dt, MPI_Comm comm)
 
static void unpack_result_stencil (struct result_stencil *stencil, void *buffer, int buffer_size, int *position, MPI_Datatype stencil_info_dt, MPI_Comm comm, struct stencil_info **stencil_info_buffer, size_t *stencil_info_buffer_array_size, size_t *stencil_info_buffer_size)
 
static struct result_stencilsunpack_result_stencils (size_t count, void *packed_data, size_t packed_data_size, MPI_Datatype stencil_info_dt, MPI_Comm comm)
 
static struct result_stencilsexchange_interp_results (void *results, size_t result_count, size_t result_size, struct result_stencil *(*result_get_stencil)(void *), size_t *pack_order, int *ranks, struct comm_stuff comm)
 
static struct result_stencilinterp_result_get_stencil (void *interp_result)
 
static struct result_stencilsrelocate_interp_results (struct yac_interp_grid *interp_grid, struct comm_stuff comm, struct interp_result *interp_results, size_t result_count)
 
static void get_initial_results (struct yac_interp_grid *interp_grid, struct comm_stuff comm, struct yac_interp_weights *interp_weights, struct interp_result **interp_results, size_t *result_count)
 
static int compare_interp_result_stencil (const void *a, const void *b)
 
static int compare_interp_result_stencil_local_id (const void *a, const void *b)
 
static int compare_interp_result_global_id (const void *a, const void *b)
 
static int compare_tgt_request_stencil_count (const void *a, const void *b)
 
static int compare_tgt_request_global_id (const void *a, const void *b)
 
static int compare_result_stencil_global_id (const void *a, const void *b)
 
static int compare_yac_int (const void *a, const void *b)
 
static void extract_interp_info (struct yac_interp_grid *interp_grid, struct comm_stuff comm, struct interp_result *interp_results, size_t result_count, struct remote_points *interp_tgt_remote_points, size_t **num_stencils_per_tgt_, size_t **stencil_indices_, int **stencil_ranks_, double **w_)
 
static struct result_stenciltgt_request_get_stencil (void *tgt_request)
 
static struct result_stencilsupdate_neigh_requests (struct yac_interp_grid *interp_grid, struct comm_stuff comm, struct tgt_request *neigh_requests, size_t *request_count_, struct result_stencils *interp_stencils)
 
static void get_tgt_neigh_info_cell (struct yac_interp_grid *interp_grid, size_t *tgt_local_ids, yac_int *tgt_global_ids, size_t count, size_t **neigh_local_ids_, yac_int **neigh_to_tgt_global_id_, size_t *total_num_neighbours_)
 
static void get_tgt_neigh_info_vertex (struct yac_interp_grid *interp_grid, size_t *tgt_local_ids, yac_int *tgt_global_ids, size_t count, size_t **neigh_local_ids_, yac_int **neigh_to_tgt_global_id_, size_t *total_num_neighbours_)
 
static void get_tgt_neigh_info (struct yac_interp_grid *interp_grid, size_t *tgt_local_ids, yac_int *tgt_global_ids, size_t count, size_t **neigh_local_ids_, yac_int **neigh_global_ids_, yac_int **neigh_to_tgt_global_id_, size_t *total_num_neighbours_)
 
static void send_neigh_request (struct yac_interp_grid *interp_grid, struct comm_stuff comm, size_t *neigh_local_ids, yac_int *neigh_global_ids, size_t num_neighbours, struct tgt_request **neigh_requests_, size_t *request_count_)
 
static struct interp_resultinit_interp_results (size_t *tgt_local_ids, yac_int *tgt_global_ids, size_t count)
 
static int compare_stencil_info (const void *a, const void *b)
 
static struct result_stencil copy_result_stencil_multi (struct result_stencil *neigh_stencils, size_t *stencil_indices, size_t count, yac_int global_id, double weight)
 
static size_t match_neigh_answers_with_tgts (struct result_stencils *neigh_answer, yac_int *neigh_global_ids, yac_int *neigh_to_tgt_global_id, size_t *stencil_indices, size_t *num_neighbours_, struct interp_result *interp_results, size_t *num_open_tgt_)
 
static struct comm_stuff init_comm_stuff (struct yac_interp_grid *interp_grid)
 
static void free_comm_stuff (struct comm_stuff comm)
 
static void do_search_creep_2 (struct yac_interp_grid *interp_grid, int const max_creep_distance, size_t *tgt_points, yac_int *tgt_global_ids, size_t count, int *interp_flag, struct yac_interp_weights *weights)
 
struct interp_methodyac_interp_method_creep_new (int creep_distance)
 

Variables

static struct interp_method_vtable interp_method_creep_vtable
 

Function Documentation

◆ compare_interp_result_global_id()

static int compare_interp_result_global_id ( const void *  a,
const void *  b 
)
static

Definition at line 457 of file interp_method_creep.c.

Here is the caller graph for this function:

◆ compare_interp_result_stencil()

static int compare_interp_result_stencil ( const void *  a,
const void *  b 
)
static

Definition at line 432 of file interp_method_creep.c.

Here is the caller graph for this function:

◆ compare_interp_result_stencil_local_id()

static int compare_interp_result_stencil_local_id ( const void *  a,
const void *  b 
)
static

Definition at line 448 of file interp_method_creep.c.

Here is the caller graph for this function:

◆ compare_result_stencil_global_id()

static int compare_result_stencil_global_id ( const void *  a,
const void *  b 
)
static

Definition at line 483 of file interp_method_creep.c.

Here is the caller graph for this function:

◆ compare_stencil_info()

static int compare_stencil_info ( const void *  a,
const void *  b 
)
static

Definition at line 829 of file interp_method_creep.c.

Here is the caller graph for this function:

◆ compare_tgt_request_global_id()

static int compare_tgt_request_global_id ( const void *  a,
const void *  b 
)
static

Definition at line 474 of file interp_method_creep.c.

Here is the caller graph for this function:

◆ compare_tgt_request_stencil_count()

static int compare_tgt_request_stencil_count ( const void *  a,
const void *  b 
)
static

Definition at line 465 of file interp_method_creep.c.

Here is the caller graph for this function:

◆ compare_yac_int()

static int compare_yac_int ( const void *  a,
const void *  b 
)
inlinestatic

Definition at line 492 of file interp_method_creep.c.

Here is the caller graph for this function:

◆ copy_result_stencil_multi()

static struct result_stencil copy_result_stencil_multi ( struct result_stencil neigh_stencils,
size_t *  stencil_indices,
size_t  count,
yac_int  global_id,
double  weight 
)
static

Definition at line 842 of file interp_method_creep.c.

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

◆ delete_creep()

static void delete_creep ( struct interp_method method)
static

Definition at line 1269 of file interp_method_creep.c.

◆ do_search_creep()

static size_t do_search_creep ( struct interp_method method,
struct yac_interp_grid interp_grid,
size_t *  tgt_points,
size_t  count,
struct yac_interp_weights weights 
)
static

Definition at line 1144 of file interp_method_creep.c.

Here is the call graph for this function:

◆ do_search_creep_2()

static void do_search_creep_2 ( struct yac_interp_grid interp_grid,
int const  max_creep_distance,
size_t *  tgt_points,
yac_int tgt_global_ids,
size_t  count,
int *  interp_flag,
struct yac_interp_weights weights 
)
static

Definition at line 1027 of file interp_method_creep.c.

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

◆ exchange_interp_results()

static struct result_stencils * exchange_interp_results ( void *  results,
size_t  result_count,
size_t  result_size,
struct result_stencil *(*)(void *)  result_get_stencil,
size_t *  pack_order,
int *  ranks,
struct comm_stuff  comm 
)
static

Definition at line 268 of file interp_method_creep.c.

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

◆ extract_interp_info()

static void extract_interp_info ( struct yac_interp_grid interp_grid,
struct comm_stuff  comm,
struct interp_result interp_results,
size_t  result_count,
struct remote_points interp_tgt_remote_points,
size_t **  num_stencils_per_tgt_,
size_t **  stencil_indices_,
int **  stencil_ranks_,
double **  w_ 
)
static

Definition at line 500 of file interp_method_creep.c.

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

◆ free_comm_stuff()

static void free_comm_stuff ( struct comm_stuff  comm)
static

Definition at line 1018 of file interp_method_creep.c.

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

◆ get_initial_results()

static void get_initial_results ( struct yac_interp_grid interp_grid,
struct comm_stuff  comm,
struct yac_interp_weights interp_weights,
struct interp_result **  interp_results,
size_t *  result_count 
)
static

Definition at line 394 of file interp_method_creep.c.

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

◆ get_result_stencil_pack_sizes()

static void get_result_stencil_pack_sizes ( void *  results,
size_t  result_count,
size_t  result_size,
struct result_stencil *(*)(void *)  get_stencil,
size_t *  pack_order,
int *  pack_sizes,
MPI_Datatype  stencil_info_dt,
MPI_Comm  comm 
)
static

Definition at line 98 of file interp_method_creep.c.

Here is the caller graph for this function:

◆ get_tgt_neigh_info()

static void get_tgt_neigh_info ( struct yac_interp_grid interp_grid,
size_t *  tgt_local_ids,
yac_int tgt_global_ids,
size_t  count,
size_t **  neigh_local_ids_,
yac_int **  neigh_global_ids_,
yac_int **  neigh_to_tgt_global_id_,
size_t *  total_num_neighbours_ 
)
static

Definition at line 691 of file interp_method_creep.c.

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

◆ get_tgt_neigh_info_cell()

static void get_tgt_neigh_info_cell ( struct yac_interp_grid interp_grid,
size_t *  tgt_local_ids,
yac_int tgt_global_ids,
size_t  count,
size_t **  neigh_local_ids_,
yac_int **  neigh_to_tgt_global_id_,
size_t *  total_num_neighbours_ 
)
static

Definition at line 623 of file interp_method_creep.c.

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

◆ get_tgt_neigh_info_vertex()

static void get_tgt_neigh_info_vertex ( struct yac_interp_grid interp_grid,
size_t *  tgt_local_ids,
yac_int tgt_global_ids,
size_t  count,
size_t **  neigh_local_ids_,
yac_int **  neigh_to_tgt_global_id_,
size_t *  total_num_neighbours_ 
)
static

Definition at line 657 of file interp_method_creep.c.

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

◆ init_comm_stuff()

static struct comm_stuff init_comm_stuff ( struct yac_interp_grid interp_grid)
static

Definition at line 1002 of file interp_method_creep.c.

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

◆ init_interp_results()

static struct interp_result * init_interp_results ( size_t *  tgt_local_ids,
yac_int tgt_global_ids,
size_t  count 
)
static

Definition at line 813 of file interp_method_creep.c.

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

◆ interp_result_get_stencil()

static struct result_stencil * interp_result_get_stencil ( void *  interp_result)
static

Definition at line 360 of file interp_method_creep.c.

Here is the caller graph for this function:

◆ match_neigh_answers_with_tgts()

static size_t match_neigh_answers_with_tgts ( struct result_stencils neigh_answer,
yac_int neigh_global_ids,
yac_int neigh_to_tgt_global_id,
size_t *  stencil_indices,
size_t *  num_neighbours_,
struct interp_result interp_results,
size_t *  num_open_tgt_ 
)
static

Definition at line 919 of file interp_method_creep.c.

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

◆ pack_result_stencil()

static void pack_result_stencil ( struct result_stencil stencil,
void *  buffer,
int  buffer_size,
int *  position,
MPI_Datatype  stencil_info_dt,
MPI_Comm  comm 
)
static

Definition at line 123 of file interp_method_creep.c.

Here is the caller graph for this function:

◆ pack_result_stencils()

static void pack_result_stencils ( void *  results,
size_t  result_count,
size_t  result_size,
struct result_stencil *(*)(void *)  get_stencil,
size_t *  pack_order,
void **  pack_data,
int *  pack_sizes,
MPI_Datatype  stencil_info_dt,
MPI_Comm  comm 
)
static

Definition at line 146 of file interp_method_creep.c.

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

◆ relocate_interp_results()

static struct result_stencils * relocate_interp_results ( struct yac_interp_grid interp_grid,
struct comm_stuff  comm,
struct interp_result interp_results,
size_t  result_count 
)
static

Definition at line 366 of file interp_method_creep.c.

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

◆ send_neigh_request()

static void send_neigh_request ( struct yac_interp_grid interp_grid,
struct comm_stuff  comm,
size_t *  neigh_local_ids,
yac_int neigh_global_ids,
size_t  num_neighbours,
struct tgt_request **  neigh_requests_,
size_t *  request_count_ 
)
static

Definition at line 740 of file interp_method_creep.c.

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

◆ tgt_request_get_stencil()

static struct result_stencil * tgt_request_get_stencil ( void *  tgt_request)
static

Definition at line 558 of file interp_method_creep.c.

Here is the caller graph for this function:

◆ unpack_result_stencil()

static void unpack_result_stencil ( struct result_stencil stencil,
void *  buffer,
int  buffer_size,
int *  position,
MPI_Datatype  stencil_info_dt,
MPI_Comm  comm,
struct stencil_info **  stencil_info_buffer,
size_t *  stencil_info_buffer_array_size,
size_t *  stencil_info_buffer_size 
)
static

Definition at line 187 of file interp_method_creep.c.

Here is the caller graph for this function:

◆ unpack_result_stencils()

static struct result_stencils * unpack_result_stencils ( size_t  count,
void *  packed_data,
size_t  packed_data_size,
MPI_Datatype  stencil_info_dt,
MPI_Comm  comm 
)
static

Definition at line 224 of file interp_method_creep.c.

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

◆ update_neigh_requests()

static struct result_stencils * update_neigh_requests ( struct yac_interp_grid interp_grid,
struct comm_stuff  comm,
struct tgt_request neigh_requests,
size_t *  request_count_,
struct result_stencils interp_stencils 
)
static

Definition at line 564 of file interp_method_creep.c.

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

◆ yac_get_stencil_info_mpi_datatype()

static MPI_Datatype yac_get_stencil_info_mpi_datatype ( MPI_Comm  comm)
static

Definition at line 78 of file interp_method_creep.c.

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

◆ yac_interp_method_creep_new()

struct interp_method * yac_interp_method_creep_new ( int  creep_distance)
Examples
test_interp_method_creep_parallel.c.

Definition at line 1257 of file interp_method_creep.c.

Here is the caller graph for this function:

Variable Documentation

◆ interp_method_creep_vtable

struct interp_method_vtable interp_method_creep_vtable
static
Initial value:
= {
.do_search = do_search_creep,
.delete = delete_creep}
static size_t do_search_creep(struct interp_method *method, struct yac_interp_grid *interp_grid, size_t *tgt_points, size_t count, struct yac_interp_weights *weights)
static void delete_creep(struct interp_method *method)

Definition at line 24 of file interp_method_creep.c.