Lines Matching refs:q
92 if (n) *n = b->q; in MatKAIJGetS()
123 if (n) *n = b->q; in MatKAIJGetSRead()
203 if (n) *n = b->q; in MatKAIJGetT()
234 if (n) *n = b->q; in MatKAIJGetTRead()
346 PetscErrorCode MatKAIJSetS(Mat A, PetscInt p, PetscInt q, const PetscScalar S[]) in MatKAIJSetS() argument
353 PetscCall(PetscMalloc1(p * q, &a->S)); in MatKAIJSetS()
354 PetscCall(PetscArraycpy(a->S, S, p * q)); in MatKAIJSetS()
358 a->q = q; in MatKAIJSetS()
383 if (a->p != a->q) { in MatKAIJGetScaledIdentity()
423 PetscErrorCode MatKAIJSetT(Mat A, PetscInt p, PetscInt q, const PetscScalar T[]) in MatKAIJSetT() argument
431 if (T && (p == q)) { in MatKAIJSetT()
434 for (j = 0; j < q; j++) { in MatKAIJSetT()
449 PetscCall(PetscMalloc1(p * q, &a->T)); in MatKAIJSetT()
450 PetscCall(PetscArraycpy(a->T, T, p * q)); in MatKAIJSetT()
454 a->q = q; in MatKAIJSetT()
497 PetscCall(PetscMalloc1(a->p * a->q, &T)); in MatKAIJ_build_AIJ_OAIJ()
499 for (j = 0; j < a->q; j++) { in MatKAIJ_build_AIJ_OAIJ()
505 PetscCall(MatCreateKAIJ(mpiaij->A, a->p, a->q, a->S, T, &a->AIJ)); in MatKAIJ_build_AIJ_OAIJ()
506 PetscCall(MatCreateKAIJ(mpiaij->B, a->p, a->q, NULL, T, &a->OAIJ)); in MatKAIJ_build_AIJ_OAIJ()
522 …ij->p * seqkaij->AIJ->rmap->n, seqkaij->q * seqkaij->AIJ->cmap->n, seqkaij->p * seqkaij->AIJ->rmap… in MatSetUp_KAIJ()
524 PetscCall(PetscLayoutSetBlockSize(A->cmap, seqkaij->q)); in MatSetUp_KAIJ()
535 …PetscCall(MatSetSizes(A, a->p * a->A->rmap->n, a->q * a->A->cmap->n, a->p * a->A->rmap->N, a->q * … in MatSetUp_KAIJ()
537 PetscCall(PetscLayoutSetBlockSize(A->cmap, seqkaij->q)); in MatSetUp_KAIJ()
545 PetscCall(VecSetSizes(a->w, n * a->q, n * a->q)); in MatSetUp_KAIJ()
546 PetscCall(VecSetBlockSize(a->w, a->q)); in MatSetUp_KAIJ()
550 …PetscCall(ISCreateBlock(PetscObjectComm((PetscObject)a->A), a->q, n, mpiaij->garray, PETSC_COPY_VA… in MatSetUp_KAIJ()
551 PetscCall(ISCreateStride(PETSC_COMM_SELF, n * a->q, 0, 1, &to)); in MatSetUp_KAIJ()
554 …(VecCreateMPIWithArray(PetscObjectComm((PetscObject)a->A), a->q, a->q * a->A->cmap->n, a->q * a->A… in MatSetUp_KAIJ()
580 …Printf(viewer, "S and T have %" PetscInt_FMT " rows and %" PetscInt_FMT " columns\n", a->p, a->q)); in MatView_KAIJ()
587 for (i = 0; i < (a->p * a->q); i++) { in MatView_KAIJ()
604 for (i = 0; i < (a->p * a->q); i++) { in MatView_KAIJ()
660 PetscInt n, i, jrow, j, l, p = b->p, q = b->q, k; in MatMultAdd_SeqKAIJ() local
682 for (k = 0; k < p; k++) sums[k] += v[jrow + j] * x[q * idx[jrow + j] + k]; in MatMultAdd_SeqKAIJ()
693 for (l = 0; l < q; l++) sums[k] += v[jrow + j] * t[k + l * p] * x[q * idx[jrow + j] + l]; in MatMultAdd_SeqKAIJ()
701 PetscCall(PetscLogFlops((2.0 * p * q - p) * m + 2.0 * p * a->nz)); in MatMultAdd_SeqKAIJ()
706 bx = x + q * i; in MatMultAdd_SeqKAIJ()
708 for (j = 0; j < q; j++) { in MatMultAdd_SeqKAIJ()
713 PetscCall(PetscLogFlops(2.0 * m * p * q)); in MatMultAdd_SeqKAIJ()
737 const PetscInt p = b->p, q = b->q, m = b->AIJ->rmap->n, *idx = a->j, *ii = a->i; in MatInvertBlockDiagonal_SeqKAIJ() local
742 …PetscCheck(p == q, PetscObjectComm((PetscObject)A), PETSC_ERR_SUP, "MATKAIJ: Block size must be sq… in MatInvertBlockDiagonal_SeqKAIJ()
797 const PetscInt p = a->p, q = a->q; in MatConvert_KAIJ_AIJ() local
832 for (j = 0; j < p; ++j) d_nnz[i * p + j] = nz * q + (i >= d) * q; in MatConvert_KAIJ_AIJ()
839 for (j = 0; j < p; ++j) o_nnz[i * p + j] = nz * q; in MatConvert_KAIJ_AIJ()
860 …const PetscInt m = kaij->AIJ->rmap->n, *ai = a->i, *aj = a->j, p = kaij->p, q = kaij->q, *diag… in MatSOR_SeqKAIJ() local
871 …PetscCheck(p == q, PETSC_COMM_SELF, PETSC_ERR_SUP, "MatSOR for KAIJ: No support for non-square den… in MatSOR_SeqKAIJ()
1183 PetscInt nzaij, nz, *colsaij, *idx, i, j, p = b->p, q = b->q, r = row / p, s = row % p, c; in MatGetRow_SeqKAIJ() local
1212 if (S) nz += q; in MatGetRow_SeqKAIJ()
1213 if (T || b->isTI) nz += (diag && S ? (nzaij - 1) * q : nzaij * q); in MatGetRow_SeqKAIJ()
1217 for (i = 0; i < q; i++) { in MatGetRow_SeqKAIJ()
1223 for (j = 0; j < q; j++) { in MatGetRow_SeqKAIJ()
1224 idx[i * q + j] = colsaij[i] * q + j; in MatGetRow_SeqKAIJ()
1225 v[i * q + j] = (j == s ? vaij[i] : 0); in MatGetRow_SeqKAIJ()
1230 for (j = 0; j < q; j++) { in MatGetRow_SeqKAIJ()
1231 idx[i * q + j] = colsaij[i] * q + j; in MatGetRow_SeqKAIJ()
1232 v[i * q + j] = vaij[i] * T[s + j * p]; in MatGetRow_SeqKAIJ()
1237 for (j = 0; j < q; j++) { in MatGetRow_SeqKAIJ()
1238 idx[c * q + j] = r * q + j; in MatGetRow_SeqKAIJ()
1239 v[c * q + j] += S[s + j * p]; in MatGetRow_SeqKAIJ()
1264 const PetscInt rstart = A->rmap->rstart, rend = A->rmap->rend, p = b->p, q = b->q, *garray; in MatGetRow_MPIKAIJ() local
1304 if (S) nz += q; in MatGetRow_MPIKAIJ()
1305 if (T || b->isTI) nz += (diag && S ? (ncolsaij + ncolsoaij - 1) * q : (ncolsaij + ncolsoaij) * q); in MatGetRow_MPIKAIJ()
1309 for (i = 0; i < q; i++) { in MatGetRow_MPIKAIJ()
1315 for (j = 0; j < q; j++) { in MatGetRow_MPIKAIJ()
1316 idx[i * q + j] = (colsaij[i] + rstart / p) * q + j; in MatGetRow_MPIKAIJ()
1317 v[i * q + j] = (j == s ? vals[i] : 0.0); in MatGetRow_MPIKAIJ()
1321 for (j = 0; j < q; j++) { in MatGetRow_MPIKAIJ()
1322 idx[(i + ncolsaij) * q + j] = garray[colsoaij[i]] * q + j; in MatGetRow_MPIKAIJ()
1323 v[(i + ncolsaij) * q + j] = (j == s ? ovals[i] : 0.0); in MatGetRow_MPIKAIJ()
1328 for (j = 0; j < q; j++) { in MatGetRow_MPIKAIJ()
1329 idx[i * q + j] = (colsaij[i] + rstart / p) * q + j; in MatGetRow_MPIKAIJ()
1330 v[i * q + j] = vals[i] * T[s + j * p]; in MatGetRow_MPIKAIJ()
1334 for (j = 0; j < q; j++) { in MatGetRow_MPIKAIJ()
1335 idx[(i + ncolsaij) * q + j] = garray[colsoaij[i]] * q + j; in MatGetRow_MPIKAIJ()
1336 v[(i + ncolsaij) * q + j] = ovals[i] * T[s + j * p]; in MatGetRow_MPIKAIJ()
1341 for (j = 0; j < q; j++) { in MatGetRow_MPIKAIJ()
1342 idx[c * q + j] = (r + rstart / p) * q + j; in MatGetRow_MPIKAIJ()
1343 v[c * q + j] += S[s + j * p]; in MatGetRow_MPIKAIJ()
1419 PetscErrorCode MatCreateKAIJ(Mat A, PetscInt p, PetscInt q, const PetscScalar S[], const PetscScala… in MatCreateKAIJ() argument
1425 PetscCall(MatKAIJSetS(*kaij, p, q, S)); in MatCreateKAIJ()
1426 PetscCall(MatKAIJSetT(*kaij, p, q, T)); in MatCreateKAIJ()