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
int iter
Definition: cs_sla.h:116
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_matrix.c:3567
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_matrix.c:1486
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_matrix.c:3374
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_matrix.c:2924
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_matrix.c:3294
Definition: cs_cdo_toolbox.h:82
double residual
Definition: cs_sla.h:117
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_matrix.c:2987
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_matrix.c:2730
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_matrix.c:2845
void cs_sla_matrix_clean(cs_sla_matrix_t *m, double eps)
Remove entries in a cs_sla_matrix_t structure below a given threshold. |a(i,j)| < eps * max|a(i...
Definition: cs_sla_matrix.c:1796
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_matrix.c:2584
size_t nnz
Definition: cs_sla.h:81
#define BEGIN_C_DECLS
Definition: cs_defs.h:429
cs_sla_matrix_t * cs_sla_matrix_transpose(const cs_sla_matrix_t *mat)
Transpose a cs_sla_matrix_t structure.
Definition: cs_sla_matrix.c:1569
int stride
Definition: cs_sla.h:92
Definition: cs_field_pointer.h:82
double precision, dimension(ncharm), save beta
Definition: cpincl.f90:97
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_matrix.c:2071
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_matrix.c:2375
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_matrix.c:3468
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_matrix.c:1429
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_matrix.c:2203
short int * sgn
Definition: cs_sla.h:99
int code
Definition: cs_sla.h:115
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_matrix.c:3215
cs_sla_matrix_t * cs_sla_matrix_free(cs_sla_matrix_t *m)
Free a cs_sla_matrix_t structure.
Definition: cs_sla_matrix.c:1675
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_matrix.c:2811
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_matrix.c:1332
void cs_sla_matrix_rmzeros(cs_sla_matrix_t *m)
Remove entries with zero values Only available for CSR and MSR matrices with stride = 1...
Definition: cs_sla_matrix.c:1726
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_matrix.c:2132
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_matrix.c:2035
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_matrix.c:2308
#define END_C_DECLS
Definition: cs_defs.h:430
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_matrix.c:2267
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_matrix.c:1938
Definition: cs_field_pointer.h:70
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_matrix.c:1871
cs_lnum_t * didx
Definition: cs_sla.h:102
cs_lnum_t * col_id
Definition: cs_sla.h:97
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_matrix.c:1897
Definition: cs_cdo_toolbox.h:72
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_matrix.c:1257
double precision, save b
Definition: cs_fuel_incl.f90:146