Lines Matching refs:jac
13 PC_BJacobi *jac = (PC_BJacobi *)pc->data; in PCSetUp_BJacobi() local
26 if (jac->n > 0 && jac->n < size) { in PCSetUp_BJacobi()
33 if (jac->n_local > 0 && jac->n < 0) { in PCSetUp_BJacobi()
34 …PetscCallMPI(MPIU_Allreduce(&jac->n_local, &jac->n, 1, MPIU_INT, MPI_SUM, PetscObjectComm((PetscOb… in PCSetUp_BJacobi()
35 if (jac->l_lens) { /* check that user set these correctly */ in PCSetUp_BJacobi()
37 for (i = 0; i < jac->n_local; i++) { in PCSetUp_BJacobi()
38 …PetscCheck(jac->l_lens[i] / bs * bs == jac->l_lens[i], PETSC_COMM_SELF, PETSC_ERR_ARG_SIZ, "Mat bl… in PCSetUp_BJacobi()
39 sum += jac->l_lens[i]; in PCSetUp_BJacobi()
43 PetscCall(PetscMalloc1(jac->n_local, &jac->l_lens)); in PCSetUp_BJacobi()
44 …for (i = 0; i < jac->n_local; i++) jac->l_lens[i] = bs * ((M / bs) / jac->n_local + (((M / bs) % j… in PCSetUp_BJacobi()
46 } else if (jac->n > 0 && jac->n_local < 0) { /* global block count given */ in PCSetUp_BJacobi()
48 if (jac->g_lens) { in PCSetUp_BJacobi()
50 for (i = 0; i < jac->n; i++) { in PCSetUp_BJacobi()
51 PetscCheck(jac->g_lens[i], PETSC_COMM_SELF, PETSC_ERR_ARG_SIZ, "Zero block not allowed"); in PCSetUp_BJacobi()
52 …PetscCheck(jac->g_lens[i] / bs * bs == jac->g_lens[i], PETSC_COMM_SELF, PETSC_ERR_ARG_SIZ, "Mat bl… in PCSetUp_BJacobi()
55 jac->n_local = jac->n; in PCSetUp_BJacobi()
56 PetscCall(PetscMalloc1(jac->n_local, &jac->l_lens)); in PCSetUp_BJacobi()
57 PetscCall(PetscArraycpy(jac->l_lens, jac->g_lens, jac->n_local)); in PCSetUp_BJacobi()
60 for (i = 0; i < jac->n_local; i++) sum += jac->l_lens[i]; in PCSetUp_BJacobi()
66 for (i = 0; i < jac->n + 1; i++) { in PCSetUp_BJacobi()
71 if (i < jac->n) sum += jac->g_lens[i]; in PCSetUp_BJacobi()
75 for (i = i_start; i < jac->n + 1; i++) { in PCSetUp_BJacobi()
80 if (i < jac->n) sum += jac->g_lens[i]; in PCSetUp_BJacobi()
84 jac->n_local = i_end - i_start; in PCSetUp_BJacobi()
85 PetscCall(PetscMalloc1(jac->n_local, &jac->l_lens)); in PCSetUp_BJacobi()
86 PetscCall(PetscArraycpy(jac->l_lens, jac->g_lens + i_start, jac->n_local)); in PCSetUp_BJacobi()
89 jac->n_local = jac->n / size + ((jac->n % size) > rank); in PCSetUp_BJacobi()
90 PetscCall(PetscMalloc1(jac->n_local, &jac->l_lens)); in PCSetUp_BJacobi()
91 for (i = 0; i < jac->n_local; i++) { in PCSetUp_BJacobi()
92 jac->l_lens[i] = ((M / bs) / jac->n_local + (((M / bs) % jac->n_local) > i)) * bs; in PCSetUp_BJacobi()
93 PetscCheck(jac->l_lens[i], PETSC_COMM_SELF, PETSC_ERR_ARG_SIZ, "Too many blocks given"); in PCSetUp_BJacobi()
96 } else if (jac->n < 0 && jac->n_local < 0) { /* no blocks given */ in PCSetUp_BJacobi()
97 jac->n = size; in PCSetUp_BJacobi()
98 jac->n_local = 1; in PCSetUp_BJacobi()
99 PetscCall(PetscMalloc1(1, &jac->l_lens)); in PCSetUp_BJacobi()
100 jac->l_lens[0] = M; in PCSetUp_BJacobi()
102 if (!jac->l_lens) { in PCSetUp_BJacobi()
103 PetscCall(PetscMalloc1(jac->n_local, &jac->l_lens)); in PCSetUp_BJacobi()
104 …for (i = 0; i < jac->n_local; i++) jac->l_lens[i] = bs * ((M / bs) / jac->n_local + (((M / bs) % j… in PCSetUp_BJacobi()
107 …PetscCheck(jac->n_local >= 1, PETSC_COMM_SELF, PETSC_ERR_ARG_OUTOFRANGE, "Number of blocks is less… in PCSetUp_BJacobi()
126 if (jac->n_local == 1) { in PCSetUp_BJacobi()
137 PC_BJacobi *jac = (PC_BJacobi *)pc->data; in PCDestroy_BJacobi() local
140 PetscCall(PetscFree(jac->g_lens)); in PCDestroy_BJacobi()
141 PetscCall(PetscFree(jac->l_lens)); in PCDestroy_BJacobi()
153 PC_BJacobi *jac = (PC_BJacobi *)pc->data; in PCSetFromOptions_BJacobi() local
159 …"-pc_bjacobi_blocks", "Total number of blocks", "PCBJacobiSetTotalBlocks", jac->n, &blocks, &flg)); in PCSetFromOptions_BJacobi()
161 …jacobi_local_blocks", "Local number of blocks", "PCBJacobiSetLocalBlocks", jac->n_local, &blocks, … in PCSetFromOptions_BJacobi()
163 if (jac->ksp) { in PCSetFromOptions_BJacobi()
166 for (i = 0; i < jac->n_local; i++) PetscCall(KSPSetFromOptions(jac->ksp[i])); in PCSetFromOptions_BJacobi()
175 PC_BJacobi *jac = (PC_BJacobi *)pc->data; in PCView_BJacobi() local
176 PC_BJacobi_Multiproc *mpjac = (PC_BJacobi_Multiproc *)jac->data; in PCView_BJacobi()
189 …rASCIIPrintf(viewer, " using Amat local matrix, number of blocks = %" PetscInt_FMT "\n", jac->n)); in PCView_BJacobi()
190 PetscCall(PetscViewerASCIIPrintf(viewer, " number of blocks = %" PetscInt_FMT "\n", jac->n)); in PCView_BJacobi()
197 if (jac->ksp && !jac->psubcomm) { in PCView_BJacobi()
201 PetscCall(KSPView(jac->ksp[0], sviewer)); in PCView_BJacobi()
207 } else if (mpjac && jac->ksp && mpjac->psubcomm) { in PCView_BJacobi()
211 PetscCall(KSPView(*jac->ksp, sviewer)); in PCView_BJacobi()
220 …PetscCallMPI(MPIU_Allreduce(&jac->n_local, &n_global, 1, MPIU_INT, MPI_MAX, PetscObjectComm((Petsc… in PCView_BJacobi()
225 …scInt_FMT ", first local block number = %" PetscInt_FMT "\n", rank, jac->n_local, jac->first_local… in PCView_BJacobi()
226 for (i = 0; i < jac->n_local; i++) { in PCView_BJacobi()
228 PetscCall(KSPView(jac->ksp[i], sviewer)); in PCView_BJacobi()
236 PetscCall(PetscViewerStringSPrintf(viewer, " blks=%" PetscInt_FMT, jac->n)); in PCView_BJacobi()
238 if (jac->ksp) PetscCall(KSPView(jac->ksp[0], sviewer)); in PCView_BJacobi()
247 PetscCall(PetscSNPrintf(str, 25, "Number blocks %" PetscInt_FMT, jac->n)); in PCView_BJacobi()
252 if (jac->ksp) PetscCall(KSPView(jac->ksp[0], viewer)); in PCView_BJacobi()
260 PC_BJacobi *jac = (PC_BJacobi *)pc->data; in PCBJacobiGetSubKSP_BJacobi() local
265 if (n_local) *n_local = jac->n_local; in PCBJacobiGetSubKSP_BJacobi()
266 if (first_local) *first_local = jac->first_local; in PCBJacobiGetSubKSP_BJacobi()
267 if (ksp) *ksp = jac->ksp; in PCBJacobiGetSubKSP_BJacobi()
273 PC_BJacobi *jac = (PC_BJacobi *)pc->data; in PCBJacobiSetTotalBlocks_BJacobi() local
276 …PetscCheck(!pc->setupcalled || jac->n == blocks, PetscObjectComm((PetscObject)pc), PETSC_ERR_ORDER… in PCBJacobiSetTotalBlocks_BJacobi()
277 jac->n = blocks; in PCBJacobiSetTotalBlocks_BJacobi()
278 if (!lens) jac->g_lens = NULL; in PCBJacobiSetTotalBlocks_BJacobi()
280 PetscCall(PetscMalloc1(blocks, &jac->g_lens)); in PCBJacobiSetTotalBlocks_BJacobi()
281 PetscCall(PetscArraycpy(jac->g_lens, lens, blocks)); in PCBJacobiSetTotalBlocks_BJacobi()
288 PC_BJacobi *jac = (PC_BJacobi *)pc->data; in PCBJacobiGetTotalBlocks_BJacobi() local
291 *blocks = jac->n; in PCBJacobiGetTotalBlocks_BJacobi()
292 if (lens) *lens = jac->g_lens; in PCBJacobiGetTotalBlocks_BJacobi()
298 PC_BJacobi *jac; in PCBJacobiSetLocalBlocks_BJacobi() local
301 jac = (PC_BJacobi *)pc->data; in PCBJacobiSetLocalBlocks_BJacobi()
303 jac->n_local = blocks; in PCBJacobiSetLocalBlocks_BJacobi()
304 if (!lens) jac->l_lens = NULL; in PCBJacobiSetLocalBlocks_BJacobi()
306 PetscCall(PetscMalloc1(blocks, &jac->l_lens)); in PCBJacobiSetLocalBlocks_BJacobi()
307 PetscCall(PetscArraycpy(jac->l_lens, lens, blocks)); in PCBJacobiSetLocalBlocks_BJacobi()
314 PC_BJacobi *jac = (PC_BJacobi *)pc->data; in PCBJacobiGetLocalBlocks_BJacobi() local
317 *blocks = jac->n_local; in PCBJacobiGetLocalBlocks_BJacobi()
318 if (lens) *lens = jac->l_lens; in PCBJacobiGetLocalBlocks_BJacobi()
509 PC_BJacobi *jac; in PCCreate_BJacobi() local
512 PetscCall(PetscNew(&jac)); in PCCreate_BJacobi()
525 pc->data = (void *)jac; in PCCreate_BJacobi()
526 jac->n = -1; in PCCreate_BJacobi()
527 jac->n_local = -1; in PCCreate_BJacobi()
528 jac->first_local = rank; in PCCreate_BJacobi()
529 jac->ksp = NULL; in PCCreate_BJacobi()
530 jac->g_lens = NULL; in PCCreate_BJacobi()
531 jac->l_lens = NULL; in PCCreate_BJacobi()
532 jac->psubcomm = NULL; in PCCreate_BJacobi()
547 PC_BJacobi *jac = (PC_BJacobi *)pc->data; in PCReset_BJacobi_Singleblock() local
548 PC_BJacobi_Singleblock *bjac = (PC_BJacobi_Singleblock *)jac->data; in PCReset_BJacobi_Singleblock()
551 PetscCall(KSPReset(jac->ksp[0])); in PCReset_BJacobi_Singleblock()
559 PC_BJacobi *jac = (PC_BJacobi *)pc->data; in PCDestroy_BJacobi_Singleblock() local
560 PC_BJacobi_Singleblock *bjac = (PC_BJacobi_Singleblock *)jac->data; in PCDestroy_BJacobi_Singleblock()
564 PetscCall(KSPDestroy(&jac->ksp[0])); in PCDestroy_BJacobi_Singleblock()
565 PetscCall(PetscFree(jac->ksp)); in PCDestroy_BJacobi_Singleblock()
573 PC_BJacobi *jac = (PC_BJacobi *)pc->data; in PCSetUpOnBlocks_BJacobi_Singleblock() local
574 KSP subksp = jac->ksp[0]; in PCSetUpOnBlocks_BJacobi_Singleblock()
586 PC_BJacobi *jac = (PC_BJacobi *)pc->data; in PCApply_BJacobi_Singleblock() local
587 PC_BJacobi_Singleblock *bjac = (PC_BJacobi_Singleblock *)jac->data; in PCApply_BJacobi_Singleblock()
595 PetscCall(KSPSetReusePreconditioner(jac->ksp[0], pc->reusepreconditioner)); in PCApply_BJacobi_Singleblock()
596 PetscCall(PetscLogEventBegin(PC_ApplyOnBlocks, jac->ksp[0], bjac->x, bjac->y, 0)); in PCApply_BJacobi_Singleblock()
597 PetscCall(KSPSolve(jac->ksp[0], bjac->x, bjac->y)); in PCApply_BJacobi_Singleblock()
598 PetscCall(KSPCheckSolve(jac->ksp[0], pc, bjac->y)); in PCApply_BJacobi_Singleblock()
599 PetscCall(PetscLogEventEnd(PC_ApplyOnBlocks, jac->ksp[0], bjac->x, bjac->y, 0)); in PCApply_BJacobi_Singleblock()
607 PC_BJacobi *jac = (PC_BJacobi *)pc->data; in PCMatApply_BJacobi_Singleblock_Private() local
614 PetscCall(KSPSetReusePreconditioner(jac->ksp[0], pc->reusepreconditioner)); in PCMatApply_BJacobi_Singleblock_Private()
618 PetscCall(PetscLogEventBegin(PC_ApplyOnBlocks, jac->ksp[0], sX, sY, 0)); in PCMatApply_BJacobi_Singleblock_Private()
619 PetscCall(KSPMatSolve(jac->ksp[0], sX, sY)); in PCMatApply_BJacobi_Singleblock_Private()
620 PetscCall(PetscLogEventEnd(PC_ApplyOnBlocks, jac->ksp[0], sX, sY, 0)); in PCMatApply_BJacobi_Singleblock_Private()
622 PetscCall(PetscLogEventBegin(PC_ApplyTransposeOnBlocks, jac->ksp[0], sX, sY, 0)); in PCMatApply_BJacobi_Singleblock_Private()
623 PetscCall(KSPMatSolveTranspose(jac->ksp[0], sX, sY)); in PCMatApply_BJacobi_Singleblock_Private()
624 PetscCall(PetscLogEventEnd(PC_ApplyTransposeOnBlocks, jac->ksp[0], sX, sY, 0)); in PCMatApply_BJacobi_Singleblock_Private()
645 PC_BJacobi *jac = (PC_BJacobi *)pc->data; in PCApplySymmetricLeft_BJacobi_Singleblock() local
646 PC_BJacobi_Singleblock *bjac = (PC_BJacobi_Singleblock *)jac->data; in PCApplySymmetricLeft_BJacobi_Singleblock()
664 PetscCall(KSPGetPC(jac->ksp[0], &subpc)); in PCApplySymmetricLeft_BJacobi_Singleblock()
675 PC_BJacobi *jac = (PC_BJacobi *)pc->data; in PCApplySymmetricRight_BJacobi_Singleblock() local
676 PC_BJacobi_Singleblock *bjac = (PC_BJacobi_Singleblock *)jac->data; in PCApplySymmetricRight_BJacobi_Singleblock()
696 PetscCall(KSPGetPC(jac->ksp[0], &subpc)); in PCApplySymmetricRight_BJacobi_Singleblock()
708 PC_BJacobi *jac = (PC_BJacobi *)pc->data; in PCApplyTranspose_BJacobi_Singleblock() local
709 PC_BJacobi_Singleblock *bjac = (PC_BJacobi_Singleblock *)jac->data; in PCApplyTranspose_BJacobi_Singleblock()
724 PetscCall(PetscLogEventBegin(PC_ApplyTransposeOnBlocks, jac->ksp[0], bjac->x, bjac->y, 0)); in PCApplyTranspose_BJacobi_Singleblock()
725 PetscCall(KSPSolveTranspose(jac->ksp[0], bjac->x, bjac->y)); in PCApplyTranspose_BJacobi_Singleblock()
726 PetscCall(KSPCheckSolve(jac->ksp[0], pc, bjac->y)); in PCApplyTranspose_BJacobi_Singleblock()
727 PetscCall(PetscLogEventEnd(PC_ApplyTransposeOnBlocks, jac->ksp[0], bjac->x, bjac->y, 0)); in PCApplyTranspose_BJacobi_Singleblock()
737 PC_BJacobi *jac = (PC_BJacobi *)pc->data; in PCSetUp_BJacobi_Singleblock() local
747 if (!jac->ksp) { in PCSetUp_BJacobi_Singleblock()
772 PetscCall(PetscMalloc1(1, &jac->ksp)); in PCSetUp_BJacobi_Singleblock()
773 jac->ksp[0] = ksp; in PCSetUp_BJacobi_Singleblock()
776 jac->data = (void *)bjac; in PCSetUp_BJacobi_Singleblock()
778 ksp = jac->ksp[0]; in PCSetUp_BJacobi_Singleblock()
779 bjac = (PC_BJacobi_Singleblock *)jac->data; in PCSetUp_BJacobi_Singleblock()
796 ksp = jac->ksp[0]; in PCSetUp_BJacobi_Singleblock()
797 bjac = (PC_BJacobi_Singleblock *)jac->data; in PCSetUp_BJacobi_Singleblock()
816 PC_BJacobi *jac = (PC_BJacobi *)pc->data; in PCReset_BJacobi_Multiblock() local
817 PC_BJacobi_Multiblock *bjac = (PC_BJacobi_Multiblock *)jac->data; in PCReset_BJacobi_Multiblock()
822 PetscCall(MatDestroyMatrices(jac->n_local, &bjac->pmat)); in PCReset_BJacobi_Multiblock()
823 if (pc->useAmat) PetscCall(MatDestroyMatrices(jac->n_local, &bjac->mat)); in PCReset_BJacobi_Multiblock()
826 for (i = 0; i < jac->n_local; i++) { in PCReset_BJacobi_Multiblock()
827 PetscCall(KSPReset(jac->ksp[i])); in PCReset_BJacobi_Multiblock()
834 PetscCall(PetscFree(jac->l_lens)); in PCReset_BJacobi_Multiblock()
835 PetscCall(PetscFree(jac->g_lens)); in PCReset_BJacobi_Multiblock()
841 PC_BJacobi *jac = (PC_BJacobi *)pc->data; in PCDestroy_BJacobi_Multiblock() local
842 PC_BJacobi_Multiblock *bjac = (PC_BJacobi_Multiblock *)jac->data; in PCDestroy_BJacobi_Multiblock()
852 PetscCall(PetscFree(jac->data)); in PCDestroy_BJacobi_Multiblock()
853 for (i = 0; i < jac->n_local; i++) PetscCall(KSPDestroy(&jac->ksp[i])); in PCDestroy_BJacobi_Multiblock()
854 PetscCall(PetscFree(jac->ksp)); in PCDestroy_BJacobi_Multiblock()
861 PC_BJacobi *jac = (PC_BJacobi *)pc->data; in PCSetUpOnBlocks_BJacobi_Multiblock() local
862 PetscInt i, n_local = jac->n_local; in PCSetUpOnBlocks_BJacobi_Multiblock()
867 PetscCall(KSPSetUp(jac->ksp[i])); in PCSetUpOnBlocks_BJacobi_Multiblock()
868 PetscCall(KSPGetConvergedReason(jac->ksp[i], &reason)); in PCSetUpOnBlocks_BJacobi_Multiblock()
876 PC_BJacobi *jac = (PC_BJacobi *)pc->data; in PCApply_BJacobi_Multiblock() local
877 PetscInt i, n_local = jac->n_local; in PCApply_BJacobi_Multiblock()
878 PC_BJacobi_Multiblock *bjac = (PC_BJacobi_Multiblock *)jac->data; in PCApply_BJacobi_Multiblock()
894 PetscCall(PetscLogEventBegin(PC_ApplyOnBlocks, jac->ksp[i], bjac->x[i], bjac->y[i], 0)); in PCApply_BJacobi_Multiblock()
895 PetscCall(KSPSolve(jac->ksp[i], bjac->x[i], bjac->y[i])); in PCApply_BJacobi_Multiblock()
896 PetscCall(KSPCheckSolve(jac->ksp[i], pc, bjac->y[i])); in PCApply_BJacobi_Multiblock()
897 PetscCall(PetscLogEventEnd(PC_ApplyOnBlocks, jac->ksp[i], bjac->x[i], bjac->y[i], 0)); in PCApply_BJacobi_Multiblock()
909 PC_BJacobi *jac = (PC_BJacobi *)pc->data; in PCApplySymmetricLeft_BJacobi_Multiblock() local
910 PetscInt i, n_local = jac->n_local; in PCApplySymmetricLeft_BJacobi_Multiblock()
911 PC_BJacobi_Multiblock *bjac = (PC_BJacobi_Multiblock *)jac->data; in PCApplySymmetricLeft_BJacobi_Multiblock()
928 PetscCall(PetscLogEventBegin(PC_ApplyOnBlocks, jac->ksp[i], bjac->x[i], bjac->y[i], 0)); in PCApplySymmetricLeft_BJacobi_Multiblock()
931 PetscCall(KSPGetPC(jac->ksp[i], &subpc)); in PCApplySymmetricLeft_BJacobi_Multiblock()
933 PetscCall(PetscLogEventEnd(PC_ApplyOnBlocks, jac->ksp[i], bjac->x[i], bjac->y[i], 0)); in PCApplySymmetricLeft_BJacobi_Multiblock()
945 PC_BJacobi *jac = (PC_BJacobi *)pc->data; in PCApplySymmetricRight_BJacobi_Multiblock() local
946 PetscInt i, n_local = jac->n_local; in PCApplySymmetricRight_BJacobi_Multiblock()
947 PC_BJacobi_Multiblock *bjac = (PC_BJacobi_Multiblock *)jac->data; in PCApplySymmetricRight_BJacobi_Multiblock()
964 PetscCall(PetscLogEventBegin(PC_ApplyOnBlocks, jac->ksp[i], bjac->x[i], bjac->y[i], 0)); in PCApplySymmetricRight_BJacobi_Multiblock()
967 PetscCall(KSPGetPC(jac->ksp[i], &subpc)); in PCApplySymmetricRight_BJacobi_Multiblock()
969 PetscCall(PetscLogEventEnd(PC_ApplyOnBlocks, jac->ksp[i], bjac->x[i], bjac->y[i], 0)); in PCApplySymmetricRight_BJacobi_Multiblock()
981 PC_BJacobi *jac = (PC_BJacobi *)pc->data; in PCApplyTranspose_BJacobi_Multiblock() local
982 PetscInt i, n_local = jac->n_local; in PCApplyTranspose_BJacobi_Multiblock()
983 PC_BJacobi_Multiblock *bjac = (PC_BJacobi_Multiblock *)jac->data; in PCApplyTranspose_BJacobi_Multiblock()
999 … PetscCall(PetscLogEventBegin(PC_ApplyTransposeOnBlocks, jac->ksp[i], bjac->x[i], bjac->y[i], 0)); in PCApplyTranspose_BJacobi_Multiblock()
1000 PetscCall(KSPSolveTranspose(jac->ksp[i], bjac->x[i], bjac->y[i])); in PCApplyTranspose_BJacobi_Multiblock()
1001 PetscCall(KSPCheckSolve(jac->ksp[i], pc, bjac->y[i])); in PCApplyTranspose_BJacobi_Multiblock()
1002 PetscCall(PetscLogEventEnd(PC_ApplyTransposeOnBlocks, jac->ksp[i], bjac->x[i], bjac->y[i], 0)); in PCApplyTranspose_BJacobi_Multiblock()
1014 PC_BJacobi *jac = (PC_BJacobi *)pc->data; in PCSetUp_BJacobi_Multiblock() local
1019 PC_BJacobi_Multiblock *bjac = (PC_BJacobi_Multiblock *)jac->data; in PCSetUp_BJacobi_Multiblock()
1029 n_local = jac->n_local; in PCSetUp_BJacobi_Multiblock()
1042 if (!jac->ksp) { in PCSetUp_BJacobi_Multiblock()
1054 PetscCall(PetscMalloc1(n_local, &jac->ksp)); in PCSetUp_BJacobi_Multiblock()
1058 jac->data = (void *)bjac; in PCSetUp_BJacobi_Multiblock()
1073 jac->ksp[i] = ksp; in PCSetUp_BJacobi_Multiblock()
1076 bjac = (PC_BJacobi_Multiblock *)jac->data; in PCSetUp_BJacobi_Multiblock()
1082 m = jac->l_lens[i]; in PCSetUp_BJacobi_Multiblock()
1106 bjac = (PC_BJacobi_Multiblock *)jac->data; in PCSetUp_BJacobi_Multiblock()
1132 PetscCall(KSPGetOptionsPrefix(jac->ksp[i], &prefix)); in PCSetUp_BJacobi_Multiblock()
1134 PetscCall(KSPSetOperators(jac->ksp[i], bjac->mat[i], bjac->pmat[i])); in PCSetUp_BJacobi_Multiblock()
1137 PetscCall(KSPSetOperators(jac->ksp[i], bjac->pmat[i], bjac->pmat[i])); in PCSetUp_BJacobi_Multiblock()
1140 if (pc->setfromoptionscalled) PetscCall(KSPSetFromOptions(jac->ksp[i])); in PCSetUp_BJacobi_Multiblock()
1150 PC_BJacobi *jac = (PC_BJacobi *)pc->data; in PCSetUpOnBlocks_BJacobi_Multiproc() local
1151 KSP subksp = jac->ksp[0]; in PCSetUpOnBlocks_BJacobi_Multiproc()
1163 PC_BJacobi *jac = (PC_BJacobi *)pc->data; in PCReset_BJacobi_Multiproc() local
1164 PC_BJacobi_Multiproc *mpjac = (PC_BJacobi_Multiproc *)jac->data; in PCReset_BJacobi_Multiproc()
1170 if (jac->ksp) PetscCall(KSPReset(jac->ksp[0])); in PCReset_BJacobi_Multiproc()
1176 PC_BJacobi *jac = (PC_BJacobi *)pc->data; in PCDestroy_BJacobi_Multiproc() local
1177 PC_BJacobi_Multiproc *mpjac = (PC_BJacobi_Multiproc *)jac->data; in PCDestroy_BJacobi_Multiproc()
1181 PetscCall(KSPDestroy(&jac->ksp[0])); in PCDestroy_BJacobi_Multiproc()
1182 PetscCall(PetscFree(jac->ksp)); in PCDestroy_BJacobi_Multiproc()
1192 PC_BJacobi *jac = (PC_BJacobi *)pc->data; in PCApply_BJacobi_Multiproc() local
1193 PC_BJacobi_Multiproc *mpjac = (PC_BJacobi_Multiproc *)jac->data; in PCApply_BJacobi_Multiproc()
1206 PetscCall(PetscLogEventBegin(PC_ApplyOnBlocks, jac->ksp[0], mpjac->xsub, mpjac->ysub, 0)); in PCApply_BJacobi_Multiproc()
1207 PetscCall(KSPSolve(jac->ksp[0], mpjac->xsub, mpjac->ysub)); in PCApply_BJacobi_Multiproc()
1208 PetscCall(KSPCheckSolve(jac->ksp[0], pc, mpjac->ysub)); in PCApply_BJacobi_Multiproc()
1209 PetscCall(PetscLogEventEnd(PC_ApplyOnBlocks, jac->ksp[0], mpjac->xsub, mpjac->ysub, 0)); in PCApply_BJacobi_Multiproc()
1210 PetscCall(KSPGetConvergedReason(jac->ksp[0], &reason)); in PCApply_BJacobi_Multiproc()
1222 PC_BJacobi *jac = (PC_BJacobi *)pc->data; in PCMatApply_BJacobi_Multiproc() local
1237 …PetscCall(MatCreateDense(PetscObjectComm((PetscObject)jac->ksp[0]), m, PETSC_DECIDE, PETSC_DECIDE,… in PCMatApply_BJacobi_Multiproc()
1238 …PetscCall(MatCreateDense(PetscObjectComm((PetscObject)jac->ksp[0]), m, PETSC_DECIDE, PETSC_DECIDE,… in PCMatApply_BJacobi_Multiproc()
1241 PetscCall(PetscLogEventBegin(PC_ApplyOnBlocks, jac->ksp[0], X, Y, 0)); in PCMatApply_BJacobi_Multiproc()
1242 PetscCall(KSPMatSolve(jac->ksp[0], sX, sY)); in PCMatApply_BJacobi_Multiproc()
1243 PetscCall(KSPCheckSolve(jac->ksp[0], pc, NULL)); in PCMatApply_BJacobi_Multiproc()
1244 PetscCall(PetscLogEventEnd(PC_ApplyOnBlocks, jac->ksp[0], X, Y, 0)); in PCMatApply_BJacobi_Multiproc()
1249 PetscCall(KSPGetConvergedReason(jac->ksp[0], &reason)); in PCMatApply_BJacobi_Multiproc()
1256 PC_BJacobi *jac = (PC_BJacobi *)pc->data; in PCSetUp_BJacobi_Multiproc() local
1257 PC_BJacobi_Multiproc *mpjac = (PC_BJacobi_Multiproc *)jac->data; in PCSetUp_BJacobi_Multiproc()
1266 …PetscCheck(jac->n_local <= 1, PETSC_COMM_SELF, PETSC_ERR_ARG_OUTOFRANGE, "Only a single block in a… in PCSetUp_BJacobi_Multiproc()
1267 jac->n_local = 1; /* currently only a single block is supported for a subcommunicator */ in PCSetUp_BJacobi_Multiproc()
1273 jac->data = (void *)mpjac; in PCSetUp_BJacobi_Multiproc()
1276 if (!jac->psubcomm) { in PCSetUp_BJacobi_Multiproc()
1278 PetscCall(PetscSubcommCreate(comm, &jac->psubcomm)); in PCSetUp_BJacobi_Multiproc()
1279 PetscCall(PetscSubcommSetNumber(jac->psubcomm, jac->n)); in PCSetUp_BJacobi_Multiproc()
1280 PetscCall(PetscSubcommSetType(jac->psubcomm, PETSC_SUBCOMM_CONTIGUOUS)); in PCSetUp_BJacobi_Multiproc()
1282 mpjac->psubcomm = jac->psubcomm; in PCSetUp_BJacobi_Multiproc()
1289 PetscCall(PetscMalloc1(1, &jac->ksp)); in PCSetUp_BJacobi_Multiproc()
1290 PetscCall(KSPCreate(subcomm, &jac->ksp[0])); in PCSetUp_BJacobi_Multiproc()
1292 PetscCall(KSPSetNestLevel(jac->ksp[0], nestlevel + 1)); in PCSetUp_BJacobi_Multiproc()
1293 PetscCall(KSPSetErrorIfNotConverged(jac->ksp[0], pc->erroriffailure)); in PCSetUp_BJacobi_Multiproc()
1294 PetscCall(PetscObjectIncrementTabLevel((PetscObject)jac->ksp[0], (PetscObject)pc, 1)); in PCSetUp_BJacobi_Multiproc()
1295 PetscCall(KSPSetOperators(jac->ksp[0], mpjac->submats, mpjac->submats)); in PCSetUp_BJacobi_Multiproc()
1296 PetscCall(KSPGetPC(jac->ksp[0], &mpjac->pc)); in PCSetUp_BJacobi_Multiproc()
1299 PetscCall(KSPSetOptionsPrefix(jac->ksp[0], prefix)); in PCSetUp_BJacobi_Multiproc()
1300 PetscCall(KSPAppendOptionsPrefix(jac->ksp[0], "sub_")); in PCSetUp_BJacobi_Multiproc()
1301 PetscCall(KSPGetOptionsPrefix(jac->ksp[0], &prefix)); in PCSetUp_BJacobi_Multiproc()
1325 PetscCall(KSPSetOperators(jac->ksp[0], mpjac->submats, mpjac->submats)); in PCSetUp_BJacobi_Multiproc()
1328 if (!wasSetup && pc->setfromoptionscalled) PetscCall(KSPSetFromOptions(jac->ksp[0])); in PCSetUp_BJacobi_Multiproc()