Lines Matching refs:blocks
23 BlockDesc blocks; /* Linked list of block descriptors */ member
29 BlockDesc blocks = mb->blocks, next; in SNESReset_Multiblock() local
32 while (blocks) { in SNESReset_Multiblock()
33 PetscCall(SNESReset(blocks->snes)); in SNESReset_Multiblock()
35 PetscCall(VecDestroy(&blocks->x)); in SNESReset_Multiblock()
37 PetscCall(VecScatterDestroy(&blocks->sctx)); in SNESReset_Multiblock()
38 PetscCall(ISDestroy(&blocks->is)); in SNESReset_Multiblock()
39 next = blocks->next; in SNESReset_Multiblock()
40 blocks = next; in SNESReset_Multiblock()
56 BlockDesc blocks = mb->blocks, next; in SNESDestroy_Multiblock() local
60 while (blocks) { in SNESDestroy_Multiblock()
61 next = blocks->next; in SNESDestroy_Multiblock()
62 PetscCall(SNESDestroy(&blocks->snes)); in SNESDestroy_Multiblock()
63 PetscCall(PetscFree(blocks->name)); in SNESDestroy_Multiblock()
64 PetscCall(PetscFree(blocks->fields)); in SNESDestroy_Multiblock()
65 PetscCall(PetscFree(blocks)); in SNESDestroy_Multiblock()
66 blocks = next; in SNESDestroy_Multiblock()
105 BlockDesc blocks = mb->blocks; in SNESMultiblockSetDefaults() local
109 if (!blocks) { in SNESMultiblockSetDefaults()
175 …PetscCheck(blocks->is, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONGSTATE, "Must provide at least two sets … in SNESMultiblockSetDefaults()
177 PetscCall(ISComplement(blocks->is, nmin, nmax, &is2)); in SNESMultiblockSetDefaults()
188 BlockDesc blocks; in SNESSetUp_Multiblock() local
194 blocks = mb->blocks; in SNESSetUp_Multiblock()
208 …ll(ISCreateStride(PetscObjectComm((PetscObject)snes), nslots, rstart + i, numBlocks, &blocks->is)); in SNESSetUp_Multiblock()
209 } else if (!blocks->is) { in SNESSetUp_Multiblock()
210 if (blocks->nfields > 1) { in SNESSetUp_Multiblock()
211 PetscInt *ii, j, k, nfields = blocks->nfields, *fields = blocks->fields; in SNESSetUp_Multiblock()
217 …General(PetscObjectComm((PetscObject)snes), nslots * nfields, ii, PETSC_OWN_POINTER, &blocks->is)); in SNESSetUp_Multiblock()
219 …teStride(PetscObjectComm((PetscObject)snes), nslots, rstart + blocks->fields[0], bs, &blocks->is)); in SNESSetUp_Multiblock()
222 PetscCall(ISSorted(blocks->is, &sorted)); in SNESSetUp_Multiblock()
224 blocks = blocks->next; in SNESSetUp_Multiblock()
348 blocks = mb->blocks; in SNESSetUp_Multiblock()
350 while (blocks) { in SNESSetUp_Multiblock()
354 PetscCall(VecDuplicate(blocks->snes->vec_sol, &blocks->x)); in SNESSetUp_Multiblock()
356 PetscCall(SNESSetFromOptions(blocks->snes)); in SNESSetUp_Multiblock()
357 PetscCall(SNESSetUp(blocks->snes)); in SNESSetUp_Multiblock()
358 blocks = blocks->next; in SNESSetUp_Multiblock()
364 if (!mb->blocks->sctx) { in SNESSetUp_Multiblock()
367 blocks = mb->blocks; in SNESSetUp_Multiblock()
369 while (blocks) { in SNESSetUp_Multiblock()
370 PetscCall(VecScatterCreate(xtmp, blocks->is, blocks->x, NULL, &blocks->sctx)); in SNESSetUp_Multiblock()
371 blocks = blocks->next; in SNESSetUp_Multiblock()
412 BlockDesc blocks = mb->blocks; in SNESView_Multiblock() local
421 while (blocks) { in SNESView_Multiblock()
422 if (blocks->fields) { in SNESView_Multiblock()
425 PetscCall(PetscViewerASCIIPrintf(viewer, " Block %s Fields ", blocks->name)); in SNESView_Multiblock()
427 for (j = 0; j < blocks->nfields; ++j) { in SNESView_Multiblock()
429 PetscCall(PetscViewerASCIIPrintf(viewer, " %" PetscInt_FMT, blocks->fields[j])); in SNESView_Multiblock()
434 PetscCall(PetscViewerASCIIPrintf(viewer, " Block %s Defined by IS\n", blocks->name)); in SNESView_Multiblock()
436 PetscCall(SNESView(blocks->snes, viewer)); in SNESView_Multiblock()
437 blocks = blocks->next; in SNESView_Multiblock()
489 BlockDesc blocks = mb->blocks; in SNESSolve_Multiblock() local
494 while (blocks) { in SNESSolve_Multiblock()
495 PetscCall(SNESSolve(blocks->snes, NULL, blocks->x)); in SNESSolve_Multiblock()
496 blocks = blocks->next; in SNESSolve_Multiblock()
500 while (blocks) { in SNESSolve_Multiblock()
501 PetscCall(VecScatterBegin(blocks->sctx, X, blocks->x, INSERT_VALUES, SCATTER_FORWARD)); in SNESSolve_Multiblock()
502 PetscCall(VecScatterEnd(blocks->sctx, X, blocks->x, INSERT_VALUES, SCATTER_FORWARD)); in SNESSolve_Multiblock()
503 PetscCall(SNESSolve(blocks->snes, NULL, blocks->x)); in SNESSolve_Multiblock()
504 PetscCall(VecScatterBegin(blocks->sctx, blocks->x, X, INSERT_VALUES, SCATTER_REVERSE)); in SNESSolve_Multiblock()
505 PetscCall(VecScatterEnd(blocks->sctx, blocks->x, X, INSERT_VALUES, SCATTER_REVERSE)); in SNESSolve_Multiblock()
506 blocks = blocks->next; in SNESSolve_Multiblock()
537 BlockDesc newblock, next = mb->blocks; in SNESMultiblockSetFields_Default()
573 mb->blocks = newblock; in SNESMultiblockSetFields_Default()
587 BlockDesc newblock, next = mb->blocks; in SNESMultiblockSetIS_Default()
617 mb->blocks = newblock; in SNESMultiblockSetIS_Default()
642 BlockDesc blocks = mb->blocks; in SNESMultiblockGetSubSNES_Default() local
647 while (blocks) { in SNESMultiblockGetSubSNES_Default()
648 (*subsnes)[cnt++] = blocks->snes; in SNESMultiblockGetSubSNES_Default()
649 blocks = blocks->next; in SNESMultiblockGetSubSNES_Default()