YAC 3.20.0
Yet Another Coupler
Loading...
Searching...
No Matches
interp_method_hcsbb.c File Reference
Include dependency graph for interp_method_hcsbb.c:

Go to the source code of this file.

Data Structures

struct  interp_method_hcsbb
 
struct  gauss_nnn_patch
 
struct  weight_vector_data
 
struct  weight_vector_data_pos
 
struct  weight_vector
 
struct  vertex_interp_data
 
struct  edge_interp_data
 
struct  triangle_interp_data
 
struct  tgt_point_search_data
 
struct  bnd_triangle_reorder
 
struct  yac_interp_method_config_hcsbb
 Concrete implementation of yac_interp_method_config for the HCSBB method. More...
 

Macros

#define HCSBB_GAUSS_NNN   (4)
 
#define HCSBB_D_NNN   (7)
 
#define HCSBB_GAUSS_ORDER   (6)
 
#define HCSBB_NUM_GAUSS_POINTS   (12)
 
#define HCSBB_NUM_SBB_COEFFS   (10)
 
#define SB_COORD_TOL   (1.0e-6)
 
#define POW_0(x)   (1.0)
 
#define POW_1(x)   ((x))
 
#define POW_2(x)   ((x)*(x))
 
#define POW_3(x)   ((x)*(x)*(x))
 
#define FAC_0   (1.0)
 
#define FAC_1   (1.0)
 
#define FAC_2   (2.0)
 
#define FAC_3   (6.0)
 
#define SB_COORD_P   (sb_coords[0])
 
#define SB_COORD_D   (sb_coords[1])
 
#define COPY_D_DATA(edge_idx)
 
#define COPY_COEFF(c_ijk, edge_idx, b_idx, bw_factor)
 
#define MULT_COEFF(edge_idx)
 
#define COMPACT_WEIGHTS(edge_idx)
 
#define POW_0(x)   (1.0)
 
#define POW_1(x)   ((x))
 
#define POW_2(x)   ((x)*(x))
 
#define POW_3(x)   ((x)*(x)*(x))
 
#define FAC_0   (1.0)
 
#define FAC_1   (1.0)
 
#define FAC_2   (2.0)
 
#define FAC_3   (6.0)
 

Enumerations

enum  interp_type_flag { ON_VERTEX = 0 , ON_EDGE = 1 , ON_TRIANGLE = 2 }
 

Functions

static size_t do_search_hcsbb (struct interp_method *method, struct yac_interp_grid *interp_grid, size_t *tgt_points, size_t count, struct yac_interp_weights *weights, int *interpolation_complete)
 
static void delete_hcsbb (struct interp_method *method)
 
static void compute_sb_coords (double *sb_coords, size_t num_vertices, double triangle[3][3], char const *caller)
 
static int compare_size_t (const void *a, const void *b)
 
static int compare_2_size_t (const void *a, const void *b)
 
static int compare_3_size_t (const void *a, const void *b)
 
static int compare_HCSBB_D_NNN_size_t (const void *a, const void *b)
 
static void get_unique_interp_data (struct tgt_point_search_data *tgt_point_data, size_t num_edges, size_t num_triangles, size_t **unique_vertices, size_t *num_unique_vertices, size_t(**unique_edge_to_unique_vertex)[2], size_t *num_unique_edges, size_t(**unique_triangle_to_unique_edge)[3], size_t *num_unique_triangles)
 
static void compute_gauss_nnn_patch (struct gauss_nnn_patch *gauss_nnn_patch, double(*gauss_points)[3], size_t *nnn_search_results, double w_nnn[][HCSBB_NUM_GAUSS_POINTS], size_t *src_point_buffer, yac_int *global_id_buffer, yac_const_coordinate_pointer src_point_coords, const_yac_int_pointer src_point_global_ids)
 
static void compute_d_sbb_polynomials_3d (double bnd_triangle[3][3], double direction[3], double coordinate_xyz[3], double d_sbb_polynomials[HCSBB_NUM_SBB_COEFFS])
 
static void get_derivative_weights (struct gauss_nnn_patch *gauss_nnn_patch, double coordinate_xyz[3], double direction[3], struct weight_vector_data *weights, double mult_factor)
 
static void compute_edge_coefficients (struct edge_interp_data *edge_data, size_t num_edges)
 
static int compare_weight_vector_data_pos_weight (void const *a, void const *b)
 
static int compare_weight_vector_data_point (void const *a, void const *b)
 
static int compare_weight_vector_data_pos_pos (void const *a, void const *b)
 
static void compact_weight_vector_data (struct weight_vector_data *weights, size_t *n, struct weight_vector_data_pos *buffer)
 
static void compute_triangle_coefficients (struct triangle_interp_data *triangle_data, size_t num_triangles)
 
static size_t get_max_num_weights (struct tgt_point_search_data *tgt_point_data)
 
static void compute_hcsbb_weights_vertex (struct tgt_point_search_data *tgt_point_data, struct weight_vector_data *weights, size_t *n)
 
static void compute_hcsbb_weights_edge (struct tgt_point_search_data *tgt_point_data, struct weight_vector_data *weights, size_t *n)
 
static void evaluate_blending_function (double *sb_coords, double *A)
 
static void compute_hcsbb_weights_triangle (struct tgt_point_search_data *tgt_point_data, struct weight_vector_data *weights, size_t *n)
 
static void compute_hcsbb_weights (struct tgt_point_search_data *tgt_point_data, struct weight_vector_data *weights, size_t *n, struct weight_vector_data_pos *compact_buffer)
 
static void compute_weights (struct tgt_point_search_data *tgt_point_data, size_t num_tgt_points, struct edge_interp_data *edge_data, size_t num_edges, struct triangle_interp_data *triangle_data, size_t num_triangles, struct weight_vector_data **weights, size_t **num_weights_per_tgt, size_t *total_num_weights)
 
static int compare_tgt_point_search_data (const void *a, const void *b)
 
static void generate_bnd_triangle (size_t *points, yac_const_coordinate_pointer coords, double bnd_triangle[][3])
 
static int compare_bnd_triangles (void const *a, void const *b)
 
static void generate_gauss_legendre_points (double gauss_vertices[HCSBB_NUM_GAUSS_POINTS][3], double gauss_sb_coords[HCSBB_NUM_GAUSS_POINTS][3], double bnd_triangle[3][3])
 
static void compute_sbb_polynomials_gauss_3d (double sb_coords[HCSBB_NUM_GAUSS_POINTS][3], double sbb_polynomials[HCSBB_NUM_SBB_COEFFS][HCSBB_NUM_GAUSS_POINTS])
 
static void inverse (double A[HCSBB_NUM_SBB_COEFFS][HCSBB_NUM_SBB_COEFFS])
 
static void init_gauss_nnn_patch (struct gauss_nnn_patch *gauss_nnn_patch, double(*bnd_triangle)[3], double(*gauss_vertices)[3], double gauss_sbb_polynomials[HCSBB_NUM_SBB_COEFFS][HCSBB_NUM_GAUSS_POINTS], double C[HCSBB_NUM_SBB_COEFFS][HCSBB_NUM_SBB_COEFFS])
 
static void free_gauss_nnn_patches (struct gauss_nnn_patch *gauss_nnn_patches, size_t num_gauss_nnn_patches)
 
static void generate_d_data_triangle (size_t count, yac_coordinate_pointer coords, struct yac_interp_grid *interp_grid, size_t *num_unique_triangles_, double(**unique_bnd_triangles_)[3][3], size_t **coord_to_triangle)
 
static void generate_derivative_data (size_t num_vertices, struct vertex_interp_data *vertex_data, size_t num_edges, struct edge_interp_data *edge_data, struct yac_interp_grid *interp_grid, size_t *num_gauss_nnn_patches_, struct gauss_nnn_patch **gauss_nnn_patches_)
 
static int check_polygon (double *check_coord, int num_vertices, size_t const *vertices, size_t vertex_start_idx, const_yac_int_pointer global_ids, yac_const_coordinate_pointer point_coords, size_t *triangle, double *sb_coords)
 
static int get_matching_vertex_triangle (double *tgt_coord, size_t src_cell, struct yac_const_basic_grid_data *src_grid_data, yac_const_coordinate_pointer src_point_coords, size_t *src_triangle_vertices, double *sb_coords)
 
static int get_matching_aux_cell_triangle (double *tgt_coord, size_t src_cell, struct yac_const_basic_grid_data *src_grid_data, yac_const_coordinate_pointer src_point_coords, size_t *vertex_to_cell, size_t *vertex_to_cell_offsets, int *num_cells_per_vertex, size_t *src_triangle, double *sb_coords)
 
static struct tgt_point_search_datainit_tgt_point_data (size_t num_tgt_points, size_t *selected_tgt, size_t *tgt_points, yac_coordinate_pointer tgt_coords, size_t *src_cells, struct yac_interp_grid *interp_grid)
 
static struct vertex_interp_datainit_vertex_interp_data (size_t num_vertices, size_t *vertices, struct yac_interp_grid *interp_grid)
 
static struct edge_interp_datainit_edge_interp_data (size_t num_edges, size_t(*edge_to_vertex_d_data)[2], struct vertex_interp_data *vertex_data)
 
static struct triangle_interp_datainit_triangle_interp_data (size_t num_triangles, size_t(*triangle_to_edge_data)[3], struct edge_interp_data *edge_data)
 
struct interp_methodyac_interp_method_hcsbb_new ()
 
static void config_hcsbb_delete (struct yac_interp_method_config *config)
 
static struct yac_interp_method_configconfig_hcsbb_copy (struct yac_interp_method_config const *config)
 
static int config_hcsbb_compare (void const *a_, void const *b_)
 
static size_t config_hcsbb_get_pack_size (struct yac_interp_method_config const *config, MPI_Comm comm)
 
static void config_hcsbb_pack (struct yac_interp_method_config const *config, void *buffer, int buffer_size, int *position, MPI_Comm comm)
 
static enum yac_interpolation_list config_hcsbb_get_type ()
 
static struct interp_methodconfig_hcsbb_generate (struct yac_interp_method_config const *config)
 
static struct yac_paramconfig_hcsbb_get_param (struct yac_interp_method_config const *config)
 
struct yac_interp_method_configyac_interp_method_config_default_hcsbb_new (void)
 Creates an HCSBB interpolation method configuration with default parameters.
 
struct yac_interp_method_configyac_interp_method_config_hcsbb_unpack (void *buffer, int buffer_size, int *position, MPI_Comm comm)
 Unpacks a HCSBB interpolation method configuration from a buffer.
 

Variables

static struct interp_method_vtable interp_method_hcsbb_vtable
 
static struct yac_interp_method_config_vtable yac_interp_method_config_vtable_hcsbb
 

Macro Definition Documentation

◆ COMPACT_WEIGHTS

#define COMPACT_WEIGHTS ( edge_idx)
Value:
{ \
compact_weight_vector_data( \
weight_vector_data_buffer, &n, weight_vector_data_pos_buffer); \
curr_triangle->c_111_a[edge_idx].data = \
xmalloc(n * sizeof(*(curr_triangle->c_111_a[edge_idx].data))); \
memcpy(curr_triangle->c_111_a[edge_idx].data, weight_vector_data_buffer, \
n * sizeof(*weight_vector_data_buffer)); \
curr_triangle->c_111_a[edge_idx].n = n; \
}

◆ COPY_COEFF

#define COPY_COEFF ( c_ijk,
edge_idx,
b_idx,
bw_factor )
Value:
{ \
struct weight_vector_data * curr_buffer = weight_vector_data_buffer + n; \
size_t curr_n = c_ijk->n; \
memcpy(curr_buffer, c_ijk->data, curr_n * sizeof(*curr_buffer)); \
n += curr_n; \
double factor = - bw[edge_idx] * b_g[edge_idx][b_idx] * bw_factor; \
for (size_t i_ = 0; i_ < curr_n; ++i_) curr_buffer[i_].weight *= factor; \
}

◆ COPY_D_DATA

#define COPY_D_DATA ( edge_idx)
Value:
{ \
get_derivative_weights( \
curr_edges[edge_idx]->middle_d_data.gauss_nnn_patch, \
curr_edges[edge_idx]->middle_d_data.coordinate_xyz, g[edge_idx], \
weight_vector_data_buffer + n, 1.0 / 3.0); \
n += curr_edges[edge_idx]->middle_d_data.gauss_nnn_patch->num_src_points; \
}

◆ FAC_0 [1/2]

#define FAC_0   (1.0)

◆ FAC_0 [2/2]

#define FAC_0   (1.0)

◆ FAC_1 [1/2]

#define FAC_1   (1.0)

◆ FAC_1 [2/2]

#define FAC_1   (1.0)

◆ FAC_2 [1/2]

#define FAC_2   (2.0)

◆ FAC_2 [2/2]

#define FAC_2   (2.0)

◆ FAC_3 [1/2]

#define FAC_3   (6.0)

◆ FAC_3 [2/2]

#define FAC_3   (6.0)

◆ HCSBB_D_NNN

#define HCSBB_D_NNN   (7)

Definition at line 29 of file interp_method_hcsbb.c.

◆ HCSBB_GAUSS_NNN

#define HCSBB_GAUSS_NNN   (4)

Definition at line 26 of file interp_method_hcsbb.c.

◆ HCSBB_GAUSS_ORDER

#define HCSBB_GAUSS_ORDER   (6)

Definition at line 33 of file interp_method_hcsbb.c.

◆ HCSBB_NUM_GAUSS_POINTS

#define HCSBB_NUM_GAUSS_POINTS   (12)

Definition at line 50 of file interp_method_hcsbb.c.

◆ HCSBB_NUM_SBB_COEFFS

#define HCSBB_NUM_SBB_COEFFS   (10)

Definition at line 65 of file interp_method_hcsbb.c.

◆ MULT_COEFF

#define MULT_COEFF ( edge_idx)
Value:
{ \
double factor = 1.0 / (2.0 * bw[edge_idx] * b_g[edge_idx][edge_idx]); \
for (size_t i_ = 0; i_ < n; ++i_) \
weight_vector_data_buffer[i_].weight *= factor; \
}

◆ POW_0 [1/2]

#define POW_0 ( x)    (1.0)

◆ POW_0 [2/2]

#define POW_0 ( x)    (1.0)

◆ POW_1 [1/2]

#define POW_1 ( x)    ((x))

◆ POW_1 [2/2]

#define POW_1 ( x)    ((x))

◆ POW_2 [1/2]

#define POW_2 ( x)    ((x)*(x))

◆ POW_2 [2/2]

#define POW_2 ( x)    ((x)*(x))

◆ POW_3 [1/2]

#define POW_3 ( x)    ((x)*(x)*(x))

◆ POW_3 [2/2]

#define POW_3 ( x)    ((x)*(x)*(x))

◆ SB_COORD_D

#define SB_COORD_D   (sb_coords[1])

◆ SB_COORD_P

#define SB_COORD_P   (sb_coords[0])

◆ SB_COORD_TOL

#define SB_COORD_TOL   (1.0e-6)

Definition at line 69 of file interp_method_hcsbb.c.

Enumeration Type Documentation

◆ interp_type_flag

Enumerator
ON_VERTEX 

there is a source point that exactly matches the target point

ON_EDGE 

the target point is on an edge of the source point grid

ON_TRIANGLE 

the target point is within a triangle of the source point grid

Definition at line 122 of file interp_method_hcsbb.c.

Function Documentation

◆ check_polygon()

static int check_polygon ( double * check_coord,
int num_vertices,
size_t const * vertices,
size_t vertex_start_idx,
const_yac_int_pointer global_ids,
yac_const_coordinate_pointer point_coords,
size_t * triangle,
double * sb_coords )
static

Definition at line 1805 of file interp_method_hcsbb.c.

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

◆ compact_weight_vector_data()

static void compact_weight_vector_data ( struct weight_vector_data * weights,
size_t * n,
struct weight_vector_data_pos * buffer )
static

Definition at line 718 of file interp_method_hcsbb.c.

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

◆ compare_2_size_t()

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

Definition at line 240 of file interp_method_hcsbb.c.

Here is the caller graph for this function:

◆ compare_3_size_t()

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

Definition at line 248 of file interp_method_hcsbb.c.

Here is the caller graph for this function:

◆ compare_bnd_triangles()

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

Definition at line 1278 of file interp_method_hcsbb.c.

Here is the caller graph for this function:

◆ compare_HCSBB_D_NNN_size_t()

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

Definition at line 257 of file interp_method_hcsbb.c.

Here is the caller graph for this function:

◆ compare_size_t()

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

Definition at line 233 of file interp_method_hcsbb.c.

Here is the caller graph for this function:

◆ compare_tgt_point_search_data()

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

Definition at line 1249 of file interp_method_hcsbb.c.

Here is the caller graph for this function:

◆ compare_weight_vector_data_point()

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

Definition at line 699 of file interp_method_hcsbb.c.

Here is the caller graph for this function:

◆ compare_weight_vector_data_pos_pos()

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

Definition at line 711 of file interp_method_hcsbb.c.

Here is the caller graph for this function:

◆ compare_weight_vector_data_pos_weight()

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

Definition at line 680 of file interp_method_hcsbb.c.

Here is the caller graph for this function:

◆ compute_d_sbb_polynomials_3d()

static void compute_d_sbb_polynomials_3d ( double bnd_triangle[3][3],
double direction[3],
double coordinate_xyz[3],
double d_sbb_polynomials[HCSBB_NUM_SBB_COEFFS] )
static

Definition at line 492 of file interp_method_hcsbb.c.

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

◆ compute_edge_coefficients()

static void compute_edge_coefficients ( struct edge_interp_data * edge_data,
size_t num_edges )
static

Definition at line 625 of file interp_method_hcsbb.c.

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

◆ compute_gauss_nnn_patch()

static void compute_gauss_nnn_patch ( struct gauss_nnn_patch * gauss_nnn_patch,
double(*) gauss_points[3],
size_t * nnn_search_results,
double w_nnn[][HCSBB_NUM_GAUSS_POINTS],
size_t * src_point_buffer,
yac_int * global_id_buffer,
yac_const_coordinate_pointer src_point_coords,
const_yac_int_pointer src_point_global_ids )
static

Definition at line 382 of file interp_method_hcsbb.c.

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

◆ compute_hcsbb_weights()

static void compute_hcsbb_weights ( struct tgt_point_search_data * tgt_point_data,
struct weight_vector_data * weights,
size_t * n,
struct weight_vector_data_pos * compact_buffer )
static

Definition at line 1157 of file interp_method_hcsbb.c.

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

◆ compute_hcsbb_weights_edge()

static void compute_hcsbb_weights_edge ( struct tgt_point_search_data * tgt_point_data,
struct weight_vector_data * weights,
size_t * n )
static

Definition at line 1013 of file interp_method_hcsbb.c.

Here is the caller graph for this function:

◆ compute_hcsbb_weights_triangle()

static void compute_hcsbb_weights_triangle ( struct tgt_point_search_data * tgt_point_data,
struct weight_vector_data * weights,
size_t * n )
static

Definition at line 1073 of file interp_method_hcsbb.c.

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

◆ compute_hcsbb_weights_vertex()

static void compute_hcsbb_weights_vertex ( struct tgt_point_search_data * tgt_point_data,
struct weight_vector_data * weights,
size_t * n )
static

Definition at line 1004 of file interp_method_hcsbb.c.

Here is the caller graph for this function:

◆ compute_sb_coords()

static void compute_sb_coords ( double * sb_coords,
size_t num_vertices,
double triangle[3][3],
char const * caller )
static

Definition at line 205 of file interp_method_hcsbb.c.

Here is the caller graph for this function:

◆ compute_sbb_polynomials_gauss_3d()

static void compute_sbb_polynomials_gauss_3d ( double sb_coords[HCSBB_NUM_GAUSS_POINTS][3],
double sbb_polynomials[HCSBB_NUM_SBB_COEFFS][HCSBB_NUM_GAUSS_POINTS] )
static

Definition at line 1402 of file interp_method_hcsbb.c.

Here is the caller graph for this function:

◆ compute_triangle_coefficients()

static void compute_triangle_coefficients ( struct triangle_interp_data * triangle_data,
size_t num_triangles )
static

Definition at line 761 of file interp_method_hcsbb.c.

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

◆ compute_weights()

static void compute_weights ( struct tgt_point_search_data * tgt_point_data,
size_t num_tgt_points,
struct edge_interp_data * edge_data,
size_t num_edges,
struct triangle_interp_data * triangle_data,
size_t num_triangles,
struct weight_vector_data ** weights,
size_t ** num_weights_per_tgt,
size_t * total_num_weights )
static

Definition at line 1184 of file interp_method_hcsbb.c.

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

◆ config_hcsbb_compare()

static int config_hcsbb_compare ( void const * a_,
void const * b_ )
static

Definition at line 2303 of file interp_method_hcsbb.c.

◆ config_hcsbb_copy()

static struct yac_interp_method_config * config_hcsbb_copy ( struct yac_interp_method_config const * config)
static

Definition at line 2294 of file interp_method_hcsbb.c.

◆ config_hcsbb_delete()

static void config_hcsbb_delete ( struct yac_interp_method_config * config)
static

Definition at line 2289 of file interp_method_hcsbb.c.

◆ config_hcsbb_generate()

static struct interp_method * config_hcsbb_generate ( struct yac_interp_method_config const * config)
static

Definition at line 2336 of file interp_method_hcsbb.c.

Here is the call graph for this function:

◆ config_hcsbb_get_pack_size()

static size_t config_hcsbb_get_pack_size ( struct yac_interp_method_config const * config,
MPI_Comm comm )
static

Definition at line 2313 of file interp_method_hcsbb.c.

◆ config_hcsbb_get_param()

static struct yac_param * config_hcsbb_get_param ( struct yac_interp_method_config const * config)
static

Definition at line 2342 of file interp_method_hcsbb.c.

Here is the call graph for this function:

◆ config_hcsbb_get_type()

static enum yac_interpolation_list config_hcsbb_get_type ( )
static

Definition at line 2332 of file interp_method_hcsbb.c.

◆ config_hcsbb_pack()

static void config_hcsbb_pack ( struct yac_interp_method_config const * config,
void * buffer,
int buffer_size,
int * position,
MPI_Comm comm )
static

Definition at line 2321 of file interp_method_hcsbb.c.

◆ delete_hcsbb()

static void delete_hcsbb ( struct interp_method * method)
static

Definition at line 2268 of file interp_method_hcsbb.c.

◆ do_search_hcsbb()

static size_t do_search_hcsbb ( struct interp_method * method,
struct yac_interp_grid * interp_grid,
size_t * tgt_points,
size_t count,
struct yac_interp_weights * weights,
int * interpolation_complete )
static

Definition at line 2095 of file interp_method_hcsbb.c.

Here is the call graph for this function:

◆ evaluate_blending_function()

static void evaluate_blending_function ( double * sb_coords,
double * A )
static

Definition at line 1058 of file interp_method_hcsbb.c.

Here is the caller graph for this function:

◆ free_gauss_nnn_patches()

static void free_gauss_nnn_patches ( struct gauss_nnn_patch * gauss_nnn_patches,
size_t num_gauss_nnn_patches )
static

Definition at line 1570 of file interp_method_hcsbb.c.

Here is the caller graph for this function:

◆ generate_bnd_triangle()

static void generate_bnd_triangle ( size_t * points,
yac_const_coordinate_pointer coords,
double bnd_triangle[][3] )
static

Definition at line 1265 of file interp_method_hcsbb.c.

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

◆ generate_d_data_triangle()

static void generate_d_data_triangle ( size_t count,
yac_coordinate_pointer coords,
struct yac_interp_grid * interp_grid,
size_t * num_unique_triangles_,
double(**) unique_bnd_triangles_[3][3],
size_t ** coord_to_triangle )
static

Definition at line 1586 of file interp_method_hcsbb.c.

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

◆ generate_derivative_data()

static void generate_derivative_data ( size_t num_vertices,
struct vertex_interp_data * vertex_data,
size_t num_edges,
struct edge_interp_data * edge_data,
struct yac_interp_grid * interp_grid,
size_t * num_gauss_nnn_patches_,
struct gauss_nnn_patch ** gauss_nnn_patches_ )
static

Definition at line 1712 of file interp_method_hcsbb.c.

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

◆ generate_gauss_legendre_points()

static void generate_gauss_legendre_points ( double gauss_vertices[HCSBB_NUM_GAUSS_POINTS][3],
double gauss_sb_coords[HCSBB_NUM_GAUSS_POINTS][3],
double bnd_triangle[3][3] )
static

Definition at line 1290 of file interp_method_hcsbb.c.

Here is the caller graph for this function:

◆ get_derivative_weights()

static void get_derivative_weights ( struct gauss_nnn_patch * gauss_nnn_patch,
double coordinate_xyz[3],
double direction[3],
struct weight_vector_data * weights,
double mult_factor )
static

Definition at line 599 of file interp_method_hcsbb.c.

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

◆ get_matching_aux_cell_triangle()

static int get_matching_aux_cell_triangle ( double * tgt_coord,
size_t src_cell,
struct yac_const_basic_grid_data * src_grid_data,
yac_const_coordinate_pointer src_point_coords,
size_t * vertex_to_cell,
size_t * vertex_to_cell_offsets,
int * num_cells_per_vertex,
size_t * src_triangle,
double * sb_coords )
static

Definition at line 1889 of file interp_method_hcsbb.c.

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

◆ get_matching_vertex_triangle()

static int get_matching_vertex_triangle ( double * tgt_coord,
size_t src_cell,
struct yac_const_basic_grid_data * src_grid_data,
yac_const_coordinate_pointer src_point_coords,
size_t * src_triangle_vertices,
double * sb_coords )
static

Definition at line 1858 of file interp_method_hcsbb.c.

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

◆ get_max_num_weights()

static size_t get_max_num_weights ( struct tgt_point_search_data * tgt_point_data)
static

Definition at line 975 of file interp_method_hcsbb.c.

Here is the caller graph for this function:

◆ get_unique_interp_data()

static void get_unique_interp_data ( struct tgt_point_search_data * tgt_point_data,
size_t num_edges,
size_t num_triangles,
size_t ** unique_vertices,
size_t * num_unique_vertices,
size_t(**) unique_edge_to_unique_vertex[2],
size_t * num_unique_edges,
size_t(**) unique_triangle_to_unique_edge[3],
size_t * num_unique_triangles )
static

Definition at line 271 of file interp_method_hcsbb.c.

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

◆ init_edge_interp_data()

static struct edge_interp_data * init_edge_interp_data ( size_t num_edges,
size_t(*) edge_to_vertex_d_data[2],
struct vertex_interp_data * vertex_data )
static

Definition at line 2034 of file interp_method_hcsbb.c.

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

◆ init_gauss_nnn_patch()

static void init_gauss_nnn_patch ( struct gauss_nnn_patch * gauss_nnn_patch,
double(*) bnd_triangle[3],
double(*) gauss_vertices[3],
double gauss_sbb_polynomials[HCSBB_NUM_SBB_COEFFS][HCSBB_NUM_GAUSS_POINTS],
double C[HCSBB_NUM_SBB_COEFFS][HCSBB_NUM_SBB_COEFFS] )
static

Definition at line 1517 of file interp_method_hcsbb.c.

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

◆ init_tgt_point_data()

static struct tgt_point_search_data * init_tgt_point_data ( size_t num_tgt_points,
size_t * selected_tgt,
size_t * tgt_points,
yac_coordinate_pointer tgt_coords,
size_t * src_cells,
struct yac_interp_grid * interp_grid )
static

Definition at line 1926 of file interp_method_hcsbb.c.

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

◆ init_triangle_interp_data()

static struct triangle_interp_data * init_triangle_interp_data ( size_t num_triangles,
size_t(*) triangle_to_edge_data[3],
struct edge_interp_data * edge_data )
static

Definition at line 2077 of file interp_method_hcsbb.c.

Here is the caller graph for this function:

◆ init_vertex_interp_data()

static struct vertex_interp_data * init_vertex_interp_data ( size_t num_vertices,
size_t * vertices,
struct yac_interp_grid * interp_grid )
static

Definition at line 2014 of file interp_method_hcsbb.c.

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

◆ inverse()

static void inverse ( double A[HCSBB_NUM_SBB_COEFFS][HCSBB_NUM_SBB_COEFFS])
static

Definition at line 1476 of file interp_method_hcsbb.c.

Here is the caller graph for this function:

◆ yac_interp_method_config_default_hcsbb_new()

struct yac_interp_method_config * yac_interp_method_config_default_hcsbb_new ( void )

Creates an HCSBB interpolation method configuration with default parameters.

Returns
Pointer to the created yac_interp_method_config structure

Definition at line 2359 of file interp_method_hcsbb.c.

◆ yac_interp_method_config_hcsbb_unpack()

struct yac_interp_method_config * yac_interp_method_config_hcsbb_unpack ( void * buffer,
int buffer_size,
int * position,
MPI_Comm comm )

Unpacks a HCSBB interpolation method configuration from a buffer.

Parameters
[in]bufferBuffer containing the packed configuration data
[in]buffer_sizeSize of the buffer
[in,out]positionCurrent position in the buffer (will be updated)
[in]commMPI communicator for parallel unpacking
Returns
Pointer to the unpacked yac_interp_method_config structure

Definition at line 2369 of file interp_method_hcsbb.c.

◆ yac_interp_method_hcsbb_new()

struct interp_method * yac_interp_method_hcsbb_new ( )

Definition at line 2259 of file interp_method_hcsbb.c.

Here is the caller graph for this function:

Variable Documentation

◆ interp_method_hcsbb_vtable

struct interp_method_vtable interp_method_hcsbb_vtable
static
Initial value:
= {
.do_search = do_search_hcsbb,
.delete = delete_hcsbb}
static size_t do_search_hcsbb(struct interp_method *method, struct yac_interp_grid *interp_grid, size_t *tgt_points, size_t count, struct yac_interp_weights *weights, int *interpolation_complete)
static void delete_hcsbb(struct interp_method *method)

Definition at line 79 of file interp_method_hcsbb.c.

◆ yac_interp_method_config_vtable_hcsbb

struct yac_interp_method_config_vtable yac_interp_method_config_vtable_hcsbb
static
Initial value:
= {
.get_pack_size = config_hcsbb_get_pack_size,
.get_type = config_hcsbb_get_type,
.generate = config_hcsbb_generate,
}
static struct yac_param * config_hcsbb_get_param(struct yac_interp_method_config const *config)
static enum yac_interpolation_list config_hcsbb_get_type()
static int config_hcsbb_compare(void const *a_, void const *b_)
static struct yac_interp_method_config * config_hcsbb_copy(struct yac_interp_method_config const *config)
static void config_hcsbb_delete(struct yac_interp_method_config *config)
static void config_hcsbb_pack(struct yac_interp_method_config const *config, void *buffer, int buffer_size, int *position, MPI_Comm comm)
static size_t config_hcsbb_get_pack_size(struct yac_interp_method_config const *config, MPI_Comm comm)
static struct interp_method * config_hcsbb_generate(struct yac_interp_method_config const *config)

Definition at line 2348 of file interp_method_hcsbb.c.