petsc-3.10.5 2019-03-28
Report Typos and Errors

# Documentation: Changes: 2.1.1

## CHANGES in PETSc 2.1.1 (see new features)

#### 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 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()`

#### 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:

## New features in PETSc 2.1.1 (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:-)

#### 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: