DMDASetBlockFills — PETSc 3.21.4 documentation

Skip to main content
`Ctrl`+`K`

# DMDASetBlockFills

Sets the fill pattern in each block for a multi-component problem of the matrix returned by `DMCreateMatrix()`.

## Synopsis

    #include "petscdmda.h"
    PetscErrorCode DMDASetBlockFills(DM da, const PetscInt *dfill, const PetscInt *ofill)

Logically Collective

## Input Parameters

- da - the `DMDA`

- dfill - the fill pattern in the diagonal block (may be `NULL`, means use dense block)

- ofill - the fill pattern in the off-diagonal blocks

## Notes

This only makes sense when you are doing multicomponent problems but using the `MATMPIAIJ` matrix format

The format for `dfill` and `ofill` is a 2 dimensional dof by dof matrix with 1 entries representing coupling and 0 entries for missing coupling. For example

                dfill[9] = {1, 0, 0,
                            1, 1, 0,
                            0, 1, 1}

means that row 0 is coupled with only itself in the diagonal block, row 1 is coupled with itself and row 0 (in the diagonal block) and row 2 is coupled with itself and row 1 (in the diagonal block).

`DMDASetGetMatrix()` allows you to provide general code for those more complicated nonzero patterns then can be represented in the `dfill`, `ofill` format

Contributed by: Glenn Hammond

## See Also

DMDA - Creating vectors for structured grids, `DM`, `DMDA`, `DMCreateMatrix()`, `DMDASetGetMatrix()`, `DMSetMatrixPreallocateOnly()`, `DMDASetBlockFillsSparse()`

## Level

developer

## Location

src/dm/impls/da/fdda.c

Index of all DMDA routines
Table of Contents for all manual pages
Index of all manual pages