# Changes: 2.1.0

## Changes

(See [Features] below)

```{rubric} General:
```

- Simpler interface for structured grids, see
  src/snes/examples/tutorials/ex5.c
- "System routines" including PLog..., Options..., Viewer...,
  Draw...., FList...,OList... now all begin with the string Petsc.
  For example, PetscOptionsGetInt() and PetscLogBegin().
- The calling sequence for PetscMalloc() was changed to return and
  error code and deliver the pointer as a new final argument. Due to
  this change, the macros CHKPTRA() and CHKPTRQ() were dropped.

```{rubric} AO (Application Orderings):
```

```{rubric} TS (Timestepping Solvers):
```

```{rubric} SNES (Nonlinear Solvers):
```

```{rubric} SLES (Linear Solvers):
```

```{rubric} KSP (Krylov Subspace Methods):
```

```{rubric} PC (Preconditioners):
```

```{rubric} MAT (Matrices):
```

- When using MatCreate(), you must follow with a MatSetType() or
  MatSetFromOptions() before using the matrix.
- Changed
  `int             MatShellSetOperation(Mat,MatOperation,void*);`
  to
  `int             MatShellSetOperation(Mat,MatOperation,void(*)());`
- Changed
  `int             MatShellGetOperation(Mat,MatOperation,void**);`
  to
  `int             MatShellGetOperation(Mat,MatOperation,void(**)());`
- Changed IncompleteCholesky to ICC

```{rubric} DA (Distributed Arrays):
```

- Changed the DAMG routines to DMMG routines.
- DAGetColoring() now has new second argument that takes either
  IS_COLORING_GLOBAL or IS_COLOR_GLOBAL and a new third argument
  that takes the matrix type of either MATMPIAIJ or MATMPIBAIJ.

```{rubric} VEC (Vectors):
```

- Changed `int VecSetOperation(Vec,VecOperation,void*);` to
  `int VecSetOperation(Vec,VecOperation,void(*)());`

```{rubric} IS (Index Sets):
```

```{rubric} General:
```

```{rubric} Draw (Graphics):
```

```{rubric} Viewers:
```

```{rubric} System:
```

```{rubric} Error Handling:
```

- CHKERRA() is now obselete; use CHKERRQ() instead. Changed the
  calling sequence of SETERRQ() to eliminate the second input
  parameter.

```{rubric} Event Logging:
```

```{rubric} Fortran Interface:
```

## Features

(See [Changes] above)

```{rubric} General:
```

- Simpler interface for structured grids, see
  src/snes/examples/tutorials/ex5.c
- Complete infrastructure for parallel multigrid for linear and
  nonlinear problems on structured grids. See
  src/snes/examples/tutorials/ex19.c
- Added manual pages for PETSc objects, enums etc.
- Added html version of all source code and examples, accessible
  from docs/index.html and the manual pages.

```{rubric} AO (Application Orderings):
```

```{rubric} TS (Timestepping Solvers):
```

```{rubric} SNES (Nonlinear Solvers):
```

```{rubric} SLES (Linear Solvers):
```

```{rubric} KSP (Krylov Subspace Methods):
```

- Added support for "diagonal scaling" of preconditioned system as
  required by most ODE integrators via PCDiagonalScaleSet().

```{rubric} PC (Preconditioners):
```

```{rubric} MAT (Matrices):
```

- Added the Henry Tufo/Paul Fischer libtfs scalable parallel direct
  solver for MPIAIJ matrices.
- Added routine MatFDColoringSetRecompute().

```{rubric} DA (Distributed Arrays):
```

- Added DAVecGetArray() to access the multidimensional arrays
  directly in the global parallel indexing. See
  src/snes/examples/tutorials/ex5.c and ex19.c
- Add DAGetLocalVector()/DARestoreLocalVector() for inexpensive
  access to local work vectors.

```{rubric} VEC (Vectors):
```

- Added DMComposite routines to help with PDE optimization and
  multicomponent PDEs.

```{rubric} IS (Index Sets):
```

```{rubric} PF:
```

```{rubric} Draw (Graphics):
```

```{rubric} Viewers:
```

```{rubric} System:
```

```{rubric} Error Handling:
```

```{rubric} Event Logging:
```

```{rubric} Fortran Interface:
```
