Skip to main content
`Ctrl`+`K`

# SNESMultiblockSetFields

Sets the fields for one particular block in a `SNESMULTIBLOCK` solver

## Synopsis

    #include "petscsnes.h"
    PetscErrorCode SNESMultiblockSetFields(SNES snes, const char name[], PetscInt n, const PetscInt *fields)

Logically Collective

## Input Parameters

- snes - the solver

- name - name of this block, if `NULL` the number of the block is used

- n - the number of fields in this block

- fields - the fields in this block

## Notes

Use `SNESMultiblockSetIS()` to set a completely general set of row indices as a block.

The `SNESMultiblockSetFields()` is for defining blocks as a group of strided indices, or fields. For example, if the vector block size is three then one can define a block as field 0, or 1 or 2, or field 0,1 or 0,2 or 1,2 which means 0xx3xx6xx9xx12 … x1xx4xx7xx … xx2xx5xx8xx.. 01x34x67x… 0x23x56x8.. x12x45x78x…. where the numbered entries indicate what is in the block.

This function is called once per block (it creates a new block each time). Solve options for this block will be available under the prefix -multiblock_BLOCKNAME_.

## See Also

SNES: Nonlinear Solvers, `SNES`, `SNESMULTIBLOCK`, `SNESMultiblockGetSubSNES()`, `SNESMultiblockSetBlockSize()`, `SNESMultiblockSetIS()`

## Level

intermediate

## Location

src/snes/impls/multiblock/multiblock.c

## Implementations

SNESMultiblockSetFields_Default() in src/snes/impls/multiblock/multiblock.c

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