54 #define CS_SLA_MATRIX_SYM (1 << 0) 55 #define CS_SLA_MATRIX_SORTED (1 << 1) 56 #define CS_SLA_MATRIX_SHARED (1 << 2) 57 #define CS_SLA_MATRIX_INFO (1 << 3) int stencil_min
Definition: cs_sla.h:76
double * cc_diag
Definition: cs_sla.h:133
void cs_sla_system_dump(const char *name, FILE *f, const cs_sla_matrix_t *m, const double *rhs)
Dump a cs_sla_matrix_t structure and its related right-hand side.
Definition: cs_sla.c:3555
cs_sla_matrix_t * cs_sla_matrix_copy(const cs_sla_matrix_t *a, bool shared)
Create a new matrix structure from the copy of an existing one.
Definition: cs_sla.c:1489
void cs_sla_hmatvec(const cs_sla_hmatrix_t *hm, const double vx[], const double vc[], double *iox[], double *ioc[], bool reset)
Compute a matrix vector product. If inout is not allocated, allocation is done inside this function I...
Definition: cs_sla.c:3771
void cs_sla_matrix_summary(const char *name, FILE *f, cs_sla_matrix_t *m)
Synthesis of a cs_sla_matrix_t structure.
Definition: cs_sla.c:3352
cs_sla_matrix_t * cs_sla_multiply_AtDA(const cs_sla_matrix_t *At, const double D[], const cs_sla_matrix_t *A, cs_lnum_t *w)
Compute the product C = At * Diag * A.
Definition: cs_sla.c:2902
double * diag
Definition: cs_sla.h:104
void cs_sla_bwrite(const char *name, const cs_sla_matrix_t *m, const double *rhs, const double *sol)
Write in binary format a matrix in CSR format, its righ hand side and the solution.
Definition: cs_sla.c:3272
Definition: cs_cdo_toolbox.h:60
double * val
Definition: cs_sla.h:100
cs_sla_matrix_t * cs_sla_matrix_combine(double alpha, const cs_sla_matrix_t *a, double beta, const cs_sla_matrix_t *bt, const cs_sla_matrix_t *b)
Specific matrix multiplication. Compute Bt * beta * B + alpha * A where alpha and beta are scalar...
Definition: cs_sla.c:2965
void cs_sla_matvec(const cs_sla_matrix_t *m, const double v[], double *inout[], bool reset)
Compute a matrix vector product. If inout is not allocated, allocation is done inside this function I...
Definition: cs_sla.c:2707
cs_sla_matrix_t * cs_sla_matrix_multiply(const cs_sla_matrix_t *a, const cs_sla_matrix_t *b)
Main subroutine to multiply two sparse matrices a and b. c= a*b.
Definition: cs_sla.c:2823
void cs_sla_matrix_clean_zeros(cs_sla_matrix_t *m, double threshold, int verbosity)
Reset to 0 all entries below a given threshold Only available for CSR and MSR matrices with stride = ...
Definition: cs_sla.c:1732
cs_sla_matrix_t * cs_sla_matrix_add(double alpha, const cs_sla_matrix_t *a, double beta, const cs_sla_matrix_t *b)
Add two sparse matrices a and b. c = alpha*a + beta*b.
Definition: cs_sla.c:2561
size_t nnz
Definition: cs_sla.h:81
double * xc_vals
Definition: cs_sla.h:135
#define BEGIN_C_DECLS
Definition: cs_defs.h:448
cs_sla_matrix_t * cs_sla_matrix_transpose(const cs_sla_matrix_t *mat)
Transpose a cs_sla_matrix_t structure.
Definition: cs_sla.c:1572
int stride
Definition: cs_sla.h:92
Definition: cs_field_pointer.h:82
void cs_sla_matrix_clean(int verbosity, double threshold, cs_sla_matrix_t *m)
Set to zero entries in a cs_sla_matrix_t structure if the ratio |a(i,j)| < eps * max|a(i,j)| is below a given threshold. Be careful when using this function since one can loose the symmetry Only available for matrices with stride = 1.
Definition: cs_sla.c:1774
cs_lnum_t n_x
Definition: cs_sla.h:124
double precision, dimension(ncharm), save beta
Definition: cpincl.f90:99
void cs_sla_matrix_set_info(cs_sla_matrix_t *m)
Compute general information related to a cs_sla_matrix_t structure and store it into a cs_sla_matrix_...
Definition: cs_sla.c:2023
cs_sla_matrix_info_t info
Definition: cs_sla.h:89
void cs_sla_assemble_msr(const cs_locmat_t *loc, cs_sla_matrix_t *ass)
Assemble a MSR matrix from local contributions –> We assume that the assembled matrix has its column...
Definition: cs_sla.c:2340
cs_lnum_t * idx
Definition: cs_sla.h:96
void cs_sla_matrix_dump(const char *name, FILE *f, const cs_sla_matrix_t *m)
Dump a cs_sla_matrix_t structure.
Definition: cs_sla.c:3456
cs_sla_matrix_t * cs_sla_matrix_create_msr_from_index(const cs_connect_index_t *connect_idx, bool is_symmetric, bool sorted_idx, int stride)
Create a cs_sla_matrix_t structure with MSR type from an existing connectivity index. Be aware of removing the diagonal entry in the connectivity index before the call to this routine.
Definition: cs_sla.c:1430
double stencil_mean
Definition: cs_sla.h:78
void cs_sla_matrix_csr2msr(cs_sla_matrix_t *a)
Change matrix representation from CSR to MSR.
Definition: cs_sla.c:2155
cs_lnum_t n_cells
Definition: cs_sla.h:125
short int * sgn
Definition: cs_sla.h:99
double precision, dimension(:,:,:), allocatable v
Definition: atimbr.f90:114
void cs_sla_bread(const char *name, cs_sla_matrix_t **p_mat, double *p_rhs[], double *p_sol[])
Read from a binary file a matrix in CSR format, its righ hand side and the solution. Matrix must have a stride equal to 1.
Definition: cs_sla.c:3193
cs_sla_matrix_t * cs_sla_matrix_free(cs_sla_matrix_t *m)
Free a cs_sla_matrix_t structure.
Definition: cs_sla.c:1678
void cs_sla_amxby(double alpha, const cs_sla_matrix_t *m, const double x[], double beta, const double y[], double *inout[])
Compute an array resulting from alpha * M(x) + beta * y If inout is not allocated, allocation is done inside this function.
Definition: cs_sla.c:2789
const cs_connect_index_t * c2x
Definition: cs_sla.h:128
Definition: cs_convection_diffusion.h:47
cs_sla_matrix_t * cs_sla_matrix_pack(cs_lnum_t n_final_rows, cs_lnum_t n_final_cols, const cs_sla_matrix_t *init, const cs_lnum_t *row_z2i_ids, const cs_lnum_t *col_i2z_ids, bool keep_sym)
Build a new matrix resulting from the extraction of some listed rows and columns. The output is a new...
double precision, save a
Definition: cs_fuel_incl.f90:146
cs_sla_matrix_t * cs_sla_matrix_create_from_ref(const cs_sla_matrix_t *ref, cs_sla_matrix_type_t type, int stride)
Create a cs_sla_matrix_t structure from an existing one. idx, didx and col_id are shared with ref...
Definition: cs_sla.c:1330
Definition: cs_convection_diffusion.h:47
int n_cols
Definition: cs_sla.h:94
int n_rows
Definition: cs_sla.h:93
void cs_sla_matrix_msr2csr(cs_sla_matrix_t *a)
Change matrix representation from MSR to CSR.
Definition: cs_sla.c:2084
cs_sla_matrix_type_t type
Definition: cs_sla.h:88
double fillin
Definition: cs_sla.h:82
int cs_lnum_t
local mesh entity id
Definition: cs_defs.h:292
void cs_sla_matrix_sort(cs_sla_matrix_t *m)
Sort each row by increasing colomn number.
Definition: cs_sla.c:1987
void cs_sla_assemble_msr_sym(const cs_locmat_t *loc, cs_sla_matrix_t *ass, bool only_diag)
Assemble a MSR matrix from local contributions –> We assume that the local matrices are symmetric –...
Definition: cs_sla.c:2260
int flag
Definition: cs_sla.h:122
cs_lnum_t n_rows
Definition: cs_sla.h:126
#define END_C_DECLS
Definition: cs_defs.h:449
cs_sla_matrix_type_t
Definition: cs_sla.h:63
void cs_sla_matrix_share2own(cs_sla_matrix_t *a)
Allocate its own pattern if shared.
Definition: cs_sla.c:2219
void cs_sla_matvec_block2(const cs_sla_matrix_t *A, const cs_sla_matrix_t *B, const cs_sla_matrix_t *C, const cs_sla_matrix_t *D, const double X[], const double Y[], double *F[], double *G[], bool reset)
Matrix block 2x2 multiply by a vector.
int flag
Definition: cs_sla.h:90
void cs_sla_matrix_get_diag(const cs_sla_matrix_t *m, double *p_diag[])
Get the diagonal entries of a given matrix.
Definition: cs_sla.c:1890
cs_sla_matrix_t * xx_block
Definition: cs_sla.h:132
cs_sla_hmatrix_t * cs_sla_hmatrix_free(cs_sla_hmatrix_t *hm)
Free a cs_sla_hmatrix_t structure.
Definition: cs_sla.c:3735
void cs_sla_assemble_hmat_sym(const cs_locmat_t *loc, cs_sla_hmatrix_t *ass)
Assemble a hybrid matrix from local contributions –> We assume that the local matrices are symmetric...
Definition: cs_sla.c:3868
size_t cs_sla_matrix_get_nnz(const cs_sla_matrix_t *m)
Retrieve the number of non-zeros (nnz) elements in a matrix.
Definition: cs_sla.c:1823
cs_lnum_t * didx
Definition: cs_sla.h:102
cs_lnum_t * col_id
Definition: cs_sla.h:97
double * cx_vals
Definition: cs_sla.h:134
cs_sla_hmatrix_t * cs_sla_hmatrix_create(cs_lnum_t n_x, cs_lnum_t n_cells, bool bktrans, bool bk00sym, const cs_connect_index_t *x2x, const cs_connect_index_t *c2x)
Create a cs_sla_hmatrix_t structure This is a square matrix of size n_x+n_cells (stride = 1 up to now...
Definition: cs_sla.c:3668
int stencil_max
Definition: cs_sla.h:77
void cs_sla_matrix_diag_idx(cs_sla_matrix_t *m)
Build diagonal index.
Definition: cs_sla.c:1849
Definition: cs_cdo_toolbox.h:71
cs_sla_matrix_t * cs_sla_matrix_create(cs_lnum_t n_rows, cs_lnum_t n_cols, int stride, cs_sla_matrix_type_t type, bool sym)
Create a cs_sla_matrix_t structure.
Definition: cs_sla.c:1255
double precision, save b
Definition: cs_fuel_incl.f90:146