Lines Matching refs:hA
83 static PetscErrorCode MatHYPRE_CreateFromMat(Mat A, Mat_HYPRE *hA) in MatHYPRE_CreateFromMat() argument
95 if (hA->ij) { in MatHYPRE_CreateFromMat()
96 if (!hA->inner_free) hypre_IJMatrixObject(hA->ij) = NULL; in MatHYPRE_CreateFromMat()
97 PetscCallHYPRE(HYPRE_IJMatrixDestroy(hA->ij)); in MatHYPRE_CreateFromMat()
99 PetscCallHYPRE(HYPRE_IJMatrixCreate(hA->comm, rstart, rend - 1, cstart, cend - 1, &hA->ij)); in MatHYPRE_CreateFromMat()
100 PetscCallHYPRE(HYPRE_IJMatrixSetObjectType(hA->ij, HYPRE_PARCSR)); in MatHYPRE_CreateFromMat()
108 PetscCall(MatHYPRE_IJMatrixPreallocate(A_d, A_o, hA->ij)); in MatHYPRE_CreateFromMat()
114 PetscCall(MatHYPRE_IJMatrixPreallocate(A_d, A_o, hA->ij)); in MatHYPRE_CreateFromMat()
119 PetscCall(MatHYPRE_IJMatrixPreallocate(A, NULL, hA->ij)); in MatHYPRE_CreateFromMat()
124 PetscCall(MatHYPRE_IJMatrixPreallocate(A, NULL, hA->ij)); in MatHYPRE_CreateFromMat()
248 hypre_ParCSRMatrix *hA; in MatConvert_HYPRE_IS() local
265 PetscCallHYPRE(HYPRE_IJMatrixGetObject(mhA->ij, (void **)&hA)); in MatConvert_HYPRE_IS()
275 hA = hypre_ParCSRMatrixClone_v2(hA, 1, HYPRE_MEMORY_HOST); in MatConvert_HYPRE_IS()
279 M = hypre_ParCSRMatrixGlobalNumRows(hA); in MatConvert_HYPRE_IS()
280 N = hypre_ParCSRMatrixGlobalNumCols(hA); in MatConvert_HYPRE_IS()
281 str = hypre_ParCSRMatrixFirstRowIndex(hA); in MatConvert_HYPRE_IS()
282 stc = hypre_ParCSRMatrixFirstColDiag(hA); in MatConvert_HYPRE_IS()
283 hdiag = hypre_ParCSRMatrixDiag(hA); in MatConvert_HYPRE_IS()
284 hoffd = hypre_ParCSRMatrixOffd(hA); in MatConvert_HYPRE_IS()
303 col_map_offd = hypre_ParCSRMatrixColMapOffd(hA); in MatConvert_HYPRE_IS()
368 if (freeparcsr) PetscCallHYPRE(hypre_ParCSRMatrixDestroy(hA)); in MatConvert_HYPRE_IS()
374 Mat_HYPRE *hA = (Mat_HYPRE *)mat->data; in MatHYPRE_DestroyCOOMat() local
377 if (hA->cooMat) { /* If cooMat is present we need to destroy the column indices */ in MatHYPRE_DestroyCOOMat()
378 PetscCall(MatDestroy(&hA->cooMat)); in MatHYPRE_DestroyCOOMat()
379 if (hA->cooMatAttached) { in MatHYPRE_DestroyCOOMat()
384 PetscCallHYPRE(HYPRE_IJMatrixGetObject(hA->ij, (void **)&parcsr)); in MatHYPRE_DestroyCOOMat()
399 hA->cooMatAttached = PETSC_FALSE; in MatHYPRE_DestroyCOOMat()
607 Mat_HYPRE *hA; local
657 hA = (Mat_HYPRE *)M->data;
658 PetscCall(MatHYPRE_CreateFromMat(A, hA));
659 PetscCall(MatHYPRE_IJMatrixCopyIJ(A, hA->ij));
663 dH = hA->cooMat;
664 PetscCall(PetscObjectBaseTypeCompare((PetscObject)hA->cooMat, MATMPIAIJ, &ismpiaij));
665 if (ismpiaij) PetscCall(MatMPIAIJGetSeqAIJ(hA->cooMat, &dH, &oH, NULL));
678 hA->cooMat->assembled = PETSC_TRUE;
688 hA = (Mat_HYPRE *)M->data;
689 …PetscCheck(hA->cooMat, PetscObjectComm((PetscObject)A), PETSC_ERR_PLIB, "HYPRE COO delegate matrix…
691 dH = hA->cooMat;
692 PetscCall(PetscObjectBaseTypeCompare((PetscObject)hA->cooMat, MATMPIAIJ, &ismpiaij));
693 if (ismpiaij) PetscCall(MatMPIAIJGetSeqAIJ(hA->cooMat, &dH, &oH, NULL));
796 static PetscErrorCode MatAIJGetParCSR_Private(Mat A, hypre_ParCSRMatrix **hA) argument
951 *hA = tA;
955 static PetscErrorCode MatAIJRestoreParCSR_Private(Mat A, hypre_ParCSRMatrix **hA) argument
970 hdiag = hypre_ParCSRMatrixDiag(*hA);
971 hoffd = hypre_ParCSRMatrixOffd(*hA);
994 hypre_ParCSRMatrixColMapOffd(*hA) = NULL;
995 hypre_ParCSRMatrixDestroy(*hA);
996 *hA = NULL;
1003 static PetscErrorCode MatHYPRE_ParCSR_RAP(hypre_ParCSRMatrix *hR, hypre_ParCSRMatrix *hA, hypre_Par… argument
1017 *hRAP = hypre_ParCSRMatrixRAP(hR, hA, hP);
1020 PetscCallHYPRE(hypre_BoomerAMGBuildCoarseOperator(hR, hA, hP, hRAP));
1036 hypre_ParCSRMatrix *hA, *hP, *hPtAP = NULL; local
1040 PetscCall(MatAIJGetParCSR_Private(A, &hA));
1042 PetscCall(MatHYPRE_ParCSR_RAP(hP, hA, hP, &hPtAP));
1048 PetscCall(MatAIJRestoreParCSR_Private(A, &hA));
1066 hypre_ParCSRMatrix *hA = NULL, *Pparcsr, *ptapparcsr = NULL; local
1079 PetscCall(MatAIJGetParCSR_Private(A, &hA));
1080 PetscCall(MatHYPRE_ParCSR_RAP(Pparcsr, hA, Pparcsr, &ptapparcsr));
1081 PetscCall(MatAIJRestoreParCSR_Private(A, &hA));
1093 Mat_HYPRE *hA, *hP; local
1102 hA = (Mat_HYPRE *)A->data;
1104 PetscCallHYPRE(HYPRE_IJMatrixGetObjectType(hA->ij, &type));
1108 PetscCallHYPRE(HYPRE_IJMatrixGetObject(hA->ij, (void **)&Aparcsr));
1120 static PetscErrorCode MatHYPRE_ParCSR_MatMatMult(hypre_ParCSRMatrix *hA, hypre_ParCSRMatrix *hB, hy… argument
1126 *hAB = hypre_ParCSRMatMat(hA, hB);
1129 *hAB = hypre_ParMatmul(hA, hB);
1138 hypre_ParCSRMatrix *hA, *hB, *hAB = NULL; local
1142 PetscCall(MatAIJGetParCSR_Private(A, &hA));
1144 PetscCall(MatHYPRE_ParCSR_MatMatMult(hA, hB, &hAB));
1150 PetscCall(MatAIJRestoreParCSR_Private(A, &hA));
1168 Mat_HYPRE *hA, *hB; local
1178 hA = (Mat_HYPRE *)A->data;
1180 PetscCallHYPRE(HYPRE_IJMatrixGetObjectType(hA->ij, &type));
1184 PetscCallHYPRE(HYPRE_IJMatrixGetObject(hA->ij, (void **)&Aparcsr));
1202 hypre_ParCSRMatrix *hA, *hB, *hC, *hABC = NULL; local
1205 PetscCall(MatAIJGetParCSR_Private(A, &hA));
1208 PetscCall(MatHYPRE_ParCSR_RAP(hA, hB, hC, &hABC));
1211 PetscCall(MatAIJRestoreParCSR_Private(A, &hA));
1346 Mat_HYPRE *hA = (Mat_HYPRE *)A->data; local
1352 PetscCall(VecHYPRE_IJVectorPushVecRead(hA->b, x));
1353 if (b != 0.0) PetscCall(VecHYPRE_IJVectorPushVec(hA->x, y));
1354 else PetscCall(VecHYPRE_IJVectorPushVecWrite(hA->x, y));
1355 PetscCallHYPRE(HYPRE_IJVectorGetObject(hA->b->ij, (void **)&hx));
1356 PetscCallHYPRE(HYPRE_IJVectorGetObject(hA->x->ij, (void **)&hy));
1358 PetscCall(VecHYPRE_IJVectorPushVecRead(hA->x, x));
1359 if (b != 0.0) PetscCall(VecHYPRE_IJVectorPushVec(hA->b, y));
1360 else PetscCall(VecHYPRE_IJVectorPushVecWrite(hA->b, y));
1361 PetscCallHYPRE(HYPRE_IJVectorGetObject(hA->x->ij, (void **)&hx));
1362 PetscCallHYPRE(HYPRE_IJVectorGetObject(hA->b->ij, (void **)&hy));
1364 PetscCallHYPRE(HYPRE_IJMatrixGetObject(hA->ij, (void **)&parcsr));
1370 PetscCall(VecHYPRE_IJVectorPopVec(hA->x));
1371 PetscCall(VecHYPRE_IJVectorPopVec(hA->b));
1377 Mat_HYPRE *hA = (Mat_HYPRE *)A->data; local
1380 PetscCall(VecHYPRE_IJVectorDestroy(&hA->x));
1381 PetscCall(VecHYPRE_IJVectorDestroy(&hA->b));
1383 if (hA->ij) {
1384 if (!hA->inner_free) hypre_IJMatrixObject(hA->ij) = NULL;
1385 PetscCallHYPRE(HYPRE_IJMatrixDestroy(hA->ij));
1387 if (hA->comm) PetscCall(PetscCommRestoreComm(PetscObjectComm((PetscObject)A), &hA->comm));
1390 PetscCall(PetscFree(hA->array));
1391 …if (hA->rows_d) PetscStackCallExternalVoid("hypre_Free", hypre_Free(hA->rows_d, HYPRE_MEMORY_DEVIC…
1420 Mat_HYPRE *hA = (Mat_HYPRE *)A->data; local
1425 …if (hA->ij && hypre_IJMatrixAssembleFlag(hA->ij) && hmem != hypre_IJMatrixMemoryLocation(hA->ij)) {
1427 PetscCallHYPRE(HYPRE_IJMatrixGetObject(hA->ij, (void **)&parcsr));
1430 if (hA->x) PetscCall(VecHYPRE_IJBindToCPU(hA->x, bind));
1431 if (hA->b) PetscCall(VecHYPRE_IJBindToCPU(hA->b, bind));
1438 Mat_HYPRE *hA = (Mat_HYPRE *)A->data; local
1468 PetscCallHYPRE(HYPRE_IJMatrixAssemble(hA->ij));
1475 aux_matrix = (hypre_AuxParCSRMatrix *)hypre_IJMatrixTranslator(hA->ij);
1477 hypre_IJMatrixTranslator(hA->ij) = NULL;
1480 PetscCallHYPRE(HYPRE_IJMatrixInitialize(hA->ij));
1481 aux_matrix = (hypre_AuxParCSRMatrix *)hypre_IJMatrixTranslator(hA->ij);
1494 PetscCallHYPRE(HYPRE_IJMatrixGetObject(hA->ij, (void **)&parcsr));
1497 if (!hA->x) PetscCall(VecHYPRE_IJVectorCreate(A->cmap, &hA->x));
1498 if (!hA->b) PetscCall(VecHYPRE_IJVectorCreate(A->rmap, &hA->b));
1507 Mat_HYPRE *hA = (Mat_HYPRE *)A->data; local
1510 PetscCheck(hA->array_available, PETSC_COMM_SELF, PETSC_ERR_ARG_NULL, "Temporary space is in use");
1512 if (hA->array_size >= size) {
1513 *array = hA->array;
1515 PetscCall(PetscFree(hA->array));
1516 hA->array_size = size;
1517 PetscCall(PetscMalloc(hA->array_size, &hA->array));
1518 *array = hA->array;
1521 hA->array_available = PETSC_FALSE;
1527 Mat_HYPRE *hA = (Mat_HYPRE *)A->data; local
1531 hA->array_available = PETSC_TRUE;
1537 Mat_HYPRE *hA = (Mat_HYPRE *)A->data; local
1562 if (HYPRE_MEMORY_HOST != hypre_IJMatrixMemoryLocation(hA->ij)) {
1565 PetscCallHYPRE(HYPRE_IJMatrixGetObject(hA->ij,(void**)&parcsr));
1580 if (hA->donotstash) continue;
1584 …PetscCallHYPRE(HYPRE_IJMatrixAddToValues(hA->ij, 1, &hnc, (HYPRE_BigInt *)(rows + i), (HYPRE_BigIn…
1600 …if (!hA->donotstash) PetscCall(MatStashValuesRow_Private(&A->stash, rows[i], nzc, cscr[0], (PetscS…
1604 …PetscCallHYPRE(HYPRE_IJMatrixSetValues(hA->ij, 1, &hnc, (HYPRE_BigInt *)(rows + i), (HYPRE_BigInt …
1616 Mat_HYPRE *hA = (Mat_HYPRE *)A->data; local
1628 if (!hA->ij) {
1629 PetscCallHYPRE(HYPRE_IJMatrixCreate(hA->comm, rs, re - 1, cs, ce - 1, &hA->ij));
1630 PetscCallHYPRE(HYPRE_IJMatrixSetObjectType(hA->ij, HYPRE_PARCSR));
1633 PetscCallHYPRE(HYPRE_IJMatrixGetLocalRange(hA->ij, &hrs, &hre, &hcs, &hce));
1662 aux_matrix = (hypre_AuxParCSRMatrix *)hypre_IJMatrixTranslator(hA->ij);
1664 hypre_IJMatrixTranslator(hA->ij) = NULL;
1665 PetscCallHYPRE(HYPRE_IJMatrixSetDiagOffdSizes(hA->ij, hdnnz, honnz));
1666 …aux_matrix = (hypre_AuxParCSRMatrix *)hypre_IJMatrixTranslator(hA->i…
1670 PetscCallHYPRE(HYPRE_IJMatrixSetRowSizes(hA->ij, hdnnz));
1674 hypre_IJMatrixAssembleFlag(hA->ij) = 0;
1676 PetscCallHYPRE(HYPRE_IJMatrixInitialize(hA->ij));
1678 PetscCallHYPRE(HYPRE_IJMatrixInitialize_v2(hA->ij, HYPRE_MEMORY_HOST));
1747 Mat_HYPRE *hA; local
1775 hA = (Mat_HYPRE *)T->data;
1778 PetscCallHYPRE(HYPRE_IJMatrixCreate(hA->comm, rstart, rend, cstart, cend, &hA->ij));
1779 PetscCallHYPRE(HYPRE_IJMatrixSetObjectType(hA->ij, HYPRE_PARCSR));
1802 hypre_IJMatrixObject(hA->ij) = parcsr;
1806 hypre_IJMatrixAssembleFlag(hA->ij) = 1;
1808 PetscCallHYPRE(HYPRE_IJMatrixInitialize(hA->ij));
1832 if (copymode == PETSC_USE_POINTER) hA->inner_free = PETSC_FALSE;
1840 hA->inner_free = PETSC_FALSE;
1849 if (copymode != PETSC_OWN_POINTER) hA->inner_free = PETSC_FALSE;
1857 Mat_HYPRE *hA = (Mat_HYPRE *)A->data; local
1861 PetscCheck(hA->ij, PetscObjectComm((PetscObject)A), PETSC_ERR_PLIB, "HYPRE_IJMatrix not present");
1862 PetscCallHYPRE(HYPRE_IJMatrixGetObjectType(hA->ij, &type));
1864 PetscCallHYPRE(HYPRE_IJMatrixGetObject(hA->ij, (void **)parcsr));
1971 Mat_HYPRE *hA = (Mat_HYPRE *)A->data; local
1974 if (HYPRE_MEMORY_DEVICE == hypre_IJMatrixMemoryLocation(hA->ij)) {
1975 PetscCallHYPRE(HYPRE_IJMatrixSetConstantValues(hA->ij, 0.0));
1986 static PetscErrorCode MatZeroRows_HYPRE_CSRMatrix(hypre_CSRMatrix *hA, PetscInt N, const PetscInt r… argument
1993 if (!hA) PetscFunctionReturn(PETSC_SUCCESS);
1995 i = hypre_CSRMatrixI(hA);
1996 j = hypre_CSRMatrixJ(hA);
1997 a = hypre_CSRMatrixData(hA);
1999 if (HYPRE_MEMORY_DEVICE == hypre_CSRMatrixMemoryLocation(hA)) {
2042 Mat_HYPRE *hA = (Mat_HYPRE *)A->data; local
2045 if (!hA->rows_d) {
2046 hA->rows_d = hypre_TAlloc(PetscInt, m, HYPRE_MEMORY_DEVICE);
2047 if (m) PetscCheck(hA->rows_d, PETSC_COMM_SELF, PETSC_ERR_MEM, "HYPRE_TAlloc failed");
2050 …PetscStackCallExternalVoid("hypre_Memcpy", hypre_Memcpy(hA->rows_d, lrows, sizeof(PetscInt) * len,…
2051 lrows2 = hA->rows_d;
2106 Mat_HYPRE *hA = (Mat_HYPRE *)A->data; local
2117 …PetscCallHYPRE(HYPRE_IJMatrixGetValues(hA->ij, 1, &hn, (HYPRE_BigInt *)&idxm[i], (HYPRE_BigInt *)i…
2125 Mat_HYPRE *hA = (Mat_HYPRE *)A->data; local
2130 if (flg) PetscCallHYPRE(HYPRE_IJMatrixSetMaxOffProcElmts(hA->ij, 0));
2133 hA->donotstash = flg;
2160 Mat_HYPRE *hA = (Mat_HYPRE *)A->data; local
2169 PetscCallHYPRE(HYPRE_IJMatrixPrint(hA->ij, filename));
2170 PetscCallMPI(MPI_Comm_size(hA->comm, &size));
2307 Mat_HYPRE *hA; local
2318 hA = (Mat_HYPRE *)A->data;
2319 if (hA->cooMat) {
2323 PetscCall(MatDuplicate(hA->cooMat, op, &hB->cooMat));