Lines Matching refs:mdata

510   MatProductCtx_MatMatShell *mdata;  in MatProductNumeric_Shell_X()  local
521 mdata = (MatProductCtx_MatMatShell *)product->data; in MatProductNumeric_Shell_X()
522 …PetscCheck(mdata->numeric, PetscObjectComm((PetscObject)D), PETSC_ERR_PLIB, "Missing numeric opera… in MatProductNumeric_Shell_X()
530 if (!mdata->B) { in MatProductNumeric_Shell_X()
531 PetscCall(MatDuplicate(B, MAT_SHARE_NONZERO_PATTERN, &mdata->B)); in MatProductNumeric_Shell_X()
535 PetscCall(MatCopy(B, mdata->B, SAME_NONZERO_PATTERN)); in MatProductNumeric_Shell_X()
539 if (shell->right) PetscCall(MatDiagonalScale(mdata->B, shell->right, NULL)); in MatProductNumeric_Shell_X()
542 if (shell->left) PetscCall(MatDiagonalScale(mdata->B, shell->left, NULL)); in MatProductNumeric_Shell_X()
545 if (shell->right) PetscCall(MatDiagonalScale(mdata->B, NULL, shell->right)); in MatProductNumeric_Shell_X()
555 if (shell->right) PetscCall(MatDiagonalScale(mdata->B, NULL, shell->right)); in MatProductNumeric_Shell_X()
565 if (shell->right) PetscCall(MatDiagonalScale(mdata->B, shell->right, NULL)); in MatProductNumeric_Shell_X()
576 PetscCall((*mdata->numeric)(A, useBmdata ? mdata->B : B, D, mdata->ctx)); in MatProductNumeric_Shell_X()
601 MatReuse reuse = mdata->Bt ? MAT_REUSE_MATRIX : MAT_INITIAL_MATRIX; in MatProductNumeric_Shell_X()
602 MatStructure str = mdata->Bt ? SUBSET_NONZERO_PATTERN : DIFFERENT_NONZERO_PATTERN; in MatProductNumeric_Shell_X()
604 PetscCall(MatTranspose(mdata->B, reuse, &mdata->Bt)); in MatProductNumeric_Shell_X()
605 PetscCall(MatDiagonalScale(mdata->Bt, shell->left_work, NULL)); in MatProductNumeric_Shell_X()
606 PetscCall(MatAXPY(D, 1.0, mdata->Bt, str)); in MatProductNumeric_Shell_X()
610 PetscCall(MatDiagonalScale(mdata->B, shell->left_work, NULL)); in MatProductNumeric_Shell_X()
611 PetscCall(MatAXPY(D, 1.0, mdata->B, str)); in MatProductNumeric_Shell_X()
630 PetscCall(MatDiagonalScale(mdata->B, shell->right_work, NULL)); in MatProductNumeric_Shell_X()
631 PetscCall(MatAXPY(D, 1.0, mdata->B, str)); in MatProductNumeric_Shell_X()
651 if (!mdata->axpy) { in MatProductNumeric_Shell_X()
653 PetscCall(MatProductCreate(shell->axpy, B, NULL, &mdata->axpy)); in MatProductNumeric_Shell_X()
654 PetscCall(MatProductSetType(mdata->axpy, product->type)); in MatProductNumeric_Shell_X()
655 PetscCall(MatProductSetFromOptions(mdata->axpy)); in MatProductNumeric_Shell_X()
656 PetscCall(MatProductSymbolic(mdata->axpy)); in MatProductNumeric_Shell_X()
660 PetscCall(MatProductReplaceMats(shell->axpy, B, NULL, mdata->axpy)); in MatProductNumeric_Shell_X()
661 PetscCall(MatHasOperation(mdata->axpy, MATOP_PRODUCTSYMBOLIC, &flg)); in MatProductNumeric_Shell_X()
664 PetscCall(MatProductSetFromOptions(mdata->axpy)); in MatProductNumeric_Shell_X()
665 PetscCall(MatProductSymbolic(mdata->axpy)); in MatProductNumeric_Shell_X()
668 PetscCall(MatProductNumeric(mdata->axpy)); in MatProductNumeric_Shell_X()
669 PetscCall(MatAXPY(D, shell->axpy_vscale, mdata->axpy, str)); in MatProductNumeric_Shell_X()
683 MatProductCtx_MatMatShell *mdata; in MatProductSymbolic_Shell_X() local
729 PetscCall(PetscNew(&mdata)); in MatProductSymbolic_Shell_X()
730 mdata->numeric = matmat->numeric; in MatProductSymbolic_Shell_X()
731 mdata->destroy = matmat->destroy; in MatProductSymbolic_Shell_X()
733 PetscCall((*matmat->symbolic)(A, B, D, &mdata->ctx)); in MatProductSymbolic_Shell_X()
739 D->product->data = mdata; in MatProductSymbolic_Shell_X()