DMDASetBlockFillsSparse#
Sets the fill pattern in each block for a multi-component problem of the matrix returned by DMCreateMatrix()
, using sparse representations of fill patterns.
Synopsis#
#include "petscdmda.h"
PetscErrorCode DMDASetBlockFillsSparse(DM da, const PetscInt *dfillsparse, const PetscInt *ofillsparse)
Logically Collective
Input Parameters#
da - the
DMDA
dfillsparse - the sparse fill pattern in the diagonal block (may be
NULL
, means use dense block)ofillsparse - the sparse 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 sparse representation of a
dof-by-dof matrix with 1 entries representing coupling and 0 entries
for missing coupling. The sparse representation is a 1 dimensional
array of length nz + dof + 1, where nz is the number of non-zeros in
the matrix. The first dof entries in the array give the
starting array indices of each row’s items in the rest of the array,
the dof+1st item contains the value nz + dof + 1 (i.e. the entire length of the array)
and the remaining nz items give the column indices of each of
the 1s within the logical 2D matrix. Each row’s items within
the array are the column indices of the 1s within that row
of the 2D matrix. PETSc developers may recognize that this is the
same format as that computed by the DMDASetBlockFills_Private()
function from a dense 2D matrix representation.
DMDASetGetMatrix()
allows you to provide general code for those more complicated nonzero patterns then
can be represented in the dfill
, ofill
format
Contributed by: Philip C. Roth
See Also#
DMDA - Creating vectors for structured grids, DM
, DMDA
, DMDASetBlockFills()
, DMCreateMatrix()
, DMDASetGetMatrix()
, DMSetMatrixPreallocateOnly()
Level#
developer
Location#
Index of all DMDA routines
Table of Contents for all manual pages
Index of all manual pages