Skip to main content
`Ctrl`+`K`

# PetscLayoutCreate

Allocates `PetscLayout` object

## Synopsis

    #include "petscis.h"
    PetscErrorCode PetscLayoutCreate(MPI_Comm comm, PetscLayout *map)

Collective

## Input Parameter

- comm - the MPI communicator

## Output Parameter

- map - the new `PetscLayout`

## Notes

Typical calling sequence

           PetscLayoutCreate(MPI_Comm,PetscLayout *);
           PetscLayoutSetBlockSize(PetscLayout,bs);
           PetscLayoutSetSize(PetscLayout,N); // or PetscLayoutSetLocalSize(PetscLayout,n);
           PetscLayoutSetUp(PetscLayout);

Alternatively,

          PetscLayoutCreateFromSizes(comm,n,N,bs,&layout);

Optionally use any of the following

      PetscLayoutGetSize(PetscLayout,PetscInt *);
      PetscLayoutGetLocalSize(PetscLayout,PetscInt *);
      PetscLayoutGetRange(PetscLayout,PetscInt *rstart,PetscInt *rend);
      PetscLayoutGetRanges(PetscLayout,const PetscInt *range[]);
      PetscLayoutDestroy(PetscLayout*);

The `PetscLayout` object and methods are intended to be used in the PETSc `Vec` and `Mat` implementations; it is often not needed in user codes unless you really gain something in their use.

## See Also

PetscLayout, `PetscLayoutSetLocalSize()`, `PetscLayoutSetSize()`, `PetscLayoutGetSize()`, `PetscLayoutGetLocalSize()`, `PetscLayout`, `PetscLayoutDestroy()`, `PetscLayoutGetRange()`, `PetscLayoutGetRanges()`, `PetscLayoutSetBlockSize()`, `PetscLayoutGetBlockSize()`, `PetscLayoutSetUp()`, `PetscLayoutCreateFromSizes()`

## Level

advanced

## Location

src/vec/is/utils/pmap.c

## Examples

src/ksp/ksp/tutorials/ex85.c
src/ts/tutorials/ex30.c

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