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