Lines Matching refs:xred
134 static PetscErrorCode PCSVDGetVec(PC pc, PCSide side, AccessMode amode, Vec x, Vec *xred) in PCSVDGetVec() argument
141 *xred = NULL; in PCSVDGetVec()
144 if (size == 1) *xred = x; in PCSVDGetVec()
151 *xred = jac->leftred; in PCSVDGetVec()
155 if (size == 1) *xred = x; in PCSVDGetVec()
162 *xred = jac->rightred; in PCSVDGetVec()
171 static PetscErrorCode PCSVDRestoreVec(PC pc, PCSide side, AccessMode amode, Vec x, Vec *xred) in PCSVDRestoreVec() argument
194 *xred = NULL; in PCSVDRestoreVec()
213 Vec work = jac->work, xred, yred; in PCApply_SVD() local
216 PetscCall(PCSVDGetVec(pc, PC_RIGHT, READ, x, &xred)); in PCApply_SVD()
219 PetscCall(MatMultTranspose(jac->U, xred, work)); in PCApply_SVD()
221 PetscCall(MatMultHermitianTranspose(jac->U, xred, work)); in PCApply_SVD()
229 PetscCall(PCSVDRestoreVec(pc, PC_RIGHT, READ, x, &xred)); in PCApply_SVD()
250 Vec work = jac->work, xred, yred; in PCApplyTranspose_SVD() local
253 PetscCall(PCSVDGetVec(pc, PC_LEFT, READ, x, &xred)); in PCApplyTranspose_SVD()
255 PetscCall(MatMult(jac->Vt, xred, work)); in PCApplyTranspose_SVD()
258 PetscCall(PCSVDRestoreVec(pc, PC_LEFT, READ, x, &xred)); in PCApplyTranspose_SVD()