36#if defined(__cplusplus)
153#if defined(__cplusplus)
1067 const short int *c2f_sgn,
1094 const short int **c2f_sgn,
1134#if defined(HAVE_ACCEL)
1150cs_matrix_vector_multiply_d(
const cs_matrix_t *matrix,
1195#if defined(HAVE_ACCEL)
1214cs_matrix_vector_multiply_partial_d(
const cs_matrix_t *matrix,
1337 const char *func_name);
Definition: cs_dispatch.h:1711
#define BEGIN_C_DECLS
Definition: cs_defs.h:554
double cs_real_t
Floating-point value.
Definition: cs_defs.h:357
cs_nreal_t cs_nreal_3_t[3]
Definition: cs_defs.h:400
cs_lnum_t cs_lnum_2_t[2]
vector of 2 local mesh-entity ids
Definition: cs_defs.h:367
cs_real_t cs_real_3_t[3]
vector of 3 floating-point values
Definition: cs_defs.h:374
unsigned cs_gnum_t
global mesh entity number
Definition: cs_defs.h:342
#define END_C_DECLS
Definition: cs_defs.h:555
int cs_lnum_t
local mesh entity id
Definition: cs_defs.h:350
void cs_matrix_row_finalize(cs_matrix_row_info_t *r)
Finalize row info for a given matrix.
Definition: cs_matrix.cpp:5817
void cs_matrix_copy_diagonal(const cs_matrix_t *matrix, cs_real_t *da)
struct _cs_matrix_variant_t cs_matrix_variant_t
Definition: cs_matrix.h:118
void cs_matrix_vector_multiply_partial(cs_dispatch_context &ctx, const cs_matrix_t *matrix, cs_matrix_spmv_type_t op_type, cs_real_t x[], cs_real_t y[])
Partial matrix.vector product.
Definition: cs_matrix.cpp:4225
bool cs_matrix_is_symmetric(const cs_matrix_t *matrix)
Query matrix coefficients symmetry.
Definition: cs_matrix.cpp:5694
cs_matrix_t * cs_matrix_create_by_copy(cs_matrix_t *src)
Create a matrix container by copying another.
Definition: cs_matrix.cpp:4756
bool cs_matrix_get_need_xa(const cs_matrix_t *matrix)
Query matrix allocation mode.
Definition: cs_matrix.cpp:5204
void cs_matrix_set_coefficients(cs_matrix_t *matrix, bool symmetric, cs_lnum_t diag_block_size, cs_lnum_t extra_diag_block_size, const cs_lnum_t n_edges, const cs_lnum_2_t edges[], const cs_real_t *da, const cs_real_t *xa)
Set matrix coefficients defined relative to a "native" edge graph, sharing arrays with the caller whe...
Definition: cs_matrix.cpp:5308
const cs_real_t * cs_matrix_get_diagonal(const cs_matrix_t *matrix)
Get matrix diagonal values.
Definition: cs_matrix.cpp:5739
cs_matrix_structure_t * cs_matrix_structure_create_msr_shared(bool direct_assmbly, cs_lnum_t n_rows, cs_lnum_t n_cols_ext, const cs_lnum_t *row_index, const cs_lnum_t *col_id, const cs_halo_t *halo, const cs_numbering_t *numbering)
Create an MSR matrix structure sharing an existing connectivity definition.
Definition: cs_matrix.cpp:4511
const char * cs_matrix_spmv_type_name[]
cs_matrix_structure_t * cs_matrix_structure_create_from_assembler(cs_matrix_type_t type, cs_matrix_assembler_t *ma)
Create a matrix structure using a matrix assembler.
Definition: cs_matrix.cpp:4561
const char * cs_matrix_get_type_name(const cs_matrix_t *matrix)
Definition: cs_matrix.cpp:4915
cs_matrix_variant_t * cs_matrix_variant_create(cs_matrix_t *m)
Build matrix variant.
Definition: cs_matrix.cpp:6705
void cs_matrix_set_need_xa(cs_matrix_t *matrix, bool need_xa)
Indicate whether matrix will need xa coefficients.
Definition: cs_matrix.cpp:5224
struct _cs_matrix_structure_t cs_matrix_structure_t
Definition: cs_matrix.h:110
cs_lnum_t cs_matrix_get_extra_diag_block_size(const cs_matrix_t *matrix)
Return the size of the extra-diagonal block for the given matrix.
Definition: cs_matrix.cpp:5063
cs_matrix_spmv_type_t
Definition: cs_matrix.h:99
@ CS_MATRIX_SPMV_N_TYPES
Definition: cs_matrix.h:104
@ CS_MATRIX_SPMV
Definition: cs_matrix.h:101
@ CS_MATRIX_SPMV_E
Definition: cs_matrix.h:102
cs_matrix_type_t cs_matrix_variant_type(const cs_matrix_variant_t *mv)
Get the type associated with a matrix variant.
Definition: cs_matrix.cpp:7164
void cs_matrix_variant_apply_tuned(cs_matrix_t *m, cs_matrix_variant_t *mv)
Apply variants defined by tuning to a given matrix.
Definition: cs_matrix.cpp:7052
struct _cs_matrix_t cs_matrix_t
Definition: cs_matrix.h:114
cs_lnum_t cs_matrix_get_n_entries(const cs_matrix_t *matrix)
Return the number of entries in matrix.
Definition: cs_matrix.cpp:4991
void cs_matrix_vector_multiply_nosync(const cs_matrix_t *matrix, cs_real_t *x, cs_real_t *y)
const cs_matrix_assembler_t * cs_matrix_get_assembler(const cs_matrix_t *matrix)
Return matrix assembler if present.
Definition: cs_matrix.cpp:5080
void cs_matrix_vector_multiply(cs_dispatch_context &ctx, const cs_matrix_t *matrix, cs_real_t x[], cs_real_t y[])
Matrix.vector product y = A.x.
Definition: cs_matrix.cpp:4147
void cs_matrix_transfer_coefficients(cs_matrix_t *matrix, bool symmetric, cs_lnum_t diag_block_size, cs_lnum_t extra_diag_block_size, const cs_lnum_t n_edges, const cs_lnum_2_t edges[], cs_real_t **d_val, cs_real_t **x_val)
Definition: cs_matrix.cpp:5378
void cs_matrix_destroy(cs_matrix_t **matrix)
Definition: cs_matrix.cpp:4866
void cs_matrix_variant_apply(cs_matrix_t *m, cs_matrix_variant_t *mv)
Apply a variant to a given matrix.
Definition: cs_matrix.cpp:7015
const cs_gnum_t * cs_matrix_get_l_range(const cs_matrix_t *matrix)
Return a pointer to local global row range associated with a matrix, if available.
Definition: cs_matrix.cpp:5119
cs_matrix_fill_type_t cs_matrix_get_fill_type(bool symmetric, cs_lnum_t diag_block_size, cs_lnum_t extra_diag_block_size)
Get matrix fill type, depending on block sizes.
Definition: cs_matrix.cpp:5247
cs_matrix_t * cs_matrix_create(const cs_matrix_structure_t *ms)
Create a matrix container using a given structure.
Definition: cs_matrix.cpp:4675
void cs_matrix_variant_set_func(cs_matrix_variant_t *mv, cs_matrix_fill_type_t fill_type, cs_matrix_spmv_type_t spmv_type, const cs_numbering_t *numbering, const char *func_name)
Select the sparse matrix-vector product function to be used by a matrix variant for a given fill type...
Definition: cs_matrix.cpp:7118
void cs_matrix_transfer_coefficients_msr(cs_matrix_t *matrix, bool symmetric, cs_lnum_t diag_block_size, cs_lnum_t extra_diag_block_size, const cs_lnum_t row_index[], const cs_lnum_t col_id[], cs_real_t **d_val, cs_real_t **x_val)
Set matrix coefficients in an MSR format, transferring the property of those arrays to the matrix.
Definition: cs_matrix.cpp:5444
cs_matrix_t * cs_matrix_create_from_assembler(cs_matrix_type_t type, cs_matrix_assembler_t *ma)
Create a matrix directly from assembler.
Definition: cs_matrix.cpp:4709
const char * cs_matrix_get_type_fullname(const cs_matrix_t *matrix)
Definition: cs_matrix.cpp:4931
void cs_matrix_release_msr_arrays(cs_matrix_t *matrix, cs_lnum_t **row_index, cs_lnum_t **col_id, cs_real_t **d_val, cs_real_t **x_val)
Release arrays describing a matrix in MSR format.
Definition: cs_matrix.cpp:6248
void cs_matrix_apply_variant(cs_matrix_t *m, const cs_matrix_variant_t *mv)
void cs_matrix_set_alloc_mode(cs_matrix_t *matrix, cs_alloc_mode_t alloc_mode)
Set matrix allocation mode.
Definition: cs_matrix.cpp:5162
void cs_matrix_get_csr_arrays(const cs_matrix_t *matrix, const cs_lnum_t **row_index, const cs_lnum_t **col_id, const cs_real_t **val)
Get arrays describing a matrix in CSR format.
Definition: cs_matrix.cpp:6148
cs_alloc_mode_t cs_matrix_get_alloc_mode(const cs_matrix_t *matrix)
Query matrix allocation mode.
Definition: cs_matrix.cpp:5142
cs_matrix_t * cs_matrix_create_by_local_restrict(const cs_matrix_t *src)
Create a matrix based on the local restriction of a base matrix.
Definition: cs_matrix.cpp:4794
void cs_matrix_get_mesh_association(const cs_matrix_t *matrix, const cs_lnum_t **c2f_idx, const cs_lnum_t **c2f, const short int **c2f_sgn, const cs_real_3_t **cell_cen, const cs_real_t **cell_vol, const cs_nreal_3_t **face_normal, const cs_real_t **face_surf)
Query mesh information that me be associated with a matrix.
Definition: cs_matrix.cpp:6358
void cs_matrix_row_init(cs_matrix_row_info_t *r)
Initialize row info for a given matrix.
Definition: cs_matrix.cpp:5798
void cs_matrix_get_msr_arrays(const cs_matrix_t *matrix, const cs_lnum_t **row_index, const cs_lnum_t **col_id, const cs_real_t **d_val, const cs_real_t **x_val)
Get arrays describing a matrix in MSR format.
Definition: cs_matrix.cpp:6192
cs_matrix_fill_type_t
Definition: cs_matrix.h:76
@ CS_MATRIX_BLOCK_D_66
Definition: cs_matrix.h:82
@ CS_MATRIX_N_FILL_TYPES
Definition: cs_matrix.h:89
@ CS_MATRIX_SCALAR
Definition: cs_matrix.h:78
@ CS_MATRIX_BLOCK_D
Definition: cs_matrix.h:80
@ CS_MATRIX_BLOCK
Definition: cs_matrix.h:88
@ CS_MATRIX_SCALAR_SYM
Definition: cs_matrix.h:79
@ CS_MATRIX_BLOCK_D_SYM
Definition: cs_matrix.h:86
const char * cs_matrix_fill_type_name[]
const cs_halo_t * cs_matrix_get_halo(const cs_matrix_t *matrix)
Return the pointer to the halo structure for the given matrix.
Definition: cs_matrix.cpp:5099
void cs_matrix_set_mesh_association(cs_matrix_t *matrix, const cs_lnum_t *c2f_idx, const cs_lnum_t *c2f, const short int *c2f_sgn, const cs_real_3_t *cell_cen, const cs_real_t *cell_vol, const cs_nreal_3_t *face_u_normal, const cs_real_t *face_surf)
Associate mesh information with a matrix.
Definition: cs_matrix.cpp:6321
cs_lnum_t cs_matrix_get_diag_block_size(const cs_matrix_t *matrix)
Return the size of the diagonal block for the given matrix.
Definition: cs_matrix.cpp:5044
void cs_matrix_variant_destroy(cs_matrix_variant_t **mv)
Destroy a matrix variant structure.
Definition: cs_matrix.cpp:6999
void cs_matrix_pre_vector_multiply_sync(const cs_matrix_t *matrix, cs_real_t *x)
cs_matrix_assembler_values_t * cs_matrix_assembler_values_init(cs_matrix_t *matrix, cs_lnum_t diag_block_size, cs_lnum_t extra_diag_block_size)
Create and initialize a CSR matrix assembler values structure.
Definition: cs_matrix.cpp:5628
cs_matrix_type_t
Definition: cs_matrix.h:58
@ CS_MATRIX_CSR
Definition: cs_matrix.h:61
@ CS_MATRIX_MSR
Definition: cs_matrix.h:62
@ CS_MATRIX_N_TYPES
Definition: cs_matrix.h:70
@ CS_MATRIX_NATIVE
Definition: cs_matrix.h:60
@ CS_MATRIX_DIST
Definition: cs_matrix.h:64
@ CS_MATRIX_N_BUILTIN_TYPES
Definition: cs_matrix.h:68
void cs_matrix_variant_build_list(const cs_matrix_t *m, int *n_variants, cs_matrix_variant_t **m_variant)
Build list of variants for tuning or testing.
Definition: cs_matrix.cpp:6749
bool cs_matrix_is_mapped_from_native(const cs_matrix_t *matrix)
Indicate whether coefficients were mapped from native face-based arrays.
Definition: cs_matrix.cpp:5715
void cs_matrix_release_coefficients(cs_matrix_t *matrix)
Release shared matrix coefficients.
Definition: cs_matrix.cpp:5584
void cs_matrix_get_row(const cs_matrix_t *matrix, const cs_lnum_t row_id, cs_matrix_row_info_t *r)
Get row values for a given matrix.
Definition: cs_matrix.cpp:5848
cs_matrix_type_t cs_matrix_get_type(const cs_matrix_t *matrix)
Return matrix type.
Definition: cs_matrix.cpp:4900
cs_lnum_t cs_matrix_get_n_rows(const cs_matrix_t *matrix)
Return the number of rows in matrix.
Definition: cs_matrix.cpp:4969
void cs_matrix_structure_release_msr_arrays(cs_matrix_structure_t *ms, cs_lnum_t **row_index, cs_lnum_t **col_id)
Release arrays describing an MSR matrix structure.
Definition: cs_matrix.cpp:4634
cs_matrix_structure_t * cs_matrix_structure_create_msr(cs_matrix_type_t type, bool transfer, bool have_diag, bool ordered, cs_lnum_t n_rows, cs_lnum_t n_cols_ext, cs_lnum_t **row_index, cs_lnum_t **col_id, const cs_halo_t *halo, const cs_numbering_t *numbering)
Create a matrix structure based on a MSR connectivity definition.
Definition: cs_matrix.cpp:4420
void cs_matrix_structure_destroy(cs_matrix_structure_t **ms)
Destroy a matrix structure.
Definition: cs_matrix.cpp:4602
cs_lnum_t cs_matrix_get_n_columns(const cs_matrix_t *matrix)
Return number of columns in a matrix.
Definition: cs_matrix.cpp:4950
void cs_matrix_get_native_arrays(const cs_matrix_t *matrix, bool *symmetric, cs_lnum_t *n_edges, const cs_lnum_2_t **edges, const cs_real_t **d_val, const cs_real_t **x_val)
Get arrays describing a matrix in native format.
Definition: cs_matrix.cpp:6094
const cs_real_t * cs_matrix_get_extra_diagonal(const cs_matrix_t *matrix)
Get pointer to matrix extra-diagonal values in "native" format.
Definition: cs_matrix.cpp:5774
cs_matrix_structure_t * cs_matrix_structure_create(cs_matrix_type_t type, cs_lnum_t n_rows, cs_lnum_t n_cols_ext, cs_lnum_t n_edges, const cs_lnum_2_t *edges, const cs_halo_t *halo, const cs_numbering_t *numbering)
void cs_matrix_get_coefficients_msr_w(cs_matrix_t *matrix, bool symmetric, cs_lnum_t diag_block_size, cs_lnum_t extra_diag_block_size, cs_real_t **d_val, cs_real_t **x_val)
Directly access matrix coefficients in an MSR format for writing.
Definition: cs_matrix.cpp:5519
struct _cs_matrix_assembler_t cs_matrix_assembler_t
Definition: cs_matrix_assembler.h:61
struct _cs_matrix_assembler_values_t cs_matrix_assembler_values_t
Definition: cs_matrix_assembler.h:65
cs_alloc_mode_t
Definition: cs_mem.h:50
Definition: cs_matrix.h:122
cs_lnum_t buffer_size
Definition: cs_matrix.h:125
cs_real_t * _vals
Definition: cs_matrix.h:129
const cs_lnum_t * col_id
Definition: cs_matrix.h:126
cs_lnum_t * _col_id
Definition: cs_matrix.h:127
cs_lnum_t row_size
Definition: cs_matrix.h:124
const cs_real_t * vals
Definition: cs_matrix.h:128
Definition: cs_numbering.h:87