xref: /petsc/src/mat/utils/freespace.h (revision 9dd11ecf0918283bb567d8b33a92f53ac4ea7840)
1*a4963045SJacob Faibussowitsch #pragma once
2eb9c0419SKris Buschelman 
3c6db04a5SJed Brown #include <petscsys.h>
470f19b1fSKris Buschelman 
5cbc40606SBarry Smith typedef struct _n_PetscFreeSpaceList *PetscFreeSpaceList;
670f19b1fSKris Buschelman 
7cbc40606SBarry Smith struct _n_PetscFreeSpaceList {
8a1a86e44SBarry Smith   PetscFreeSpaceList more_space;
92e111b49SBarry Smith   PetscInt          *array;
102e111b49SBarry Smith   PetscInt          *array_head;
112e111b49SBarry Smith   PetscInt           total_array_size;
122e111b49SBarry Smith   PetscInt           local_used;
132e111b49SBarry Smith   PetscInt           local_remaining;
14a1a86e44SBarry Smith };
1570f19b1fSKris Buschelman 
16a1a86e44SBarry Smith PetscErrorCode PetscFreeSpaceGet(PetscInt, PetscFreeSpaceList *);
17a1a86e44SBarry Smith PetscErrorCode PetscFreeSpaceContiguous(PetscFreeSpaceList *, PetscInt *);
18783ef271SHong Zhang PetscErrorCode PetscFreeSpaceContiguous_LU(PetscFreeSpaceList *, PetscInt *, PetscInt, PetscInt *, PetscInt *);
19783ef271SHong Zhang PetscErrorCode PetscFreeSpaceContiguous_Cholesky(PetscFreeSpaceList *, PetscInt *, PetscInt, PetscInt *, PetscInt *);
20a1a86e44SBarry Smith PetscErrorCode PetscFreeSpaceDestroy(PetscFreeSpaceList);
21