Changes: 3.6#
General:
- User makefiles must be updated. You must change the lines - include ${PETSC_DIR}/conf/variables and 
- include ${PETSC_DIR}/conf/rules 
 - to - include ${PETSC_DIR}/lib/petsc/conf/variables and 
- include ${PETSC_DIR}/lib/petsc/conf/rules 
 
- PetscOptionsBool() no longer sets the value of the boolean based on the value passed in 
- Script for running MPIUni jobs is now bin/petsc-mpiexec.uni 
- Removed all threadcomm support including –with-pthreadclasses and –with-openmpclasses configure arguments 
- Updated MUMPS version to 5.0.0 - and updated metis to 5.1.0, parmetis to 4.0.3-p1 - in sync with MUMPS. 
- Updated to hypre-2.10.0b, scotch_6.0.3, Elemental-0.85 
Configure/Build:
- Add toplevel makefile targets clean and distclean. Target clean deletes petsc libraries built by makefile target all. Target distclean deletes all build files created by configure and [make all]. Target clean in example directories continues to work as before [deletes object files and executables] 
IS:
PetscDraw:
- PetscDrawBoxedString() changed to PetscDrawStringBoxed() added PetscDrawBar object for drawing bar graphs added PetscDrawStringCentered() 
PF:
Vec:
VecScatter:
PetscSection:
Mat:
- MatGetVecs() replaced with MatCreateVecs() because it actually does create the Vecs that need to be destroyed 
- MatCreateMPIAIJConcatenateSeqAIJ and MatCreateMPIBAIJConcatenateSeqBAIJ replaced with MatCreateMPIMatConcatenateSeqMat 
- MatGetRedundantMatrix() replaced with MatCreateRedundantMatrix() 
- Added support for MUMPS sequential solver in Schur complement mode 
- MatGetSubMatricesMPI() will extract parallel submatrices on subcommunicators of the supplied IS objects. Unsorted, but not repeated indices are okay. 
- Removed MatMFFDAddNullSpace() just use MatSetNullSpace() 
PC:
- Removed -pc_hypre_type euclid due to bit-rot 
- Upgraded to SuiteSparse 4.4.1; Cholmod supports using GPUs (developer repository only feature) –with-cuda –download-suitesparse-gpu –with-64-bit-indices; -mat_cholmod_useGPU 1 or 0; 1 by default when configured for it 
- Upgraded to Superlu_DIST 4.0; Superlu_DIST supports using GPUs (developer repository only feature) –with-cuda –with-openmp –download-superlu_dist-gpu (developer repository only feature) –with-64-bit-indices -mat_cholmod_useGPU 1 or 0; 1 by default when configured for it 
- Added PCBDDCSetChangeOfBasisMat for user defined change of basis 
- PCBDDC: added adaptive selection of constraints: it is available by command line options 
- PCJacobiSetUseAbs() now takes a PetscBool argument allowing toggling the option 
- PCJacobiSetUseRowMax() and PCJacobiSetUseRowSum() have been merged into PCJacobiSetType() 
- PCFactorSetUseInplace() now takes a PetscBool argument. Added PCFactorGetUseInplace() 
- PCFactorSetAllowDiagonalFill() now takes a PetscBool argument. Added PCFactorGetAllowDiagonalFill() 
- PCEisenstatNoDiagonalScaling() changed to PCEisenstatSetNoDiagonalScaling() and takes a boolean 
- Added Interface to AMS solver from HYPRE for Nedelec discretizations (-pc_hypre_type ams) 
- Added Interface to ADS solver from HYPRE for Raviart-Thomas discretizations (-pc_hypre_type ads) 
- Contributed MKL PARDISO interface providing PCCholesky support. Useable with: -pc_type cholesky -mat_type sbaij -pc_factor_mat_solver_package mkl_pardiso 
- PCGASMSetTotalSubdomains() can now create multirank subdomains if their number is less than comm size. 
- PCGAMGSetReuseProl() is changed to PCGAMGSetReuseInterpolation() 
KSP:
- Removed KSPSetNullSpace() always use MatSetNullSpace() provided to the FIRST matrix argument to KSPSetOperators(), or SNESSetJacobian(), or TSSetIJacobian() 
- Added MatSetTransposeNullSpace() to indicate the null space of the transpose operator 
- Removed KSPSPECEST since its functionality is replaced by the esteig functionality within KSPChebyshev 
- Unified KSPChebyshev routines that work with estimating eigenvalues with the prefix name KSPChebyshevEstEig… For example KSPChebyshevSetEstimateEigenvalues() is now KSPChebyshevEstEigSet() and KSPChebyshevSetEstimateEigenvaluesRandom() is now KSPChebyshevEstEigSetRandom() similarly -ksp_chebyshev_estimate_eigenvalues_random is -ksp_chebyshev_esteig_random. The previous for the (GMRES) KSP used to estimate the eigenvalues is now esteig_ not est_ 
- KSPGetVecs() replaced with KSPCreateVecs() because it actually does create the Vecs that need to be destroyed 
SNES:
- Added KSPMonitorSNES() with command line option -ksp_monitor_snes and -ksp_monitor_snes_lg to monitor SNES residual norm at each linear iteration SNESMonitorVI() becomes SNESVIMonitor() 
- Added SNESVIMonitorResidual() and -snes_vi_monitor_residual 
SNESLineSearch:
TS:
- The postevent routine set with TSSetEventMonitor() now takes an additional PetscBool argument ‘forwardsolve’. The forwardsolve flag is used to distinguish between a TS forward solve (forwardsolve = 1) and adjoint solve (forwardsolve = 0). 
- Added TSAdjointSolve() for adjoint sensitivity analysis 
- EquationType is introduced to distinguish between ODEs and DAEs. It needs to be set accordingly before solving the problem through TSSetEquationType(). It currently only affects arkimex methods. 
DM/DA:
- DMCreateInjection() now returns a Mat, rather than a VecScatter 
- The MatType argument is removed from DMCreateMatrix(), you can use DMSetMatType() to indicate the type you want used with a DM, defaults to MATAIJ 
- You can now use DMDASetAOType() to indicate the type of AO you want used with a DMDA (defaults to AOBASIC) 
DMPlex:
- Can now redistribute parallel meshes 
- Can now increase the overlap of parallel meshes 
- Added new mesh formats, Fluent CAS and Gmsh 
PetscViewer:
- HDF5 viewer will save Vecs and DMDA Vecs with a dimension of 1 if the bs/dof of the vector is 1. To always include this dimension as a specific dimension in the HDF5 file even if it is of size 1 use PetscViewerHDF5SetBaseDimension2() or -viewer_hdf5_base_dimension2 true 
SYS:
- PetscOptionsHead() now takes a PetscOptions argument. 
- PetscObjectAddOptionsHandler() now takes an event handler that includes a PetscOptions argument. PetscObjectProcessOptionsHandlers() requires this as input. 
AO:
Fortran:
- Fortran include files are now in include/petsc/finclude instead of include/finclude. Thus replace uses of #include “finclude/xxx.h” with #include “petsc/finclude/xxx.h”. Reason for change: to namespace the finclude directory with PETSc for –prefix installs of PETSc and for packaging systems