petsc-3.12.5 2020-03-29
Documentation: 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 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