# Changes: 2.1.1

## Changes

(See Features below)

General:

- Scalar -> PetscScalar (and added PetscReal)

- The make files are reorganized. bmake/${PETSC_ARCH}/base_variables -> variables, and base.site -> packages. base ->rules.

- If using makefiles from earlier version of PETSc, change

  - `include ${PETSC_DIR}/bmake/${PETSC_ARCH}/base`

  to

  - `include ${PETSC_DIR}/conf/base`

- The Microsoft Windows build of PETSc with win32_gnu, win32_intel and win32_mpich now default to using MPICH-1.2.3The complex version of the PETSc libraries can only be installed with C++ compilers that provide the std::complex implementation.

AO (Application Orderings):

TS (Timestepping Solvers):

DMMG

- Default Krylov method on outer linear solver is now FGMRES instead of GMRES. Also default multigrid type is now full instead of multiplicative

SNES (Nonlinear Solvers):

SLES (Linear Solvers):

KSP (Krylov Subspace Methods):

- All KSP methods with left preconditioning use the preconditioned residual by default (before CG, CR used the unpreconditioned residual). Use -ksp_norm_type <none,preconditioned,unpreconditioned,natural> to change it, see next bullet.

- `KSPSetInitialGuessNonzero(), KSPSetComputeSingularValues(), KSPSetComputeEigenvalues(),` all now take a PetscTruth as the second argument allowing them to each be toggled on or off

- `KSPSetAvoidNorms(), KSPSetUseUnpreconditionedResidual(), KSPSetComputeResidual()` have all been merged into `KSPSetNormType()`

PC (Preconditioners):

MAT (Matrices):

- Added additional local relaxation argument to `MatRelax()`

- Added additional argument to `MatAXPY()`

  - MatSNESMFFormJacobian() has been renamed to MatSNESMFComputeJacobian()

  - added another field to MatLUInfo and MatILUInfo

  - MatCreate() now requires a call to MatSetType() or MatSetFromOptions()

  - The MatType is assigned in either of these calls.

DA (Distributed Arrays):

In order to set the grid sizes with -da_grid_x, -da_grid_y, -da_grid_z one must pass in negative values for the M, N, and P arguments in the call to DACreateXX(). If values are not set from the options database then the absolute value of the M,N,P is used as the default.

- Changed DAGetColoring() to two routines, DAGetColoring() and DAGetMatrix()

VEC (Vectors):

- Changed VecCreate() to no longer take in size arguments. Use VecCreate() & VecSetSizes()

IS (Index Sets):

- Changed IS_COLORING_LOCAL to IS_COLORING_GHOSTED and IS_COLORING_GLOBAL to IS_COLORING_LOCAL

General:

`PetscOptionsGetDouble()` is now `PetscOptionsGetReal()` .. rubric:: Draw (Graphics):

Viewers:

System:

Error Handling:

Event Logging:

Logging functionality is completely reworked. Now one can register new stages, classes and events. Every event is associated with a class. So, users would have to create a class for all userevents.

- `PetscLogStageRegister()` now takes an int * as the first argument

- `PetscLogEventRegister()` takes an int as the third argument, not a char *

Fortran Interface:

## Features

(See Changes above)

General:

- configure can now be used to build PETSc on some architectures. Currently tested on Linux, IRIX, Solaris machines.We’d like your feedback on this feature; please send `configure_petsc.log` and `config.log`when reporting problems with configure.

- Added support for ESI vectors and matrices. Use BOPT=g_c++ or O_c++Better

- support for automatic differentiation with ADIC

AO (Application Orderings):

TS (Timestepping Solvers):

SNES (Nonlinear Solvers):

SLES (Linear Solvers):

KSP (Krylov Subspace Methods):

PC (Preconditioners):

- added -pc_lu_zeropivot and -pc_ilu_zeropivot (still need function interfaces)

MAT (Matrices):

DA (Distributed Arrays):

Added DAGetArray() and DARestoreArray() that give workspace appropriate for a local function. These may be used in routines that diverentiated with ADIC:-) .. rubric:: VEC (Vectors):

- Added the utility routines which do special cases of vecscatters VecConvertMPIToSeqAll(),VecConvertMPIToMPIZero()

IS (Index Sets):

PF:

Draw (Graphics):

- added DrawEllipse()

Viewers:

- added PetscViewerASCIISetMode()

System:

Error Handling:

Event Logging:

Fortran Interface: