# Changes: 2.1.6 ```{rubric} General: ``` - Added support for Cray X1 - Added option '-suggest' to petscarch script. It suggests some possible PETSC_ARCHes to use - Installation instructions are rewritten ```{rubric} Vec: ``` - VecNorm now caches NORM_2 - Added VecStrideScale(), VecStrideGather(), VecStrideScatter() - Added VecBlockNorm(),VecBlockMax(),VecBlockMin(),VecBlockScale() ```{rubric} Mat: ``` - The interface to external packages that support direct solvers has been reorganized. This is implemented using new matrix types MATSEQAIJSPOOLES, MATMPIAIJSPOOLES, MATSEQSBAIJSPOOLES, MATMPISBAIJSPOOLES, MATSUPERLU, MATSUPERLU_DIST, MATUMFPACK,MATESSL, MATLUSOL, MATAIJMUMPS, MATSBAIJMUMPS, MATDSCPACK - Added new convenience matrix types which automatically switch between Seq and MPI implementations depending on the size of the communicator used during creation: MATAIJ, MATBAIJ, MATSBAIJ, MATMAIJ, MATDENSE, MATBDIAG - Changed default matrix-free compute h to use WP since it uses fewer reductions - Replace the datatypes MatLUInfo and MatILUInfo by MatFactorInfo - Added cholesky support to SeqAIJ - Added support for SUBSET_NONZERO_PATTERN with MatAXPY for AIJ & BAIJ - Added MatIsSymmetric() for AIJ - Added LDA support in SeqDense - The ncols argument made optional in MatGetRow() - Added MAT_KEEP_ZEROED_ROWS for MPIROWBS - Removed -aij_oneindex support from AIJ code - Added MatPartitioningSetPartitionWeights() - usable with ParMetis - MatGetSubMatrices() now works for ROWBS ```{rubric} PC: ``` - Added PCICCSetDamping() or -pc_icc_damping - Added -pc_constant_null_space - Added PCILUSetShift() or -pc_ilu_shift to support damping using the identity - Added PCLUSetShift() or -pc_lu_shift to support damping using the identity - Added PCICCSetShift() or -pc_icc_shift to support damping using the identity ```{rubric} KSP: ``` - Added a new ksp_type LGMRES - Added KSPSetComputeSingularValues() support to ksp_type FGMRES ```{rubric} TS: ``` - Added support for Runge-Kutta using ts_type TS_RUNGE_KUTTA ```{rubric} DMMG: ``` - -dmmg_jacobian_period -1 => jacobian is frozen after initial construction ```{rubric} DA: ``` - Allow user preallocation of jacobian using DASetGetMatrix() - DAGetMatrix now correctly returns the requested type. - -mat_type typename overloads the requested type for DAGetMatrix ```{rubric} SYS: ``` - Added new viewer_type PETSC_VIEWER_NETCDF, PETSC_VIEWER_HDF4 - PETSc error handlers now trap many more signals. ```{rubric} Fortran: ``` - PetscPushErrorHandler() and PetscPopErrorHandler() now supported - PetscPrintf() and PetscSynchronizedPrintf() now work in fortran with a single string ```{rubric} External Packages: ``` - Added TSPVodeGetParameters() - Parmetis-3 support added using MatPartitionSetNParts(), ISPartitionCount() - MUMPS support added, including complex (using mat_type MATAIJMUMPS, MATSBAIJMUMPS) - Updated SuperLU_DIST interface to SuperLU_DIST_2.0 - Added Spooles complex support - Added Spooles cholesky for SeqAIJ - ADIC: ad_GRAD_MAX is now set in the application and compiled into code when compiling appplication - The following variable names - in the buildsystem are changed - that correspond with SuperLU_DIST SUPERLUDIST_INCLUDE -> SUPERLU_DIST_INCLUDE SUPERLUDIST_LIB -> SUPERLU_DIST_LIB PETSCHAVE_SUPERLU -> PETSC_HAVE_SUPERLU