Lines Matching refs:mat

165 PetscErrorCode MatFactorGetErrorZeroPivot(Mat mat, PetscReal *pivot, PetscInt *row)  in MatFactorGetErrorZeroPivot()  argument
168 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatFactorGetErrorZeroPivot()
171 *pivot = mat->factorerror_zeropivot_value; in MatFactorGetErrorZeroPivot()
172 *row = mat->factorerror_zeropivot_row; in MatFactorGetErrorZeroPivot()
195 PetscErrorCode MatFactorGetError(Mat mat, MatFactorError *err) in MatFactorGetError() argument
198 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatFactorGetError()
200 *err = mat->factorerrortype; in MatFactorGetError()
220 PetscErrorCode MatFactorClearError(Mat mat) in MatFactorClearError() argument
223 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatFactorClearError()
224 mat->factorerrortype = MAT_FACTOR_NOERROR; in MatFactorClearError()
225 mat->factorerror_zeropivot_value = 0.0; in MatFactorClearError()
226 mat->factorerror_zeropivot_row = 0; in MatFactorClearError()
230 PetscErrorCode MatFindNonzeroRowsOrCols_Basic(Mat mat, PetscBool cols, PetscReal tol, IS *nonzero) in MatFindNonzeroRowsOrCols_Basic() argument
237 PetscCall(MatCreateVecs(mat, &r, &l)); in MatFindNonzeroRowsOrCols_Basic()
239 PetscCall(MatGetOwnershipRange(mat, &st, NULL)); in MatFindNonzeroRowsOrCols_Basic()
240 PetscCall(MatGetSize(mat, &N, NULL)); in MatFindNonzeroRowsOrCols_Basic()
241 PetscCall(MatGetLocalSize(mat, &n, NULL)); in MatFindNonzeroRowsOrCols_Basic()
244 PetscCall(MatMult(mat, r, l)); in MatFindNonzeroRowsOrCols_Basic()
247 PetscCall(MatGetOwnershipRangeColumn(mat, &st, NULL)); in MatFindNonzeroRowsOrCols_Basic()
248 PetscCall(MatGetSize(mat, NULL, &N)); in MatFindNonzeroRowsOrCols_Basic()
249 PetscCall(MatGetLocalSize(mat, NULL, &n)); in MatFindNonzeroRowsOrCols_Basic()
252 PetscCall(MatMultTranspose(mat, l, r)); in MatFindNonzeroRowsOrCols_Basic()
262 PetscCallMPI(MPIU_Allreduce(&nz, &gnz, 1, MPIU_INT, MPI_SUM, PetscObjectComm((PetscObject)mat))); in MatFindNonzeroRowsOrCols_Basic()
275 …PetscCall(ISCreateGeneral(PetscObjectComm((PetscObject)mat), nz, nzr, PETSC_OWN_POINTER, nonzero)); in MatFindNonzeroRowsOrCols_Basic()
306 PetscErrorCode MatFindNonzeroRows(Mat mat, IS *keptrows) in MatFindNonzeroRows() argument
309 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatFindNonzeroRows()
310 PetscValidType(mat, 1); in MatFindNonzeroRows()
312 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatFindNonzeroRows()
313 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatFindNonzeroRows()
314 if (mat->ops->findnonzerorows) PetscUseTypeMethod(mat, findnonzerorows, keptrows); in MatFindNonzeroRows()
315 else PetscCall(MatFindNonzeroRowsOrCols_Basic(mat, PETSC_FALSE, 0.0, keptrows)); in MatFindNonzeroRows()
336 PetscErrorCode MatFindZeroRows(Mat mat, IS *zerorows) in MatFindZeroRows() argument
342 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatFindZeroRows()
343 PetscValidType(mat, 1); in MatFindZeroRows()
345 PetscCall(MatFindNonzeroRows(mat, &keptrows)); in MatFindZeroRows()
352 PetscCall(MatGetOwnershipRange(mat, &m, &n)); in MatFindZeroRows()
412 PetscErrorCode MatGetTrace(Mat mat, PetscScalar *trace) in MatGetTrace() argument
417 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatGetTrace()
419 PetscCall(MatCreateVecs(mat, &diag, NULL)); in MatGetTrace()
420 PetscCall(MatGetDiagonal(mat, diag)); in MatGetTrace()
438 PetscErrorCode MatRealPart(Mat mat) in MatRealPart() argument
441 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatRealPart()
442 PetscValidType(mat, 1); in MatRealPart()
443 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatRealPart()
444 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatRealPart()
445 MatCheckPreallocated(mat, 1); in MatRealPart()
446 PetscUseTypeMethod(mat, realpart); in MatRealPart()
469 PetscErrorCode MatGetGhosts(Mat mat, PetscInt *nghosts, const PetscInt *ghosts[]) in MatGetGhosts() argument
472 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatGetGhosts()
473 PetscValidType(mat, 1); in MatGetGhosts()
474 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatGetGhosts()
475 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatGetGhosts()
476 if (mat->ops->getghosts) PetscUseTypeMethod(mat, getghosts, nghosts, ghosts); in MatGetGhosts()
496 PetscErrorCode MatImaginaryPart(Mat mat) in MatImaginaryPart() argument
499 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatImaginaryPart()
500 PetscValidType(mat, 1); in MatImaginaryPart()
501 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatImaginaryPart()
502 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatImaginaryPart()
503 MatCheckPreallocated(mat, 1); in MatImaginaryPart()
504 PetscUseTypeMethod(mat, imaginarypart); in MatImaginaryPart()
561 PetscErrorCode MatGetRow(Mat mat, PetscInt row, PetscInt *ncols, const PetscInt *cols[], const Pets… in MatGetRow() argument
566 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatGetRow()
567 PetscValidType(mat, 1); in MatGetRow()
568 …PetscCheck(mat->assembled, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONGSTATE, "Not for unassembled matrix"… in MatGetRow()
569 …PetscCheck(!mat->factortype, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONGSTATE, "Not for factored matrix"); in MatGetRow()
570 MatCheckPreallocated(mat, 1); in MatGetRow()
571mat->rmap->rstart && row < mat->rmap->rend, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONGSTATE, "Only for l… in MatGetRow()
572 PetscCall(PetscLogEventBegin(MAT_GetRow, mat, 0, 0, 0)); in MatGetRow()
573 PetscUseTypeMethod(mat, getrow, row, &incols, (PetscInt **)cols, (PetscScalar **)vals); in MatGetRow()
575 PetscCall(PetscLogEventEnd(MAT_GetRow, mat, 0, 0, 0)); in MatGetRow()
591 PetscErrorCode MatConjugate(Mat mat) in MatConjugate() argument
594 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatConjugate()
595 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatConjugate()
596 …if (PetscDefined(USE_COMPLEX) && !(mat->symmetric == PETSC_BOOL3_TRUE && mat->hermitian == PETSC_B… in MatConjugate()
597 PetscUseTypeMethod(mat, conjugate); in MatConjugate()
598 PetscCall(PetscObjectStateIncrease((PetscObject)mat)); in MatConjugate()
632 PetscErrorCode MatRestoreRow(Mat mat, PetscInt row, PetscInt *ncols, const PetscInt *cols[], const … in MatRestoreRow() argument
635 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatRestoreRow()
637 …PetscCheck(mat->assembled, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONGSTATE, "Not for unassembled matrix"… in MatRestoreRow()
638 PetscTryTypeMethod(mat, restorerow, row, ncols, (PetscInt **)cols, (PetscScalar **)vals); in MatRestoreRow()
661 PetscErrorCode MatGetRowUpperTriangular(Mat mat) in MatGetRowUpperTriangular() argument
664 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatGetRowUpperTriangular()
665 PetscValidType(mat, 1); in MatGetRowUpperTriangular()
666 …PetscCheck(mat->assembled, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONGSTATE, "Not for unassembled matrix"… in MatGetRowUpperTriangular()
667 …PetscCheck(!mat->factortype, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONGSTATE, "Not for factored matrix"); in MatGetRowUpperTriangular()
668 MatCheckPreallocated(mat, 1); in MatGetRowUpperTriangular()
669 PetscTryTypeMethod(mat, getrowuppertriangular); in MatGetRowUpperTriangular()
688 PetscErrorCode MatRestoreRowUpperTriangular(Mat mat) in MatRestoreRowUpperTriangular() argument
691 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatRestoreRowUpperTriangular()
692 PetscValidType(mat, 1); in MatRestoreRowUpperTriangular()
693 …PetscCheck(mat->assembled, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONGSTATE, "Not for unassembled matrix"… in MatRestoreRowUpperTriangular()
694 …PetscCheck(!mat->factortype, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONGSTATE, "Not for factored matrix"); in MatRestoreRowUpperTriangular()
695 MatCheckPreallocated(mat, 1); in MatRestoreRowUpperTriangular()
696 PetscTryTypeMethod(mat, restorerowuppertriangular); in MatRestoreRowUpperTriangular()
1116 PetscErrorCode MatView(Mat mat, PetscViewer viewer) in MatView() argument
1124 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatView()
1125 PetscValidType(mat, 1); in MatView()
1126 if (!viewer) PetscCall(PetscViewerASCIIGetStdout(PetscObjectComm((PetscObject)mat), &viewer)); in MatView()
1139 … PETSC_VIEWER_ASCII_INFO || format == PETSC_VIEWER_ASCII_INFO_DETAIL)) || !mat->factortype, PetscO… in MatView()
1141 PetscCall(PetscLogEventBegin(MAT_View, mat, viewer, 0, 0)); in MatView()
1143 if (!mat->preallocated) { in MatView()
1148 PetscCall(PetscLogEventEnd(MAT_View, mat, viewer, 0, 0)); in MatView()
1151 if (!mat->assembled) { in MatView()
1156 PetscCall(PetscLogEventEnd(MAT_View, mat, viewer, 0, 0)); in MatView()
1159 PetscCall(PetscObjectPrintClassNamePrefixType((PetscObject)mat, viewer)); in MatView()
1164 PetscCall(MatGetSize(mat, &rows, &cols)); in MatView()
1165 PetscCall(MatGetBlockSizes(mat, &rbs, &cbs)); in MatView()
1167 …, rbs=%" PetscInt_FMT ", cbs=%" PetscInt_FMT "%s\n", rows, cols, rbs, cbs, mat->bsizes ? " variabl… in MatView()
1168 …FMT ", cols=%" PetscInt_FMT ", bs=%" PetscInt_FMT "%s\n", rows, cols, rbs, mat->bsizes ? " variabl… in MatView()
1170 if (mat->factortype) { in MatView()
1172 PetscCall(MatFactorGetSolverType(mat, &solver)); in MatView()
1175 if (mat->ops->getinfo) { in MatView()
1179 …PetscCall(PetscObjectTypeCompareAny((PetscObject)mat, &is_constant_or_diagonal, MATCONSTANTDIAGONA… in MatView()
1183 PetscCall(MatGetInfo(mat, MAT_GLOBAL_SUM, &info)); in MatView()
1185 …if (!mat->factortype) PetscCall(PetscViewerASCIIPrintf(viewer, "total number of mallocs used durin… in MatView()
1188 PetscCall(MatGetNullSpace(mat, &nullsp)); in MatView()
1189 PetscCall(MatGetTransposeNullSpace(mat, &transnullsp)); in MatView()
1192 PetscCall(MatGetNearNullSpace(mat, &nullsp)); in MatView()
1195 PetscCall(MatProductView(mat, viewer)); in MatView()
1197 if (mat->bsizes && format == PETSC_VIEWER_ASCII_INFO_DETAIL) { in MatView()
1200 …PetscCall(ISCreateGeneral(PetscObjectComm((PetscObject)viewer), mat->nblocks, mat->bsizes, PETSC_U… in MatView()
1212 PetscCall(PetscObjectName((PetscObject)mat)); in MatView()
1214 …if (!((PetscObject)mat)->amsmem && rank == 0) PetscCall(PetscObjectViewSAWs((PetscObject)mat, view… in MatView()
1218 PetscCall(MatGetType(mat, &type)); in MatView()
1220 PetscTryTypeMethod(mat, view, viewer); in MatView()
1222 …if ((format == PETSC_VIEWER_NATIVE || format == PETSC_VIEWER_LOAD_BALANCE) && mat->ops->viewnative… in MatView()
1224 PetscUseTypeMethod(mat, viewnative, viewer); in MatView()
1226 } else if (mat->ops->view) { in MatView()
1228 PetscUseTypeMethod(mat, view, viewer); in MatView()
1235 PetscCall(PetscLogEventEnd(MAT_View, mat, viewer, 0, 0)); in MatView()
1244 PETSC_UNUSED static int TV_display_type(const struct _p_Mat *mat) in TV_display_type() argument
1246 TV_add_row("Local rows", "int", &mat->rmap->n); in TV_display_type()
1247 TV_add_row("Local columns", "int", &mat->cmap->n); in TV_display_type()
1248 TV_add_row("Global rows", "int", &mat->rmap->N); in TV_display_type()
1249 TV_add_row("Global columns", "int", &mat->cmap->N); in TV_display_type()
1250 TV_add_row("Typename", TV_ascii_string_type, ((PetscObject)mat)->type_name); in TV_display_type()
1376 PetscErrorCode MatLoad(Mat mat, PetscViewer viewer) in MatLoad() argument
1381 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatLoad()
1384 if (!((PetscObject)mat)->type_name) PetscCall(MatSetType(mat, MATAIJ)); in MatLoad()
1387 …PetscCall(PetscOptionsGetBool(((PetscObject)mat)->options, ((PetscObject)mat)->prefix, "-matload_s… in MatLoad()
1389 PetscCall(MatSetOption(mat, MAT_SYMMETRIC, PETSC_TRUE)); in MatLoad()
1390 PetscCall(MatSetOption(mat, MAT_SYMMETRY_ETERNAL, PETSC_TRUE)); in MatLoad()
1393 …PetscCall(PetscOptionsGetBool(((PetscObject)mat)->options, ((PetscObject)mat)->prefix, "-matload_s… in MatLoad()
1394 if (flg) PetscCall(MatSetOption(mat, MAT_SPD, PETSC_TRUE)); in MatLoad()
1396 PetscCall(PetscLogEventBegin(MAT_Load, mat, viewer, 0, 0)); in MatLoad()
1397 PetscUseTypeMethod(mat, load, viewer); in MatLoad()
1398 PetscCall(PetscLogEventEnd(MAT_Load, mat, viewer, 0, 0)); in MatLoad()
1532 PetscErrorCode MatSetValues(Mat mat, PetscInt m, const PetscInt idxm[], PetscInt n, const PetscInt … in MatSetValues() argument
1535 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatSetValues()
1536 PetscValidType(mat, 1); in MatSetValues()
1540 MatCheckPreallocated(mat, 1); in MatSetValues()
1542 if (mat->insertmode == NOT_SET_VALUES) mat->insertmode = addv; in MatSetValues()
1543 …else PetscCheck(mat->insertmode == addv, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONGSTATE, "Cannot mix ad… in MatSetValues()
1548 …PetscCheck(!mat->factortype, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONGSTATE, "Not for factored matrix"); in MatSetValues()
1552 if (mat->erroriffailure && PetscIsInfOrNanScalar(v[i * n + j])) in MatSetValues()
1561 …idxm[i] < mat->rmap->N, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONG, "Cannot insert in row %" PetscInt_FM… in MatSetValues()
1562 …xn[i] < mat->cmap->N, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONG, "Cannot insert in column %" PetscInt_F… in MatSetValues()
1565 if (mat->assembled) { in MatSetValues()
1566 mat->was_assembled = PETSC_TRUE; in MatSetValues()
1567 mat->assembled = PETSC_FALSE; in MatSetValues()
1569 PetscCall(PetscLogEventBegin(MAT_SetValues, mat, 0, 0, 0)); in MatSetValues()
1570 PetscUseTypeMethod(mat, setvalues, m, idxm, n, idxn, v, addv); in MatSetValues()
1571 PetscCall(PetscLogEventEnd(MAT_SetValues, mat, 0, 0, 0)); in MatSetValues()
1620 PetscErrorCode MatSetValuesIS(Mat mat, IS ism, IS isn, const PetscScalar v[], InsertMode addv) in MatSetValuesIS() argument
1626 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatSetValuesIS()
1631 PetscCall(MatSetValues(mat, m, rows, n, cols, v, addv)); in MatSetValuesIS()
1666 PetscErrorCode MatSetValuesRowLocal(Mat mat, PetscInt row, const PetscScalar v[]) in MatSetValuesRowLocal() argument
1671 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatSetValuesRowLocal()
1672 PetscValidType(mat, 1); in MatSetValuesRowLocal()
1674 PetscCall(ISLocalToGlobalMappingApply(mat->rmap->mapping, 1, &row, &globalrow)); in MatSetValuesRowLocal()
1675 PetscCall(MatSetValuesRow(mat, globalrow, v)); in MatSetValuesRowLocal()
1704 PetscErrorCode MatSetValuesRow(Mat mat, PetscInt row, const PetscScalar v[]) in MatSetValuesRow() argument
1707 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatSetValuesRow()
1708 PetscValidType(mat, 1); in MatSetValuesRow()
1709 MatCheckPreallocated(mat, 1); in MatSetValuesRow()
1711 …PetscCheck(mat->insertmode != ADD_VALUES, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONGSTATE, "Cannot mix a… in MatSetValuesRow()
1712 …PetscCheck(!mat->factortype, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONGSTATE, "Not for factored matrix"); in MatSetValuesRow()
1713 mat->insertmode = INSERT_VALUES; in MatSetValuesRow()
1715 if (mat->assembled) { in MatSetValuesRow()
1716 mat->was_assembled = PETSC_TRUE; in MatSetValuesRow()
1717 mat->assembled = PETSC_FALSE; in MatSetValuesRow()
1719 PetscCall(PetscLogEventBegin(MAT_SetValues, mat, 0, 0, 0)); in MatSetValuesRow()
1720 PetscUseTypeMethod(mat, setvaluesrow, row, v); in MatSetValuesRow()
1721 PetscCall(PetscLogEventEnd(MAT_SetValues, mat, 0, 0, 0)); in MatSetValuesRow()
1788 PetscErrorCode MatSetValuesStencil(Mat mat, PetscInt m, const MatStencil idxm[], PetscInt n, const … in MatSetValuesStencil() argument
1791 PetscInt j, i, dim = mat->stencil.dim, *dims = mat->stencil.dims + 1, tmp; in MatSetValuesStencil()
1792 …PetscInt *starts = mat->stencil.starts, *dxm = (PetscInt *)idxm, *dxn = (PetscInt *)idxn, sdim = d… in MatSetValuesStencil()
1796 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatSetValuesStencil()
1797 PetscValidType(mat, 1); in MatSetValuesStencil()
1816 if (mat->stencil.noc) dxm++; in MatSetValuesStencil()
1826 if (mat->stencil.noc) dxn++; in MatSetValuesStencil()
1829 PetscCall(MatSetValuesLocal(mat, m, jdxm, n, jdxn, v, addv)); in MatSetValuesStencil()
1903 PetscErrorCode MatSetValuesBlockedStencil(Mat mat, PetscInt m, const MatStencil idxm[], PetscInt n,… in MatSetValuesBlockedStencil() argument
1906 PetscInt j, i, dim = mat->stencil.dim, *dims = mat->stencil.dims + 1, tmp; in MatSetValuesBlockedStencil()
1907 …PetscInt *starts = mat->stencil.starts, *dxm = (PetscInt *)idxm, *dxn = (PetscInt *)idxn, sdim = d… in MatSetValuesBlockedStencil()
1911 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatSetValuesBlockedStencil()
1912 PetscValidType(mat, 1); in MatSetValuesBlockedStencil()
1945 PetscCall(MatSetValuesBlockedLocal(mat, m, jdxm, n, jdxn, v, addv)); in MatSetValuesBlockedStencil()
1975 PetscErrorCode MatSetStencil(Mat mat, PetscInt dim, const PetscInt dims[], const PetscInt starts[],… in MatSetStencil() argument
1978 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatSetStencil()
1982 mat->stencil.dim = dim + (dof > 1); in MatSetStencil()
1984 mat->stencil.dims[i] = dims[dim - i - 1]; /* copy the values in backwards */ in MatSetStencil()
1985 mat->stencil.starts[i] = starts[dim - i - 1]; in MatSetStencil()
1987 mat->stencil.dims[dim] = dof; in MatSetStencil()
1988 mat->stencil.starts[dim] = 0; in MatSetStencil()
1989 mat->stencil.noc = (PetscBool)(dof == 1); in MatSetStencil()
2070 PetscErrorCode MatSetValuesBlocked(Mat mat, PetscInt m, const PetscInt idxm[], PetscInt n, const Pe… in MatSetValuesBlocked() argument
2073 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatSetValuesBlocked()
2074 PetscValidType(mat, 1); in MatSetValuesBlocked()
2078 MatCheckPreallocated(mat, 1); in MatSetValuesBlocked()
2079 if (mat->insertmode == NOT_SET_VALUES) mat->insertmode = addv; in MatSetValuesBlocked()
2080 …else PetscCheck(mat->insertmode == addv, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONGSTATE, "Cannot mix ad… in MatSetValuesBlocked()
2082 …PetscCheck(!mat->factortype, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONGSTATE, "Not for factored matrix"); in MatSetValuesBlocked()
2083 …PetscCheck(mat->ops->setvaluesblocked || mat->ops->setvalues, PETSC_COMM_SELF, PETSC_ERR_SUP, "Mat… in MatSetValuesBlocked()
2087 PetscCall(MatGetBlockSizes(mat, &rbs, &cbs)); in MatSetValuesBlocked()
2088 PetscCall(MatGetSize(mat, &M, &N)); in MatSetValuesBlocked()
2093 if (mat->assembled) { in MatSetValuesBlocked()
2094 mat->was_assembled = PETSC_TRUE; in MatSetValuesBlocked()
2095 mat->assembled = PETSC_FALSE; in MatSetValuesBlocked()
2097 PetscCall(PetscLogEventBegin(MAT_SetValues, mat, 0, 0, 0)); in MatSetValuesBlocked()
2098 if (mat->ops->setvaluesblocked) { in MatSetValuesBlocked()
2099 PetscUseTypeMethod(mat, setvaluesblocked, m, idxm, n, idxn, v, addv); in MatSetValuesBlocked()
2104 PetscCall(MatGetBlockSizes(mat, &bs, &cbs)); in MatSetValuesBlocked()
2121 PetscCall(MatSetValues(mat, m * bs, iidxm, n * cbs, iidxn, v, addv)); in MatSetValuesBlocked()
2124 PetscCall(PetscLogEventEnd(MAT_SetValues, mat, 0, 0, 0)); in MatSetValuesBlocked()
2165 PetscErrorCode MatGetValues(Mat mat, PetscInt m, const PetscInt idxm[], PetscInt n, const PetscInt … in MatGetValues() argument
2168 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatGetValues()
2169 PetscValidType(mat, 1); in MatGetValues()
2174 …PetscCheck(mat->assembled, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONGSTATE, "Not for unassembled matrix"… in MatGetValues()
2175 …PetscCheck(!mat->factortype, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONGSTATE, "Not for factored matrix"); in MatGetValues()
2176 MatCheckPreallocated(mat, 1); in MatGetValues()
2178 PetscCall(PetscLogEventBegin(MAT_GetValues, mat, 0, 0, 0)); in MatGetValues()
2179 PetscUseTypeMethod(mat, getvalues, m, idxm, n, idxn, v); in MatGetValues()
2180 PetscCall(PetscLogEventEnd(MAT_GetValues, mat, 0, 0, 0)); in MatGetValues()
2214 PetscErrorCode MatGetValuesLocal(Mat mat, PetscInt nrow, const PetscInt irow[], PetscInt ncol, cons… in MatGetValuesLocal() argument
2217 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatGetValuesLocal()
2218 PetscValidType(mat, 1); in MatGetValuesLocal()
2219 MatCheckPreallocated(mat, 1); in MatGetValuesLocal()
2224 …PetscCheck(!mat->factortype, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONGSTATE, "Not for factored matrix"); in MatGetValuesLocal()
2225 …PetscCheck(mat->ops->getvalueslocal || mat->ops->getvalues, PETSC_COMM_SELF, PETSC_ERR_SUP, "Mat t… in MatGetValuesLocal()
2227 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatGetValuesLocal()
2228 PetscCall(PetscLogEventBegin(MAT_GetValues, mat, 0, 0, 0)); in MatGetValuesLocal()
2229 if (mat->ops->getvalueslocal) PetscUseTypeMethod(mat, getvalueslocal, nrow, irow, ncol, icol, y); in MatGetValuesLocal()
2240 …PetscCheck(mat->rmap->mapping, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "MatGe… in MatGetValuesLocal()
2241 …PetscCheck(mat->cmap->mapping, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "MatGe… in MatGetValuesLocal()
2242 PetscCall(ISLocalToGlobalMappingApply(mat->rmap->mapping, nrow, irow, irowm)); in MatGetValuesLocal()
2243 PetscCall(ISLocalToGlobalMappingApply(mat->cmap->mapping, ncol, icol, icolm)); in MatGetValuesLocal()
2244 PetscCall(MatGetValues(mat, nrow, irowm, ncol, icolm, y)); in MatGetValuesLocal()
2247 PetscCall(PetscLogEventEnd(MAT_GetValues, mat, 0, 0, 0)); in MatGetValuesLocal()
2274 PetscErrorCode MatSetValuesBatch(Mat mat, PetscInt nb, PetscInt bs, PetscInt rows[], const PetscSca… in MatSetValuesBatch() argument
2277 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatSetValuesBatch()
2278 PetscValidType(mat, 1); in MatSetValuesBatch()
2281 …PetscAssert(!mat->factortype, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONGSTATE, "Not for factored matrix"… in MatSetValuesBatch()
2283 PetscCall(PetscLogEventBegin(MAT_SetValuesBatch, mat, 0, 0, 0)); in MatSetValuesBatch()
2284 if (mat->ops->setvaluesbatch) PetscUseTypeMethod(mat, setvaluesbatch, nb, bs, rows, v); in MatSetValuesBatch()
2286 …for (PetscInt b = 0; b < nb; ++b) PetscCall(MatSetValues(mat, bs, &rows[b * bs], bs, &rows[b * bs]… in MatSetValuesBatch()
2288 PetscCall(PetscLogEventEnd(MAT_SetValuesBatch, mat, 0, 0, 0)); in MatSetValuesBatch()
2455 PetscErrorCode MatSetValuesLocal(Mat mat, PetscInt nrow, const PetscInt irow[], PetscInt ncol, cons… in MatSetValuesLocal() argument
2458 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatSetValuesLocal()
2459 PetscValidType(mat, 1); in MatSetValuesLocal()
2460 MatCheckPreallocated(mat, 1); in MatSetValuesLocal()
2464 if (mat->insertmode == NOT_SET_VALUES) mat->insertmode = addv; in MatSetValuesLocal()
2465 …else PetscCheck(mat->insertmode == addv, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONGSTATE, "Cannot mix ad… in MatSetValuesLocal()
2467 …PetscCheck(!mat->factortype, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONGSTATE, "Not for factored matrix"); in MatSetValuesLocal()
2468 …PetscCheck(mat->ops->setvalueslocal || mat->ops->setvalues, PETSC_COMM_SELF, PETSC_ERR_SUP, "Mat t… in MatSetValuesLocal()
2471 if (mat->assembled) { in MatSetValuesLocal()
2472 mat->was_assembled = PETSC_TRUE; in MatSetValuesLocal()
2473 mat->assembled = PETSC_FALSE; in MatSetValuesLocal()
2475 PetscCall(PetscLogEventBegin(MAT_SetValues, mat, 0, 0, 0)); in MatSetValuesLocal()
2476 …if (mat->ops->setvalueslocal) PetscUseTypeMethod(mat, setvalueslocal, nrow, irow, ncol, icol, y, a… in MatSetValuesLocal()
2481 …if ((!mat->rmap->mapping && !mat->cmap->mapping) || (nrow + ncol) <= (PetscInt)PETSC_STATIC_ARRAY_… in MatSetValuesLocal()
2491 …if (mat->rmap->mapping) PetscCall(ISLocalToGlobalMappingApply(mat->rmap->mapping, nrow, irow, bufr… in MatSetValuesLocal()
2493 if (mat->cmap->mapping) { in MatSetValuesLocal()
2494 …if (mat->cmap->mapping != mat->rmap->mapping || ncol != nrow || icol != irow) PetscCall(ISLocalToG… in MatSetValuesLocal()
2497 PetscCall(MatSetValues(mat, nrow, irowm, ncol, icolm, y, addv)); in MatSetValuesLocal()
2500 PetscCall(PetscLogEventEnd(MAT_SetValues, mat, 0, 0, 0)); in MatSetValuesLocal()
2544 PetscErrorCode MatSetValuesBlockedLocal(Mat mat, PetscInt nrow, const PetscInt irow[], PetscInt nco… in MatSetValuesBlockedLocal() argument
2547 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatSetValuesBlockedLocal()
2548 PetscValidType(mat, 1); in MatSetValuesBlockedLocal()
2549 MatCheckPreallocated(mat, 1); in MatSetValuesBlockedLocal()
2553 if (mat->insertmode == NOT_SET_VALUES) mat->insertmode = addv; in MatSetValuesBlockedLocal()
2554 …else PetscCheck(mat->insertmode == addv, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONGSTATE, "Cannot mix ad… in MatSetValuesBlockedLocal()
2556 …PetscCheck(!mat->factortype, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONGSTATE, "Not for factored matrix"); in MatSetValuesBlockedLocal()
2557mat->ops->setvaluesblockedlocal || mat->ops->setvaluesblocked || mat->ops->setvalueslocal || mat->… in MatSetValuesBlockedLocal()
2560 if (mat->assembled) { in MatSetValuesBlockedLocal()
2561 mat->was_assembled = PETSC_TRUE; in MatSetValuesBlockedLocal()
2562 mat->assembled = PETSC_FALSE; in MatSetValuesBlockedLocal()
2564 …if (PetscUnlikelyDebug(mat->rmap->mapping)) { /* Condition on the mapping existing, because MatSet… in MatSetValuesBlockedLocal()
2566 PetscCall(MatGetBlockSizes(mat, &rbs, NULL)); in MatSetValuesBlockedLocal()
2567 PetscCall(ISLocalToGlobalMappingGetBlockSize(mat->rmap->mapping, &irbs)); in MatSetValuesBlockedLocal()
2568 …PetscCheck(rbs == irbs, PetscObjectComm((PetscObject)mat), PETSC_ERR_SUP, "Different row block siz… in MatSetValuesBlockedLocal()
2570 if (PetscUnlikelyDebug(mat->cmap->mapping)) { in MatSetValuesBlockedLocal()
2572 PetscCall(MatGetBlockSizes(mat, NULL, &cbs)); in MatSetValuesBlockedLocal()
2573 PetscCall(ISLocalToGlobalMappingGetBlockSize(mat->cmap->mapping, &icbs)); in MatSetValuesBlockedLocal()
2574 …PetscCheck(cbs == icbs, PetscObjectComm((PetscObject)mat), PETSC_ERR_SUP, "Different col block siz… in MatSetValuesBlockedLocal()
2576 PetscCall(PetscLogEventBegin(MAT_SetValues, mat, 0, 0, 0)); in MatSetValuesBlockedLocal()
2577 …if (mat->ops->setvaluesblockedlocal) PetscUseTypeMethod(mat, setvaluesblockedlocal, nrow, irow, nc… in MatSetValuesBlockedLocal()
2582 …if ((!mat->rmap->mapping && !mat->cmap->mapping) || (nrow + ncol) <= ((PetscInt)PETSC_STATIC_ARRAY… in MatSetValuesBlockedLocal()
2592 …if (mat->rmap->mapping) PetscCall(ISLocalToGlobalMappingApplyBlock(mat->rmap->mapping, nrow, irow,… in MatSetValuesBlockedLocal()
2594 if (mat->cmap->mapping) { in MatSetValuesBlockedLocal()
2595 …if (mat->cmap->mapping != mat->rmap->mapping || ncol != nrow || icol != irow) PetscCall(ISLocalToG… in MatSetValuesBlockedLocal()
2598 PetscCall(MatSetValuesBlocked(mat, nrow, irowm, ncol, icolm, y, addv)); in MatSetValuesBlockedLocal()
2601 PetscCall(PetscLogEventEnd(MAT_SetValues, mat, 0, 0, 0)); in MatSetValuesBlockedLocal()
2625 PetscErrorCode MatMultDiagonalBlock(Mat mat, Vec x, Vec y) in MatMultDiagonalBlock() argument
2628 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatMultDiagonalBlock()
2629 PetscValidType(mat, 1); in MatMultDiagonalBlock()
2633 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatMultDiagonalBlock()
2634 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatMultDiagonalBlock()
2635 …PetscCheck(x != y, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "x and y must be d… in MatMultDiagonalBlock()
2636 MatCheckPreallocated(mat, 1); in MatMultDiagonalBlock()
2638 PetscUseTypeMethod(mat, multdiagonalblock, x, y); in MatMultDiagonalBlock()
2663 PetscErrorCode MatMult(Mat mat, Vec x, Vec y) in MatMult() argument
2666 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatMult()
2667 PetscValidType(mat, 1); in MatMult()
2671 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatMult()
2672 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatMult()
2673 …PetscCheck(x != y, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "x and y must be d… in MatMult()
2674 …ck(mat->cmap->N == x->map->N, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_SIZ, "Mat mat,Vec x… in MatMult()
2675 …ck(mat->rmap->N == y->map->N, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_SIZ, "Mat mat,Vec y… in MatMult()
2676 …PetscCheck(mat->cmap->n == x->map->n, PETSC_COMM_SELF, PETSC_ERR_ARG_SIZ, "Mat mat,Vec x: local di… in MatMult()
2677 …PetscCheck(mat->rmap->n == y->map->n, PETSC_COMM_SELF, PETSC_ERR_ARG_SIZ, "Mat mat,Vec y: local di… in MatMult()
2679 if (mat->erroriffailure) PetscCall(VecValidValues_Internal(x, 2, PETSC_TRUE)); in MatMult()
2680 MatCheckPreallocated(mat, 1); in MatMult()
2683 PetscCall(PetscLogEventBegin(MAT_Mult, mat, x, y, 0)); in MatMult()
2684 PetscUseTypeMethod(mat, mult, x, y); in MatMult()
2685 PetscCall(PetscLogEventEnd(MAT_Mult, mat, x, y, 0)); in MatMult()
2686 if (mat->erroriffailure) PetscCall(VecValidValues_Internal(y, 3, PETSC_FALSE)); in MatMult()
2714 PetscErrorCode MatMultTranspose(Mat mat, Vec x, Vec y) in MatMultTranspose() argument
2719 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatMultTranspose()
2720 PetscValidType(mat, 1); in MatMultTranspose()
2725 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatMultTranspose()
2726 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatMultTranspose()
2727 …PetscCheck(x != y, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "x and y must be d… in MatMultTranspose()
2728 …ck(mat->cmap->N == y->map->N, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_SIZ, "Mat mat,Vec y… in MatMultTranspose()
2729 …ck(mat->rmap->N == x->map->N, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_SIZ, "Mat mat,Vec x… in MatMultTranspose()
2730 …PetscCheck(mat->cmap->n == y->map->n, PETSC_COMM_SELF, PETSC_ERR_ARG_SIZ, "Mat mat,Vec y: local di… in MatMultTranspose()
2731 …PetscCheck(mat->rmap->n == x->map->n, PETSC_COMM_SELF, PETSC_ERR_ARG_SIZ, "Mat mat,Vec x: local di… in MatMultTranspose()
2732 if (mat->erroriffailure) PetscCall(VecValidValues_Internal(x, 2, PETSC_TRUE)); in MatMultTranspose()
2733 MatCheckPreallocated(mat, 1); in MatMultTranspose()
2735 if (!mat->ops->multtranspose) { in MatMultTranspose()
2736 if (mat->symmetric == PETSC_BOOL3_TRUE && mat->ops->mult) op = mat->ops->mult; in MatMultTranspose()
2737mat), PETSC_ERR_SUP, "Matrix type %s does not have a multiply transpose defined or is symmetric an… in MatMultTranspose()
2738 } else op = mat->ops->multtranspose; in MatMultTranspose()
2739 PetscCall(PetscLogEventBegin(MAT_MultTranspose, mat, x, y, 0)); in MatMultTranspose()
2741 PetscCall((*op)(mat, x, y)); in MatMultTranspose()
2743 PetscCall(PetscLogEventEnd(MAT_MultTranspose, mat, x, y, 0)); in MatMultTranspose()
2745 if (mat->erroriffailure) PetscCall(VecValidValues_Internal(y, 3, PETSC_FALSE)); in MatMultTranspose()
2773 PetscErrorCode MatMultHermitianTranspose(Mat mat, Vec x, Vec y) in MatMultHermitianTranspose() argument
2776 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatMultHermitianTranspose()
2777 PetscValidType(mat, 1); in MatMultHermitianTranspose()
2781 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatMultHermitianTranspose()
2782 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatMultHermitianTranspose()
2783 …PetscCheck(x != y, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "x and y must be d… in MatMultHermitianTranspose()
2784 …ck(mat->cmap->N == y->map->N, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_SIZ, "Mat mat,Vec y… in MatMultHermitianTranspose()
2785 …ck(mat->rmap->N == x->map->N, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_SIZ, "Mat mat,Vec x… in MatMultHermitianTranspose()
2786 …PetscCheck(mat->cmap->n == y->map->n, PETSC_COMM_SELF, PETSC_ERR_ARG_SIZ, "Mat mat,Vec y: local di… in MatMultHermitianTranspose()
2787 …PetscCheck(mat->rmap->n == x->map->n, PETSC_COMM_SELF, PETSC_ERR_ARG_SIZ, "Mat mat,Vec x: local di… in MatMultHermitianTranspose()
2788 MatCheckPreallocated(mat, 1); in MatMultHermitianTranspose()
2790 PetscCall(PetscLogEventBegin(MAT_MultHermitianTranspose, mat, x, y, 0)); in MatMultHermitianTranspose()
2792 if (mat->ops->multhermitiantranspose || (mat->hermitian == PETSC_BOOL3_TRUE && mat->ops->mult)) { in MatMultHermitianTranspose()
2794 if (mat->ops->multhermitiantranspose) PetscUseTypeMethod(mat, multhermitiantranspose, x, y); in MatMultHermitianTranspose()
2795 else PetscUseTypeMethod(mat, mult, x, y); in MatMultHermitianTranspose()
2802 PetscCall(MatMultTranspose(mat, w, y)); in MatMultHermitianTranspose()
2808 PetscCall(MatMultTranspose(mat, x, y)); in MatMultHermitianTranspose()
2810 PetscCall(PetscLogEventEnd(MAT_MultHermitianTranspose, mat, x, y, 0)); in MatMultHermitianTranspose()
2835 PetscErrorCode MatMultAdd(Mat mat, Vec v1, Vec v2, Vec v3) in MatMultAdd() argument
2838 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatMultAdd()
2839 PetscValidType(mat, 1); in MatMultAdd()
2844 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatMultAdd()
2845 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatMultAdd()
2846 …k(mat->cmap->N == v1->map->N, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_SIZ, "Mat mat,Vec v… in MatMultAdd()
2849 …PetscCheck(mat->rmap->n == v3->map->n, PETSC_COMM_SELF, PETSC_ERR_ARG_SIZ, "Mat mat,Vec v3: local … in MatMultAdd()
2850 …PetscCheck(mat->rmap->n == v2->map->n, PETSC_COMM_SELF, PETSC_ERR_ARG_SIZ, "Mat mat,Vec v2: local … in MatMultAdd()
2851 …PetscCheck(v1 != v3, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_IDN, "v1 and v3 must be diff… in MatMultAdd()
2852 MatCheckPreallocated(mat, 1); in MatMultAdd()
2854 PetscCall(PetscLogEventBegin(MAT_MultAdd, mat, v1, v2, v3)); in MatMultAdd()
2856 PetscUseTypeMethod(mat, multadd, v1, v2, v3); in MatMultAdd()
2858 PetscCall(PetscLogEventEnd(MAT_MultAdd, mat, v1, v2, v3)); in MatMultAdd()
2884 PetscErrorCode MatMultTransposeAdd(Mat mat, Vec v1, Vec v2, Vec v3) in MatMultTransposeAdd() argument
2886 …cErrorCode (*op)(Mat, Vec, Vec, Vec) = (!mat->ops->multtransposeadd && mat->symmetric) ? mat->ops-… in MatMultTransposeAdd()
2889 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatMultTransposeAdd()
2890 PetscValidType(mat, 1); in MatMultTransposeAdd()
2895 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatMultTransposeAdd()
2896 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatMultTransposeAdd()
2897 …k(mat->rmap->N == v1->map->N, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_SIZ, "Mat mat,Vec v… in MatMultTransposeAdd()
2898 …k(mat->cmap->N == v2->map->N, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_SIZ, "Mat mat,Vec v… in MatMultTransposeAdd()
2899 …k(mat->cmap->N == v3->map->N, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_SIZ, "Mat mat,Vec v… in MatMultTransposeAdd()
2900 …PetscCheck(v1 != v3, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_IDN, "v1 and v3 must be diff… in MatMultTransposeAdd()
2901 …PetscCheck(op, PetscObjectComm((PetscObject)mat), PETSC_ERR_SUP, "Mat type %s", ((PetscObject)mat)… in MatMultTransposeAdd()
2902 MatCheckPreallocated(mat, 1); in MatMultTransposeAdd()
2904 PetscCall(PetscLogEventBegin(MAT_MultTransposeAdd, mat, v1, v2, v3)); in MatMultTransposeAdd()
2906 PetscCall((*op)(mat, v1, v2, v3)); in MatMultTransposeAdd()
2908 PetscCall(PetscLogEventEnd(MAT_MultTransposeAdd, mat, v1, v2, v3)); in MatMultTransposeAdd()
2934 PetscErrorCode MatMultHermitianTransposeAdd(Mat mat, Vec v1, Vec v2, Vec v3) in MatMultHermitianTransposeAdd() argument
2937 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatMultHermitianTransposeAdd()
2938 PetscValidType(mat, 1); in MatMultHermitianTransposeAdd()
2943 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatMultHermitianTransposeAdd()
2944 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatMultHermitianTransposeAdd()
2945 …PetscCheck(v1 != v3, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_IDN, "v1 and v3 must be diff… in MatMultHermitianTransposeAdd()
2946 …k(mat->rmap->N == v1->map->N, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_SIZ, "Mat mat,Vec v… in MatMultHermitianTransposeAdd()
2947 …k(mat->cmap->N == v2->map->N, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_SIZ, "Mat mat,Vec v… in MatMultHermitianTransposeAdd()
2948 …k(mat->cmap->N == v3->map->N, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_SIZ, "Mat mat,Vec v… in MatMultHermitianTransposeAdd()
2949 MatCheckPreallocated(mat, 1); in MatMultHermitianTransposeAdd()
2951 PetscCall(PetscLogEventBegin(MAT_MultHermitianTransposeAdd, mat, v1, v2, v3)); in MatMultHermitianTransposeAdd()
2953 …if (mat->ops->multhermitiantransposeadd) PetscUseTypeMethod(mat, multhermitiantransposeadd, v1, v2… in MatMultHermitianTransposeAdd()
2960 PetscCall(MatMultTranspose(mat, w, z)); in MatMultHermitianTransposeAdd()
2971 PetscCall(PetscLogEventEnd(MAT_MultHermitianTransposeAdd, mat, v1, v2, v3)); in MatMultHermitianTransposeAdd()
2992 PetscErrorCode MatGetFactorType(Mat mat, MatFactorType *t) in MatGetFactorType() argument
2995 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatGetFactorType()
2996 PetscValidType(mat, 1); in MatGetFactorType()
2998 *t = mat->factortype; in MatGetFactorType()
3016 PetscErrorCode MatSetFactorType(Mat mat, MatFactorType t) in MatSetFactorType() argument
3019 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatSetFactorType()
3020 PetscValidType(mat, 1); in MatSetFactorType()
3021 mat->factortype = t; in MatSetFactorType()
3065 PetscErrorCode MatGetInfo(Mat mat, MatInfoType flag, MatInfo *info) in MatGetInfo() argument
3068 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatGetInfo()
3069 PetscValidType(mat, 1); in MatGetInfo()
3071 MatCheckPreallocated(mat, 1); in MatGetInfo()
3072 PetscUseTypeMethod(mat, getinfo, flag, info); in MatGetInfo()
3122 PetscErrorCode MatLUFactor(Mat mat, IS row, IS col, const MatFactorInfo *info) in MatLUFactor() argument
3127 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatLUFactor()
3131 PetscValidType(mat, 1); in MatLUFactor()
3132 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatLUFactor()
3133 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatLUFactor()
3134 MatCheckPreallocated(mat, 1); in MatLUFactor()
3140 PetscCall(PetscLogEventBegin(MAT_LUFactor, mat, row, col, 0)); in MatLUFactor()
3141 PetscUseTypeMethod(mat, lufactor, row, col, info); in MatLUFactor()
3142 PetscCall(PetscLogEventEnd(MAT_LUFactor, mat, row, col, 0)); in MatLUFactor()
3143 PetscCall(PetscObjectStateIncrease((PetscObject)mat)); in MatLUFactor()
3180 PetscErrorCode MatILUFactor(Mat mat, IS row, IS col, const MatFactorInfo *info) in MatILUFactor() argument
3183 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatILUFactor()
3187 PetscValidType(mat, 1); in MatILUFactor()
3188 …PetscCheck(mat->rmap->N == mat->cmap->N, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONG, "… in MatILUFactor()
3189 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatILUFactor()
3190 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatILUFactor()
3191 MatCheckPreallocated(mat, 1); in MatILUFactor()
3193 PetscCall(PetscLogEventBegin(MAT_ILUFactor, mat, row, col, 0)); in MatILUFactor()
3194 PetscUseTypeMethod(mat, ilufactor, row, col, info); in MatILUFactor()
3195 PetscCall(PetscLogEventEnd(MAT_ILUFactor, mat, row, col, 0)); in MatILUFactor()
3196 PetscCall(PetscObjectStateIncrease((PetscObject)mat)); in MatILUFactor()
3231 PetscErrorCode MatLUFactorSymbolic(Mat fact, Mat mat, IS row, IS col, const MatFactorInfo *info) in MatLUFactorSymbolic() argument
3237 PetscValidHeaderSpecific(mat, MAT_CLASSID, 2); in MatLUFactorSymbolic()
3242 PetscValidType(mat, 2); in MatLUFactorSymbolic()
3243 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatLUFactorSymbolic()
3244 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatLUFactorSymbolic()
3245 MatCheckPreallocated(mat, 2); in MatLUFactorSymbolic()
3251 if (!fact->trivialsymbolic) PetscCall(PetscLogEventBegin(MAT_LUFactorSymbolic, mat, row, col, 0)); in MatLUFactorSymbolic()
3252 PetscUseTypeMethod(fact, lufactorsymbolic, mat, row, col, info); in MatLUFactorSymbolic()
3253 if (!fact->trivialsymbolic) PetscCall(PetscLogEventEnd(MAT_LUFactorSymbolic, mat, row, col, 0)); in MatLUFactorSymbolic()
3284 PetscErrorCode MatLUFactorNumeric(Mat fact, Mat mat, const MatFactorInfo *info) in MatLUFactorNumeric() argument
3290 PetscValidHeaderSpecific(mat, MAT_CLASSID, 2); in MatLUFactorNumeric()
3292 PetscValidType(mat, 2); in MatLUFactorNumeric()
3293 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatLUFactorNumeric()
3294 …PetscCheck(mat->rmap->N == (fact)->rmap->N && mat->cmap->N == (fact)->cmap->N, PetscObjectComm((Pe… in MatLUFactorNumeric()
3295 mat->rmap->N, (fact)->rmap->N, mat->cmap->N, (fact)->cmap->N); in MatLUFactorNumeric()
3297 MatCheckPreallocated(mat, 2); in MatLUFactorNumeric()
3303 if (!fact->trivialsymbolic) PetscCall(PetscLogEventBegin(MAT_LUFactorNumeric, mat, fact, 0, 0)); in MatLUFactorNumeric()
3304 else PetscCall(PetscLogEventBegin(MAT_LUFactor, mat, fact, 0, 0)); in MatLUFactorNumeric()
3305 PetscUseTypeMethod(fact, lufactornumeric, mat, info); in MatLUFactorNumeric()
3306 if (!fact->trivialsymbolic) PetscCall(PetscLogEventEnd(MAT_LUFactorNumeric, mat, fact, 0, 0)); in MatLUFactorNumeric()
3307 else PetscCall(PetscLogEventEnd(MAT_LUFactor, mat, fact, 0, 0)); in MatLUFactorNumeric()
3340 PetscErrorCode MatCholeskyFactor(Mat mat, IS perm, const MatFactorInfo *info) in MatCholeskyFactor() argument
3345 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatCholeskyFactor()
3348 PetscValidType(mat, 1); in MatCholeskyFactor()
3349 …PetscCheck(mat->rmap->N == mat->cmap->N, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONG, "… in MatCholeskyFactor()
3350 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatCholeskyFactor()
3351 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatCholeskyFactor()
3352 MatCheckPreallocated(mat, 1); in MatCholeskyFactor()
3358 PetscCall(PetscLogEventBegin(MAT_CholeskyFactor, mat, perm, 0, 0)); in MatCholeskyFactor()
3359 PetscUseTypeMethod(mat, choleskyfactor, perm, info); in MatCholeskyFactor()
3360 PetscCall(PetscLogEventEnd(MAT_CholeskyFactor, mat, perm, 0, 0)); in MatCholeskyFactor()
3361 PetscCall(PetscObjectStateIncrease((PetscObject)mat)); in MatCholeskyFactor()
3398 PetscErrorCode MatCholeskyFactorSymbolic(Mat fact, Mat mat, IS perm, const MatFactorInfo *info) in MatCholeskyFactorSymbolic() argument
3404 PetscValidHeaderSpecific(mat, MAT_CLASSID, 2); in MatCholeskyFactorSymbolic()
3408 PetscValidType(mat, 2); in MatCholeskyFactorSymbolic()
3409 …PetscCheck(mat->rmap->N == mat->cmap->N, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONG, "… in MatCholeskyFactorSymbolic()
3410 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatCholeskyFactorSymbolic()
3411 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatCholeskyFactorSymbolic()
3412 MatCheckPreallocated(mat, 2); in MatCholeskyFactorSymbolic()
3418 …if (!fact->trivialsymbolic) PetscCall(PetscLogEventBegin(MAT_CholeskyFactorSymbolic, mat, perm, 0,… in MatCholeskyFactorSymbolic()
3419 PetscUseTypeMethod(fact, choleskyfactorsymbolic, mat, perm, info); in MatCholeskyFactorSymbolic()
3420 …if (!fact->trivialsymbolic) PetscCall(PetscLogEventEnd(MAT_CholeskyFactorSymbolic, mat, perm, 0, 0… in MatCholeskyFactorSymbolic()
3449 PetscErrorCode MatCholeskyFactorNumeric(Mat fact, Mat mat, const MatFactorInfo *info) in MatCholeskyFactorNumeric() argument
3455 PetscValidHeaderSpecific(mat, MAT_CLASSID, 2); in MatCholeskyFactorNumeric()
3457 PetscValidType(mat, 2); in MatCholeskyFactorNumeric()
3458 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatCholeskyFactorNumeric()
3459 …PetscCheck(mat->rmap->N == (fact)->rmap->N && mat->cmap->N == (fact)->cmap->N, PetscObjectComm((Pe… in MatCholeskyFactorNumeric()
3460 mat->rmap->N, (fact)->rmap->N, mat->cmap->N, (fact)->cmap->N); in MatCholeskyFactorNumeric()
3461 MatCheckPreallocated(mat, 2); in MatCholeskyFactorNumeric()
3467 …if (!fact->trivialsymbolic) PetscCall(PetscLogEventBegin(MAT_CholeskyFactorNumeric, mat, fact, 0, … in MatCholeskyFactorNumeric()
3468 else PetscCall(PetscLogEventBegin(MAT_CholeskyFactor, mat, fact, 0, 0)); in MatCholeskyFactorNumeric()
3469 PetscUseTypeMethod(fact, choleskyfactornumeric, mat, info); in MatCholeskyFactorNumeric()
3470 …if (!fact->trivialsymbolic) PetscCall(PetscLogEventEnd(MAT_CholeskyFactorNumeric, mat, fact, 0, 0)… in MatCholeskyFactorNumeric()
3471 else PetscCall(PetscLogEventEnd(MAT_CholeskyFactor, mat, fact, 0, 0)); in MatCholeskyFactorNumeric()
3508 PetscErrorCode MatQRFactor(Mat mat, IS col, const MatFactorInfo *info) in MatQRFactor() argument
3511 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatQRFactor()
3514 PetscValidType(mat, 1); in MatQRFactor()
3515 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatQRFactor()
3516 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatQRFactor()
3517 MatCheckPreallocated(mat, 1); in MatQRFactor()
3518 PetscCall(PetscLogEventBegin(MAT_QRFactor, mat, col, 0, 0)); in MatQRFactor()
3519 PetscUseMethod(mat, "MatQRFactor_C", (Mat, IS, const MatFactorInfo *), (mat, col, info)); in MatQRFactor()
3520 PetscCall(PetscLogEventEnd(MAT_QRFactor, mat, col, 0, 0)); in MatQRFactor()
3521 PetscCall(PetscObjectStateIncrease((PetscObject)mat)); in MatQRFactor()
3554 PetscErrorCode MatQRFactorSymbolic(Mat fact, Mat mat, IS col, const MatFactorInfo *info) in MatQRFactorSymbolic() argument
3560 PetscValidHeaderSpecific(mat, MAT_CLASSID, 2); in MatQRFactorSymbolic()
3564 PetscValidType(mat, 2); in MatQRFactorSymbolic()
3565 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatQRFactorSymbolic()
3566 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatQRFactorSymbolic()
3567 MatCheckPreallocated(mat, 2); in MatQRFactorSymbolic()
3573 …if (!fact->trivialsymbolic) PetscCall(PetscLogEventBegin(MAT_QRFactorSymbolic, fact, mat, col, 0)); in MatQRFactorSymbolic()
3574 …PetscUseMethod(fact, "MatQRFactorSymbolic_C", (Mat, Mat, IS, const MatFactorInfo *), (fact, mat, c… in MatQRFactorSymbolic()
3575 if (!fact->trivialsymbolic) PetscCall(PetscLogEventEnd(MAT_QRFactorSymbolic, fact, mat, col, 0)); in MatQRFactorSymbolic()
3605 PetscErrorCode MatQRFactorNumeric(Mat fact, Mat mat, const MatFactorInfo *info) in MatQRFactorNumeric() argument
3611 PetscValidHeaderSpecific(mat, MAT_CLASSID, 2); in MatQRFactorNumeric()
3613 PetscValidType(mat, 2); in MatQRFactorNumeric()
3614 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatQRFactorNumeric()
3615 …PetscCheck(mat->rmap->N == fact->rmap->N && mat->cmap->N == fact->cmap->N, PetscObjectComm((PetscO… in MatQRFactorNumeric()
3616 mat->rmap->N, (fact)->rmap->N, mat->cmap->N, (fact)->cmap->N); in MatQRFactorNumeric()
3618 MatCheckPreallocated(mat, 2); in MatQRFactorNumeric()
3624 if (!fact->trivialsymbolic) PetscCall(PetscLogEventBegin(MAT_QRFactorNumeric, mat, fact, 0, 0)); in MatQRFactorNumeric()
3625 else PetscCall(PetscLogEventBegin(MAT_QRFactor, mat, fact, 0, 0)); in MatQRFactorNumeric()
3626 …PetscUseMethod(fact, "MatQRFactorNumeric_C", (Mat, Mat, const MatFactorInfo *), (fact, mat, info)); in MatQRFactorNumeric()
3627 if (!fact->trivialsymbolic) PetscCall(PetscLogEventEnd(MAT_QRFactorNumeric, mat, fact, 0, 0)); in MatQRFactorNumeric()
3628 else PetscCall(PetscLogEventEnd(MAT_QRFactor, mat, fact, 0, 0)); in MatQRFactorNumeric()
3658 PetscErrorCode MatSolve(Mat mat, Vec b, Vec x) in MatSolve() argument
3661 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatSolve()
3662 PetscValidType(mat, 1); in MatSolve()
3665 PetscCheckSameComm(mat, 1, b, 2); in MatSolve()
3666 PetscCheckSameComm(mat, 1, x, 3); in MatSolve()
3667 …PetscCheck(x != b, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_IDN, "x and b must be differen… in MatSolve()
3668 …ck(mat->cmap->N == x->map->N, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_SIZ, "Mat mat,Vec x… in MatSolve()
3669 …ck(mat->rmap->N == b->map->N, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_SIZ, "Mat mat,Vec b… in MatSolve()
3670 …PetscCheck(mat->rmap->n == b->map->n, PETSC_COMM_SELF, PETSC_ERR_ARG_SIZ, "Mat mat,Vec b: local di… in MatSolve()
3671 if (!mat->rmap->N && !mat->cmap->N) PetscFunctionReturn(PETSC_SUCCESS); in MatSolve()
3672 MatCheckPreallocated(mat, 1); in MatSolve()
3674 PetscCall(PetscLogEventBegin(MAT_Solve, mat, b, x, 0)); in MatSolve()
3675 PetscCall(VecFlag(x, mat->factorerrortype)); in MatSolve()
3676 if (mat->factorerrortype) PetscCall(PetscInfo(mat, "MatFactorError %d\n", mat->factorerrortype)); in MatSolve()
3677 else PetscUseTypeMethod(mat, solve, b, x); in MatSolve()
3678 PetscCall(PetscLogEventEnd(MAT_Solve, mat, b, x, 0)); in MatSolve()
3890 PetscErrorCode MatForwardSolve(Mat mat, Vec b, Vec x) in MatForwardSolve() argument
3893 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatForwardSolve()
3894 PetscValidType(mat, 1); in MatForwardSolve()
3897 PetscCheckSameComm(mat, 1, b, 2); in MatForwardSolve()
3898 PetscCheckSameComm(mat, 1, x, 3); in MatForwardSolve()
3899 …PetscCheck(x != b, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_IDN, "x and b must be differen… in MatForwardSolve()
3900 …ck(mat->cmap->N == x->map->N, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_SIZ, "Mat mat,Vec x… in MatForwardSolve()
3901 …ck(mat->rmap->N == b->map->N, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_SIZ, "Mat mat,Vec b… in MatForwardSolve()
3902 …PetscCheck(mat->rmap->n == b->map->n, PETSC_COMM_SELF, PETSC_ERR_ARG_SIZ, "Mat mat,Vec b: local di… in MatForwardSolve()
3903 if (!mat->rmap->N && !mat->cmap->N) PetscFunctionReturn(PETSC_SUCCESS); in MatForwardSolve()
3904 MatCheckPreallocated(mat, 1); in MatForwardSolve()
3906 PetscCall(PetscLogEventBegin(MAT_ForwardSolve, mat, b, x, 0)); in MatForwardSolve()
3907 PetscUseTypeMethod(mat, forwardsolve, b, x); in MatForwardSolve()
3908 PetscCall(PetscLogEventEnd(MAT_ForwardSolve, mat, b, x, 0)); in MatForwardSolve()
3943 PetscErrorCode MatBackwardSolve(Mat mat, Vec b, Vec x) in MatBackwardSolve() argument
3946 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatBackwardSolve()
3947 PetscValidType(mat, 1); in MatBackwardSolve()
3950 PetscCheckSameComm(mat, 1, b, 2); in MatBackwardSolve()
3951 PetscCheckSameComm(mat, 1, x, 3); in MatBackwardSolve()
3952 …PetscCheck(x != b, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_IDN, "x and b must be differen… in MatBackwardSolve()
3953 …ck(mat->cmap->N == x->map->N, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_SIZ, "Mat mat,Vec x… in MatBackwardSolve()
3954 …ck(mat->rmap->N == b->map->N, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_SIZ, "Mat mat,Vec b… in MatBackwardSolve()
3955 …PetscCheck(mat->rmap->n == b->map->n, PETSC_COMM_SELF, PETSC_ERR_ARG_SIZ, "Mat mat,Vec b: local di… in MatBackwardSolve()
3956 if (!mat->rmap->N && !mat->cmap->N) PetscFunctionReturn(PETSC_SUCCESS); in MatBackwardSolve()
3957 MatCheckPreallocated(mat, 1); in MatBackwardSolve()
3959 PetscCall(PetscLogEventBegin(MAT_BackwardSolve, mat, b, x, 0)); in MatBackwardSolve()
3960 PetscUseTypeMethod(mat, backwardsolve, b, x); in MatBackwardSolve()
3961 PetscCall(PetscLogEventEnd(MAT_BackwardSolve, mat, b, x, 0)); in MatBackwardSolve()
3987 PetscErrorCode MatSolveAdd(Mat mat, Vec b, Vec y, Vec x) in MatSolveAdd() argument
3993 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatSolveAdd()
3994 PetscValidType(mat, 1); in MatSolveAdd()
3998 PetscCheckSameComm(mat, 1, b, 2); in MatSolveAdd()
3999 PetscCheckSameComm(mat, 1, y, 3); in MatSolveAdd()
4000 PetscCheckSameComm(mat, 1, x, 4); in MatSolveAdd()
4001 …PetscCheck(x != b, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_IDN, "x and b must be differen… in MatSolveAdd()
4002 …ck(mat->cmap->N == x->map->N, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_SIZ, "Mat mat,Vec x… in MatSolveAdd()
4003 …ck(mat->rmap->N == b->map->N, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_SIZ, "Mat mat,Vec b… in MatSolveAdd()
4004 …ck(mat->rmap->N == y->map->N, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_SIZ, "Mat mat,Vec y… in MatSolveAdd()
4005 …PetscCheck(mat->rmap->n == b->map->n, PETSC_COMM_SELF, PETSC_ERR_ARG_SIZ, "Mat mat,Vec b: local di… in MatSolveAdd()
4007 if (!mat->rmap->N && !mat->cmap->N) PetscFunctionReturn(PETSC_SUCCESS); in MatSolveAdd()
4008 MatCheckPreallocated(mat, 1); in MatSolveAdd()
4010 PetscCall(PetscLogEventBegin(MAT_SolveAdd, mat, b, x, y)); in MatSolveAdd()
4011 PetscCall(VecFlag(x, mat->factorerrortype)); in MatSolveAdd()
4012 if (mat->factorerrortype) { in MatSolveAdd()
4013 PetscCall(PetscInfo(mat, "MatFactorError %d\n", mat->factorerrortype)); in MatSolveAdd()
4014 } else if (mat->ops->solveadd) { in MatSolveAdd()
4015 PetscUseTypeMethod(mat, solveadd, b, y, x); in MatSolveAdd()
4019 PetscCall(MatSolve(mat, b, x)); in MatSolveAdd()
4024 PetscCall(MatSolve(mat, b, x)); in MatSolveAdd()
4029 PetscCall(PetscLogEventEnd(MAT_SolveAdd, mat, b, x, y)); in MatSolveAdd()
4058 PetscErrorCode MatSolveTranspose(Mat mat, Vec b, Vec x) in MatSolveTranspose() argument
4060 …PetscErrorCode (*f)(Mat, Vec, Vec) = (!mat->ops->solvetranspose && mat->symmetric) ? mat->ops->sol… in MatSolveTranspose()
4063 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatSolveTranspose()
4064 PetscValidType(mat, 1); in MatSolveTranspose()
4067 PetscCheckSameComm(mat, 1, b, 2); in MatSolveTranspose()
4068 PetscCheckSameComm(mat, 1, x, 3); in MatSolveTranspose()
4069 …PetscCheck(x != b, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_IDN, "x and b must be differen… in MatSolveTranspose()
4070 …ck(mat->rmap->N == x->map->N, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_SIZ, "Mat mat,Vec x… in MatSolveTranspose()
4071 …ck(mat->cmap->N == b->map->N, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_SIZ, "Mat mat,Vec b… in MatSolveTranspose()
4072 if (!mat->rmap->N && !mat->cmap->N) PetscFunctionReturn(PETSC_SUCCESS); in MatSolveTranspose()
4073 MatCheckPreallocated(mat, 1); in MatSolveTranspose()
4074 PetscCall(PetscLogEventBegin(MAT_SolveTranspose, mat, b, x, 0)); in MatSolveTranspose()
4075 PetscCall(VecFlag(x, mat->factorerrortype)); in MatSolveTranspose()
4076 if (mat->factorerrortype) { in MatSolveTranspose()
4077 PetscCall(PetscInfo(mat, "MatFactorError %d\n", mat->factorerrortype)); in MatSolveTranspose()
4079 …PetscCheck(f, PetscObjectComm((PetscObject)mat), PETSC_ERR_SUP, "Matrix type %s", ((PetscObject)ma… in MatSolveTranspose()
4080 PetscCall((*f)(mat, b, x)); in MatSolveTranspose()
4082 PetscCall(PetscLogEventEnd(MAT_SolveTranspose, mat, b, x, 0)); in MatSolveTranspose()
4109 PetscErrorCode MatSolveTransposeAdd(Mat mat, Vec b, Vec y, Vec x) in MatSolveTransposeAdd() argument
4113 …cErrorCode (*f)(Mat, Vec, Vec, Vec) = (!mat->ops->solvetransposeadd && mat->symmetric) ? mat->ops-… in MatSolveTransposeAdd()
4116 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatSolveTransposeAdd()
4117 PetscValidType(mat, 1); in MatSolveTransposeAdd()
4121 PetscCheckSameComm(mat, 1, b, 2); in MatSolveTransposeAdd()
4122 PetscCheckSameComm(mat, 1, y, 3); in MatSolveTransposeAdd()
4123 PetscCheckSameComm(mat, 1, x, 4); in MatSolveTransposeAdd()
4124 …PetscCheck(x != b, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_IDN, "x and b must be differen… in MatSolveTransposeAdd()
4125 …ck(mat->rmap->N == x->map->N, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_SIZ, "Mat mat,Vec x… in MatSolveTransposeAdd()
4126 …ck(mat->cmap->N == b->map->N, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_SIZ, "Mat mat,Vec b… in MatSolveTransposeAdd()
4127 …ck(mat->cmap->N == y->map->N, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_SIZ, "Mat mat,Vec y… in MatSolveTransposeAdd()
4129 if (!mat->rmap->N && !mat->cmap->N) PetscFunctionReturn(PETSC_SUCCESS); in MatSolveTransposeAdd()
4130 MatCheckPreallocated(mat, 1); in MatSolveTransposeAdd()
4132 PetscCall(PetscLogEventBegin(MAT_SolveTransposeAdd, mat, b, x, y)); in MatSolveTransposeAdd()
4133 PetscCall(VecFlag(x, mat->factorerrortype)); in MatSolveTransposeAdd()
4134 if (mat->factorerrortype) { in MatSolveTransposeAdd()
4135 PetscCall(PetscInfo(mat, "MatFactorError %d\n", mat->factorerrortype)); in MatSolveTransposeAdd()
4137 PetscCall((*f)(mat, b, y, x)); in MatSolveTransposeAdd()
4141 PetscCall(MatSolveTranspose(mat, b, x)); in MatSolveTransposeAdd()
4146 PetscCall(MatSolveTranspose(mat, b, x)); in MatSolveTransposeAdd()
4151 PetscCall(PetscLogEventEnd(MAT_SolveTransposeAdd, mat, b, x, y)); in MatSolveTransposeAdd()
4209 PetscErrorCode MatSOR(Mat mat, Vec b, PetscReal omega, MatSORType flag, PetscReal shift, PetscInt i… in MatSOR() argument
4212 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatSOR()
4213 PetscValidType(mat, 1); in MatSOR()
4216 PetscCheckSameComm(mat, 1, b, 2); in MatSOR()
4217 PetscCheckSameComm(mat, 1, x, 8); in MatSOR()
4218 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatSOR()
4219 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatSOR()
4220 …ck(mat->cmap->N == x->map->N, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_SIZ, "Mat mat,Vec x… in MatSOR()
4221 …ck(mat->rmap->N == b->map->N, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_SIZ, "Mat mat,Vec b… in MatSOR()
4222 …PetscCheck(mat->rmap->n == b->map->n, PETSC_COMM_SELF, PETSC_ERR_ARG_SIZ, "Mat mat,Vec b: local di… in MatSOR()
4227 MatCheckPreallocated(mat, 1); in MatSOR()
4228 PetscCall(PetscLogEventBegin(MAT_SOR, mat, b, x, 0)); in MatSOR()
4229 PetscUseTypeMethod(mat, sor, b, omega, flag, shift, its, lits, x); in MatSOR()
4230 PetscCall(PetscLogEventEnd(MAT_SOR, mat, b, x, 0)); in MatSOR()
4348 PetscErrorCode MatConvert(Mat mat, MatType newtype, MatReuse reuse, Mat *M) in MatConvert() argument
4356 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatConvert()
4357 PetscValidType(mat, 1); in MatConvert()
4359 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatConvert()
4360 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatConvert()
4361 MatCheckPreallocated(mat, 1); in MatConvert()
4363 …PetscCall(PetscOptionsGetString(((PetscObject)mat)->options, ((PetscObject)mat)->prefix, "-matconv… in MatConvert()
4366 PetscCall(PetscObjectTypeCompare((PetscObject)mat, newtype, &sametype)); in MatConvert()
4368 …PetscCheck(!(reuse == MAT_INPLACE_MATRIX) || !(mat != *M), PetscObjectComm((PetscObject)mat), PETS… in MatConvert()
4371 …PetscCheck(mat != *M, PetscObjectComm((PetscObject)mat), PETSC_ERR_SUP, "MAT_REUSE_MATRIX means re… in MatConvert()
4375 …PetscCall(PetscInfo(mat, "Early return for inplace %s %d %d\n", ((PetscObject)mat)->type_name, sam… in MatConvert()
4380 issymmetric = mat->symmetric; in MatConvert()
4381 ishermitian = mat->hermitian; in MatConvert()
4382 isspd = mat->spd; in MatConvert()
4384 if ((sametype || issame) && (reuse == MAT_INITIAL_MATRIX) && mat->ops->duplicate) { in MatConvert()
4385 …PetscCall(PetscInfo(mat, "Calling duplicate for initial matrix %s %d %d\n", ((PetscObject)mat)->ty… in MatConvert()
4386 PetscUseTypeMethod(mat, duplicate, MAT_COPY_VALUES, M); in MatConvert()
4407 PetscCall(PetscStrcmp(convname, ((PetscObject)mat)->type_name, &flg)); in MatConvert()
4408 …PetscCall(PetscInfo(mat, "Check superclass %s %s -> %d\n", convname, ((PetscObject)mat)->type_name… in MatConvert()
4411 PetscCall(PetscInfo(mat, "Early return\n")); in MatConvert()
4413 } else if (reuse == MAT_INITIAL_MATRIX && mat->ops->duplicate) { in MatConvert()
4414 PetscCall(PetscInfo(mat, "Calling MatDuplicate\n")); in MatConvert()
4415 PetscUseTypeMethod(mat, duplicate, MAT_COPY_VALUES, M); in MatConvert()
4417 } else if (reuse == MAT_REUSE_MATRIX && mat->ops->copy) { in MatConvert()
4418 PetscCall(PetscInfo(mat, "Calling MatCopy\n")); in MatConvert()
4419 PetscCall(MatCopy(mat, *M, SAME_NONZERO_PATTERN)); in MatConvert()
4427 PetscCall(PetscStrlcat(convname, ((PetscObject)mat)->type_name, sizeof(convname))); in MatConvert()
4430 …PetscCall(PetscStrlcat(convname, issame ? ((PetscObject)mat)->type_name : newtype, sizeof(convname… in MatConvert()
4432 PetscCall(PetscObjectQueryFunction((PetscObject)mat, convname, &conv)); in MatConvert()
4433 …PetscCall(PetscInfo(mat, "Check specialized (1) %s (%s) -> %d\n", convname, ((PetscObject)mat)->ty… in MatConvert()
4438 PetscCall(MatCreate(PetscObjectComm((PetscObject)mat), &B)); in MatConvert()
4439 PetscCall(MatSetSizes(B, mat->rmap->n, mat->cmap->n, mat->rmap->N, mat->cmap->N)); in MatConvert()
4443 PetscCall(PetscStrlcat(convname, ((PetscObject)mat)->type_name, sizeof(convname))); in MatConvert()
4449 …PetscCall(PetscInfo(mat, "Check specialized (2) %s (%s) -> %d\n", convname, ((PetscObject)B)->type… in MatConvert()
4458 … PetscCall(PetscInfo(mat, "Check convertfrom (%s) -> %d\n", ((PetscObject)B)->type_name, !!conv)); in MatConvert()
4463 if (mat->ops->convert) conv = mat->ops->convert; in MatConvert()
4464 …PetscCall(PetscInfo(mat, "Check general convert (%s) -> %d\n", ((PetscObject)mat)->type_name, !!co… in MatConvert()
4468 PetscCall(PetscInfo(mat, "Using MatConvert_Basic\n")); in MatConvert()
4472 PetscCall(PetscLogEventBegin(MAT_Convert, mat, 0, 0, 0)); in MatConvert()
4473 PetscCall((*conv)(mat, newtype, reuse, M)); in MatConvert()
4474 if (mat->rmap->mapping && mat->cmap->mapping && !(*M)->rmap->mapping && !(*M)->cmap->mapping) { in MatConvert()
4476 (*M)->rmap->bs = mat->rmap->bs; in MatConvert()
4477 (*M)->cmap->bs = mat->cmap->bs; in MatConvert()
4478 PetscCall(PetscObjectReference((PetscObject)mat->rmap->mapping)); in MatConvert()
4479 PetscCall(PetscObjectReference((PetscObject)mat->cmap->mapping)); in MatConvert()
4480 (*M)->rmap->mapping = mat->rmap->mapping; in MatConvert()
4481 (*M)->cmap->mapping = mat->cmap->mapping; in MatConvert()
4483 (*M)->stencil.dim = mat->stencil.dim; in MatConvert()
4484 (*M)->stencil.noc = mat->stencil.noc; in MatConvert()
4485 for (i = 0; i <= mat->stencil.dim + (mat->stencil.noc ? 0 : -1); i++) { in MatConvert()
4486 (*M)->stencil.dims[i] = mat->stencil.dims[i]; in MatConvert()
4487 (*M)->stencil.starts[i] = mat->stencil.starts[i]; in MatConvert()
4489 PetscCall(PetscLogEventEnd(MAT_Convert, mat, 0, 0, 0)); in MatConvert()
4515 PetscErrorCode MatFactorGetSolverType(Mat mat, MatSolverType *type) in MatFactorGetSolverType() argument
4520 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatFactorGetSolverType()
4521 PetscValidType(mat, 1); in MatFactorGetSolverType()
4523 …PetscCheck(mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Only for… in MatFactorGetSolverType()
4524 PetscCall(PetscObjectQueryFunction((PetscObject)mat, "MatFactorGetSolverType_C", &conv)); in MatFactorGetSolverType()
4525 if (conv) PetscCall((*conv)(mat, type)); in MatFactorGetSolverType()
4743 PetscErrorCode MatFactorGetCanUseOrdering(Mat mat, PetscBool *flg) in MatFactorGetCanUseOrdering() argument
4746 *flg = mat->canuseordering; in MatFactorGetCanUseOrdering()
4766 PetscErrorCode MatFactorGetPreferredOrdering(Mat mat, MatFactorType ftype, MatOrderingType *otype) in MatFactorGetPreferredOrdering() argument
4769 *otype = mat->preferredordering[ftype]; in MatFactorGetPreferredOrdering()
4819 PetscErrorCode MatGetFactor(Mat mat, MatSolverType type, MatFactorType ftype, Mat *f) in MatGetFactor() argument
4825 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatGetFactor()
4826 PetscValidType(mat, 1); in MatGetFactor()
4828 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatGetFactor()
4829 MatCheckPreallocated(mat, 1); in MatGetFactor()
4831 PetscCall(MatIsShell(mat, &shell)); in MatGetFactor()
4832 if (shell) PetscCall(MatHasOperation(mat, MATOP_GET_FACTOR, &hasop)); in MatGetFactor()
4834 PetscUseTypeMethod(mat, getfactor, type, ftype, f); in MatGetFactor()
4838 …PetscCall(MatSolverTypeGet(type, ((PetscObject)mat)->type_name, ftype, &foundtype, &foundmtype, &c… in MatGetFactor()
4841 …SETERRQ(PetscObjectComm((PetscObject)mat), PETSC_ERR_MISSING_FACTOR, "Could not locate solver type… in MatGetFactor()
4842 ((PetscObject)mat)->type_name, type); in MatGetFactor()
4844mat), PETSC_ERR_MISSING_FACTOR, "Could not locate a solver type for factorization type %s and matr… in MatGetFactor()
4847 …bjectComm((PetscObject)mat), PETSC_ERR_MISSING_FACTOR, "MatSolverType %s does not support matrix t… in MatGetFactor()
4848mat), PETSC_ERR_MISSING_FACTOR, "MatSolverType %s does not support factorization type %s for matri… in MatGetFactor()
4850 PetscCall((*conv)(mat, ftype, f)); in MatGetFactor()
4851 if (mat->factorprefix) PetscCall(MatSetOptionsPrefix(*f, mat->factorprefix)); in MatGetFactor()
4882 PetscErrorCode MatGetFactorAvailable(Mat mat, MatSolverType type, MatFactorType ftype, PetscBool *f… in MatGetFactorAvailable() argument
4887 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatGetFactorAvailable()
4891 if (!((PetscObject)mat)->type_name) PetscFunctionReturn(PETSC_SUCCESS); in MatGetFactorAvailable()
4893 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatGetFactorAvailable()
4894 MatCheckPreallocated(mat, 1); in MatGetFactorAvailable()
4896 PetscCall(MatSolverTypeGet(type, ((PetscObject)mat)->type_name, ftype, NULL, NULL, &gconv)); in MatGetFactorAvailable()
4929 PetscErrorCode MatDuplicate(Mat mat, MatDuplicateOption op, Mat *M) in MatDuplicate() argument
4938 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatDuplicate()
4939 PetscValidType(mat, 1); in MatDuplicate()
4941 …PetscCheck(op != MAT_COPY_VALUES || mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_A… in MatDuplicate()
4942 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatDuplicate()
4943 MatCheckPreallocated(mat, 1); in MatDuplicate()
4945 PetscCall(PetscLogEventBegin(MAT_Convert, mat, 0, 0, 0)); in MatDuplicate()
4946 PetscUseTypeMethod(mat, duplicate, op, M); in MatDuplicate()
4947 PetscCall(PetscLogEventEnd(MAT_Convert, mat, 0, 0, 0)); in MatDuplicate()
4950 PetscCall(MatGetOperation(mat, MATOP_VIEW, &viewf)); in MatDuplicate()
4952 PetscCall(MatGetVecType(mat, &vtype)); in MatDuplicate()
4955 B->stencil.dim = mat->stencil.dim; in MatDuplicate()
4956 B->stencil.noc = mat->stencil.noc; in MatDuplicate()
4957 for (i = 0; i <= mat->stencil.dim + (mat->stencil.noc ? 0 : -1); i++) { in MatDuplicate()
4958 B->stencil.dims[i] = mat->stencil.dims[i]; in MatDuplicate()
4959 B->stencil.starts[i] = mat->stencil.starts[i]; in MatDuplicate()
4962 B->nooffproczerorows = mat->nooffproczerorows; in MatDuplicate()
4963 B->nooffprocentries = mat->nooffprocentries; in MatDuplicate()
4965 PetscCall(PetscObjectQuery((PetscObject)mat, "__PETSc_dm", &dm)); in MatDuplicate()
4967 PetscCall(PetscObjectQuery((PetscObject)mat, "__PETSc_MatCOOStruct_Host", &container_h)); in MatDuplicate()
4969 PetscCall(PetscObjectQuery((PetscObject)mat, "__PETSc_MatCOOStruct_Device", &container_d)); in MatDuplicate()
4971 if (op == MAT_COPY_VALUES) PetscCall(MatPropagateSymmetryOptions(mat, B)); in MatDuplicate()
4998 PetscErrorCode MatGetDiagonal(Mat mat, Vec v) in MatGetDiagonal() argument
5001 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatGetDiagonal()
5002 PetscValidType(mat, 1); in MatGetDiagonal()
5004 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatGetDiagonal()
5005 MatCheckPreallocated(mat, 1); in MatGetDiagonal()
5010 PetscCall(MatGetLocalSize(mat, &row, &col)); in MatGetDiagonal()
5015 PetscUseTypeMethod(mat, getdiagonal, v); in MatGetDiagonal()
5044 PetscErrorCode MatGetRowMin(Mat mat, Vec v, PetscInt idx[]) in MatGetRowMin() argument
5047 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatGetRowMin()
5048 PetscValidType(mat, 1); in MatGetRowMin()
5050 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatGetRowMin()
5052 if (!mat->cmap->N) { in MatGetRowMin()
5055 PetscInt i, m = mat->rmap->n; in MatGetRowMin()
5059 MatCheckPreallocated(mat, 1); in MatGetRowMin()
5061 PetscUseTypeMethod(mat, getrowmin, v, idx); in MatGetRowMin()
5089 PetscErrorCode MatGetRowMinAbs(Mat mat, Vec v, PetscInt idx[]) in MatGetRowMinAbs() argument
5092 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatGetRowMinAbs()
5093 PetscValidType(mat, 1); in MatGetRowMinAbs()
5095 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatGetRowMinAbs()
5096 …PetscCheck(!mat->factortype, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONGSTATE, "Not for factored matrix"); in MatGetRowMinAbs()
5098 if (!mat->cmap->N) { in MatGetRowMinAbs()
5101 PetscInt i, m = mat->rmap->n; in MatGetRowMinAbs()
5105 MatCheckPreallocated(mat, 1); in MatGetRowMinAbs()
5106 if (idx) PetscCall(PetscArrayzero(idx, mat->rmap->n)); in MatGetRowMinAbs()
5107 PetscUseTypeMethod(mat, getrowminabs, v, idx); in MatGetRowMinAbs()
5136 PetscErrorCode MatGetRowMax(Mat mat, Vec v, PetscInt idx[]) in MatGetRowMax() argument
5139 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatGetRowMax()
5140 PetscValidType(mat, 1); in MatGetRowMax()
5142 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatGetRowMax()
5144 if (!mat->cmap->N) { in MatGetRowMax()
5147 PetscInt i, m = mat->rmap->n; in MatGetRowMax()
5151 MatCheckPreallocated(mat, 1); in MatGetRowMax()
5152 PetscUseTypeMethod(mat, getrowmax, v, idx); in MatGetRowMax()
5181 PetscErrorCode MatGetRowMaxAbs(Mat mat, Vec v, PetscInt idx[]) in MatGetRowMaxAbs() argument
5184 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatGetRowMaxAbs()
5185 PetscValidType(mat, 1); in MatGetRowMaxAbs()
5187 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatGetRowMaxAbs()
5189 if (!mat->cmap->N) { in MatGetRowMaxAbs()
5192 PetscInt i, m = mat->rmap->n; in MatGetRowMaxAbs()
5196 MatCheckPreallocated(mat, 1); in MatGetRowMaxAbs()
5197 if (idx) PetscCall(PetscArrayzero(idx, mat->rmap->n)); in MatGetRowMaxAbs()
5198 PetscUseTypeMethod(mat, getrowmaxabs, v, idx); in MatGetRowMaxAbs()
5221 PetscErrorCode MatGetRowSumAbs(Mat mat, Vec v) in MatGetRowSumAbs() argument
5224 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatGetRowSumAbs()
5225 PetscValidType(mat, 1); in MatGetRowSumAbs()
5227 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatGetRowSumAbs()
5229 if (!mat->cmap->N) { in MatGetRowSumAbs()
5232 MatCheckPreallocated(mat, 1); in MatGetRowSumAbs()
5233 PetscUseTypeMethod(mat, getrowsumabs, v); in MatGetRowSumAbs()
5257 PetscErrorCode MatGetRowSum(Mat mat, Vec v) in MatGetRowSum() argument
5262 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatGetRowSum()
5263 PetscValidType(mat, 1); in MatGetRowSum()
5265 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatGetRowSum()
5266 MatCheckPreallocated(mat, 1); in MatGetRowSum()
5267 PetscCall(MatCreateVecs(mat, &ones, NULL)); in MatGetRowSum()
5269 PetscCall(MatMult(mat, ones, v)); in MatGetRowSum()
5294 PetscErrorCode MatTransposeSetPrecursor(Mat mat, Mat B) in MatTransposeSetPrecursor() argument
5300 rb->id = ((PetscObject)mat)->id; in MatTransposeSetPrecursor()
5302 PetscCall(MatGetNonzeroState(mat, &rb->nonzerostate)); in MatTransposeSetPrecursor()
5307 static PetscErrorCode MatTranspose_Private(Mat mat, MatReuse reuse, Mat *B, PetscBool conjugate) in MatTranspose_Private() argument
5314 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatTranspose_Private()
5315 PetscValidType(mat, 1); in MatTranspose_Private()
5316 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatTranspose_Private()
5317 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatTranspose_Private()
5318 …PetscCheck(reuse != MAT_INPLACE_MATRIX || mat == *B, PetscObjectComm((PetscObject)mat), PETSC_ERR_… in MatTranspose_Private()
5319 …PetscCheck(reuse != MAT_REUSE_MATRIX || mat != *B, PetscObjectComm((PetscObject)mat), PETSC_ERR_SU… in MatTranspose_Private()
5320 MatCheckPreallocated(mat, 1); in MatTranspose_Private()
5325 …PetscCheck(rb->id == ((PetscObject)mat)->id, PetscObjectComm((PetscObject)*B), PETSC_ERR_ARG_WRONG… in MatTranspose_Private()
5326 if (rb->state == ((PetscObject)mat)->state) PetscFunctionReturn(PETSC_SUCCESS); in MatTranspose_Private()
5330 f = mat->ops->hermitiantranspose; in MatTranspose_Private()
5331 if (f) PetscCall((*f)(mat, reuse, B)); in MatTranspose_Private()
5333 if (!f && !(reuse == MAT_INPLACE_MATRIX && mat->hermitian == PETSC_BOOL3_TRUE && conjugate)) { in MatTranspose_Private()
5334 PetscCall(PetscLogEventBegin(MAT_Transpose, mat, 0, 0, 0)); in MatTranspose_Private()
5335 if (reuse != MAT_INPLACE_MATRIX || mat->symmetric != PETSC_BOOL3_TRUE) { in MatTranspose_Private()
5336 PetscUseTypeMethod(mat, transpose, reuse, B); in MatTranspose_Private()
5339 PetscCall(PetscLogEventEnd(MAT_Transpose, mat, 0, 0, 0)); in MatTranspose_Private()
5343 if (reuse == MAT_INITIAL_MATRIX) PetscCall(MatTransposeSetPrecursor(mat, *B)); in MatTranspose_Private()
5347 rb->state = ((PetscObject)mat)->state; in MatTranspose_Private()
5348 rb->nonzerostate = mat->nonzerostate; in MatTranspose_Private()
5385 PetscErrorCode MatTranspose(Mat mat, MatReuse reuse, Mat *B) in MatTranspose() argument
5388 PetscCall(MatTranspose_Private(mat, reuse, B, PETSC_FALSE)); in MatTranspose()
5505 PetscErrorCode MatHermitianTranspose(Mat mat, MatReuse reuse, Mat *B) in MatHermitianTranspose() argument
5508 PetscCall(MatTranspose_Private(mat, reuse, B, PETSC_TRUE)); in MatHermitianTranspose()
5585 PetscErrorCode MatPermute(Mat mat, IS row, IS col, Mat *B) in MatPermute() argument
5588 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatPermute()
5589 PetscValidType(mat, 1); in MatPermute()
5593 PetscCheckSameComm(mat, 1, row, 2); in MatPermute()
5595 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatPermute()
5596 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatPermute()
5597 …Check(mat->ops->permute || mat->ops->createsubmatrix, PETSC_COMM_SELF, PETSC_ERR_SUP, "MatPermute … in MatPermute()
5598 MatCheckPreallocated(mat, 1); in MatPermute()
5600 if (mat->ops->permute) { in MatPermute()
5601 PetscUseTypeMethod(mat, permute, row, col, B); in MatPermute()
5604 PetscCall(MatCreateSubMatrix(mat, row, col, MAT_INITIAL_MATRIX, B)); in MatPermute()
5673 PetscErrorCode MatDiagonalScale(Mat mat, Vec l, Vec r) in MatDiagonalScale() argument
5678 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatDiagonalScale()
5679 PetscValidType(mat, 1); in MatDiagonalScale()
5682 PetscCheckSameComm(mat, 1, l, 2); in MatDiagonalScale()
5686 PetscCheckSameComm(mat, 1, r, 3); in MatDiagonalScale()
5688 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatDiagonalScale()
5689 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatDiagonalScale()
5690 MatCheckPreallocated(mat, 1); in MatDiagonalScale()
5693 PetscCall(PetscLogEventBegin(MAT_Scale, mat, 0, 0, 0)); in MatDiagonalScale()
5694 PetscUseTypeMethod(mat, diagonalscale, l, r); in MatDiagonalScale()
5695 PetscCall(PetscLogEventEnd(MAT_Scale, mat, 0, 0, 0)); in MatDiagonalScale()
5696 PetscCall(PetscObjectStateIncrease((PetscObject)mat)); in MatDiagonalScale()
5697 if (l != r && (PetscBool3ToBool(mat->symmetric) || PetscBool3ToBool(mat->hermitian))) { in MatDiagonalScale()
5698 if (!PetscDefined(USE_COMPLEX) || PetscBool3ToBool(mat->symmetric)) { in MatDiagonalScale()
5701 PetscCall(PetscObjectTypeCompareAny((PetscObject)mat, &flg, MATSEQSBAIJ, MATMPISBAIJ, "")); in MatDiagonalScale()
5702 …PetscCheck(!flg, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_OUTOFRANGE, "For symmetric forma… in MatDiagonalScale()
5703 mat->symmetric = mat->spd = PETSC_BOOL3_FALSE; in MatDiagonalScale()
5704 if (!PetscDefined(USE_COMPLEX)) mat->hermitian = PETSC_BOOL3_FALSE; in MatDiagonalScale()
5705 else mat->hermitian = PETSC_BOOL3_UNKNOWN; in MatDiagonalScale()
5708 if (PetscDefined(USE_COMPLEX) && PetscBool3ToBool(mat->hermitian)) { in MatDiagonalScale()
5720 PetscCall(PetscObjectTypeCompareAny((PetscObject)mat, &flg, MATSEQSBAIJ, MATMPISBAIJ, "")); in MatDiagonalScale()
5721 …PetscCheck(!flg, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_OUTOFRANGE, "For symmetric forma… in MatDiagonalScale()
5722 mat->hermitian = PETSC_BOOL3_FALSE; in MatDiagonalScale()
5723 mat->symmetric = mat->spd = PETSC_BOOL3_UNKNOWN; in MatDiagonalScale()
5743 PetscErrorCode MatScale(Mat mat, PetscScalar a) in MatScale() argument
5746 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatScale()
5747 PetscValidType(mat, 1); in MatScale()
5748 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatScale()
5749 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatScale()
5750 PetscValidLogicalCollectiveScalar(mat, a, 2); in MatScale()
5751 MatCheckPreallocated(mat, 1); in MatScale()
5753 PetscCall(PetscLogEventBegin(MAT_Scale, mat, 0, 0, 0)); in MatScale()
5755 PetscUseTypeMethod(mat, scale, a); in MatScale()
5756 PetscCall(PetscObjectStateIncrease((PetscObject)mat)); in MatScale()
5758 PetscCall(PetscLogEventEnd(MAT_Scale, mat, 0, 0, 0)); in MatScale()
5778 PetscErrorCode MatNorm(Mat mat, NormType type, PetscReal *nrm) in MatNorm() argument
5781 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatNorm()
5782 PetscValidType(mat, 1); in MatNorm()
5785 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatNorm()
5786 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatNorm()
5787 MatCheckPreallocated(mat, 1); in MatNorm()
5789 PetscUseTypeMethod(mat, norm, type, nrm); in MatNorm()
5828 PetscErrorCode MatAssemblyBegin(Mat mat, MatAssemblyType type) in MatAssemblyBegin() argument
5831 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatAssemblyBegin()
5832 PetscValidType(mat, 1); in MatAssemblyBegin()
5833 MatCheckPreallocated(mat, 1); in MatAssemblyBegin()
5834 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatAssemblyBegin()
5835 if (mat->assembled) { in MatAssemblyBegin()
5836 mat->was_assembled = PETSC_TRUE; in MatAssemblyBegin()
5837 mat->assembled = PETSC_FALSE; in MatAssemblyBegin()
5841 PetscCall(PetscLogEventBegin(MAT_AssemblyBegin, mat, 0, 0, 0)); in MatAssemblyBegin()
5842 PetscTryTypeMethod(mat, assemblybegin, type); in MatAssemblyBegin()
5843 PetscCall(PetscLogEventEnd(MAT_AssemblyBegin, mat, 0, 0, 0)); in MatAssemblyBegin()
5844 } else PetscTryTypeMethod(mat, assemblybegin, type); in MatAssemblyBegin()
5864 PetscErrorCode MatAssembled(Mat mat, PetscBool *assembled) in MatAssembled() argument
5867 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatAssembled()
5869 *assembled = mat->assembled; in MatAssembled()
5900 PetscErrorCode MatAssemblyEnd(Mat mat, MatAssemblyType type) in MatAssemblyEnd() argument
5906 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatAssemblyEnd()
5907 PetscValidType(mat, 1); in MatAssemblyEnd()
5912 PetscCall(PetscLogEventBegin(MAT_AssemblyEnd, mat, 0, 0, 0)); in MatAssemblyEnd()
5913 PetscTryTypeMethod(mat, assemblyend, type); in MatAssemblyEnd()
5914 PetscCall(PetscLogEventEnd(MAT_AssemblyEnd, mat, 0, 0, 0)); in MatAssemblyEnd()
5915 } else PetscTryTypeMethod(mat, assemblyend, type); in MatAssemblyEnd()
5919 if (mat->num_ass) { in MatAssemblyEnd()
5920 if (!mat->symmetry_eternal) { in MatAssemblyEnd()
5921 mat->symmetric = PETSC_BOOL3_UNKNOWN; in MatAssemblyEnd()
5922 mat->hermitian = PETSC_BOOL3_UNKNOWN; in MatAssemblyEnd()
5924 …if (!mat->structural_symmetry_eternal && mat->ass_nonzerostate != mat->nonzerostate) mat->structur… in MatAssemblyEnd()
5925 if (!mat->spd_eternal) mat->spd = PETSC_BOOL3_UNKNOWN; in MatAssemblyEnd()
5927 mat->num_ass++; in MatAssemblyEnd()
5928 mat->assembled = PETSC_TRUE; in MatAssemblyEnd()
5929 mat->ass_nonzerostate = mat->nonzerostate; in MatAssemblyEnd()
5932 mat->insertmode = NOT_SET_VALUES; in MatAssemblyEnd()
5934 PetscCall(PetscObjectStateIncrease((PetscObject)mat)); in MatAssemblyEnd()
5936 PetscCall(MatViewFromOptions(mat, NULL, "-mat_view")); in MatAssemblyEnd()
5938 if (mat->checksymmetryonassembly) { in MatAssemblyEnd()
5939 PetscCall(MatIsSymmetric(mat, mat->checksymmetrytol, &flg)); in MatAssemblyEnd()
5941 …scCall(PetscPrintf(PetscObjectComm((PetscObject)mat), "Matrix is symmetric (tolerance %g)\n", (dou… in MatAssemblyEnd()
5943 …Call(PetscPrintf(PetscObjectComm((PetscObject)mat), "Matrix is not symmetric (tolerance %g)\n", (d… in MatAssemblyEnd()
5946 …if (mat->nullsp && mat->checknullspaceonassembly) PetscCall(MatNullSpaceTest(mat->nullsp, mat, NUL… in MatAssemblyEnd()
6071 PetscErrorCode MatSetOption(Mat mat, MatOption op, PetscBool flg) in MatSetOption() argument
6074 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatSetOption()
6076 PetscValidLogicalCollectiveEnum(mat, op, 2); in MatSetOption()
6077 PetscValidLogicalCollectiveBool(mat, flg, 3); in MatSetOption()
6080 …MAT_OPTION_MIN && ((int)op) < MAT_OPTION_MAX, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_OUT… in MatSetOption()
6084 mat->force_diagonals = flg; in MatSetOption()
6087 mat->nooffprocentries = flg; in MatSetOption()
6090 mat->assembly_subset = flg; in MatSetOption()
6091 …if (!mat->assembly_subset) { /* See the same logic in VecAssembly wrt VEC_SUBSET_OFF_PROC_ENTRIES … in MatSetOption()
6093 PetscCall(MatStashScatterDestroy_BTS(&mat->stash)); in MatSetOption()
6095 mat->stash.first_assembly_done = PETSC_FALSE; in MatSetOption()
6099 mat->nooffproczerorows = flg; in MatSetOption()
6103 mat->spd = PETSC_BOOL3_TRUE; in MatSetOption()
6104 mat->symmetric = PETSC_BOOL3_TRUE; in MatSetOption()
6105 mat->structurally_symmetric = PETSC_BOOL3_TRUE; in MatSetOption()
6107 mat->hermitian = PETSC_BOOL3_TRUE; in MatSetOption()
6110 mat->spd = PETSC_BOOL3_FALSE; in MatSetOption()
6114 mat->symmetric = PetscBoolToBool3(flg); in MatSetOption()
6115 if (flg) mat->structurally_symmetric = PETSC_BOOL3_TRUE; in MatSetOption()
6117 mat->hermitian = PetscBoolToBool3(flg); in MatSetOption()
6121 mat->hermitian = PetscBoolToBool3(flg); in MatSetOption()
6122 if (flg) mat->structurally_symmetric = PETSC_BOOL3_TRUE; in MatSetOption()
6124 mat->symmetric = PetscBoolToBool3(flg); in MatSetOption()
6128 mat->structurally_symmetric = PetscBoolToBool3(flg); in MatSetOption()
6131 …PetscCheck(mat->symmetric != PETSC_BOOL3_UNKNOWN, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG… in MatSetOption()
6132 mat->symmetry_eternal = flg; in MatSetOption()
6133 if (flg) mat->structural_symmetry_eternal = PETSC_TRUE; in MatSetOption()
6136 …PetscCheck(mat->structurally_symmetric != PETSC_BOOL3_UNKNOWN, PetscObjectComm((PetscObject)mat), … in MatSetOption()
6137 mat->structural_symmetry_eternal = flg; in MatSetOption()
6140 …PetscCheck(mat->spd != PETSC_BOOL3_UNKNOWN, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONG… in MatSetOption()
6141 mat->spd_eternal = flg; in MatSetOption()
6143 mat->structural_symmetry_eternal = PETSC_TRUE; in MatSetOption()
6144 mat->symmetry_eternal = PETSC_TRUE; in MatSetOption()
6148 mat->structure_only = flg; in MatSetOption()
6151 mat->sortedfull = flg; in MatSetOption()
6156 PetscTryTypeMethod(mat, setoption, op, flg); in MatSetOption()
6183 PetscErrorCode MatGetOption(Mat mat, MatOption op, PetscBool *flg) in MatGetOption() argument
6186 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatGetOption()
6187 PetscValidType(mat, 1); in MatGetOption()
6189 …MAT_OPTION_MIN && ((int)op) < MAT_OPTION_MAX, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_OUT… in MatGetOption()
6190 …PetscCheck(((PetscObject)mat)->type_name, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_TYPENOT… in MatGetOption()
6194 *flg = mat->nooffprocentries; in MatGetOption()
6197 *flg = mat->nooffproczerorows; in MatGetOption()
6200 …SETERRQ(PetscObjectComm((PetscObject)mat), PETSC_ERR_SUP, "Use MatIsSymmetric() or MatIsSymmetricK… in MatGetOption()
6203 …SETERRQ(PetscObjectComm((PetscObject)mat), PETSC_ERR_SUP, "Use MatIsHermitian() or MatIsHermitianK… in MatGetOption()
6206 …SETERRQ(PetscObjectComm((PetscObject)mat), PETSC_ERR_SUP, "Use MatIsStructurallySymmetric() or Mat… in MatGetOption()
6209 SETERRQ(PetscObjectComm((PetscObject)mat), PETSC_ERR_SUP, "Use MatIsSPDKnown()"); in MatGetOption()
6212 *flg = mat->symmetry_eternal; in MatGetOption()
6215 *flg = mat->symmetry_eternal; in MatGetOption()
6240 PetscErrorCode MatZeroEntries(Mat mat) in MatZeroEntries() argument
6243 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatZeroEntries()
6244 PetscValidType(mat, 1); in MatZeroEntries()
6245 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatZeroEntries()
6246 …PetscCheck(mat->insertmode == NOT_SET_VALUES, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONGSTATE, "Not for … in MatZeroEntries()
6247 MatCheckPreallocated(mat, 1); in MatZeroEntries()
6249 PetscCall(PetscLogEventBegin(MAT_ZeroEntries, mat, 0, 0, 0)); in MatZeroEntries()
6250 PetscUseTypeMethod(mat, zeroentries); in MatZeroEntries()
6251 PetscCall(PetscLogEventEnd(MAT_ZeroEntries, mat, 0, 0, 0)); in MatZeroEntries()
6252 PetscCall(PetscObjectStateIncrease((PetscObject)mat)); in MatZeroEntries()
6298 PetscErrorCode MatZeroRowsColumns(Mat mat, PetscInt numRows, const PetscInt rows[], PetscScalar dia… in MatZeroRowsColumns() argument
6301 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatZeroRowsColumns()
6302 PetscValidType(mat, 1); in MatZeroRowsColumns()
6304 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatZeroRowsColumns()
6305 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatZeroRowsColumns()
6306 MatCheckPreallocated(mat, 1); in MatZeroRowsColumns()
6308 PetscUseTypeMethod(mat, zerorowscolumns, numRows, rows, diag, x, b); in MatZeroRowsColumns()
6309 PetscCall(MatViewFromOptions(mat, NULL, "-mat_view")); in MatZeroRowsColumns()
6310 PetscCall(PetscObjectStateIncrease((PetscObject)mat)); in MatZeroRowsColumns()
6335 PetscErrorCode MatZeroRowsColumnsIS(Mat mat, IS is, PetscScalar diag, Vec x, Vec b) in MatZeroRowsColumnsIS() argument
6341 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatZeroRowsColumnsIS()
6343 PetscValidType(mat, 1); in MatZeroRowsColumnsIS()
6347 PetscCall(MatZeroRowsColumns(mat, numRows, rows, diag, x, b)); in MatZeroRowsColumnsIS()
6405 PetscErrorCode MatZeroRows(Mat mat, PetscInt numRows, const PetscInt rows[], PetscScalar diag, Vec … in MatZeroRows() argument
6408 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatZeroRows()
6409 PetscValidType(mat, 1); in MatZeroRows()
6411 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatZeroRows()
6412 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatZeroRows()
6413 MatCheckPreallocated(mat, 1); in MatZeroRows()
6415 PetscUseTypeMethod(mat, zerorows, numRows, rows, diag, x, b); in MatZeroRows()
6416 PetscCall(MatViewFromOptions(mat, NULL, "-mat_view")); in MatZeroRows()
6417 PetscCall(PetscObjectStateIncrease((PetscObject)mat)); in MatZeroRows()
6442 PetscErrorCode MatZeroRowsIS(Mat mat, IS is, PetscScalar diag, Vec x, Vec b) in MatZeroRowsIS() argument
6448 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatZeroRowsIS()
6449 PetscValidType(mat, 1); in MatZeroRowsIS()
6455 PetscCall(MatZeroRows(mat, numRows, rows, diag, x, b)); in MatZeroRowsIS()
6506 PetscErrorCode MatZeroRowsStencil(Mat mat, PetscInt numRows, const MatStencil rows[], PetscScalar d… in MatZeroRowsStencil() argument
6508 PetscInt dim = mat->stencil.dim; in MatZeroRowsStencil()
6509 PetscInt sdim = dim - (1 - (PetscInt)mat->stencil.noc); in MatZeroRowsStencil()
6510 PetscInt *dims = mat->stencil.dims + 1; in MatZeroRowsStencil()
6511 PetscInt *starts = mat->stencil.starts; in MatZeroRowsStencil()
6516 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatZeroRowsStencil()
6517 PetscValidType(mat, 1); in MatZeroRowsStencil()
6534 if (mat->stencil.noc) dxm++; in MatZeroRowsStencil()
6538 PetscCall(MatZeroRowsLocal(mat, numNewRows, jdxm, diag, x, b)); in MatZeroRowsStencil()
6589 PetscErrorCode MatZeroRowsColumnsStencil(Mat mat, PetscInt numRows, const MatStencil rows[], PetscS… in MatZeroRowsColumnsStencil() argument
6591 PetscInt dim = mat->stencil.dim; in MatZeroRowsColumnsStencil()
6592 PetscInt sdim = dim - (1 - (PetscInt)mat->stencil.noc); in MatZeroRowsColumnsStencil()
6593 PetscInt *dims = mat->stencil.dims + 1; in MatZeroRowsColumnsStencil()
6594 PetscInt *starts = mat->stencil.starts; in MatZeroRowsColumnsStencil()
6599 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatZeroRowsColumnsStencil()
6600 PetscValidType(mat, 1); in MatZeroRowsColumnsStencil()
6617 if (mat->stencil.noc) dxm++; in MatZeroRowsColumnsStencil()
6621 PetscCall(MatZeroRowsColumnsLocal(mat, numNewRows, jdxm, diag, x, b)); in MatZeroRowsColumnsStencil()
6651 PetscErrorCode MatZeroRowsLocal(Mat mat, PetscInt numRows, const PetscInt rows[], PetscScalar diag,… in MatZeroRowsLocal() argument
6654 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatZeroRowsLocal()
6655 PetscValidType(mat, 1); in MatZeroRowsLocal()
6657 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatZeroRowsLocal()
6658 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatZeroRowsLocal()
6659 MatCheckPreallocated(mat, 1); in MatZeroRowsLocal()
6661 if (mat->ops->zerorowslocal) { in MatZeroRowsLocal()
6662 PetscUseTypeMethod(mat, zerorowslocal, numRows, rows, diag, x, b); in MatZeroRowsLocal()
6667 …PetscCheck(mat->rmap->mapping, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Need … in MatZeroRowsLocal()
6669 PetscCall(ISLocalToGlobalMappingApplyIS(mat->rmap->mapping, is, &newis)); in MatZeroRowsLocal()
6673 PetscUseTypeMethod(mat, zerorows, nl, newRows, diag, x, b); in MatZeroRowsLocal()
6678 PetscCall(PetscObjectStateIncrease((PetscObject)mat)); in MatZeroRowsLocal()
6706 PetscErrorCode MatZeroRowsLocalIS(Mat mat, IS is, PetscScalar diag, Vec x, Vec b) in MatZeroRowsLocalIS() argument
6712 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatZeroRowsLocalIS()
6713 PetscValidType(mat, 1); in MatZeroRowsLocalIS()
6715 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatZeroRowsLocalIS()
6716 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatZeroRowsLocalIS()
6717 MatCheckPreallocated(mat, 1); in MatZeroRowsLocalIS()
6721 PetscCall(MatZeroRowsLocal(mat, numRows, rows, diag, x, b)); in MatZeroRowsLocalIS()
6751 PetscErrorCode MatZeroRowsColumnsLocal(Mat mat, PetscInt numRows, const PetscInt rows[], PetscScala… in MatZeroRowsColumnsLocal() argument
6754 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatZeroRowsColumnsLocal()
6755 PetscValidType(mat, 1); in MatZeroRowsColumnsLocal()
6757 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatZeroRowsColumnsLocal()
6758 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatZeroRowsColumnsLocal()
6759 MatCheckPreallocated(mat, 1); in MatZeroRowsColumnsLocal()
6761 if (mat->ops->zerorowscolumnslocal) { in MatZeroRowsColumnsLocal()
6762 PetscUseTypeMethod(mat, zerorowscolumnslocal, numRows, rows, diag, x, b); in MatZeroRowsColumnsLocal()
6767 …PetscCheck(mat->rmap->mapping, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Need … in MatZeroRowsColumnsLocal()
6769 PetscCall(ISLocalToGlobalMappingApplyIS(mat->rmap->mapping, is, &newis)); in MatZeroRowsColumnsLocal()
6773 PetscUseTypeMethod(mat, zerorowscolumns, nl, newRows, diag, x, b); in MatZeroRowsColumnsLocal()
6778 PetscCall(PetscObjectStateIncrease((PetscObject)mat)); in MatZeroRowsColumnsLocal()
6806 PetscErrorCode MatZeroRowsColumnsLocalIS(Mat mat, IS is, PetscScalar diag, Vec x, Vec b) in MatZeroRowsColumnsLocalIS() argument
6812 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatZeroRowsColumnsLocalIS()
6813 PetscValidType(mat, 1); in MatZeroRowsColumnsLocalIS()
6815 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatZeroRowsColumnsLocalIS()
6816 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatZeroRowsColumnsLocalIS()
6817 MatCheckPreallocated(mat, 1); in MatZeroRowsColumnsLocalIS()
6821 PetscCall(MatZeroRowsColumnsLocal(mat, numRows, rows, diag, x, b)); in MatZeroRowsColumnsLocalIS()
6845 PetscErrorCode MatGetSize(Mat mat, PetscInt *m, PetscInt *n) in MatGetSize() argument
6848 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatGetSize()
6849 if (m) *m = mat->rmap->N; in MatGetSize()
6850 if (n) *n = mat->cmap->N; in MatGetSize()
6871 PetscErrorCode MatGetLocalSize(Mat mat, PetscInt *m, PetscInt *n) in MatGetLocalSize() argument
6874 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatGetLocalSize()
6877 if (m) *m = mat->rmap->n; in MatGetLocalSize()
6878 if (n) *n = mat->cmap->n; in MatGetLocalSize()
6912 PetscErrorCode MatGetOwnershipRangeColumn(Mat mat, PetscInt *m, PetscInt *n) in MatGetOwnershipRangeColumn() argument
6915 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatGetOwnershipRangeColumn()
6916 PetscValidType(mat, 1); in MatGetOwnershipRangeColumn()
6919 MatCheckPreallocated(mat, 1); in MatGetOwnershipRangeColumn()
6920 if (m) *m = mat->cmap->rstart; in MatGetOwnershipRangeColumn()
6921 if (n) *n = mat->cmap->rend; in MatGetOwnershipRangeColumn()
6958 PetscErrorCode MatGetOwnershipRange(Mat mat, PetscInt *m, PetscInt *n) in MatGetOwnershipRange() argument
6961 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatGetOwnershipRange()
6962 PetscValidType(mat, 1); in MatGetOwnershipRange()
6965 MatCheckPreallocated(mat, 1); in MatGetOwnershipRange()
6966 if (m) *m = mat->rmap->rstart; in MatGetOwnershipRange()
6967 if (n) *n = mat->rmap->rend; in MatGetOwnershipRange()
7003 PetscErrorCode MatGetOwnershipRanges(Mat mat, const PetscInt *ranges[]) in MatGetOwnershipRanges() argument
7006 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatGetOwnershipRanges()
7007 PetscValidType(mat, 1); in MatGetOwnershipRanges()
7008 MatCheckPreallocated(mat, 1); in MatGetOwnershipRanges()
7009 PetscCall(PetscLayoutGetRanges(mat->rmap, ranges)); in MatGetOwnershipRanges()
7043 PetscErrorCode MatGetOwnershipRangesColumn(Mat mat, const PetscInt *ranges[]) in MatGetOwnershipRangesColumn() argument
7046 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatGetOwnershipRangesColumn()
7047 PetscValidType(mat, 1); in MatGetOwnershipRangesColumn()
7048 MatCheckPreallocated(mat, 1); in MatGetOwnershipRangesColumn()
7049 PetscCall(PetscLayoutGetRanges(mat->cmap, ranges)); in MatGetOwnershipRangesColumn()
7132 PetscErrorCode MatILUFactorSymbolic(Mat fact, Mat mat, IS row, IS col, const MatFactorInfo *info) in MatILUFactorSymbolic() argument
7135 PetscValidHeaderSpecific(mat, MAT_CLASSID, 2); in MatILUFactorSymbolic()
7136 PetscValidType(mat, 2); in MatILUFactorSymbolic()
7141 …PetscCheck(info->levels >= 0, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_OUTOFRANGE, "Levels… in MatILUFactorSymbolic()
7142 …PetscCheck(info->fill >= 1.0, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_OUTOFRANGE, "Expect… in MatILUFactorSymbolic()
7143 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatILUFactorSymbolic()
7144 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatILUFactorSymbolic()
7145 MatCheckPreallocated(mat, 2); in MatILUFactorSymbolic()
7147 …if (!fact->trivialsymbolic) PetscCall(PetscLogEventBegin(MAT_ILUFactorSymbolic, mat, row, col, 0)); in MatILUFactorSymbolic()
7148 PetscUseTypeMethod(fact, ilufactorsymbolic, mat, row, col, info); in MatILUFactorSymbolic()
7149 if (!fact->trivialsymbolic) PetscCall(PetscLogEventEnd(MAT_ILUFactorSymbolic, mat, row, col, 0)); in MatILUFactorSymbolic()
7184 PetscErrorCode MatICCFactorSymbolic(Mat fact, Mat mat, IS perm, const MatFactorInfo *info) in MatICCFactorSymbolic() argument
7187 PetscValidHeaderSpecific(mat, MAT_CLASSID, 2); in MatICCFactorSymbolic()
7188 PetscValidType(mat, 2); in MatICCFactorSymbolic()
7192 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatICCFactorSymbolic()
7193 …PetscCheck(info->levels >= 0, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_OUTOFRANGE, "Levels… in MatICCFactorSymbolic()
7194 …PetscCheck(info->fill >= 1.0, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_OUTOFRANGE, "Expect… in MatICCFactorSymbolic()
7195 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatICCFactorSymbolic()
7196 MatCheckPreallocated(mat, 2); in MatICCFactorSymbolic()
7198 if (!fact->trivialsymbolic) PetscCall(PetscLogEventBegin(MAT_ICCFactorSymbolic, mat, perm, 0, 0)); in MatICCFactorSymbolic()
7199 PetscUseTypeMethod(fact, iccfactorsymbolic, mat, perm, info); in MatICCFactorSymbolic()
7200 if (!fact->trivialsymbolic) PetscCall(PetscLogEventEnd(MAT_ICCFactorSymbolic, mat, perm, 0, 0)); in MatICCFactorSymbolic()
7258 PetscErrorCode MatCreateSubMatrices(Mat mat, PetscInt n, const IS irow[], const IS icol[], MatReuse… in MatCreateSubMatrices() argument
7264 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatCreateSubMatrices()
7265 PetscValidType(mat, 1); in MatCreateSubMatrices()
7277 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatCreateSubMatrices()
7278 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatCreateSubMatrices()
7279 MatCheckPreallocated(mat, 1); in MatCreateSubMatrices()
7280 PetscCall(PetscLogEventBegin(MAT_CreateSubMats, mat, 0, 0, 0)); in MatCreateSubMatrices()
7281 PetscUseTypeMethod(mat, createsubmatrices, n, irow, icol, scall, submat); in MatCreateSubMatrices()
7282 PetscCall(PetscLogEventEnd(MAT_CreateSubMats, mat, 0, 0, 0)); in MatCreateSubMatrices()
7286 if (eq) PetscCall(MatPropagateSymmetryOptions(mat, (*submat)[i])); in MatCreateSubMatrices()
7288 if (mat->boundtocpu && mat->bindingpropagates) { in MatCreateSubMatrices()
7319 PetscErrorCode MatCreateSubMatricesMPI(Mat mat, PetscInt n, const IS irow[], const IS icol[], MatRe… in MatCreateSubMatricesMPI() argument
7325 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatCreateSubMatricesMPI()
7326 PetscValidType(mat, 1); in MatCreateSubMatricesMPI()
7338 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatCreateSubMatricesMPI()
7339 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatCreateSubMatricesMPI()
7340 MatCheckPreallocated(mat, 1); in MatCreateSubMatricesMPI()
7342 PetscCall(PetscLogEventBegin(MAT_CreateSubMats, mat, 0, 0, 0)); in MatCreateSubMatricesMPI()
7343 PetscUseTypeMethod(mat, createsubmatricesmpi, n, irow, icol, scall, submat); in MatCreateSubMatricesMPI()
7344 PetscCall(PetscLogEventEnd(MAT_CreateSubMats, mat, 0, 0, 0)); in MatCreateSubMatricesMPI()
7347 if (eq) PetscCall(MatPropagateSymmetryOptions(mat, (*submat)[i])); in MatCreateSubMatricesMPI()
7370 PetscErrorCode MatDestroyMatrices(PetscInt n, Mat *mat[]) in MatDestroyMatrices() argument
7375 if (!*mat) PetscFunctionReturn(PETSC_SUCCESS); in MatDestroyMatrices()
7377 PetscAssertPointer(mat, 2); in MatDestroyMatrices()
7379 for (i = 0; i < n; i++) PetscCall(MatDestroy(&(*mat)[i])); in MatDestroyMatrices()
7382 PetscCall(PetscFree(*mat)); in MatDestroyMatrices()
7402 PetscErrorCode MatDestroySubMatrices(PetscInt n, Mat *mat[]) in MatDestroySubMatrices() argument
7407 if (!*mat) PetscFunctionReturn(PETSC_SUCCESS); in MatDestroySubMatrices()
7410 PetscAssertPointer(mat, 2); in MatDestroySubMatrices()
7412 mat0 = (*mat)[0]; in MatDestroySubMatrices()
7414 PetscCall((*mat0->ops->destroysubmatrices)(n, mat)); in MatDestroySubMatrices()
7416 PetscCall(MatDestroyMatrices(n, mat)); in MatDestroySubMatrices()
7436 PetscErrorCode MatGetSeqNonzeroStructure(Mat mat, Mat *matstruct) in MatGetSeqNonzeroStructure() argument
7439 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatGetSeqNonzeroStructure()
7442 PetscValidType(mat, 1); in MatGetSeqNonzeroStructure()
7443 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatGetSeqNonzeroStructure()
7444 MatCheckPreallocated(mat, 1); in MatGetSeqNonzeroStructure()
7446 PetscCall(PetscLogEventBegin(MAT_GetSeqNonzeroStructure, mat, 0, 0, 0)); in MatGetSeqNonzeroStructure()
7447 PetscUseTypeMethod(mat, getseqnonzerostructure, matstruct); in MatGetSeqNonzeroStructure()
7448 PetscCall(PetscLogEventEnd(MAT_GetSeqNonzeroStructure, mat, 0, 0, 0)); in MatGetSeqNonzeroStructure()
7467 PetscErrorCode MatDestroySeqNonzeroStructure(Mat *mat) in MatDestroySeqNonzeroStructure() argument
7470 PetscAssertPointer(mat, 1); in MatDestroySeqNonzeroStructure()
7471 PetscCall(MatDestroy(mat)); in MatDestroySeqNonzeroStructure()
7500 PetscErrorCode MatIncreaseOverlap(Mat mat, PetscInt n, IS is[], PetscInt ov) in MatIncreaseOverlap() argument
7505 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatIncreaseOverlap()
7506 PetscValidType(mat, 1); in MatIncreaseOverlap()
7507 PetscValidLogicalCollectiveInt(mat, n, 2); in MatIncreaseOverlap()
7513 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatIncreaseOverlap()
7514 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatIncreaseOverlap()
7515 MatCheckPreallocated(mat, 1); in MatIncreaseOverlap()
7518 PetscCall(PetscLogEventBegin(MAT_IncreaseOverlap, mat, 0, 0, 0)); in MatIncreaseOverlap()
7519 PetscUseTypeMethod(mat, increaseoverlap, n, is, ov); in MatIncreaseOverlap()
7520 PetscCall(PetscLogEventEnd(MAT_IncreaseOverlap, mat, 0, 0, 0)); in MatIncreaseOverlap()
7521 PetscCall(MatGetBlockSizes(mat, &bs, &cbs)); in MatIncreaseOverlap()
7550 PetscErrorCode MatIncreaseOverlapSplit(Mat mat, PetscInt n, IS is[], PetscInt ov) in MatIncreaseOverlapSplit() argument
7555 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatIncreaseOverlapSplit()
7556 PetscValidType(mat, 1); in MatIncreaseOverlapSplit()
7562 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatIncreaseOverlapSplit()
7563 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatIncreaseOverlapSplit()
7564 MatCheckPreallocated(mat, 1); in MatIncreaseOverlapSplit()
7566 PetscCall(PetscLogEventBegin(MAT_IncreaseOverlap, mat, 0, 0, 0)); in MatIncreaseOverlapSplit()
7567 for (i = 0; i < n; i++) PetscCall(MatIncreaseOverlapSplit_Single(mat, &is[i], ov)); in MatIncreaseOverlapSplit()
7568 PetscCall(PetscLogEventEnd(MAT_IncreaseOverlap, mat, 0, 0, 0)); in MatIncreaseOverlapSplit()
7592 PetscErrorCode MatGetBlockSize(Mat mat, PetscInt *bs) in MatGetBlockSize() argument
7595 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatGetBlockSize()
7597 *bs = mat->rmap->bs; in MatGetBlockSize()
7623 PetscErrorCode MatGetBlockSizes(Mat mat, PetscInt *rbs, PetscInt *cbs) in MatGetBlockSizes() argument
7626 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatGetBlockSizes()
7629 if (rbs) *rbs = mat->rmap->bs; in MatGetBlockSizes()
7630 if (cbs) *cbs = mat->cmap->bs; in MatGetBlockSizes()
7654 PetscErrorCode MatSetBlockSize(Mat mat, PetscInt bs) in MatSetBlockSize() argument
7657 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatSetBlockSize()
7658 PetscValidLogicalCollectiveInt(mat, bs, 2); in MatSetBlockSize()
7659 PetscCall(MatSetBlockSizes(mat, bs, bs)); in MatSetBlockSize()
7666 Mat *mat; member
7700 PetscErrorCode MatComputeVariableBlockEnvelope(Mat mat) in MatComputeVariableBlockEnvelope() argument
7709 Mat AA = mat, A; in MatComputeVariableBlockEnvelope()
7719 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatComputeVariableBlockEnvelope()
7720 PetscCall(MatIsSymmetricKnown(mat, &set, &flag)); in MatComputeVariableBlockEnvelope()
7723 PetscCall(MatTranspose(mat, MAT_INITIAL_MATRIX, &AA)); in MatComputeVariableBlockEnvelope()
7724 PetscCall(MatAXPY(AA, 1.0, mat, DIFFERENT_NONZERO_PATTERN)); in MatComputeVariableBlockEnvelope()
7730 PetscCall(MatGetLocalSize(mat, &n, NULL)); in MatComputeVariableBlockEnvelope()
7731 PetscCall(PetscObjectGetNewTag((PetscObject)mat, &tag)); in MatComputeVariableBlockEnvelope()
7732 PetscCall(PetscObjectGetComm((PetscObject)mat, &comm)); in MatComputeVariableBlockEnvelope()
7742 PetscCall(MatGetOwnershipRange(mat, &rstart, NULL)); in MatComputeVariableBlockEnvelope()
7762 PetscCall(MatGetNonzeroState(mat, &edata->nonzerostate)); in MatComputeVariableBlockEnvelope()
7769 PetscCall(MatCreate(PetscObjectComm((PetscObject)mat), &edata->C)); in MatComputeVariableBlockEnvelope()
7770 PetscCall(MatSetSizes(edata->C, mat->rmap->n, mat->cmap->n, mat->rmap->N, mat->cmap->N)); in MatComputeVariableBlockEnvelope()
7771 PetscCall(MatSetBlockSizesFromMats(edata->C, mat, mat)); in MatComputeVariableBlockEnvelope()
7787 PetscCallMPI(MPI_Scan(&cnt, &sc, 1, MPIU_INT, MPI_SUM, PetscObjectComm((PetscObject)mat))); in MatComputeVariableBlockEnvelope()
7789 …PetscCall(VecCreateMPI(PetscObjectComm((PetscObject)mat), 2 * mat->rmap->n, 2 * mat->rmap->N, &par… in MatComputeVariableBlockEnvelope()
7797 PetscCall(MatGetOwnershipRangeColumn(mat, &cstart, &cend)); in MatComputeVariableBlockEnvelope()
7798 PetscCall(PetscMalloc2(mat->rmap->n, &diag, mat->rmap->n, &odiag)); in MatComputeVariableBlockEnvelope()
7801 PetscCall(MatGetSize(mat, NULL, &n)); in MatComputeVariableBlockEnvelope()
7802 for (PetscInt i = 0; i < mat->rmap->n; i++) { in MatComputeVariableBlockEnvelope()
7829 PetscCall(MatXAIJSetPreallocation(edata->C, mat->rmap->bs, diag, odiag, NULL, NULL)); in MatComputeVariableBlockEnvelope()
7836 PetscCall(PetscObjectCompose((PetscObject)mat, "EnvelopeData", (PetscObject)container)); in MatComputeVariableBlockEnvelope()
7877 …PetscCall(MatCreateSubMatrices(A, edata->n, edata->is, edata->is, MAT_INITIAL_MATRIX, &edata->mat)… in MatInvertVariableBlockEnvelope()
7884 PetscCall(MatConvert(edata->mat[i], MATSEQDENSE, MAT_INITIAL_MATRIX, &D)); in MatInvertVariableBlockEnvelope()
7891 PetscCall(MatDestroySubMatrices(edata->n, &edata->mat)); in MatInvertVariableBlockEnvelope()
7917 PetscErrorCode MatSetVariableBlockSizes(Mat mat, PetscInt nblocks, const PetscInt bsizes[]) in MatSetVariableBlockSizes() argument
7922 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatSetVariableBlockSizes()
7923 PetscCall(MatGetLocalSize(mat, &nlocal, NULL)); in MatSetVariableBlockSizes()
7927 PetscCall(PetscFree(mat->bsizes)); in MatSetVariableBlockSizes()
7928 mat->nblocks = nblocks; in MatSetVariableBlockSizes()
7929 PetscCall(PetscMalloc1(nblocks, &mat->bsizes)); in MatSetVariableBlockSizes()
7930 PetscCall(PetscArraycpy(mat->bsizes, bsizes, nblocks)); in MatSetVariableBlockSizes()
7950 PetscErrorCode MatGetVariableBlockSizes(Mat mat, PetscInt *nblocks, const PetscInt *bsizes[]) in MatGetVariableBlockSizes() argument
7953 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatGetVariableBlockSizes()
7954 if (nblocks) *nblocks = mat->nblocks; in MatGetVariableBlockSizes()
7955 if (bsizes) *bsizes = mat->bsizes; in MatGetVariableBlockSizes()
8070 PetscErrorCode MatSetBlockSizes(Mat mat, PetscInt rbs, PetscInt cbs) in MatSetBlockSizes() argument
8073 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatSetBlockSizes()
8074 PetscValidLogicalCollectiveInt(mat, rbs, 2); in MatSetBlockSizes()
8075 PetscValidLogicalCollectiveInt(mat, cbs, 3); in MatSetBlockSizes()
8076 PetscTryTypeMethod(mat, setblocksizes, rbs, cbs); in MatSetBlockSizes()
8077 if (mat->rmap->refcnt) { in MatSetBlockSizes()
8081 PetscCall(PetscLayoutDuplicate(mat->rmap, &nmap)); in MatSetBlockSizes()
8082 if (mat->rmap->mapping) PetscCall(ISLocalToGlobalMappingDuplicate(mat->rmap->mapping, &l2g)); in MatSetBlockSizes()
8083 PetscCall(PetscLayoutDestroy(&mat->rmap)); in MatSetBlockSizes()
8084 mat->rmap = nmap; in MatSetBlockSizes()
8085 mat->rmap->mapping = l2g; in MatSetBlockSizes()
8087 if (mat->cmap->refcnt) { in MatSetBlockSizes()
8091 PetscCall(PetscLayoutDuplicate(mat->cmap, &nmap)); in MatSetBlockSizes()
8092 if (mat->cmap->mapping) PetscCall(ISLocalToGlobalMappingDuplicate(mat->cmap->mapping, &l2g)); in MatSetBlockSizes()
8093 PetscCall(PetscLayoutDestroy(&mat->cmap)); in MatSetBlockSizes()
8094 mat->cmap = nmap; in MatSetBlockSizes()
8095 mat->cmap->mapping = l2g; in MatSetBlockSizes()
8097 PetscCall(PetscLayoutSetBlockSize(mat->rmap, rbs)); in MatSetBlockSizes()
8098 PetscCall(PetscLayoutSetBlockSize(mat->cmap, cbs)); in MatSetBlockSizes()
8116 PetscErrorCode MatSetBlockSizesFromMats(Mat mat, Mat fromRow, Mat fromCol) in MatSetBlockSizesFromMats() argument
8119 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatSetBlockSizesFromMats()
8122 PetscTryTypeMethod(mat, setblocksizes, fromRow->rmap->bs, fromCol->cmap->bs); in MatSetBlockSizesFromMats()
8123 PetscCall(PetscLayoutSetBlockSize(mat->rmap, fromRow->rmap->bs)); in MatSetBlockSizesFromMats()
8124 PetscCall(PetscLayoutSetBlockSize(mat->cmap, fromCol->cmap->bs)); in MatSetBlockSizesFromMats()
8145 PetscErrorCode MatResidual(Mat mat, Vec b, Vec x, Vec r) in MatResidual() argument
8148 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatResidual()
8152 PetscValidType(mat, 1); in MatResidual()
8153 MatCheckPreallocated(mat, 1); in MatResidual()
8154 PetscCall(PetscLogEventBegin(MAT_Residual, mat, 0, 0, 0)); in MatResidual()
8155 if (!mat->ops->residual) { in MatResidual()
8156 PetscCall(MatMult(mat, x, r)); in MatResidual()
8159 PetscUseTypeMethod(mat, residual, b, x, r); in MatResidual()
8161 PetscCall(PetscLogEventEnd(MAT_Residual, mat, 0, 0, 0)); in MatResidual()
8202 PetscErrorCode MatGetRowIJ(Mat mat, PetscInt shift, PetscBool symmetric, PetscBool inodecompressed,… in MatGetRowIJ() argument
8205 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatGetRowIJ()
8206 PetscValidType(mat, 1); in MatGetRowIJ()
8211 MatCheckPreallocated(mat, 1); in MatGetRowIJ()
8212 if (!mat->ops->getrowij && done) *done = PETSC_FALSE; in MatGetRowIJ()
8215 PetscCall(PetscLogEventBegin(MAT_GetRowIJ, mat, 0, 0, 0)); in MatGetRowIJ()
8216 PetscUseTypeMethod(mat, getrowij, shift, symmetric, inodecompressed, n, ia, ja, done); in MatGetRowIJ()
8217 PetscCall(PetscLogEventEnd(MAT_GetRowIJ, mat, 0, 0, 0)); in MatGetRowIJ()
8246 PetscErrorCode MatGetColumnIJ(Mat mat, PetscInt shift, PetscBool symmetric, PetscBool inodecompress… in MatGetColumnIJ() argument
8249 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatGetColumnIJ()
8250 PetscValidType(mat, 1); in MatGetColumnIJ()
8255 MatCheckPreallocated(mat, 1); in MatGetColumnIJ()
8256 if (!mat->ops->getcolumnij) *done = PETSC_FALSE; in MatGetColumnIJ()
8259 PetscUseTypeMethod(mat, getcolumnij, shift, symmetric, inodecompressed, n, ia, ja, done); in MatGetColumnIJ()
8292 PetscErrorCode MatRestoreRowIJ(Mat mat, PetscInt shift, PetscBool symmetric, PetscBool inodecompres… in MatRestoreRowIJ() argument
8295 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatRestoreRowIJ()
8296 PetscValidType(mat, 1); in MatRestoreRowIJ()
8300 MatCheckPreallocated(mat, 1); in MatRestoreRowIJ()
8302 if (!mat->ops->restorerowij && done) *done = PETSC_FALSE; in MatRestoreRowIJ()
8305 PetscUseTypeMethod(mat, restorerowij, shift, symmetric, inodecompressed, n, ia, ja, done); in MatRestoreRowIJ()
8336 PetscErrorCode MatRestoreColumnIJ(Mat mat, PetscInt shift, PetscBool symmetric, PetscBool inodecomp… in MatRestoreColumnIJ() argument
8339 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatRestoreColumnIJ()
8340 PetscValidType(mat, 1); in MatRestoreColumnIJ()
8344 MatCheckPreallocated(mat, 1); in MatRestoreColumnIJ()
8346 if (!mat->ops->restorecolumnij) *done = PETSC_FALSE; in MatRestoreColumnIJ()
8349 PetscUseTypeMethod(mat, restorecolumnij, shift, symmetric, inodecompressed, n, ia, ja, done); in MatRestoreColumnIJ()
8376 PetscErrorCode MatColoringPatch(Mat mat, PetscInt ncolors, PetscInt n, ISColoringValue colorarray[]… in MatColoringPatch() argument
8379 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatColoringPatch()
8380 PetscValidType(mat, 1); in MatColoringPatch()
8383 MatCheckPreallocated(mat, 1); in MatColoringPatch()
8385 if (!mat->ops->coloringpatch) { in MatColoringPatch()
8386 …PetscCall(ISColoringCreate(PetscObjectComm((PetscObject)mat), ncolors, n, colorarray, PETSC_OWN_PO… in MatColoringPatch()
8388 PetscUseTypeMethod(mat, coloringpatch, ncolors, n, colorarray, iscoloring); in MatColoringPatch()
8428 PetscErrorCode MatSetUnfactored(Mat mat) in MatSetUnfactored() argument
8431 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatSetUnfactored()
8432 PetscValidType(mat, 1); in MatSetUnfactored()
8433 MatCheckPreallocated(mat, 1); in MatSetUnfactored()
8434 mat->factortype = MAT_FACTOR_NONE; in MatSetUnfactored()
8435 if (!mat->ops->setunfactored) PetscFunctionReturn(PETSC_SUCCESS); in MatSetUnfactored()
8436 PetscUseTypeMethod(mat, setunfactored); in MatSetUnfactored()
8512 PetscErrorCode MatCreateSubMatrix(Mat mat, IS isrow, IS iscol, MatReuse cll, Mat *newmat) in MatCreateSubMatrix() argument
8520 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatCreateSubMatrix()
8525 PetscValidType(mat, 1); in MatCreateSubMatrix()
8526 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatCreateSubMatrix()
8527 …PetscCheck(cll != MAT_IGNORE_MATRIX, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, … in MatCreateSubMatrix()
8528 …PetscCheck(cll != MAT_INPLACE_MATRIX, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE,… in MatCreateSubMatrix()
8530 MatCheckPreallocated(mat, 1); in MatCreateSubMatrix()
8531 PetscCallMPI(MPI_Comm_size(PetscObjectComm((PetscObject)mat), &size)); in MatCreateSubMatrix()
8541 PetscCall(MatGetOwnershipRange(mat, &rstart, &rend)); in MatCreateSubMatrix()
8548 …(MPIU_Allreduce(&grabentirematrix, &grab, 1, MPI_INT, MPI_MIN, PetscObjectComm((PetscObject)mat))); in MatCreateSubMatrix()
8550 PetscCall(PetscInfo(mat, "Getting entire matrix as submatrix\n")); in MatCreateSubMatrix()
8552 *newmat = mat; in MatCreateSubMatrix()
8553 PetscCall(PetscObjectReference((PetscObject)mat)); in MatCreateSubMatrix()
8560 …PetscCall(ISCreateStride(PetscObjectComm((PetscObject)mat), mat->cmap->n, mat->cmap->rstart, 1, &i… in MatCreateSubMatrix()
8566 …if (mat->ops->createsubmatrices && !mat->ops->createsubmatrix && size == 1 && cll == MAT_REUSE_MAT… in MatCreateSubMatrix()
8567 PetscCall(MatCreateSubMatrices(mat, 1, &isrow, &iscoltmp, MAT_REUSE_MATRIX, &newmat)); in MatCreateSubMatrix()
8569 } else if (mat->ops->createsubmatrices && !mat->ops->createsubmatrix && size == 1) { in MatCreateSubMatrix()
8570 PetscCall(MatCreateSubMatrices(mat, 1, &isrow, &iscoltmp, MAT_INITIAL_MATRIX, &local)); in MatCreateSubMatrix()
8574 } else if (!mat->ops->createsubmatrix) { in MatCreateSubMatrix()
8576 PetscCall(PetscLogEventBegin(MAT_CreateSubMat, mat, 0, 0, 0)); in MatCreateSubMatrix()
8579 PetscCall(MatCreateSubMatrixVirtual(mat, isrow, iscoltmp, newmat)); in MatCreateSubMatrix()
8582 PetscCall(MatSubMatrixVirtualUpdate(*newmat, mat, isrow, iscoltmp)); in MatCreateSubMatrix()
8585 …SETERRQ(PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_OUTOFRANGE, "Invalid MatReuse, must be ei… in MatCreateSubMatrix()
8587 PetscCall(PetscLogEventEnd(MAT_CreateSubMat, mat, 0, 0, 0)); in MatCreateSubMatrix()
8591 PetscCall(PetscLogEventBegin(MAT_CreateSubMat, mat, 0, 0, 0)); in MatCreateSubMatrix()
8592 PetscUseTypeMethod(mat, createsubmatrix, isrow, iscoltmp, cll, newmat); in MatCreateSubMatrix()
8593 PetscCall(PetscLogEventEnd(MAT_CreateSubMat, mat, 0, 0, 0)); in MatCreateSubMatrix()
8598 if (flg) PetscCall(MatPropagateSymmetryOptions(mat, *newmat)); in MatCreateSubMatrix()
8602 if (!iscol || isrow == iscol) PetscCall(MatSelectVariableBlockSizes(*newmat, mat, isrow)); in MatCreateSubMatrix()
8666 PetscErrorCode MatStashSetInitialSize(Mat mat, PetscInt size, PetscInt bsize) in MatStashSetInitialSize() argument
8669 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatStashSetInitialSize()
8670 PetscValidType(mat, 1); in MatStashSetInitialSize()
8671 PetscCall(MatStashSetInitialSize_Private(&mat->stash, size)); in MatStashSetInitialSize()
8672 PetscCall(MatStashSetInitialSize_Private(&mat->bstash, bsize)); in MatStashSetInitialSize()
8943 PetscErrorCode MatGetNullSpace(Mat mat, MatNullSpace *nullsp) in MatGetNullSpace() argument
8946 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatGetNullSpace()
8948 *nullsp = (mat->symmetric == PETSC_BOOL3_TRUE && !mat->nullsp) ? mat->transnullsp : mat->nullsp; in MatGetNullSpace()
8972 PetscErrorCode MatGetNullSpaces(PetscInt n, Mat mat[], MatNullSpace *nullsp[]) in MatGetNullSpaces() argument
8976 PetscAssertPointer(mat, 2); in MatGetNullSpaces()
8981 PetscValidHeaderSpecific(mat[i], MAT_CLASSID, 2); in MatGetNullSpaces()
8982 (*nullsp)[i] = mat[i]->nullsp; in MatGetNullSpaces()
8984 (*nullsp)[n + i] = mat[i]->nearnullsp; in MatGetNullSpaces()
8986 (*nullsp)[2 * n + i] = mat[i]->transnullsp; in MatGetNullSpaces()
9010 PetscErrorCode MatRestoreNullSpaces(PetscInt n, Mat mat[], MatNullSpace *nullsp[]) in MatRestoreNullSpaces() argument
9014 PetscAssertPointer(mat, 2); in MatRestoreNullSpaces()
9019 PetscValidHeaderSpecific(mat[i], MAT_CLASSID, 2); in MatRestoreNullSpaces()
9020 PetscCall(MatSetNullSpace(mat[i], (*nullsp)[i])); in MatRestoreNullSpaces()
9022 PetscCall(MatSetNearNullSpace(mat[i], (*nullsp)[n + i])); in MatRestoreNullSpaces()
9024 PetscCall(MatSetTransposeNullSpace(mat[i], (*nullsp)[2 * n + i])); in MatRestoreNullSpaces()
9066 PetscErrorCode MatSetNullSpace(Mat mat, MatNullSpace nullsp) in MatSetNullSpace() argument
9069 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatSetNullSpace()
9072 PetscCall(MatNullSpaceDestroy(&mat->nullsp)); in MatSetNullSpace()
9073 mat->nullsp = nullsp; in MatSetNullSpace()
9074 if (mat->symmetric == PETSC_BOOL3_TRUE) PetscCall(MatSetTransposeNullSpace(mat, nullsp)); in MatSetNullSpace()
9091 PetscErrorCode MatGetTransposeNullSpace(Mat mat, MatNullSpace *nullsp) in MatGetTransposeNullSpace() argument
9094 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatGetTransposeNullSpace()
9095 PetscValidType(mat, 1); in MatGetTransposeNullSpace()
9097 …*nullsp = (mat->symmetric == PETSC_BOOL3_TRUE && !mat->transnullsp) ? mat->nullsp : mat->transnull… in MatGetTransposeNullSpace()
9119 PetscErrorCode MatSetTransposeNullSpace(Mat mat, MatNullSpace nullsp) in MatSetTransposeNullSpace() argument
9122 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatSetTransposeNullSpace()
9125 PetscCall(MatNullSpaceDestroy(&mat->transnullsp)); in MatSetTransposeNullSpace()
9126 mat->transnullsp = nullsp; in MatSetTransposeNullSpace()
9149 PetscErrorCode MatSetNearNullSpace(Mat mat, MatNullSpace nullsp) in MatSetNearNullSpace() argument
9152 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatSetNearNullSpace()
9153 PetscValidType(mat, 1); in MatSetNearNullSpace()
9155 MatCheckPreallocated(mat, 1); in MatSetNearNullSpace()
9157 PetscCall(MatNullSpaceDestroy(&mat->nearnullsp)); in MatSetNearNullSpace()
9158 mat->nearnullsp = nullsp; in MatSetNearNullSpace()
9177 PetscErrorCode MatGetNearNullSpace(Mat mat, MatNullSpace *nullsp) in MatGetNearNullSpace() argument
9180 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatGetNearNullSpace()
9181 PetscValidType(mat, 1); in MatGetNearNullSpace()
9183 MatCheckPreallocated(mat, 1); in MatGetNearNullSpace()
9184 *nullsp = mat->nearnullsp; in MatGetNearNullSpace()
9213 PetscErrorCode MatICCFactor(Mat mat, IS row, const MatFactorInfo *info) in MatICCFactor() argument
9216 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatICCFactor()
9217 PetscValidType(mat, 1); in MatICCFactor()
9220 …PetscCheck(mat->rmap->N == mat->cmap->N, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONG, "… in MatICCFactor()
9221 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatICCFactor()
9222 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatICCFactor()
9223 MatCheckPreallocated(mat, 1); in MatICCFactor()
9224 PetscUseTypeMethod(mat, iccfactor, row, info); in MatICCFactor()
9225 PetscCall(PetscObjectStateIncrease((PetscObject)mat)); in MatICCFactor()
9248 PetscErrorCode MatDiagonalScaleLocal(Mat mat, Vec diag) in MatDiagonalScaleLocal() argument
9253 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatDiagonalScaleLocal()
9255 PetscValidType(mat, 1); in MatDiagonalScaleLocal()
9257 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Matrix mu… in MatDiagonalScaleLocal()
9258 PetscCall(PetscLogEventBegin(MAT_Scale, mat, 0, 0, 0)); in MatDiagonalScaleLocal()
9259 PetscCallMPI(MPI_Comm_size(PetscObjectComm((PetscObject)mat), &size)); in MatDiagonalScaleLocal()
9263 PetscCall(MatGetSize(mat, NULL, &m)); in MatDiagonalScaleLocal()
9265 PetscCall(MatDiagonalScale(mat, NULL, diag)); in MatDiagonalScaleLocal()
9267 PetscUseMethod(mat, "MatDiagonalScaleLocal_C", (Mat, Vec), (mat, diag)); in MatDiagonalScaleLocal()
9269 PetscCall(PetscLogEventEnd(MAT_Scale, mat, 0, 0, 0)); in MatDiagonalScaleLocal()
9270 PetscCall(PetscObjectStateIncrease((PetscObject)mat)); in MatDiagonalScaleLocal()
9294 PetscErrorCode MatGetInertia(Mat mat, PetscInt *nneg, PetscInt *nzero, PetscInt *npos) in MatGetInertia() argument
9297 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatGetInertia()
9298 PetscValidType(mat, 1); in MatGetInertia()
9299 …PetscCheck(mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Unfactor… in MatGetInertia()
9300 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Numeric f… in MatGetInertia()
9301 PetscUseTypeMethod(mat, getinertia, nneg, nzero, npos); in MatGetInertia()
9325 PetscErrorCode MatSolves(Mat mat, Vecs b, Vecs x) in MatSolves() argument
9328 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatSolves()
9329 PetscValidType(mat, 1); in MatSolves()
9330 …PetscCheck(x != b, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_IDN, "x and b must be differen… in MatSolves()
9331 …PetscCheck(mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Unfactor… in MatSolves()
9332 if (!mat->rmap->N && !mat->cmap->N) PetscFunctionReturn(PETSC_SUCCESS); in MatSolves()
9334 MatCheckPreallocated(mat, 1); in MatSolves()
9335 PetscCall(PetscLogEventBegin(MAT_Solves, mat, 0, 0, 0)); in MatSolves()
9336 PetscUseTypeMethod(mat, solves, b, x); in MatSolves()
9337 PetscCall(PetscLogEventEnd(MAT_Solves, mat, 0, 0, 0)); in MatSolves()
9623 PetscErrorCode MatStashGetInfo(Mat mat, PetscInt *nstash, PetscInt *reallocs, PetscInt *bnstash, Pe… in MatStashGetInfo() argument
9626 PetscCall(MatStashGetInfo_Private(&mat->stash, nstash, reallocs)); in MatStashGetInfo()
9627 PetscCall(MatStashGetInfo_Private(&mat->bstash, bnstash, breallocs)); in MatStashGetInfo()
9653 PetscErrorCode MatCreateVecs(Mat mat, Vec *right, Vec *left) in MatCreateVecs() argument
9656 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatCreateVecs()
9657 PetscValidType(mat, 1); in MatCreateVecs()
9658 if (mat->ops->getvecs) { in MatCreateVecs()
9659 PetscUseTypeMethod(mat, getvecs, right, left); in MatCreateVecs()
9662 …PetscCheck(mat->cmap->n >= 0, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "PetscL… in MatCreateVecs()
9663 PetscCall(VecCreateWithLayout_Private(mat->cmap, right)); in MatCreateVecs()
9664 PetscCall(VecSetType(*right, mat->defaultvectype)); in MatCreateVecs()
9666 if (mat->boundtocpu && mat->bindingpropagates) { in MatCreateVecs()
9673 …PetscCheck(mat->rmap->n >= 0, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "PetscL… in MatCreateVecs()
9674 PetscCall(VecCreateWithLayout_Private(mat->rmap, left)); in MatCreateVecs()
9675 PetscCall(VecSetType(*left, mat->defaultvectype)); in MatCreateVecs()
9677 if (mat->boundtocpu && mat->bindingpropagates) { in MatCreateVecs()
9734 PetscErrorCode MatFactorSetSchurIS(Mat mat, IS is) in MatFactorSetSchurIS() argument
9739 PetscValidType(mat, 1); in MatFactorSetSchurIS()
9740 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatFactorSetSchurIS()
9743 PetscCheckSameComm(mat, 1, is, 2); in MatFactorSetSchurIS()
9744 …PetscCheck(mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Only for… in MatFactorSetSchurIS()
9745 PetscCall(PetscObjectQueryFunction((PetscObject)mat, "MatFactorSetSchurIS_C", &f)); in MatFactorSetSchurIS()
9746 …PetscCheck(f, PetscObjectComm((PetscObject)mat), PETSC_ERR_SUP, "The selected MatSolverType does n… in MatFactorSetSchurIS()
9747 PetscCall(MatDestroy(&mat->schur)); in MatFactorSetSchurIS()
9748 PetscCall((*f)(mat, is)); in MatFactorSetSchurIS()
9749 …PetscCheck(mat->schur, PetscObjectComm((PetscObject)mat), PETSC_ERR_PLIB, "Schur complement has no… in MatFactorSetSchurIS()
10472 PetscErrorCode MatCreateRedundantMatrix(Mat mat, PetscInt nsubcomm, MPI_Comm subcomm, MatReuse reus… in MatCreateRedundantMatrix() argument
10476 …PetscInt mloc_sub, nloc_sub, rstart, rend, M = mat->rmap->N, N = mat->cmap->N, bs = mat->rma… in MatCreateRedundantMatrix()
10485 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatCreateRedundantMatrix()
10491 PetscCallMPI(MPI_Comm_size(PetscObjectComm((PetscObject)mat), &size)); in MatCreateRedundantMatrix()
10494 PetscCall(MatDuplicate(mat, MAT_COPY_VALUES, matredundant)); in MatCreateRedundantMatrix()
10496 …PetscCheck(*matredundant != mat, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONG, "MAT_REUSE_MATRIX means reu… in MatCreateRedundantMatrix()
10497 PetscCall(MatCopy(mat, *matredundant, SAME_NONZERO_PATTERN)); in MatCreateRedundantMatrix()
10502 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatCreateRedundantMatrix()
10503 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatCreateRedundantMatrix()
10504 MatCheckPreallocated(mat, 1); in MatCreateRedundantMatrix()
10506 PetscCall(PetscLogEventBegin(MAT_RedundantMat, mat, 0, 0, 0)); in MatCreateRedundantMatrix()
10509 PetscCall(PetscObjectGetComm((PetscObject)mat, &comm)); in MatCreateRedundantMatrix()
10539 …PetscCheck(*matredundant != mat, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONG, "MAT_REUSE_MATRIX means reu… in MatCreateRedundantMatrix()
10547 PetscCall(MatCreateSubMatrices(mat, 1, &isrow, &iscol, reuse, &matseq)); in MatCreateRedundantMatrix()
10573 PetscCall(PetscLogEventEnd(MAT_RedundantMat, mat, 0, 0, 0)); in MatCreateRedundantMatrix()
10609 PetscErrorCode MatGetMultiProcBlock(Mat mat, MPI_Comm subComm, MatReuse scall, Mat *subMat) in MatGetMultiProcBlock() argument
10614 PetscCallMPI(MPI_Comm_size(PetscObjectComm((PetscObject)mat), &commsize)); in MatGetMultiProcBlock()
10616 …PetscCheck(subCommSize <= commsize, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_OUTOFRANGE, "… in MatGetMultiProcBlock()
10618 …PetscCheck(scall != MAT_REUSE_MATRIX || *subMat != mat, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONG, "MAT… in MatGetMultiProcBlock()
10619 PetscCall(PetscLogEventBegin(MAT_GetMultiProcBlock, mat, 0, 0, 0)); in MatGetMultiProcBlock()
10620 PetscUseTypeMethod(mat, getmultiprocblock, subComm, scall, subMat); in MatGetMultiProcBlock()
10621 PetscCall(PetscLogEventEnd(MAT_GetMultiProcBlock, mat, 0, 0, 0)); in MatGetMultiProcBlock()
10654 PetscErrorCode MatGetLocalSubMatrix(Mat mat, IS isrow, IS iscol, Mat *submat) in MatGetLocalSubMatrix() argument
10657 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatGetLocalSubMatrix()
10662 …PetscCheck(mat->rmap->mapping, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Matri… in MatGetLocalSubMatrix()
10664 if (mat->ops->getlocalsubmatrix) { in MatGetLocalSubMatrix()
10665 PetscUseTypeMethod(mat, getlocalsubmatrix, isrow, iscol, submat); in MatGetLocalSubMatrix()
10667 PetscCall(MatCreateLocalRef(mat, isrow, iscol, submat)); in MatGetLocalSubMatrix()
10669 (*submat)->assembled = mat->assembled; in MatGetLocalSubMatrix()
10688 PetscErrorCode MatRestoreLocalSubMatrix(Mat mat, IS isrow, IS iscol, Mat *submat) in MatRestoreLocalSubMatrix() argument
10691 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatRestoreLocalSubMatrix()
10698 if (mat->ops->restorelocalsubmatrix) { in MatRestoreLocalSubMatrix()
10699 PetscUseTypeMethod(mat, restorelocalsubmatrix, isrow, iscol, submat); in MatRestoreLocalSubMatrix()
10722 PetscErrorCode MatFindZeroDiagonals(Mat mat, IS *is) in MatFindZeroDiagonals() argument
10725 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatFindZeroDiagonals()
10726 PetscValidType(mat, 1); in MatFindZeroDiagonals()
10727 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatFindZeroDiagonals()
10728 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatFindZeroDiagonals()
10730 if (!mat->ops->findzerodiagonals) { in MatFindZeroDiagonals()
10736 PetscCall(MatCreateVecs(mat, &diag, NULL)); in MatFindZeroDiagonals()
10737 PetscCall(MatGetDiagonal(mat, diag)); in MatFindZeroDiagonals()
10738 PetscCall(MatGetOwnershipRange(mat, &rStart, &rEnd)); in MatFindZeroDiagonals()
10748 … PetscCall(ISCreateGeneral(PetscObjectComm((PetscObject)mat), nrow, rows, PETSC_OWN_POINTER, is)); in MatFindZeroDiagonals()
10750 PetscUseTypeMethod(mat, findzerodiagonals, is); in MatFindZeroDiagonals()
10770 PetscErrorCode MatFindOffBlockDiagonalEntries(Mat mat, IS *is) in MatFindOffBlockDiagonalEntries() argument
10773 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatFindOffBlockDiagonalEntries()
10774 PetscValidType(mat, 1); in MatFindOffBlockDiagonalEntries()
10775 …PetscCheck(mat->assembled, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for u… in MatFindOffBlockDiagonalEntries()
10776 …PetscCheck(!mat->factortype, PetscObjectComm((PetscObject)mat), PETSC_ERR_ARG_WRONGSTATE, "Not for… in MatFindOffBlockDiagonalEntries()
10778 PetscUseTypeMethod(mat, findoffblockdiagonalentries, is); in MatFindOffBlockDiagonalEntries()
10804 PetscErrorCode MatInvertBlockDiagonal(Mat mat, const PetscScalar *values[]) in MatInvertBlockDiagonal() argument
10807 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatInvertBlockDiagonal()
10808 …PetscCheck(mat->assembled, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONGSTATE, "Not for unassembled matrix"… in MatInvertBlockDiagonal()
10809 …PetscCheck(!mat->factortype, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONGSTATE, "Not for factored matrix"); in MatInvertBlockDiagonal()
10810 PetscUseTypeMethod(mat, invertblockdiagonal, values); in MatInvertBlockDiagonal()
10836 PetscErrorCode MatInvertVariableBlockDiagonal(Mat mat, PetscInt nblocks, const PetscInt bsizes[], P… in MatInvertVariableBlockDiagonal() argument
10839 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatInvertVariableBlockDiagonal()
10840 …PetscCheck(mat->assembled, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONGSTATE, "Not for unassembled matrix"… in MatInvertVariableBlockDiagonal()
10841 …PetscCheck(!mat->factortype, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONGSTATE, "Not for factored matrix"); in MatInvertVariableBlockDiagonal()
10842 PetscUseTypeMethod(mat, invertvariableblockdiagonal, nblocks, bsizes, values); in MatInvertVariableBlockDiagonal()
11007 PetscErrorCode MatTransposeColoringCreate(Mat mat, ISColoring iscoloring, MatTransposeColoring *col… in MatTransposeColoringCreate() argument
11015 PetscCall(PetscLogEventBegin(MAT_TransposeColoringCreate, mat, 0, 0, 0)); in MatTransposeColoringCreate()
11016 PetscCall(PetscObjectGetComm((PetscObject)mat, &comm)); in MatTransposeColoringCreate()
11019 PetscUseTypeMethod(mat, transposecoloringcreate, iscoloring, c); in MatTransposeColoringCreate()
11021 PetscCall(PetscLogEventEnd(MAT_TransposeColoringCreate, mat, 0, 0, 0)); in MatTransposeColoringCreate()
11049 PetscErrorCode MatGetNonzeroState(Mat mat, PetscObjectState *state) in MatGetNonzeroState() argument
11052 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatGetNonzeroState()
11053 *state = mat->nonzerostate; in MatGetNonzeroState()
11247 PetscErrorCode MatSetOperation(Mat mat, MatOperation op, PetscErrorCodeFn *f) in MatSetOperation() argument
11250 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatSetOperation()
11251 …if (op == MATOP_VIEW && !mat->ops->viewnative && f != (PetscErrorCodeFn *)mat->ops->view) mat->ops… in MatSetOperation()
11252 (((PetscErrorCodeFn **)mat->ops)[op]) = f; in MatSetOperation()
11287 PetscErrorCode MatGetOperation(Mat mat, MatOperation op, PetscErrorCodeFn **f) in MatGetOperation() argument
11290 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatGetOperation()
11291 *f = (((PetscErrorCodeFn **)mat->ops)[op]); in MatGetOperation()
11314 PetscErrorCode MatHasOperation(Mat mat, MatOperation op, PetscBool *has) in MatHasOperation() argument
11317 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatHasOperation()
11319 if (mat->ops->hasoperation) { in MatHasOperation()
11320 PetscUseTypeMethod(mat, hasoperation, op, has); in MatHasOperation()
11322 if (((void **)mat->ops)[op]) *has = PETSC_TRUE; in MatHasOperation()
11328 PetscCallMPI(MPI_Comm_size(PetscObjectComm((PetscObject)mat), &size)); in MatHasOperation()
11329 if (size == 1) PetscCall(MatHasOperation(mat, MATOP_CREATE_SUBMATRICES, has)); in MatHasOperation()
11351 PetscErrorCode MatHasCongruentLayouts(Mat mat, PetscBool *cong) in MatHasCongruentLayouts() argument
11354 PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); in MatHasCongruentLayouts()
11355 PetscValidType(mat, 1); in MatHasCongruentLayouts()
11357 if (!mat->rmap || !mat->cmap) { in MatHasCongruentLayouts()
11358 *cong = mat->rmap == mat->cmap ? PETSC_TRUE : PETSC_FALSE; in MatHasCongruentLayouts()
11361 if (mat->congruentlayouts == PETSC_DECIDE) { /* first time we compare rows and cols layouts */ in MatHasCongruentLayouts()
11362 PetscCall(PetscLayoutSetUp(mat->rmap)); in MatHasCongruentLayouts()
11363 PetscCall(PetscLayoutSetUp(mat->cmap)); in MatHasCongruentLayouts()
11364 PetscCall(PetscLayoutCompare(mat->rmap, mat->cmap, cong)); in MatHasCongruentLayouts()
11365 if (*cong) mat->congruentlayouts = 1; in MatHasCongruentLayouts()
11366 else mat->congruentlayouts = 0; in MatHasCongruentLayouts()
11367 } else *cong = mat->congruentlayouts ? PETSC_TRUE : PETSC_FALSE; in MatHasCongruentLayouts()