Lines Matching refs:eis
19 PC_Eisenstat *eis; in PCMult_Eisenstat() local
23 eis = (PC_Eisenstat *)pc->data; in PCMult_Eisenstat()
24 PetscCall(MatSOR(eis->A, b, eis->omega, SOR_EISENSTAT, 0.0, 1, 1, x)); in PCMult_Eisenstat()
25 PetscCall(MatFactorGetError(eis->A, (MatFactorError *)&pc->failedreason)); in PCMult_Eisenstat()
32 PC_Eisenstat *eis; in PCNorm_Eisenstat() local
36 eis = (PC_Eisenstat *)pc->data; in PCNorm_Eisenstat()
37 PetscCall(MatNorm(eis->A, type, nrm)); in PCNorm_Eisenstat()
43 PC_Eisenstat *eis = (PC_Eisenstat *)pc->data; in PCApply_Eisenstat() local
47 if (eis->usediag) { in PCApply_Eisenstat()
52 PetscCall(VecPointwiseMult(y, x, eis->diag)); in PCApply_Eisenstat()
60 PC_Eisenstat *eis = (PC_Eisenstat *)pc->data; in PCApplyTranspose_Eisenstat() local
64 PetscCall(MatIsSymmetricKnown(eis->A, &set, &sym)); in PCApplyTranspose_Eisenstat()
66 if (eis->usediag) { in PCApplyTranspose_Eisenstat()
71 PetscCall(VecPointwiseMult(y, x, eis->diag)); in PCApplyTranspose_Eisenstat()
79 PC_Eisenstat *eis = (PC_Eisenstat *)pc->data; in PCPreSolve_Eisenstat() local
86 eis->A = pc->mat; in PCPreSolve_Eisenstat()
87 pc->mat = eis->shell; in PCPreSolve_Eisenstat()
90 if (!eis->b[pc->presolvedone - 1]) PetscCall(VecDuplicate(b, &eis->b[pc->presolvedone - 1])); in PCPreSolve_Eisenstat()
95 PetscCall(VecCopy(x, eis->b[pc->presolvedone - 1])); in PCPreSolve_Eisenstat()
96 …PetscCall(MatSOR(eis->A, eis->b[pc->presolvedone - 1], eis->omega, SOR_APPLY_UPPER, 0.0, 1, 1, x)); in PCPreSolve_Eisenstat()
97 PetscCall(MatFactorGetError(eis->A, (MatFactorError *)&pc->failedreason)); in PCPreSolve_Eisenstat()
101 PetscCall(VecCopy(b, eis->b[pc->presolvedone - 1])); in PCPreSolve_Eisenstat()
104 …PetscCall(MatSOR(eis->A, eis->b[pc->presolvedone - 1], eis->omega, (MatSORType)(SOR_ZERO_INITIAL_G… in PCPreSolve_Eisenstat()
105 PetscCall(MatFactorGetError(eis->A, (MatFactorError *)&pc->failedreason)); in PCPreSolve_Eisenstat()
111 PC_Eisenstat *eis = (PC_Eisenstat *)pc->data; in PCPostSolve_Eisenstat() local
115 PetscCall(VecCopy(eis->b[pc->presolvedone], b)); in PCPostSolve_Eisenstat()
118 PetscCall(VecCopy(x, eis->b[pc->presolvedone])); in PCPostSolve_Eisenstat()
119 …PetscCall(MatSOR(eis->A, eis->b[pc->presolvedone], eis->omega, (MatSORType)(SOR_ZERO_INITIAL_GUESS… in PCPostSolve_Eisenstat()
120 PetscCall(MatFactorGetError(eis->A, (MatFactorError *)&pc->failedreason)); in PCPostSolve_Eisenstat()
121 if (!pc->presolvedone) pc->mat = eis->A; in PCPostSolve_Eisenstat()
127 PC_Eisenstat *eis = (PC_Eisenstat *)pc->data; in PCReset_Eisenstat() local
130 PetscCall(VecDestroy(&eis->b[0])); in PCReset_Eisenstat()
131 PetscCall(VecDestroy(&eis->b[1])); in PCReset_Eisenstat()
132 PetscCall(MatDestroy(&eis->shell)); in PCReset_Eisenstat()
133 PetscCall(VecDestroy(&eis->diag)); in PCReset_Eisenstat()
152 PC_Eisenstat *eis = (PC_Eisenstat *)pc->data; in PCSetFromOptions_Eisenstat() local
158 …isenstat_omega", "Relaxation factor 0 < omega < 2", "PCEisenstatSetOmega", eis->omega, &omega, &fl… in PCSetFromOptions_Eisenstat()
160 …"Do not use standard diagonal scaling", "PCEisenstatSetNoDiagonalScaling", eis->usediag ? PETSC_FA… in PCSetFromOptions_Eisenstat()
168 PC_Eisenstat *eis = (PC_Eisenstat *)pc->data; in PCView_Eisenstat() local
174 PetscCall(PetscViewerASCIIPrintf(viewer, " omega = %g\n", (double)eis->omega)); in PCView_Eisenstat()
175 if (eis->usediag) { in PCView_Eisenstat()
188 PC_Eisenstat *eis = (PC_Eisenstat *)pc->data; in PCSetUp_Eisenstat() local
195 PetscCall(MatCreate(PetscObjectComm((PetscObject)pc), &eis->shell)); in PCSetUp_Eisenstat()
196 PetscCall(MatSetSizes(eis->shell, m, n, M, N)); in PCSetUp_Eisenstat()
197 PetscCall(MatSetType(eis->shell, MATSHELL)); in PCSetUp_Eisenstat()
198 PetscCall(MatSetUp(eis->shell)); in PCSetUp_Eisenstat()
199 PetscCall(MatShellSetContext(eis->shell, pc)); in PCSetUp_Eisenstat()
200 PetscCall(MatShellSetOperation(eis->shell, MATOP_MULT, (PetscErrorCodeFn *)PCMult_Eisenstat)); in PCSetUp_Eisenstat()
201 …if (set && sym) PetscCall(MatShellSetOperation(eis->shell, MATOP_MULT_TRANSPOSE, (PetscErrorCodeFn… in PCSetUp_Eisenstat()
202 PetscCall(MatShellSetOperation(eis->shell, MATOP_NORM, (PetscErrorCodeFn *)PCNorm_Eisenstat)); in PCSetUp_Eisenstat()
204 if (!eis->usediag) PetscFunctionReturn(PETSC_SUCCESS); in PCSetUp_Eisenstat()
205 if (!pc->setupcalled) PetscCall(MatCreateVecs(pc->pmat, &eis->diag, NULL)); in PCSetUp_Eisenstat()
206 PetscCall(MatGetDiagonal(pc->pmat, eis->diag)); in PCSetUp_Eisenstat()
212 PC_Eisenstat *eis = (PC_Eisenstat *)pc->data; in PCEisenstatSetOmega_Eisenstat() local
216 eis->omega = omega; in PCEisenstatSetOmega_Eisenstat()
222 PC_Eisenstat *eis = (PC_Eisenstat *)pc->data; in PCEisenstatSetNoDiagonalScaling_Eisenstat() local
225 eis->usediag = flg; in PCEisenstatSetNoDiagonalScaling_Eisenstat()
231 PC_Eisenstat *eis = (PC_Eisenstat *)pc->data; in PCEisenstatGetOmega_Eisenstat() local
234 *omega = eis->omega; in PCEisenstatGetOmega_Eisenstat()
240 PC_Eisenstat *eis = (PC_Eisenstat *)pc->data; in PCEisenstatGetNoDiagonalScaling_Eisenstat() local
243 *flg = eis->usediag; in PCEisenstatGetNoDiagonalScaling_Eisenstat()
412 PC_Eisenstat *eis; in PCCreate_Eisenstat() local
415 PetscCall(PetscNew(&eis)); in PCCreate_Eisenstat()
428 pc->data = eis; in PCCreate_Eisenstat()
429 eis->omega = 1.0; in PCCreate_Eisenstat()
430 eis->b[0] = NULL; in PCCreate_Eisenstat()
431 eis->b[1] = NULL; in PCCreate_Eisenstat()
432 eis->diag = NULL; in PCCreate_Eisenstat()
433 eis->usediag = PETSC_TRUE; in PCCreate_Eisenstat()