Lines Matching refs:bA

15   Mat_Nest *bA = (Mat_Nest *)A->data;  in MatNestGetSizes_Private()  local
20 for (i = 0; i < bA->nr; i++) { /* rows */ in MatNestGetSizes_Private()
22 PetscCall(ISGetLocalSize(bA->isglobal.row[i], &sm)); in MatNestGetSizes_Private()
23 PetscCall(ISGetSize(bA->isglobal.row[i], &sM)); in MatNestGetSizes_Private()
27 for (j = 0; j < bA->nc; j++) { /* cols */ in MatNestGetSizes_Private()
29 PetscCall(ISGetLocalSize(bA->isglobal.col[j], &sn)); in MatNestGetSizes_Private()
30 PetscCall(ISGetSize(bA->isglobal.col[j], &sN)); in MatNestGetSizes_Private()
40 Mat_Nest *bA = (Mat_Nest *)A->data; in MatMult_Nest() local
41 Vec *bx = bA->right, *by = bA->left; in MatMult_Nest()
42 PetscInt i, j, nr = bA->nr, nc = bA->nc; in MatMult_Nest()
45 for (i = 0; i < nr; i++) PetscCall(VecGetSubVector(y, bA->isglobal.row[i], &by[i])); in MatMult_Nest()
46 for (i = 0; i < nc; i++) PetscCall(VecGetSubVector(x, bA->isglobal.col[i], &bx[i])); in MatMult_Nest()
50 if (!bA->m[i][j]) continue; in MatMult_Nest()
52 PetscCall(MatMultAdd(bA->m[i][j], bx[j], by[i], by[i])); in MatMult_Nest()
55 for (i = 0; i < nr; i++) PetscCall(VecRestoreSubVector(y, bA->isglobal.row[i], &by[i])); in MatMult_Nest()
56 for (i = 0; i < nc; i++) PetscCall(VecRestoreSubVector(x, bA->isglobal.col[i], &bx[i])); in MatMult_Nest()
62 Mat_Nest *bA = (Mat_Nest *)A->data; in MatMultAdd_Nest() local
63 Vec *bx = bA->right, *bz = bA->left; in MatMultAdd_Nest()
64 PetscInt i, j, nr = bA->nr, nc = bA->nc; in MatMultAdd_Nest()
67 for (i = 0; i < nr; i++) PetscCall(VecGetSubVector(z, bA->isglobal.row[i], &bz[i])); in MatMultAdd_Nest()
68 for (i = 0; i < nc; i++) PetscCall(VecGetSubVector(x, bA->isglobal.col[i], &bx[i])); in MatMultAdd_Nest()
72 PetscCall(VecGetSubVector(y, bA->isglobal.row[i], &by)); in MatMultAdd_Nest()
74 PetscCall(VecRestoreSubVector(y, bA->isglobal.row[i], &by)); in MatMultAdd_Nest()
77 if (!bA->m[i][j]) continue; in MatMultAdd_Nest()
79 PetscCall(MatMultAdd(bA->m[i][j], bx[j], bz[i], bz[i])); in MatMultAdd_Nest()
82 for (i = 0; i < nr; i++) PetscCall(VecRestoreSubVector(z, bA->isglobal.row[i], &bz[i])); in MatMultAdd_Nest()
83 for (i = 0; i < nc; i++) PetscCall(VecRestoreSubVector(x, bA->isglobal.col[i], &bx[i])); in MatMultAdd_Nest()
95 Mat_Nest *bA; in MatProductNumeric_Nest_Dense() local
115 bA = (Mat_Nest *)A->data; in MatProductNumeric_Nest_Dense()
116 nr = bA->nr; in MatProductNumeric_Nest_Dense()
117 nc = bA->nc; in MatProductNumeric_Nest_Dense()
124 PetscCall(ISGetSize(bA->isglobal.row[i], &M)); in MatProductNumeric_Nest_Dense()
128 if (!bA->m[i][j]) continue; in MatProductNumeric_Nest_Dense()
129 PetscCall(ISGetSize(bA->isglobal.col[j], &M)); in MatProductNumeric_Nest_Dense()
170 Mat_Nest *bA; in MatProductSymbolic_Nest_Dense() local
185 bA = (Mat_Nest *)A->data; in MatProductSymbolic_Nest_Dense()
186 nr = bA->nr; in MatProductSymbolic_Nest_Dense()
187 nc = bA->nc; in MatProductSymbolic_Nest_Dense()
211 PetscCall(ISGetLocalSize(bA->isglobal.row[i], contents->dm + i + 1)); in MatProductSymbolic_Nest_Dense()
216 PetscCall(ISGetLocalSize(bA->isglobal.col[i], contents->dn + i + 1)); in MatProductSymbolic_Nest_Dense()
225 PetscCall(ISGetSize(bA->isglobal.col[j], &M)); in MatProductSymbolic_Nest_Dense()
229 if (!bA->m[i][j]) continue; in MatProductSymbolic_Nest_Dense()
232 PetscCall(MatProductCreate(bA->m[i][j], viewB, NULL, &contents->workC[i * nc + j])); in MatProductSymbolic_Nest_Dense()
263 Mat_Nest *bA = (Mat_Nest *)A->data; in MatMultTransposeKernel_Nest() local
264 Vec *bx = bA->left, *by = bA->right; in MatMultTransposeKernel_Nest()
265 PetscInt i, j, nr = bA->nr, nc = bA->nc; in MatMultTransposeKernel_Nest()
268 for (i = 0; i < nr; i++) PetscCall(VecGetSubVector(x, bA->isglobal.row[i], &bx[i])); in MatMultTransposeKernel_Nest()
269 for (i = 0; i < nc; i++) PetscCall(VecGetSubVector(y, bA->isglobal.col[i], &by[i])); in MatMultTransposeKernel_Nest()
273 if (!bA->m[i][j]) continue; in MatMultTransposeKernel_Nest()
274 …if (herm) PetscCall(MatMultHermitianTransposeAdd(bA->m[i][j], bx[i], by[j], by[j])); /* y[j] <- y[… in MatMultTransposeKernel_Nest()
275 …else PetscCall(MatMultTransposeAdd(bA->m[i][j], bx[i], by[j], by[j])); /* y[j] <- y[… in MatMultTransposeKernel_Nest()
278 for (i = 0; i < nr; i++) PetscCall(VecRestoreSubVector(x, bA->isglobal.row[i], &bx[i])); in MatMultTransposeKernel_Nest()
279 for (i = 0; i < nc; i++) PetscCall(VecRestoreSubVector(y, bA->isglobal.col[i], &by[i])); in MatMultTransposeKernel_Nest()
299 Mat_Nest *bA = (Mat_Nest *)A->data; in MatMultTransposeAddKernel_Nest() local
300 Vec *bx = bA->left, *bz = bA->right; in MatMultTransposeAddKernel_Nest()
301 PetscInt i, j, nr = bA->nr, nc = bA->nc; in MatMultTransposeAddKernel_Nest()
304 for (i = 0; i < nr; i++) PetscCall(VecGetSubVector(x, bA->isglobal.row[i], &bx[i])); in MatMultTransposeAddKernel_Nest()
305 for (i = 0; i < nc; i++) PetscCall(VecGetSubVector(z, bA->isglobal.col[i], &bz[i])); in MatMultTransposeAddKernel_Nest()
309 PetscCall(VecGetSubVector(y, bA->isglobal.col[j], &by)); in MatMultTransposeAddKernel_Nest()
311 PetscCall(VecRestoreSubVector(y, bA->isglobal.col[j], &by)); in MatMultTransposeAddKernel_Nest()
314 if (!bA->m[i][j]) continue; in MatMultTransposeAddKernel_Nest()
315 …if (herm) PetscCall(MatMultHermitianTransposeAdd(bA->m[i][j], bx[i], bz[j], bz[j])); /* z[j] <- y[… in MatMultTransposeAddKernel_Nest()
316 …else PetscCall(MatMultTransposeAdd(bA->m[i][j], bx[i], bz[j], bz[j])); /* z[j] <- y[… in MatMultTransposeAddKernel_Nest()
319 for (i = 0; i < nr; i++) PetscCall(VecRestoreSubVector(x, bA->isglobal.row[i], &bx[i])); in MatMultTransposeAddKernel_Nest()
320 for (i = 0; i < nc; i++) PetscCall(VecRestoreSubVector(z, bA->isglobal.col[i], &bz[i])); in MatMultTransposeAddKernel_Nest()
340 Mat_Nest *bA = (Mat_Nest *)A->data, *bC; in MatTranspose_Nest() local
342 PetscInt i, j, nr = bA->nr, nc = bA->nc; in MatTranspose_Nest()
357 for (j = 0; j < nc; j++) subs[i + nr * j] = bA->m[i][j]; in MatTranspose_Nest()
371 if (bA->m[i][j]) { in MatTranspose_Nest()
372 PetscCall(MatTranspose(bA->m[i][j], reuse, &bC->m[j][i])); in MatTranspose_Nest()
737 Mat_Nest *bA = (Mat_Nest *)A->data; in MatGetDiagonal_Nest() local
741 for (i = 0; i < bA->nr; i++) { in MatGetDiagonal_Nest()
743 PetscCall(VecGetSubVector(v, bA->isglobal.row[i], &bv)); in MatGetDiagonal_Nest()
744 if (bA->m[i][i]) { in MatGetDiagonal_Nest()
745 PetscCall(MatGetDiagonal(bA->m[i][i], bv)); in MatGetDiagonal_Nest()
749 PetscCall(VecRestoreSubVector(v, bA->isglobal.row[i], &bv)); in MatGetDiagonal_Nest()
756 Mat_Nest *bA = (Mat_Nest *)A->data; in MatDiagonalScale_Nest() local
761 PetscCall(PetscCalloc1(bA->nc, &br)); in MatDiagonalScale_Nest()
763 for (j = 0; j < bA->nc; j++) PetscCall(VecGetSubVector(r, bA->isglobal.col[j], &br[j])); in MatDiagonalScale_Nest()
766 for (i = 0; i < bA->nr; i++) { in MatDiagonalScale_Nest()
767 if (l) PetscCall(VecGetSubVector(l, bA->isglobal.row[i], &bl)); in MatDiagonalScale_Nest()
768 for (j = 0; j < bA->nc; j++) { in MatDiagonalScale_Nest()
769 if (bA->m[i][j]) PetscCall(MatDiagonalScale(bA->m[i][j], bl, br[j])); in MatDiagonalScale_Nest()
771 if (l) PetscCall(VecRestoreSubVector(l, bA->isglobal.row[i], &bl)); in MatDiagonalScale_Nest()
774 for (j = 0; j < bA->nc; j++) PetscCall(VecRestoreSubVector(r, bA->isglobal.col[j], &br[j])); in MatDiagonalScale_Nest()
782 Mat_Nest *bA = (Mat_Nest *)A->data; in MatScale_Nest() local
786 for (i = 0; i < bA->nr; i++) { in MatScale_Nest()
787 for (j = 0; j < bA->nc; j++) { in MatScale_Nest()
788 if (bA->m[i][j]) PetscCall(MatScale(bA->m[i][j], a)); in MatScale_Nest()
796 Mat_Nest *bA = (Mat_Nest *)A->data; in MatShift_Nest() local
801 for (i = 0; i < bA->nr; i++) { in MatShift_Nest()
803 …PetscCheck(bA->m[i][i], PetscObjectComm((PetscObject)A), PETSC_ERR_SUP, "No support for shifting a… in MatShift_Nest()
804 PetscCall(MatShift(bA->m[i][i], a)); in MatShift_Nest()
805 PetscCall(MatGetNonzeroState(bA->m[i][i], &subnnzstate)); in MatShift_Nest()
806 …nnzstate = (PetscBool)(nnzstate || bA->nnzstate[i * bA->nc + i] != subnnzstate… in MatShift_Nest()
807 bA->nnzstate[i * bA->nc + i] = subnnzstate; in MatShift_Nest()
815 Mat_Nest *bA = (Mat_Nest *)A->data; in MatDiagonalSet_Nest() local
820 for (i = 0; i < bA->nr; i++) { in MatDiagonalSet_Nest()
823 PetscCall(VecGetSubVector(D, bA->isglobal.row[i], &bv)); in MatDiagonalSet_Nest()
824 if (bA->m[i][i]) { in MatDiagonalSet_Nest()
825 PetscCall(MatDiagonalSet(bA->m[i][i], bv, is)); in MatDiagonalSet_Nest()
826 PetscCall(MatGetNonzeroState(bA->m[i][i], &subnnzstate)); in MatDiagonalSet_Nest()
828 PetscCall(VecRestoreSubVector(D, bA->isglobal.row[i], &bv)); in MatDiagonalSet_Nest()
829 …nnzstate = (PetscBool)(nnzstate || bA->nnzstate[i * bA->nc + i] != subnnzstate… in MatDiagonalSet_Nest()
830 bA->nnzstate[i * bA->nc + i] = subnnzstate; in MatDiagonalSet_Nest()
838 Mat_Nest *bA = (Mat_Nest *)A->data; in MatSetRandom_Nest() local
842 for (i = 0; i < bA->nr; i++) { in MatSetRandom_Nest()
843 for (j = 0; j < bA->nc; j++) { in MatSetRandom_Nest()
844 if (bA->m[i][j]) PetscCall(MatSetRandom(bA->m[i][j], rctx)); in MatSetRandom_Nest()
852 Mat_Nest *bA = (Mat_Nest *)A->data; in MatCreateVecs_Nest() local
861 PetscCall(PetscMalloc1(bA->nc, &R)); in MatCreateVecs_Nest()
863 for (j = 0; j < bA->nc; j++) { in MatCreateVecs_Nest()
864 for (i = 0; i < bA->nr; i++) { in MatCreateVecs_Nest()
865 if (bA->m[i][j]) { in MatCreateVecs_Nest()
866 PetscCall(MatCreateVecs(bA->m[i][j], &R[j], NULL)); in MatCreateVecs_Nest()
870 …PetscCheck(i != bA->nr, PetscObjectComm((PetscObject)A), PETSC_ERR_ARG_WRONG, "Mat(Nest) contains … in MatCreateVecs_Nest()
872 PetscCall(VecCreateNest(comm, bA->nc, bA->isglobal.col, R, right)); in MatCreateVecs_Nest()
874 for (j = 0; j < bA->nc; j++) PetscCall(VecDestroy(&R[j])); in MatCreateVecs_Nest()
880 PetscCall(PetscMalloc1(bA->nr, &L)); in MatCreateVecs_Nest()
882 for (i = 0; i < bA->nr; i++) { in MatCreateVecs_Nest()
883 for (j = 0; j < bA->nc; j++) { in MatCreateVecs_Nest()
884 if (bA->m[i][j]) { in MatCreateVecs_Nest()
885 PetscCall(MatCreateVecs(bA->m[i][j], NULL, &L[i])); in MatCreateVecs_Nest()
889 …PetscCheck(j != bA->nc, PetscObjectComm((PetscObject)A), PETSC_ERR_ARG_WRONG, "Mat(Nest) contains … in MatCreateVecs_Nest()
892 PetscCall(VecCreateNest(comm, bA->nr, bA->isglobal.row, L, left)); in MatCreateVecs_Nest()
893 for (i = 0; i < bA->nr; i++) PetscCall(VecDestroy(&L[i])); in MatCreateVecs_Nest()
902 Mat_Nest *bA = (Mat_Nest *)A->data; in MatView_Nest() local
922 …(viewer, "MatNest, rows=%" PetscInt_FMT ", cols=%" PetscInt_FMT ", structure:\n", bA->nr, bA->nc)); in MatView_Nest()
923 for (i = 0; i < bA->nr; i++) { in MatView_Nest()
924 for (j = 0; j < bA->nc; j++) { in MatView_Nest()
930 if (!bA->m[i][j]) { in MatView_Nest()
934 PetscCall(MatGetSize(bA->m[i][j], &NR, &NC)); in MatView_Nest()
935 PetscCall(MatGetType(bA->m[i][j], &type)); in MatView_Nest()
936 …if (((PetscObject)bA->m[i][j])->name) PetscCall(PetscSNPrintf(name, sizeof(name), "name=\"%s\", ",… in MatView_Nest()
937 …if (((PetscObject)bA->m[i][j])->prefix) PetscCall(PetscSNPrintf(prefix, sizeof(prefix), "prefix=\"… in MatView_Nest()
938 PetscCall(PetscObjectTypeCompare((PetscObject)bA->m[i][j], MATNEST, &isNest)); in MatView_Nest()
944 PetscCall(MatView(bA->m[i][j], viewer)); in MatView_Nest()
956 Mat_Nest *bA = (Mat_Nest *)A->data; in MatZeroEntries_Nest() local
960 for (i = 0; i < bA->nr; i++) { in MatZeroEntries_Nest()
961 for (j = 0; j < bA->nc; j++) { in MatZeroEntries_Nest()
962 if (!bA->m[i][j]) continue; in MatZeroEntries_Nest()
963 PetscCall(MatZeroEntries(bA->m[i][j])); in MatZeroEntries_Nest()
971 Mat_Nest *bA = (Mat_Nest *)A->data, *bB = (Mat_Nest *)B->data; in MatCopy_Nest() local
972 PetscInt i, j, nr = bA->nr, nc = bA->nc; in MatCopy_Nest()
980 if (bA->m[i][j] && bB->m[i][j]) { in MatCopy_Nest()
981 PetscCall(MatCopy(bA->m[i][j], bB->m[i][j], str)); in MatCopy_Nest()
985 } else if (bA->m[i][j]) { // bB->m[i][j] is NULL in MatCopy_Nest()
989 PetscCall(MatDuplicate(bA->m[i][j], MAT_COPY_VALUES, &M)); in MatCopy_Nest()
1034 Mat_Nest *bA = (Mat_Nest *)A->data; in MatDuplicate_Nest() local
1036 PetscInt i, j, nr = bA->nr, nc = bA->nc; in MatDuplicate_Nest()
1042 if (bA->m[i][j]) { in MatDuplicate_Nest()
1043 PetscCall(MatDuplicate(bA->m[i][j], op, &b[i * nc + j])); in MatDuplicate_Nest()
1049 …PetscCall(MatCreateNest(PetscObjectComm((PetscObject)A), nr, bA->isglobal.row, nc, bA->isglobal.co… in MatDuplicate_Nest()
1062 Mat_Nest *bA = (Mat_Nest *)A->data; in MatNestGetSubMat_Nest() local
1065 …k(idxm < bA->nr, PetscObjectComm((PetscObject)A), PETSC_ERR_ARG_OUTOFRANGE, "Row too large: row %"… in MatNestGetSubMat_Nest()
1066 …k(jdxm < bA->nc, PetscObjectComm((PetscObject)A), PETSC_ERR_ARG_OUTOFRANGE, "Col too large: row %"… in MatNestGetSubMat_Nest()
1067 *mat = bA->m[idxm][jdxm]; in MatNestGetSubMat_Nest()
1102 Mat_Nest *bA = (Mat_Nest *)A->data; in MatNestSetSubMat_Nest() local
1106 …k(idxm < bA->nr, PetscObjectComm((PetscObject)A), PETSC_ERR_ARG_OUTOFRANGE, "Row too large: row %"… in MatNestSetSubMat_Nest()
1107 …k(jdxm < bA->nc, PetscObjectComm((PetscObject)A), PETSC_ERR_ARG_OUTOFRANGE, "Col too large: row %"… in MatNestSetSubMat_Nest()
1111 PetscCall(ISGetLocalSize(bA->isglobal.row[idxm], &mi)); in MatNestSetSubMat_Nest()
1112 PetscCall(ISGetSize(bA->isglobal.row[idxm], &Mi)); in MatNestSetSubMat_Nest()
1113 PetscCall(ISGetLocalSize(bA->isglobal.col[jdxm], &ni)); in MatNestSetSubMat_Nest()
1114 PetscCall(ISGetSize(bA->isglobal.col[jdxm], &Ni)); in MatNestSetSubMat_Nest()
1120 if (mat == bA->m[idxm][jdxm]) PetscFunctionReturn(PETSC_SUCCESS); in MatNestSetSubMat_Nest()
1123 PetscCall(MatDestroy(&bA->m[idxm][jdxm])); in MatNestSetSubMat_Nest()
1124 bA->m[idxm][jdxm] = mat; in MatNestSetSubMat_Nest()
1126 if (mat) PetscCall(MatGetNonzeroState(mat, &bA->nnzstate[idxm * bA->nc + jdxm])); in MatNestSetSubMat_Nest()
1127 else bA->nnzstate[idxm * bA->nc + jdxm] = 0; in MatNestSetSubMat_Nest()
1166 Mat_Nest *bA = (Mat_Nest *)A->data; in MatNestGetSubMats_Nest() local
1169 if (M) *M = bA->nr; in MatNestGetSubMats_Nest()
1170 if (N) *N = bA->nc; in MatNestGetSubMats_Nest()
1171 if (mat) *mat = bA->m; in MatNestGetSubMats_Nest()
1211 Mat_Nest *bA = (Mat_Nest *)A->data; in MatNestGetSize_Nest() local
1214 if (M) *M = bA->nr; in MatNestGetSize_Nest()
1215 if (N) *N = bA->nc; in MatNestGetSize_Nest()
2227 Mat_Nest *bA = (Mat_Nest *)mat->data; in MatHasOperation_Nest() local
2229 PetscInt i, j, nr = bA->nr, nc = bA->nc; in MatHasOperation_Nest()
2238 if (!bA->m[i][j]) continue; in MatHasOperation_Nest()
2239 PetscCall(MatHasOperation(bA->m[i][j], opAdd, &flg)); in MatHasOperation_Nest()