# Changes: 2.3.1

```{rubric} General:
```

- -log_info is now just -info; PetscLogInfo...() is now
  PetscInfo...()
- Added TOPS solver components. [requires CCA tools like babel]
- Added supported for IBM BGL with optimzed fortran kernels
- bin/petscarch is removed. Use can give any name to PETSC_ARCH. [if
  not - configure picks a default name]
- PetscMap is no longer a public PETSc object

```{rubric} Vec:
```

- Changed prototypes for VecMDotBegin(), VecMDotEnd(),
  VecMTDotBegin(), VecMTDotEnd() to confirm with PETSc prototype
  style
- ISColoringCreate() takes another argument

```{rubric} Mat:
```

- MatScaleSystem() and MatUnscaleSystem() now take arguments b,x
  instead of x,b
- Added MatSeqAIJSetPreallocationCSR(), MatGetSubMatrixRaw()
- Added MatSolveTranspose() for superlu
- Added support for matrix types MATCSRPERM, MATCRL - for vector
  based machines.
- Added MatMatMult for seqdense
- Added MatRealPart, ImaginaryPart for AIJ, BAIJ, SBAIJ matrices
- Added MatGetRowUpperTriangular() to mpisbaij matrix

```{rubric} PC:
```

- PCPrometheusSetCoordinates() changed to PCSetCoordinates()
- Moved src/ksp/pc/pcimpl.h to include/petsc/private/pcimpl.h
- PCPreSolve() and PCPostSolve() now consistently take arguments b,x
  before sometimes they took x,b
- PCXXXSetYYY() and -pc_xxx_yyyy are now changed to PCFactorSetYYY()
  and -pc_factor_yyyy for XXX LU, ILU, Cholesky, and ICC

```{rubric} KSP:
```

- -ksp_view, -ksp_monitor now take an optional filename argument
- Added PetscLLAddPerm() to symbolic LU factorization

```{rubric} config/configure.py:
```

- Changed --with-64-bit-ints to --with-64-bit-indices
- config/configure.py now supports the arguments
  --with-precision=longdouble and --with-precision=int, these
  currently have limited functionality and certain things like
  binary IO does not work.
- Option --LIBS=\<extra libs> for some broken compilers that require
  that require extra system libraries to be linked with
- Changed --with-fortran-kernels=\<0,1> option to
  --with-fortran-kernels=\<none,generic,bgl>
- Support --with-large-file-io=\<bool> which indicates using files
  larger than 2GB
- --with-f90-header, --with-f90-source options merged into a single
  option - for eg: --with-f90-interface=intel8
- Added --with-is-color-value-type=\<char,short>: char gives max of
  256 colors, short gives max of 65536 colors
- Configure always tries to build libraries with PIC [or equivalent
  flag] To disable this, use: --with-pic=0
- Added --with-c-language-support for compiling PETSc with 'c'
  linkage - but with a c++ compiler.
- ---download-mpich option now defaults to pm=gforker. To use mpd -
  use the additional option --download-mpich-pm=mpd
- --with-timer option is added [if the user knows MPI_Wtime() is
  accurate/low-overhead on a machine - then use: --with-timer=mpi]

```{rubric} SNES:
```

- -snes-view, -snes_monitor now take an optional filename argument

```{rubric} TS:
```

- -ts_view, -ts_monitor now take an optional filename argument

```{rubric} DA:
```

```{rubric} DMMG:
```

- Arguments to DMMGSetKSP() changed. Now the callback which forms
  the linear system matrix can optionally fill also an alternate
  matrix for the preconditioner.

```{rubric} SYS:
```

- PetscViewerFileType changed to PetscFileMode
- PetscViewerSetFileType() changed to PetscViewerFileSetMode()

```{rubric} Fortran:
```

- remove the special libpetscfortran.a [fortran interface & c
  interface now go into the same library]
- With some f90 compilers - PETSc datatypes [like
  PetscScalar,PetscInt] will use f90 KIND declaration - so if this
  code is in fixed form - there could be errors with lines exceeding
  72 char limit

```{rubric} ExternalPackages:
```

- PLAPACK support added
- BLOPEX support added
- Updated Pvode interface to the newer Sundials package \[configure
  option --download-sundials=1
- Added --download-mpe=1
- fblaslapack now has complete blas - as required by some external
  packages
