YetAnotherCoupler 3.4.0
Loading...
Searching...
No Matches
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 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 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 458 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 433 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 449 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 484 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 475 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 466 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 493 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 1268 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 1143 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 *(* result_get_stencil )(void *),
size_t * pack_order,
int * ranks,
struct comm_stuff comm )
static

Definition at line 269 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 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 501 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 395 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 *(* get_stencil )(void *),
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 361 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 *(* get_stencil )(void *),
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 367 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 559 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 188 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 225 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 comm_stuff comm,
struct tgt_request * neigh_requests,
size_t * request_count_,
struct result_stencils * interp_stencils )
static

Definition at line 565 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 1256 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.