Lines Matching refs:ail

12   PetscCoarsenData *ail;  in PetscCDCreate()  local
16 PetscCall(PetscNew(&ail)); in PetscCDCreate()
17 *a_out = ail; in PetscCDCreate()
18 ail->pool_list.next = NULL; in PetscCDCreate()
19 ail->pool_list.array = NULL; in PetscCDCreate()
20 ail->chk_sz = 0; in PetscCDCreate()
22 ail->size = a_size; in PetscCDCreate()
23 PetscCall(PetscCalloc1(a_size, &ail->array)); in PetscCDCreate()
24 ail->extra_nodes = NULL; in PetscCDCreate()
25 ail->mat = NULL; in PetscCDCreate()
31 PetscErrorCode PetscCDDestroy(PetscCoarsenData *ail) in PetscCDDestroy() argument
33 PetscCDArrNd *n = &ail->pool_list; in PetscCDDestroy()
43 if (ail->pool_list.array) PetscCall(PetscFree(ail->pool_list.array)); in PetscCDDestroy()
44 PetscCall(PetscFree(ail->array)); in PetscCDDestroy()
45 if (ail->mat) PetscCall(MatDestroy(&ail->mat)); in PetscCDDestroy()
47 PetscCall(PetscFree(ail)); in PetscCDDestroy()
53 PetscErrorCode PetscCDSetChunkSize(PetscCoarsenData *ail, PetscInt a_sz) in PetscCDSetChunkSize() argument
56 ail->chk_sz = a_sz; in PetscCDSetChunkSize()
62 static PetscErrorCode PetscCDGetNewNode(PetscCoarsenData *ail, PetscCDIntNd **a_out, PetscInt a_id) in PetscCDGetNewNode() argument
66 if (ail->extra_nodes) { in PetscCDGetNewNode()
67 PetscCDIntNd *node = ail->extra_nodes; in PetscCDGetNewNode()
69 ail->extra_nodes = node->next; in PetscCDGetNewNode()
74 if (!ail->pool_list.array) { in PetscCDGetNewNode()
75 if (!ail->chk_sz) ail->chk_sz = 10; /* use a chuck size of ail->size? */ in PetscCDGetNewNode()
76 PetscCall(PetscMalloc1(ail->chk_sz, &ail->pool_list.array)); in PetscCDGetNewNode()
77 ail->new_node = ail->pool_list.array; in PetscCDGetNewNode()
78 ail->new_left = ail->chk_sz; in PetscCDGetNewNode()
79 ail->new_node->next = NULL; in PetscCDGetNewNode()
80 } else if (!ail->new_left) { in PetscCDGetNewNode()
83 PetscCall(PetscMalloc(ail->chk_sz * sizeof(PetscCDIntNd) + sizeof(PetscCDArrNd), &node)); in PetscCDGetNewNode()
85 node->next = ail->pool_list.next; in PetscCDGetNewNode()
86 ail->pool_list.next = node; in PetscCDGetNewNode()
87 ail->new_left = ail->chk_sz; in PetscCDGetNewNode()
88 ail->new_node = node->array; in PetscCDGetNewNode()
90 ail->new_node->gid = a_id; in PetscCDGetNewNode()
91 ail->new_node->next = NULL; in PetscCDGetNewNode()
92 *a_out = ail->new_node++; in PetscCDGetNewNode()
93 ail->new_left--; in PetscCDGetNewNode()
118 PetscErrorCode PetscCDGetHeadPos(const PetscCoarsenData *ail, PetscInt a_idx, PetscCDIntNd **pos) in PetscCDGetHeadPos() argument
121 …PetscCheck(a_idx < ail->size, PETSC_COMM_SELF, PETSC_ERR_PLIB, "a_idx >= ail->size: a_idx=%" Petsc… in PetscCDGetHeadPos()
122 *pos = ail->array[a_idx]; in PetscCDGetHeadPos()
128 PetscErrorCode PetscCDGetNextPos(const PetscCoarsenData *ail, PetscInt l_idx, PetscCDIntNd **pos) in PetscCDGetNextPos() argument
138 PetscErrorCode PetscCDAppendID(PetscCoarsenData *ail, PetscInt a_idx, PetscInt a_id) in PetscCDAppendID() argument
143 PetscCall(PetscCDGetNewNode(ail, &n, a_id)); in PetscCDAppendID()
144 …PetscCheck(a_idx < ail->size, PETSC_COMM_SELF, PETSC_ERR_PLIB, "Index %" PetscInt_FMT " out of ran… in PetscCDAppendID()
145 if (!(n2 = ail->array[a_idx])) ail->array[a_idx] = n; in PetscCDAppendID()
162 PetscErrorCode PetscCDAppendNode(PetscCoarsenData *ail, PetscInt a_idx, PetscCDIntNd *a_n) in PetscCDAppendNode() argument
167 …PetscCheck(a_idx < ail->size, PETSC_COMM_SELF, PETSC_ERR_PLIB, "Index %" PetscInt_FMT " out of ran… in PetscCDAppendNode()
168 if (!(n2 = ail->array[a_idx])) ail->array[a_idx] = a_n; in PetscCDAppendNode()
185 PetscErrorCode PetscCDRemoveNextNode(PetscCoarsenData *ail, PetscInt a_idx, PetscCDIntNd *a_last) in PetscCDRemoveNextNode() argument
190 …PetscCheck(a_idx < ail->size, PETSC_COMM_SELF, PETSC_ERR_PLIB, "Index %" PetscInt_FMT " out of ran… in PetscCDRemoveNextNode()
201 PetscErrorCode PetscCDPrint(const PetscCoarsenData *ail, PetscInt Istart, MPI_Comm comm) in PetscCDPrint() argument
207 for (ii = 0; ii < ail->size; ii++) { in PetscCDPrint()
208 n2 = n = ail->array[ii]; in PetscCDPrint()
222 PetscErrorCode PetscCDMoveAppend(PetscCoarsenData *ail, PetscInt a_destidx, PetscInt a_srcidx) in PetscCDMoveAppend() argument
227 …PetscCheck(a_srcidx < ail->size, PETSC_COMM_SELF, PETSC_ERR_PLIB, "Index %" PetscInt_FMT " out of … in PetscCDMoveAppend()
228 …PetscCheck(a_destidx < ail->size, PETSC_COMM_SELF, PETSC_ERR_PLIB, "Index %" PetscInt_FMT " out of… in PetscCDMoveAppend()
230 n = ail->array[a_destidx]; in PetscCDMoveAppend()
231 if (!n) ail->array[a_destidx] = ail->array[a_srcidx]; in PetscCDMoveAppend()
235 n->next = ail->array[a_srcidx]; // append in PetscCDMoveAppend()
241 ail->array[a_srcidx] = NULL; // empty in PetscCDMoveAppend()
247 PetscErrorCode PetscCDRemoveAllAt(PetscCoarsenData *ail, PetscInt a_idx) in PetscCDRemoveAllAt() argument
252 …PetscCheck(a_idx < ail->size, PETSC_COMM_SELF, PETSC_ERR_PLIB, "Index %" PetscInt_FMT " out of ran… in PetscCDRemoveAllAt()
253 rem = ail->array[a_idx]; in PetscCDRemoveAllAt()
254 ail->array[a_idx] = NULL; in PetscCDRemoveAllAt()
255 if (!(n1 = ail->extra_nodes)) ail->extra_nodes = rem; in PetscCDRemoveAllAt()
265 PetscErrorCode PetscCDCountAt(const PetscCoarsenData *ail, PetscInt a_idx, PetscInt *a_sz) in PetscCDCountAt() argument
271 …PetscCheck(a_idx < ail->size, PETSC_COMM_SELF, PETSC_ERR_PLIB, "Index %" PetscInt_FMT " out of ran… in PetscCDCountAt()
272 n1 = ail->array[a_idx]; in PetscCDCountAt()
283 PetscErrorCode PetscCDCount(const PetscCoarsenData *ail, PetscInt *a_sz) in PetscCDCount() argument
288 for (PetscInt ii = 0; ii < ail->size; ii++) { in PetscCDCount()
289 PetscCDIntNd *n1 = ail->array[ii]; in PetscCDCount()
302 PetscErrorCode PetscCDIsEmptyAt(const PetscCoarsenData *ail, PetscInt a_idx, PetscBool *a_e) in PetscCDIsEmptyAt() argument
305 …PetscCheck(a_idx < ail->size, PETSC_COMM_SELF, PETSC_ERR_PLIB, "Index %" PetscInt_FMT " out of ran… in PetscCDIsEmptyAt()
306 *a_e = (PetscBool)(ail->array[a_idx] == NULL); in PetscCDIsEmptyAt()
312 PetscErrorCode PetscCDGetNonemptyIS(PetscCoarsenData *ail, IS *a_mis) in PetscCDGetNonemptyIS() argument
319 for (ii = kk = 0; ii < ail->size; ii++) { in PetscCDGetNonemptyIS()
320 n = ail->array[ii]; in PetscCDGetNonemptyIS()
324 for (ii = kk = 0; ii < ail->size; ii++) { in PetscCDGetNonemptyIS()
325 n = ail->array[ii]; in PetscCDGetNonemptyIS()
334 PetscErrorCode PetscCDGetMat(PetscCoarsenData *ail, Mat *a_mat) in PetscCDGetMat() argument
337 *a_mat = ail->mat; in PetscCDGetMat()
343 PetscErrorCode PetscCDSetMat(PetscCoarsenData *ail, Mat a_mat) in PetscCDSetMat() argument
346 if (ail->mat) PetscCall(MatDestroy(&ail->mat)); //should not happen in PetscCDSetMat()
347 ail->mat = a_mat; in PetscCDSetMat()
353 PetscErrorCode PetscCDClearMat(PetscCoarsenData *ail) in PetscCDClearMat() argument
356 ail->mat = NULL; in PetscCDClearMat()
362 PetscErrorCode PetscCDGetASMBlocks(const PetscCoarsenData *ail, const PetscInt a_bs, PetscInt *a_sz… in PetscCDGetASMBlocks() argument
369 for (ii = kk = 0; ii < ail->size; ii++) { in PetscCDGetASMBlocks()
370 if (ail->array[ii]) kk++; in PetscCDGetASMBlocks()
374 for (ii = kk = 0; ii < ail->size; ii++) { in PetscCDGetASMBlocks()
375 for (lsz = 0, n = ail->array[ii]; n; lsz++, n = n->next) /* void */ in PetscCDGetASMBlocks()
379 for (lsz = 0, n = ail->array[ii]; n; n = n->next) { in PetscCDGetASMBlocks()