YetAnotherCoupler 3.2.0_a
Loading...
Searching...
No Matches
Data Structures | Macros | Enumerations | Functions | Variables
interp_method_hcsbb.c File Reference
#include "config.h"
#include <string.h>
#include "interp_method_internal.h"
#include "interp_method_hcsbb.h"
#include "yac_lapack_interface.h"
#include "geometry.h"
#include "ensure_array_size.h"
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
 

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 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)
 
static void delete_hcsbb (struct interp_method *method)
 
static void compute_sb_coords (double *sb_coords, size_t num_vertices, double triangle[3][3])
 
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 ()
 

Variables

static struct interp_method_vtable interp_method_hcsbb_vtable
 

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 25 of file interp_method_hcsbb.c.

◆ HCSBB_GAUSS_NNN

#define HCSBB_GAUSS_NNN   (4)

Definition at line 22 of file interp_method_hcsbb.c.

◆ HCSBB_GAUSS_ORDER

#define HCSBB_GAUSS_ORDER   (6)

Definition at line 29 of file interp_method_hcsbb.c.

◆ HCSBB_NUM_GAUSS_POINTS

#define HCSBB_NUM_GAUSS_POINTS   (12)

Definition at line 46 of file interp_method_hcsbb.c.

◆ HCSBB_NUM_SBB_COEFFS

#define HCSBB_NUM_SBB_COEFFS   (10)

Definition at line 61 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_TOL

#define SB_COORD_TOL   (1.0e-6)

Definition at line 65 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 117 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 1791 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 703 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 226 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 234 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 1264 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 243 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 219 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 1235 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 684 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 696 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 665 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 481 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 610 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 371 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 1142 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 998 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 1058 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 989 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] 
)
static

Definition at line 200 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 1388 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 746 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 1170 of file interp_method_hcsbb.c.

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

◆ delete_hcsbb()

static void delete_hcsbb ( struct interp_method method)
static

Definition at line 2248 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 
)
static

Definition at line 2073 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 1043 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 1556 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 1251 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 1572 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 1698 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 1276 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 584 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 1867 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 1836 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 959 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 257 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 2012 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 1503 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 1904 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 2055 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 1992 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 1462 of file interp_method_hcsbb.c.

Here is the caller graph for this function:

◆ yac_interp_method_hcsbb_new()

struct interp_method * yac_interp_method_hcsbb_new ( )
Examples
test_interp_method_hcsbb_parallel.c.

Definition at line 2239 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 void delete_hcsbb(struct interp_method *method)
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)

Definition at line 74 of file interp_method_hcsbb.c.