Lines Matching refs:ex

30   Mat_HYPREStruct *ex     = (Mat_HYPREStruct *)mat->data;  in MatSetValuesLocal_HYPREStruct_3d()  local
43 } else if (stencil == -ex->gnx) { in MatSetValuesLocal_HYPREStruct_3d()
45 } else if (stencil == ex->gnx) { in MatSetValuesLocal_HYPREStruct_3d()
47 } else if (stencil == -ex->gnxgny) { in MatSetValuesLocal_HYPREStruct_3d()
49 } else if (stencil == ex->gnxgny) { in MatSetValuesLocal_HYPREStruct_3d()
53 row = ex->gindices[irow[i]] - ex->rstart; in MatSetValuesLocal_HYPREStruct_3d()
54 index[0] = (HYPRE_Int)(ex->xs + (row % ex->nx)); in MatSetValuesLocal_HYPREStruct_3d()
55 index[1] = (HYPRE_Int)(ex->ys + ((row / ex->nx) % ex->ny)); in MatSetValuesLocal_HYPREStruct_3d()
56 index[2] = (HYPRE_Int)(ex->zs + (row / (ex->nxny))); in MatSetValuesLocal_HYPREStruct_3d()
57 …if (addv == ADD_VALUES) PetscCallHYPRE(HYPRE_StructMatrixAddToValues(ex->hmat, index, (HYPRE_Int)n… in MatSetValuesLocal_HYPREStruct_3d()
58 …else PetscCallHYPRE(HYPRE_StructMatrixSetValues(ex->hmat, index, (HYPRE_Int)ncol, entries, values)… in MatSetValuesLocal_HYPREStruct_3d()
69 Mat_HYPREStruct *ex = (Mat_HYPREStruct *)mat->data; in MatZeroRowsLocal_HYPREStruct_3d() local
76 row = ex->gindices[irow[i]] - ex->rstart; in MatZeroRowsLocal_HYPREStruct_3d()
77 index[0] = (HYPRE_Int)(ex->xs + (row % ex->nx)); in MatZeroRowsLocal_HYPREStruct_3d()
78 index[1] = (HYPRE_Int)(ex->ys + ((row / ex->nx) % ex->ny)); in MatZeroRowsLocal_HYPREStruct_3d()
79 index[2] = (HYPRE_Int)(ex->zs + (row / (ex->nxny))); in MatZeroRowsLocal_HYPREStruct_3d()
80 PetscCallHYPRE(HYPRE_StructMatrixSetValues(ex->hmat, index, 7, entries, values)); in MatZeroRowsLocal_HYPREStruct_3d()
82 PetscCallHYPRE(HYPRE_StructMatrixAssemble(ex->hmat)); in MatZeroRowsLocal_HYPREStruct_3d()
89 Mat_HYPREStruct *ex = (Mat_HYPREStruct *)mat->data; in MatZeroEntries_HYPREStruct_3d() local
93 PetscCallHYPRE(hypre_StructMatrixClearBoxValues(ex->hmat, &ex->hbox, 7, indices, 0, 1)); in MatZeroEntries_HYPREStruct_3d()
94 PetscCallHYPRE(HYPRE_StructMatrixAssemble(ex->hmat)); in MatZeroEntries_HYPREStruct_3d()
100 Mat_HYPREStruct *ex = (Mat_HYPREStruct *)mat->data; in MatSetUp_HYPREStruct() local
111 ex->da = da; in MatSetUp_HYPREStruct()
114 PetscCall(DMDAGetInfo(ex->da, &dim, &Nx, &Ny, &Nz, 0, 0, 0, &dof, &psw, &px, &py, &pz, &st)); in MatSetUp_HYPREStruct()
115 …PetscCall(DMDAGetCorners(ex->da, &ilower[0], &ilower[1], &ilower[2], &iupper[0], &iupper[1], &iupp… in MatSetUp_HYPREStruct()
129 ex->hbox.imin[0] = hlower[0]; in MatSetUp_HYPREStruct()
130 ex->hbox.imin[1] = hlower[1]; in MatSetUp_HYPREStruct()
131 ex->hbox.imin[2] = hlower[2]; in MatSetUp_HYPREStruct()
132 ex->hbox.imax[0] = hupper[0]; in MatSetUp_HYPREStruct()
133 ex->hbox.imax[1] = hupper[1]; in MatSetUp_HYPREStruct()
134 ex->hbox.imax[2] = hupper[2]; in MatSetUp_HYPREStruct()
143 PetscCallHYPRE(HYPRE_StructGridCreate(ex->hcomm, (HYPRE_Int)dim, &ex->hgrid)); in MatSetUp_HYPREStruct()
144 PetscCallHYPRE(HYPRE_StructGridSetExtents(ex->hgrid, hlower, hupper)); in MatSetUp_HYPREStruct()
145 PetscCallHYPRE(HYPRE_StructGridSetPeriodic(ex->hgrid, period)); in MatSetUp_HYPREStruct()
146 PetscCallHYPRE(HYPRE_StructGridAssemble(ex->hgrid)); in MatSetUp_HYPREStruct()
149 PetscCallHYPRE(HYPRE_StructGridSetNumGhost(ex->hgrid, sw)); in MatSetUp_HYPREStruct()
157 PetscCallHYPRE(HYPRE_StructStencilCreate((HYPRE_Int)dim, (HYPRE_Int)ssize, &ex->hstencil)); in MatSetUp_HYPREStruct()
158 …for (i = 0; i < ssize; i++) PetscCallHYPRE(HYPRE_StructStencilSetElement(ex->hstencil, (HYPRE_Int)… in MatSetUp_HYPREStruct()
168 PetscCallHYPRE(HYPRE_StructStencilCreate((HYPRE_Int)dim, (HYPRE_Int)ssize, &ex->hstencil)); in MatSetUp_HYPREStruct()
169 …for (i = 0; i < ssize; i++) PetscCallHYPRE(HYPRE_StructStencilSetElement(ex->hstencil, (HYPRE_Int)… in MatSetUp_HYPREStruct()
181 PetscCallHYPRE(HYPRE_StructStencilCreate((HYPRE_Int)dim, (HYPRE_Int)ssize, &ex->hstencil)); in MatSetUp_HYPREStruct()
182 …for (i = 0; i < ssize; i++) PetscCallHYPRE(HYPRE_StructStencilSetElement(ex->hstencil, (HYPRE_Int)… in MatSetUp_HYPREStruct()
186 PetscCallHYPRE(HYPRE_StructVectorCreate(ex->hcomm, ex->hgrid, &ex->hb)); in MatSetUp_HYPREStruct()
187 PetscCallHYPRE(HYPRE_StructVectorCreate(ex->hcomm, ex->hgrid, &ex->hx)); in MatSetUp_HYPREStruct()
188 PetscCallHYPRE(HYPRE_StructVectorInitialize(ex->hb)); in MatSetUp_HYPREStruct()
189 PetscCallHYPRE(HYPRE_StructVectorInitialize(ex->hx)); in MatSetUp_HYPREStruct()
190 PetscCallHYPRE(HYPRE_StructVectorAssemble(ex->hb)); in MatSetUp_HYPREStruct()
191 PetscCallHYPRE(HYPRE_StructVectorAssemble(ex->hx)); in MatSetUp_HYPREStruct()
194 PetscCallHYPRE(HYPRE_StructMatrixCreate(ex->hcomm, ex->hgrid, ex->hstencil, &ex->hmat)); in MatSetUp_HYPREStruct()
195 PetscCallHYPRE(HYPRE_StructGridDestroy(ex->hgrid)); in MatSetUp_HYPREStruct()
196 PetscCallHYPRE(HYPRE_StructStencilDestroy(ex->hstencil)); in MatSetUp_HYPREStruct()
197 if (ex->needsinitialization) { in MatSetUp_HYPREStruct()
198 PetscCallHYPRE(HYPRE_StructMatrixInitialize(ex->hmat)); in MatSetUp_HYPREStruct()
199 ex->needsinitialization = PETSC_FALSE; in MatSetUp_HYPREStruct()
219 PetscCall(MatGetOwnershipRange(mat, &ex->rstart, NULL)); in MatSetUp_HYPREStruct()
220 PetscCall(DMGetLocalToGlobalMapping(ex->da, &ltog)); in MatSetUp_HYPREStruct()
221 PetscCall(ISLocalToGlobalMappingGetIndices(ltog, (const PetscInt **)&ex->gindices)); in MatSetUp_HYPREStruct()
222 PetscCall(DMDAGetGhostCorners(ex->da, 0, 0, 0, &ex->gnx, &ex->gnxgny, 0)); in MatSetUp_HYPREStruct()
223 ex->gnxgny *= ex->gnx; in MatSetUp_HYPREStruct()
224 PetscCall(DMDAGetCorners(ex->da, &ex->xs, &ex->ys, &ex->zs, &ex->nx, &ex->ny, 0)); in MatSetUp_HYPREStruct()
225 ex->nxny = ex->nx * ex->ny; in MatSetUp_HYPREStruct()
267 Mat_HYPREStruct *ex = (Mat_HYPREStruct *)mat->data; in MatAssemblyEnd_HYPREStruct() local
270 PetscCallHYPRE(HYPRE_StructMatrixAssemble(ex->hmat)); in MatAssemblyEnd_HYPREStruct()
283 Mat_HYPREStruct *ex = (Mat_HYPREStruct *)mat->data; in MatDestroy_HYPREStruct() local
286 PetscCallHYPRE(HYPRE_StructMatrixDestroy(ex->hmat)); in MatDestroy_HYPREStruct()
287 PetscCallHYPRE(HYPRE_StructVectorDestroy(ex->hx)); in MatDestroy_HYPREStruct()
288 PetscCallHYPRE(HYPRE_StructVectorDestroy(ex->hb)); in MatDestroy_HYPREStruct()
289 PetscCall(PetscObjectDereference((PetscObject)ex->da)); in MatDestroy_HYPREStruct()
290 PetscCallMPI(MPI_Comm_free(&ex->hcomm)); in MatDestroy_HYPREStruct()
291 PetscCall(PetscFree(ex)); in MatDestroy_HYPREStruct()
297 Mat_HYPREStruct *ex; in MatCreate_HYPREStruct() local
300 PetscCall(PetscNew(&ex)); in MatCreate_HYPREStruct()
301 B->data = (void *)ex; in MatCreate_HYPREStruct()
313 ex->needsinitialization = PETSC_TRUE; in MatCreate_HYPREStruct()
315 PetscCallMPI(MPI_Comm_dup(PetscObjectComm((PetscObject)B), &ex->hcomm)); in MatCreate_HYPREStruct()
344 Mat_HYPRESStruct *ex = (Mat_HYPRESStruct *)mat->data; in MatSetValuesLocal_HYPRESStruct_3d() local
351 PetscInt nvars = ex->nvars; in MatSetValuesLocal_HYPRESStruct_3d()
356 ordering = ex->dofs_order; /* ordering= 0 nodal ordering in MatSetValuesLocal_HYPRESStruct_3d()
378 } else if (stencil == -ex->gnx) { in MatSetValuesLocal_HYPRESStruct_3d()
380 } else if (stencil == ex->gnx) { in MatSetValuesLocal_HYPRESStruct_3d()
382 } else if (stencil == -ex->gnxgny) { in MatSetValuesLocal_HYPRESStruct_3d()
384 } else if (stencil == ex->gnxgny) { in MatSetValuesLocal_HYPRESStruct_3d()
389 row = ex->gindices[grid_rank] - ex->rstart; in MatSetValuesLocal_HYPRESStruct_3d()
390 index[0] = (HYPRE_Int)(ex->xs + (row % ex->nx)); in MatSetValuesLocal_HYPRESStruct_3d()
391 index[1] = (HYPRE_Int)(ex->ys + ((row / ex->nx) % ex->ny)); in MatSetValuesLocal_HYPRESStruct_3d()
392 index[2] = (HYPRE_Int)(ex->zs + (row / (ex->nxny))); in MatSetValuesLocal_HYPRESStruct_3d()
394 …if (addv == ADD_VALUES) PetscCallHYPRE(HYPRE_SStructMatrixAddToValues(ex->ss_mat, part, index, (HY… in MatSetValuesLocal_HYPRESStruct_3d()
395 …else PetscCallHYPRE(HYPRE_SStructMatrixSetValues(ex->ss_mat, part, index, (HYPRE_Int)var_type, (HY… in MatSetValuesLocal_HYPRESStruct_3d()
400 var_type = irow[i] / (ex->gnxgnygnz); in MatSetValuesLocal_HYPRESStruct_3d()
401 grid_rank = irow[i] - var_type * (ex->gnxgnygnz); in MatSetValuesLocal_HYPRESStruct_3d()
404 to_var_type = icol[j] / (ex->gnxgnygnz); in MatSetValuesLocal_HYPRESStruct_3d()
405 to_grid_rank = icol[j] - to_var_type * (ex->gnxgnygnz); in MatSetValuesLocal_HYPRESStruct_3d()
417 } else if (stencil == -ex->gnx) { in MatSetValuesLocal_HYPRESStruct_3d()
419 } else if (stencil == ex->gnx) { in MatSetValuesLocal_HYPRESStruct_3d()
421 } else if (stencil == -ex->gnxgny) { in MatSetValuesLocal_HYPRESStruct_3d()
423 } else if (stencil == ex->gnxgny) { in MatSetValuesLocal_HYPRESStruct_3d()
428 row = ex->gindices[grid_rank] - ex->rstart; in MatSetValuesLocal_HYPRESStruct_3d()
429 index[0] = (HYPRE_Int)(ex->xs + (row % ex->nx)); in MatSetValuesLocal_HYPRESStruct_3d()
430 index[1] = (HYPRE_Int)(ex->ys + ((row / ex->nx) % ex->ny)); in MatSetValuesLocal_HYPRESStruct_3d()
431 index[2] = (HYPRE_Int)(ex->zs + (row / (ex->nxny))); in MatSetValuesLocal_HYPRESStruct_3d()
433 …if (addv == ADD_VALUES) PetscCallHYPRE(HYPRE_SStructMatrixAddToValues(ex->ss_mat, part, index, (HY… in MatSetValuesLocal_HYPRESStruct_3d()
434 …else PetscCallHYPRE(HYPRE_SStructMatrixSetValues(ex->ss_mat, part, index, (HYPRE_Int)var_type, (HY… in MatSetValuesLocal_HYPRESStruct_3d()
447 Mat_HYPRESStruct *ex = (Mat_HYPRESStruct *)mat->data; in MatZeroRowsLocal_HYPRESStruct_3d() local
450 PetscInt ordering = ex->dofs_order; in MatZeroRowsLocal_HYPRESStruct_3d()
453 PetscInt nvars = ex->nvars; in MatZeroRowsLocal_HYPRESStruct_3d()
476 row = ex->gindices[grid_rank] - ex->rstart; in MatZeroRowsLocal_HYPRESStruct_3d()
477 index[0] = (HYPRE_Int)(ex->xs + (row % ex->nx)); in MatZeroRowsLocal_HYPRESStruct_3d()
478 index[1] = (HYPRE_Int)(ex->ys + ((row / ex->nx) % ex->ny)); in MatZeroRowsLocal_HYPRESStruct_3d()
479 index[2] = (HYPRE_Int)(ex->zs + (row / (ex->nxny))); in MatZeroRowsLocal_HYPRESStruct_3d()
480 …PetscCallHYPRE(HYPRE_SStructMatrixSetValues(ex->ss_mat, part, index, (HYPRE_Int)var_type, 7 * (HYP… in MatZeroRowsLocal_HYPRESStruct_3d()
484 var_type = irow[i] / (ex->gnxgnygnz); in MatZeroRowsLocal_HYPRESStruct_3d()
485 grid_rank = irow[i] - var_type * (ex->gnxgnygnz); in MatZeroRowsLocal_HYPRESStruct_3d()
487 row = ex->gindices[grid_rank] - ex->rstart; in MatZeroRowsLocal_HYPRESStruct_3d()
488 index[0] = (HYPRE_Int)(ex->xs + (row % ex->nx)); in MatZeroRowsLocal_HYPRESStruct_3d()
489 index[1] = (HYPRE_Int)(ex->ys + ((row / ex->nx) % ex->ny)); in MatZeroRowsLocal_HYPRESStruct_3d()
490 index[2] = (HYPRE_Int)(ex->zs + (row / (ex->nxny))); in MatZeroRowsLocal_HYPRESStruct_3d()
491 …PetscCallHYPRE(HYPRE_SStructMatrixSetValues(ex->ss_mat, part, index, (HYPRE_Int)var_type, 7 * (HYP… in MatZeroRowsLocal_HYPRESStruct_3d()
494 PetscCallHYPRE(HYPRE_SStructMatrixAssemble(ex->ss_mat)); in MatZeroRowsLocal_HYPRESStruct_3d()
503 Mat_HYPRESStruct *ex = (Mat_HYPRESStruct *)mat->data; in MatZeroEntries_HYPRESStruct_3d() local
504 PetscInt nvars = ex->nvars; in MatZeroEntries_HYPRESStruct_3d()
509 …size = (ex->hbox.imax[0] - ex->hbox.imin[0] + 1) * (ex->hbox.imax[1] - ex->hbox.imin[1] + 1) * (ex in MatZeroEntries_HYPRESStruct_3d()
515 ilower[i] = (HYPRE_Int)ex->hbox.imin[i]; in MatZeroEntries_HYPRESStruct_3d()
516 iupper[i] = (HYPRE_Int)ex->hbox.imax[i]; in MatZeroEntries_HYPRESStruct_3d()
523 …for (i = 0; i < nvars; i++) PetscCallHYPRE(HYPRE_SStructMatrixSetBoxValues(ex->ss_mat, part, ilowe… in MatZeroEntries_HYPRESStruct_3d()
526 PetscCallHYPRE(HYPRE_SStructMatrixAssemble(ex->ss_mat)); in MatZeroEntries_HYPRESStruct_3d()
532 Mat_HYPRESStruct *ex = (Mat_HYPRESStruct *)mat->data; in MatSetUp_HYPRESStruct() local
544 ex->da = da; in MatSetUp_HYPRESStruct()
547 PetscCall(DMDAGetInfo(ex->da, &dim, 0, 0, 0, 0, 0, 0, &dof, &sw[0], &px, &py, &pz, &st)); in MatSetUp_HYPRESStruct()
548 …PetscCall(DMDAGetCorners(ex->da, &ilower[0], &ilower[1], &ilower[2], &iupper[0], &iupper[1], &iupp… in MatSetUp_HYPRESStruct()
553 ex->hbox.imin[0] = (HYPRE_Int)ilower[0]; in MatSetUp_HYPRESStruct()
554 ex->hbox.imin[1] = (HYPRE_Int)ilower[1]; in MatSetUp_HYPRESStruct()
555 ex->hbox.imin[2] = (HYPRE_Int)ilower[2]; in MatSetUp_HYPRESStruct()
556 ex->hbox.imax[0] = (HYPRE_Int)iupper[0]; in MatSetUp_HYPRESStruct()
557 ex->hbox.imax[1] = (HYPRE_Int)iupper[1]; in MatSetUp_HYPRESStruct()
558 ex->hbox.imax[2] = (HYPRE_Int)iupper[2]; in MatSetUp_HYPRESStruct()
560 ex->dofs_order = 0; in MatSetUp_HYPRESStruct()
563 ex->nvars = (int)dof; in MatSetUp_HYPRESStruct()
567 …PetscCallHYPRE(HYPRE_SStructGridCreate(ex->hcomm, (HYPRE_Int)dim, (HYPRE_Int)nparts, &ex->ss_grid)… in MatSetUp_HYPRESStruct()
568 PetscCallHYPRE(HYPRE_SStructGridSetExtents(ex->ss_grid, part, ex->hbox.imin, ex->hbox.imax)); in MatSetUp_HYPRESStruct()
571 PetscCall(PetscMalloc1(ex->nvars, &vartypes)); in MatSetUp_HYPRESStruct()
572 for (i = 0; i < ex->nvars; i++) vartypes[i] = HYPRE_SSTRUCT_VARIABLE_CELL; in MatSetUp_HYPRESStruct()
573 … PetscCallHYPRE(HYPRE_SStructGridSetVariables(ex->ss_grid, part, (HYPRE_Int)ex->nvars, vartypes)); in MatSetUp_HYPRESStruct()
576 PetscCallHYPRE(HYPRE_SStructGridAssemble(ex->ss_grid)); in MatSetUp_HYPRESStruct()
590 ssize = 3 * (ex->nvars); in MatSetUp_HYPRESStruct()
591 PetscCallHYPRE(HYPRE_SStructStencilCreate((HYPRE_Int)dim, (HYPRE_Int)ssize, &ex->ss_stencil)); in MatSetUp_HYPRESStruct()
593 for (i = 0; i < (ex->nvars); i++) { in MatSetUp_HYPRESStruct()
595 …PetscCallHYPRE(HYPRE_SStructStencilSetEntry(ex->ss_stencil, (HYPRE_Int)cnt, offsets[j], (HYPRE_Int… in MatSetUp_HYPRESStruct()
609 ssize = 5 * (ex->nvars); in MatSetUp_HYPRESStruct()
610 PetscCallHYPRE(HYPRE_SStructStencilCreate((HYPRE_Int)dim, (HYPRE_Int)ssize, &ex->ss_stencil)); in MatSetUp_HYPRESStruct()
612 for (i = 0; i < (ex->nvars); i++) { in MatSetUp_HYPRESStruct()
614 …PetscCallHYPRE(HYPRE_SStructStencilSetEntry(ex->ss_stencil, (HYPRE_Int)cnt, offsets[j], (HYPRE_Int… in MatSetUp_HYPRESStruct()
630 ssize = 7 * (ex->nvars); in MatSetUp_HYPRESStruct()
631 PetscCallHYPRE(HYPRE_SStructStencilCreate((HYPRE_Int)dim, (HYPRE_Int)ssize, &ex->ss_stencil)); in MatSetUp_HYPRESStruct()
633 for (i = 0; i < (ex->nvars); i++) { in MatSetUp_HYPRESStruct()
635 …PetscCallHYPRE(HYPRE_SStructStencilSetEntry(ex->ss_stencil, (HYPRE_Int)cnt, offsets[j], (HYPRE_Int… in MatSetUp_HYPRESStruct()
642 PetscCallHYPRE(HYPRE_SStructGraphCreate(ex->hcomm, ex->ss_grid, &ex->ss_graph)); in MatSetUp_HYPRESStruct()
646 …for (i = 0; i < (ex->nvars); i++) PetscCallHYPRE(HYPRE_SStructGraphSetStencil(ex->ss_graph, part, … in MatSetUp_HYPRESStruct()
647 PetscCallHYPRE(HYPRE_SStructGraphAssemble(ex->ss_graph)); in MatSetUp_HYPRESStruct()
650 PetscCallHYPRE(HYPRE_SStructVectorCreate(ex->hcomm, ex->ss_grid, &ex->ss_b)); in MatSetUp_HYPRESStruct()
651 PetscCallHYPRE(HYPRE_SStructVectorCreate(ex->hcomm, ex->ss_grid, &ex->ss_x)); in MatSetUp_HYPRESStruct()
652 PetscCallHYPRE(HYPRE_SStructVectorInitialize(ex->ss_b)); in MatSetUp_HYPRESStruct()
653 PetscCallHYPRE(HYPRE_SStructVectorInitialize(ex->ss_x)); in MatSetUp_HYPRESStruct()
654 PetscCallHYPRE(HYPRE_SStructVectorAssemble(ex->ss_b)); in MatSetUp_HYPRESStruct()
655 PetscCallHYPRE(HYPRE_SStructVectorAssemble(ex->ss_x)); in MatSetUp_HYPRESStruct()
658 PetscCallHYPRE(HYPRE_SStructMatrixCreate(ex->hcomm, ex->ss_graph, &ex->ss_mat)); in MatSetUp_HYPRESStruct()
659 PetscCallHYPRE(HYPRE_SStructGridDestroy(ex->ss_grid)); in MatSetUp_HYPRESStruct()
660 PetscCallHYPRE(HYPRE_SStructStencilDestroy(ex->ss_stencil)); in MatSetUp_HYPRESStruct()
661 if (ex->needsinitialization) { in MatSetUp_HYPRESStruct()
662 PetscCallHYPRE(HYPRE_SStructMatrixInitialize(ex->ss_mat)); in MatSetUp_HYPRESStruct()
663 ex->needsinitialization = PETSC_FALSE; in MatSetUp_HYPRESStruct()
683 PetscCall(MatGetOwnershipRange(mat, &ex->rstart, NULL)); in MatSetUp_HYPRESStruct()
684 PetscCall(DMGetLocalToGlobalMapping(ex->da, &ltog)); in MatSetUp_HYPRESStruct()
685 PetscCall(ISLocalToGlobalMappingGetIndices(ltog, (const PetscInt **)&ex->gindices)); in MatSetUp_HYPRESStruct()
686 PetscCall(DMDAGetGhostCorners(ex->da, 0, 0, 0, &ex->gnx, &ex->gnxgny, &ex->gnxgnygnz)); in MatSetUp_HYPRESStruct()
688 ex->gnxgny *= ex->gnx; in MatSetUp_HYPRESStruct()
689 ex->gnxgnygnz *= ex->gnxgny; in MatSetUp_HYPRESStruct()
691 PetscCall(DMDAGetCorners(ex->da, &ex->xs, &ex->ys, &ex->zs, &ex->nx, &ex->ny, &ex->nz)); in MatSetUp_HYPRESStruct()
693 ex->nxny = ex->nx * ex->ny; in MatSetUp_HYPRESStruct()
694 ex->nxnynz = ex->nz * ex->nxny; in MatSetUp_HYPRESStruct()
775 Mat_HYPRESStruct *ex = (Mat_HYPRESStruct *)mat->data; in MatAssemblyEnd_HYPRESStruct() local
778 PetscCallHYPRE(HYPRE_SStructMatrixAssemble(ex->ss_mat)); in MatAssemblyEnd_HYPRESStruct()
791 Mat_HYPRESStruct *ex = (Mat_HYPRESStruct *)mat->data; in MatDestroy_HYPRESStruct() local
795 PetscCall(DMGetLocalToGlobalMapping(ex->da, &ltog)); in MatDestroy_HYPRESStruct()
796 PetscCall(ISLocalToGlobalMappingRestoreIndices(ltog, (const PetscInt **)&ex->gindices)); in MatDestroy_HYPRESStruct()
797 PetscCallHYPRE(HYPRE_SStructGraphDestroy(ex->ss_graph)); in MatDestroy_HYPRESStruct()
798 PetscCallHYPRE(HYPRE_SStructMatrixDestroy(ex->ss_mat)); in MatDestroy_HYPRESStruct()
799 PetscCallHYPRE(HYPRE_SStructVectorDestroy(ex->ss_x)); in MatDestroy_HYPRESStruct()
800 PetscCallHYPRE(HYPRE_SStructVectorDestroy(ex->ss_b)); in MatDestroy_HYPRESStruct()
801 PetscCall(PetscObjectDereference((PetscObject)ex->da)); in MatDestroy_HYPRESStruct()
802 PetscCallMPI(MPI_Comm_free(&ex->hcomm)); in MatDestroy_HYPRESStruct()
803 PetscCall(PetscFree(ex)); in MatDestroy_HYPRESStruct()
809 Mat_HYPRESStruct *ex; in MatCreate_HYPRESStruct() local
812 PetscCall(PetscNew(&ex)); in MatCreate_HYPRESStruct()
813 B->data = (void *)ex; in MatCreate_HYPRESStruct()
825 ex->needsinitialization = PETSC_TRUE; in MatCreate_HYPRESStruct()
827 PetscCallMPI(MPI_Comm_dup(PetscObjectComm((PetscObject)B), &ex->hcomm)); in MatCreate_HYPRESStruct()