Lines Matching refs:jac
230 ilink = jac->head; in SNESSetUp_Multiblock()
231 if (!jac->pmat) { in SNESSetUp_Multiblock()
232 PetscCall(PetscMalloc1(nsplit,&jac->pmat)); in SNESSetUp_Multiblock()
234 PetscCall(MatCreateSubMatrix(pc->pmat,ilink->is,ilink->is,MAT_INITIAL_MATRIX,&jac->pmat[i])); in SNESSetUp_Multiblock()
239 PetscCall(MatCreateSubMatrix(pc->pmat,ilink->is,ilink->is,MAT_REUSE_MATRIX,&jac->pmat[i])); in SNESSetUp_Multiblock()
243 if (jac->realdiagonal) { in SNESSetUp_Multiblock()
244 ilink = jac->head; in SNESSetUp_Multiblock()
245 if (!jac->mat) { in SNESSetUp_Multiblock()
246 PetscCall(PetscMalloc1(nsplit,&jac->mat)); in SNESSetUp_Multiblock()
248 PetscCall(MatCreateSubMatrix(pc->mat,ilink->is,ilink->is,MAT_INITIAL_MATRIX,&jac->mat[i])); in SNESSetUp_Multiblock()
253 …if (jac->mat[i]) PetscCall(MatCreateSubMatrix(pc->mat,ilink->is,ilink->is,MAT_REUSE_MATRIX,&jac->m… in SNESSetUp_Multiblock()
257 } else jac->mat = jac->pmat; in SNESSetUp_Multiblock()
261 if (jac->type != PC_COMPOSITE_ADDITIVE && jac->type != PC_COMPOSITE_SCHUR) { in SNESSetUp_Multiblock()
263 ilink = jac->head; in SNESSetUp_Multiblock()
264 if (!jac->Afield) { in SNESSetUp_Multiblock()
265 PetscCall(PetscMalloc1(nsplit,&jac->Afield)); in SNESSetUp_Multiblock()
267 PetscCall(MatCreateSubMatrix(pc->mat,ilink->is,NULL,MAT_INITIAL_MATRIX,&jac->Afield[i])); in SNESSetUp_Multiblock()
272 PetscCall(MatCreateSubMatrix(pc->mat,ilink->is,NULL,MAT_REUSE_MATRIX,&jac->Afield[i])); in SNESSetUp_Multiblock()
289 if (jac->schur) { in SNESSetUp_Multiblock()
290 ilink = jac->head; in SNESSetUp_Multiblock()
292 PetscCall(MatCreateSubMatrix(pc->mat,ilink->is,ccis,MAT_REUSE_MATRIX,&jac->B)); in SNESSetUp_Multiblock()
296 PetscCall(MatCreateSubMatrix(pc->mat,ilink->is,ccis,MAT_REUSE_MATRIX,&jac->C)); in SNESSetUp_Multiblock()
298 …PetscCall(MatSchurComplementUpdateSubMatrices(jac->schur,jac->mat[0],jac->pmat[0],jac->B,jac->C,ja… in SNESSetUp_Multiblock()
299 PetscCall(KSPSetOperators(jac->kspschur,jac->schur,FieldSplitSchurPre(jac),pc->flag)); in SNESSetUp_Multiblock()
306 ilink = jac->head; in SNESSetUp_Multiblock()
308 PetscCall(MatCreateSubMatrix(pc->mat,ilink->is,ccis,MAT_INITIAL_MATRIX,&jac->B)); in SNESSetUp_Multiblock()
312 PetscCall(MatCreateSubMatrix(pc->mat,ilink->is,ccis,MAT_INITIAL_MATRIX,&jac->C)); in SNESSetUp_Multiblock()
315 …PetscCall(MatCreateSchurComplement(jac->mat[0],jac->pmat[0],jac->B,jac->C,jac->mat[1],&jac->schur)… in SNESSetUp_Multiblock()
317 PetscCall(MatSchurComplementGetKSP(jac->schur,&ksp)); in SNESSetUp_Multiblock()
319 …sfieldsplit_%s_",((PetscObject)pc)->prefix ? ((PetscObject)pc)->prefix : "",jac->head->splitname)); in SNESSetUp_Multiblock()
321 PetscCall(MatSetFromOptions(jac->schur)); in SNESSetUp_Multiblock()
323 PetscCall(KSPCreate(PetscObjectComm((PetscObject)pc),&jac->kspschur)); in SNESSetUp_Multiblock()
324 PetscCall(PetscObjectIncrementTabLevel((PetscObject)jac->kspschur,(PetscObject)pc,1)); in SNESSetUp_Multiblock()
325 PetscCall(KSPSetOperators(jac->kspschur,jac->schur,FieldSplitSchurPre(jac))); in SNESSetUp_Multiblock()
326 if (jac->schurpre == PC_FIELDSPLIT_SCHUR_PRE_SELF) { in SNESSetUp_Multiblock()
328 PetscCall(KSPGetPC(jac->kspschur,&pc)); in SNESSetUp_Multiblock()
333 PetscCall(KSPSetOptionsPrefix(jac->kspschur,schurprefix)); in SNESSetUp_Multiblock()
335 PetscCall(KSPSetFromOptions(jac->kspschur)); in SNESSetUp_Multiblock()
337 PetscCall(PetscMalloc2(2,&jac->x,2,&jac->y)); in SNESSetUp_Multiblock()
338 PetscCall(MatCreateVecs(jac->pmat[0],&jac->x[0],&jac->y[0])); in SNESSetUp_Multiblock()
339 PetscCall(MatCreateVecs(jac->pmat[1],&jac->x[1],&jac->y[1])); in SNESSetUp_Multiblock()
340 ilink = jac->head; in SNESSetUp_Multiblock()
341 ilink->x = jac->x[0]; ilink->y = jac->y[0]; in SNESSetUp_Multiblock()
343 ilink->x = jac->x[1]; ilink->y = jac->y[1]; in SNESSetUp_Multiblock()