54 #define CS_SLA_MATRIX_SYM (1 << 0)
55 #define CS_SLA_MATRIX_SORTED (1 << 1)
56 #define CS_SLA_MATRIX_SHARED (1 << 2)
85 typedef struct _sla_mat_prop_t cs_sla_mat_prop_t;
int stencil_min
Definition: cs_sla.h:75
int iter
Definition: cs_sla.h:117
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:3464
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.
double * diag
Definition: cs_sla.h:105
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:2686
double residual
Definition: cs_sla.h:118
void cs_sla_assemble_msr(const cs_toolbox_locmat_t *loc, cs_sla_matrix_t *ass)
Assemble a MSR matrix from local contributions –> We assume that the local matrices are symmetric –...
Definition: cs_sla_matrix.c:3568
double * val
Definition: cs_sla.h:101
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 alpha and beta are scalar...
Definition: cs_sla_matrix.c:1732
void cs_sla_matvec(const cs_sla_matrix_t *m, const double v[], double *inout[], bool reset)
cs_sla_matrix_t * cs_sla_matrix_create_from_pattern(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.
Definition: cs_sla_matrix.c:2838
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:1651
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:3118
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:1507
size_t nnz
Definition: cs_sla.h:80
cs_sla_matrix_t * cs_sla_multiply_AtDA(const cs_sla_matrix_t *At, const double D[], const cs_sla_matrix_t *A, int *w)
Compute the product C = At * Diag * A.
Definition: cs_sla_matrix.c:1879
#define BEGIN_C_DECLS
Definition: cs_defs.h:419
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:2956
int stride
Definition: cs_sla.h:93
Definition: cs_field_pointer.h:81
double precision, dimension(ncharm), save beta
Definition: cpincl.f90:97
cs_lnum_t * idx
Definition: cs_sla.h:97
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:3370
double stencil_mean
Definition: cs_sla.h:77
void cs_sla_matrix_csr2msr(cs_sla_matrix_t *a)
Change matrix representation from CSR to MSR.
Definition: cs_sla_matrix.c:2191
double precision, dimension(:,:,:), allocatable v
Definition: atimbr.f90:108
short int * sgn
Definition: cs_sla.h:100
double cs_sla_get_matrix_norm(const cs_sla_matrix_t *m)
Definition: cs_sla_matrix.c:1277
cs_sla_matrix_t * cs_sla_matrix_create(int n_rows, int n_cols, int stride, cs_sla_matrix_type_t type, bool sym)
Create a cs_sla_matrix_t structure.
int code
Definition: cs_sla.h:116
cs_sla_mat_prop_t * properties
Definition: cs_sla.h:90
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:2607
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:3062
void cs_sla_amxby(double alpha, const cs_sla_matrix_t *m, const double x[], double beta, const double y[], double *inout[])
Definition: cs_sla_matrix.c:2007
int cs_sla_get_mat_spectral_radius(const cs_sla_matrix_t *matrix, int iter_max, double epsilon, double *lambda)
Definition: cs_sla_matrix.c:1311
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
void matrix(const cs_int_t *const iconvp, const cs_int_t *const idiffp, const cs_int_t *const ndircp, const cs_int_t *const isym, const cs_real_t *const thetap, const cs_int_t *const imucpp, const cs_real_t coefbp[], const cs_real_t cofbfp[], const cs_real_t rovsdt[], const cs_real_t i_massflux[], const cs_real_t b_massflux[], const cs_real_t i_visc[], const cs_real_t b_visc[], const cs_real_t xcpp[], cs_real_t da[], cs_real_t xa[])
Definition: cs_matrix_building.c:111
int n_cols
Definition: cs_sla.h:95
int n_rows
Definition: cs_sla.h:94
void cs_sla_matrix_msr2csr(cs_sla_matrix_t *a)
Change matrix representation from MSR to CSR.
Definition: cs_sla_matrix.c:2120
cs_sla_matrix_t * cs_sla_block2mat(cs_sla_matrix_t *A, const cs_sla_matrix_t *B, const cs_sla_matrix_t *C, const cs_sla_matrix_t *D, bool sym)
cs_sla_matrix_info_t cs_sla_matrix_analyse(const cs_sla_matrix_t *m)
Compute general information related to a cs_sla_matrix_t structure.
Definition: cs_sla_matrix.c:3215
cs_sla_matrix_type_t type
Definition: cs_sla.h:89
double fillin
Definition: cs_sla.h:81
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:2568
#define END_C_DECLS
Definition: cs_defs.h:420
cs_sla_matrix_type_t
Definition: cs_sla.h:62
void cs_sla_matrix_share2own(cs_sla_matrix_t *a)
Allocate its own pattern if shared.
Definition: cs_sla_matrix.c:2255
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:91
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:2471
void cs_sla_matrix_resume(const char *name, FILE *f, const cs_sla_matrix_t *m)
Synthesis of a cs_sla_matrix_t structure.
Definition: cs_sla_matrix.c:3275
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:3189
cs_lnum_t * didx
Definition: cs_sla.h:103
cs_lnum_t * col_id
Definition: cs_sla.h:98
int stencil_max
Definition: cs_sla.h:76
void cs_sla_matrix_diag_idx(cs_sla_matrix_t *m)
Build diagonal index.
Definition: cs_sla_matrix.c:2430
double precision, save b
Definition: cs_fuel_incl.f90:146