PaStiX Handbook  6.2.1
bcsc.h
Go to the documentation of this file.
1 /**
2  *
3  * @file bcsc.h
4  *
5  * @copyright 2004-2021 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
6  * Univ. Bordeaux. All rights reserved.
7  *
8  * @version 6.1.0
9  * @author Mathieu Faverge
10  * @author Pierre Ramet
11  * @author Xavier Lacoste
12  * @date 2019-12-12
13  *
14  * @addtogroup bcsc
15  * @{
16  * @brief Describe all the internals routines to manipulate the internal block csc.
17  *
18  * These functions provide a set of subroutines to manipulate the permuted
19  * sparse matrix stored in block of columns following the partition.
20  *
21  **/
22 #ifndef _bcsc_h_
23 #define _bcsc_h_
24 
25 /**
26  * @brief Compressed colptr format for the bcsc
27  */
28 typedef struct bcsc_cblk_s {
29  pastix_int_t colnbr; /**< Number of columns in the block column. */
30  pastix_int_t cblknum; /**< Index of the corresponding cblk in the local solver matrix */
31  pastix_int_t *coltab; /**< Array of indexes of the start of each column in the row and value arrays. */
32 } bcsc_cblk_t;
33 
34 /**
35  * @brief Internal column block distributed CSC matrix.
36  */
37 struct pastix_bcsc_s {
38  int gN; /**< Global number of vertices */
39  int n; /**< Local number of vertices */
40  int mtxtype; /**< Matrix structure: PastixGeneral, PastixSymmetric or PastixHermitian. */
41  int flttype; /**< valtab datatype: PastixFloat, PastixDouble, PastixComplex32 or PastixComplex64 */
42  pastix_int_t cscfnbr; /**< Number of column blocks. */
43  bcsc_cblk_t *cscftab; /**< Array of Block column structures of size cscfnbr. (<pastix_bcscFormat_t>) */
44  pastix_int_t *rowtab; /**< Array of rows in the matrix. */
45  void *Lvalues; /**< Array of values of the matrix A */
46  void *Uvalues; /**< Array of values of the matrix A^t */
47 };
48 
49 double bcscInit( const spmatrix_t *spm,
50  const pastix_order_t *ord,
51  const SolverMatrix *solvmtx,
52  pastix_int_t initAt,
53  pastix_bcsc_t *bcsc );
54 
55 void bcscExit( pastix_bcsc_t *bcsc );
56 
57 /**
58  * @}
59  *
60  * @addtogroup bcsc_internal
61  * @{
62  */
63 pastix_int_t
64 bcsc_init_global_coltab( const spmatrix_t *spm,
65  const pastix_order_t *ord,
66  const SolverMatrix *solvmtx,
67  pastix_bcsc_t *bcsc );
68 
69 void
71 
72 /**
73  * @}
74  */
75 #endif /* _bcsc_h_ */
pastix_bcsc_s
Internal column block distributed CSC matrix.
Definition: bcsc.h:37
pastix_bcsc_s::cscftab
bcsc_cblk_t * cscftab
Definition: bcsc.h:43
bcscExit
void bcscExit(pastix_bcsc_t *bcsc)
Cleanup the block csc structure but do not free the bcsc pointer.
Definition: bcsc.c:414
bcsc_cblk_s::coltab
pastix_int_t * coltab
Definition: bcsc.h:31
pastix_order_s
Order structure.
Definition: order.h:45
pastix_bcsc_s::Lvalues
void * Lvalues
Definition: bcsc.h:45
bcsc_cblk_s::colnbr
pastix_int_t colnbr
Definition: bcsc.h:29
pastix_bcsc_s::n
int n
Definition: bcsc.h:39
bcsc_cblk_s::cblknum
pastix_int_t cblknum
Definition: bcsc.h:30
pastix_bcsc_s::flttype
int flttype
Definition: bcsc.h:41
pastix_bcsc_s::mtxtype
int mtxtype
Definition: bcsc.h:40
pastix_bcsc_s::cscfnbr
pastix_int_t cscfnbr
Definition: bcsc.h:42
bcsc_cblk_s
Compressed colptr format for the bcsc.
Definition: bcsc.h:28
pastix_bcsc_s::rowtab
pastix_int_t * rowtab
Definition: bcsc.h:44
bcsc_restore_coltab
void bcsc_restore_coltab(pastix_bcsc_t *bcsc)
Restore the coltab array.
Definition: bcsc.c:139
bcsc_init_global_coltab
pastix_int_t bcsc_init_global_coltab(const spmatrix_t *spm, const pastix_order_t *ord, const SolverMatrix *solvmtx, pastix_bcsc_t *bcsc)
Initialize the coltab of a centralized block csc matrix.
Definition: bcsc.c:186
bcsc_cblk_t
struct bcsc_cblk_s bcsc_cblk_t
Compressed colptr format for the bcsc.
bcscInit
double bcscInit(const spmatrix_t *spm, const pastix_order_t *ord, const SolverMatrix *solvmtx, pastix_int_t initAt, pastix_bcsc_t *bcsc)
Initialize the block csc matrix.
Definition: bcsc.c:384
pastix_bcsc_s::gN
int gN
Definition: bcsc.h:38
pastix_bcsc_s::Uvalues
void * Uvalues
Definition: bcsc.h:46