Lines Matching refs:cr
107 if (mglevels->cr) { in PCMGMCycle_Private()
114 PetscCall(KSPGetOperators(mglevels->cr, &crA, NULL)); in PCMGMCycle_Private()
116 PetscCall(KSPSolve(mglevels->cr, mglevels->crb, mglevels->crx)); /* compatible relaxation */ in PCMGMCycle_Private()
117 PetscCall(KSPCheckSolve(mglevels->cr, pc, mglevels->crx)); in PCMGMCycle_Private()
234 if (mglevels[i]->cr) PetscCall(KSPReset(mglevels[i]->cr)); in PCReset_MG()
319 static PetscErrorCode CreateCR_Private(PC pc, PetscInt l, PC *cr) in CreateCR_Private() argument
324 PetscCall(PCCreate(PetscObjectComm((PetscObject)pc), cr)); in CreateCR_Private()
325 PetscCall(PetscObjectSetName((PetscObject)*cr, "S (complementary projector to injection)")); in CreateCR_Private()
329 PetscCall(PCSetType(*cr, PCSHELL)); in CreateCR_Private()
330 PetscCall(PCShellSetContext(*cr, ctx)); in CreateCR_Private()
331 PetscCall(PCShellSetApply(*cr, CRApply_Private)); in CreateCR_Private()
332 PetscCall(PCShellSetSetUp(*cr, CRSetup_Private)); in CreateCR_Private()
333 PetscCall(PCShellSetDestroy(*cr, CRDestroy_Private)); in CreateCR_Private()
365 PetscCall(KSPDestroy(&mglevels[i]->cr)); in PCMGSetLevels_MG()
520 PetscCall(KSPDestroy(&mglevels[i]->cr)); in PCDestroy_MG()
816 if (i && mglevels[i]->cr) { in PCView_MG()
819 PetscCall(KSPView(mglevels[i]->cr, viewer)); in PCView_MG()
914 PC ipc, cr; in PCSetUp_MG() local
917 PetscCall(KSPCreate(PetscObjectComm((PetscObject)pc), &mglevels[i]->cr)); in PCSetUp_MG()
918 PetscCall(KSPSetNestLevel(mglevels[i]->cr, pc->kspnestlevel)); in PCSetUp_MG()
919 PetscCall(KSPSetErrorIfNotConverged(mglevels[i]->cr, PETSC_FALSE)); in PCSetUp_MG()
920 PetscCall(PetscObjectIncrementTabLevel((PetscObject)mglevels[i]->cr, (PetscObject)pc, n - i)); in PCSetUp_MG()
921 PetscCall(KSPSetOptionsPrefix(mglevels[i]->cr, prefix)); in PCSetUp_MG()
922 …PetscCall(PetscObjectComposedDataSetInt((PetscObject)mglevels[i]->cr, PetscMGLevelId, mglevels[i]-… in PCSetUp_MG()
923 PetscCall(KSPSetType(mglevels[i]->cr, KSPCHEBYSHEV)); in PCSetUp_MG()
924 PetscCall(KSPSetConvergenceTest(mglevels[i]->cr, KSPConvergedSkip, NULL, NULL)); in PCSetUp_MG()
925 PetscCall(KSPSetNormType(mglevels[i]->cr, KSP_NORM_PRECONDITIONED)); in PCSetUp_MG()
926 PetscCall(KSPGetPC(mglevels[i]->cr, &ipc)); in PCSetUp_MG()
931 PetscCall(CreateCR_Private(pc, i, &cr)); in PCSetUp_MG()
932 PetscCall(PCCompositeAddPC(ipc, cr)); in PCSetUp_MG()
933 PetscCall(PCDestroy(&cr)); in PCSetUp_MG()
935 …PetscCall(KSPSetTolerances(mglevels[i]->cr, PETSC_CURRENT, PETSC_CURRENT, PETSC_CURRENT, mg->defau… in PCSetUp_MG()
936 PetscCall(KSPSetInitialGuessNonzero(mglevels[i]->cr, PETSC_TRUE)); in PCSetUp_MG()
938 PetscCall(KSPAppendOptionsPrefix(mglevels[i]->cr, crprefix)); in PCSetUp_MG()
972 if (mglevels[n - 1]->cr) { in PCSetUp_MG()
973 PetscCall(KSPSetDM(mglevels[n - 1]->cr, pc->dm)); in PCSetUp_MG()
974 PetscCall(KSPSetDMActive(mglevels[n - 1]->cr, KSP_DMACTIVE_ALL, PETSC_FALSE)); in PCSetUp_MG()
1011 if (mglevels[i]->cr) { in PCSetUp_MG()
1012 PetscCall(KSPSetDM(mglevels[i]->cr, dms[i])); in PCSetUp_MG()
1013 … if (!needRestricts) PetscCall(KSPSetDMActive(mglevels[i]->cr, KSP_DMACTIVE_ALL, PETSC_FALSE)); in PCSetUp_MG()
1014 PetscCall(KSPSetDMActive(mglevels[i]->cr, KSP_DMACTIVE_RHS, PETSC_FALSE)); in PCSetUp_MG()
1110 if (mglevels[i]->cr) PetscCall(KSPSetFromOptions(mglevels[i]->cr)); in PCSetUp_MG()
1172 if (mglevels[i]->cr) PetscCall(KSPSetInitialGuessNonzero(mglevels[i]->cr, PETSC_TRUE)); in PCSetUp_MG()
1207 if (mglevels[i]->cr) { in PCSetUp_MG()
1211 PetscCall(KSPGetOperatorsSet(mglevels[i]->cr, &opsset, NULL)); in PCSetUp_MG()
1214 PetscCall(KSPSetOperators(mglevels[i]->cr, downmat, downpmat)); in PCSetUp_MG()
1217 PetscCall(KSPSetInitialGuessNonzero(mglevels[i]->cr, PETSC_TRUE)); in PCSetUp_MG()
1219 PetscCall(KSPSetUp(mglevels[i]->cr)); in PCSetUp_MG()
1220 if (mglevels[i]->cr->reason) pc->failedreason = PC_SUBPC_ERROR; in PCSetUp_MG()
1585 static PetscErrorCode PCMGSetAdaptCR_MG(PC pc, PetscBool cr) in PCMGSetAdaptCR_MG() argument
1590 mg->compatibleRelaxation = cr; in PCMGSetAdaptCR_MG()
1594 static PetscErrorCode PCMGGetAdaptCR_MG(PC pc, PetscBool *cr) in PCMGGetAdaptCR_MG() argument
1599 *cr = mg->compatibleRelaxation; in PCMGGetAdaptCR_MG()
1726 PetscErrorCode PCMGSetAdaptCR(PC pc, PetscBool cr) in PCMGSetAdaptCR() argument
1730 PetscTryMethod(pc, "PCMGSetAdaptCR_C", (PC, PetscBool), (pc, cr)); in PCMGSetAdaptCR()
1749 PetscErrorCode PCMGGetAdaptCR(PC pc, PetscBool *cr) in PCMGGetAdaptCR() argument
1753 PetscAssertPointer(cr, 2); in PCMGGetAdaptCR()
1754 PetscUseMethod(pc, "PCMGGetAdaptCR_C", (PC, PetscBool *), (pc, cr)); in PCMGGetAdaptCR()