1# Changes: 3.6 2 3```{rubric} General: 4``` 5 6- User makefiles must be updated. You must change the lines 7 8 - include \$\{PETSC_DIR}/conf/variables and 9 - include \$\{PETSC_DIR}/conf/rules 10 11 to 12 13 - include \$\{PETSC_DIR}/lib/petsc/conf/variables and 14 - include \$\{PETSC_DIR}/lib/petsc/conf/rules 15 16- PetscOptionsBool() no longer sets the value of the boolean based 17 on the value passed in 18 19- Script for running MPIUni jobs is now bin/petsc-mpiexec.uni 20 21- Removed all threadcomm support including --with-pthreadclasses and 22 --with-openmpclasses configure arguments 23 24- Updated MUMPS version to 5.0.0 - and updated metis to 5.1.0, 25 parmetis to 4.0.3-p1 - in sync with MUMPS. 26 27- Updated to hypre-2.10.0b, scotch_6.0.3, Elemental-0.85 28 29```{rubric} Configure/Build: 30``` 31 32- Add toplevel makefile targets *clean* and *distclean*. Target 33 *clean* deletes PETSc libraries built by makefile target *all*. 34 Target *distclean* deletes all build files created by *configure* 35 and \[*make all*\]. Target *clean* in example directories continues 36 to work as before [deletes object files and executables] 37 38```{rubric} IS: 39``` 40 41```{rubric} PetscDraw: 42``` 43 44- PetscDrawBoxedString() changed to PetscDrawStringBoxed() added 45 PetscDrawBar object for drawing bar graphs added 46 PetscDrawStringCentered() 47 48```{rubric} PF: 49``` 50 51```{rubric} Vec: 52``` 53 54```{rubric} VecScatter: 55``` 56 57```{rubric} PetscSection: 58``` 59 60```{rubric} Mat: 61``` 62 63- MatGetVecs() replaced with MatCreateVecs() because it actually 64 does create the Vecs that need to be destroyed 65- MatCreateMPIAIJConcatenateSeqAIJ and 66 MatCreateMPIBAIJConcatenateSeqBAIJ replaced with 67 MatCreateMPIMatConcatenateSeqMat 68- MatGetRedundantMatrix() replaced with MatCreateRedundantMatrix() 69- Added support for MUMPS sequential solver in Schur complement mode 70- MatGetSubMatricesMPI() will extract parallel submatrices on 71 subcommunicators of the supplied IS objects. Unsorted, but not 72 repeated indices are okay. 73- Removed MatMFFDAddNullSpace() just use MatSetNullSpace() 74 75```{rubric} PC: 76``` 77 78- Removed -pc_hypre_type euclid due to bit-rot 79- Upgraded to SuiteSparse 4.4.1; Cholmod supports using GPUs 80 (developer repository only feature) --with-cuda 81 --download-suitesparse-gpu --with-64-bit-indices; 82 -mat_cholmod_useGPU 1 or 0; 1 by default when configured for it 83- Upgraded to Superlu_DIST 4.0; Superlu_DIST supports using GPUs 84 (developer repository only feature) --with-cuda --with-openmp 85 --download-superlu_dist-gpu (developer repository only feature) 86 --with-64-bit-indices -mat_cholmod_useGPU 1 or 0; 1 by default 87 when configured for it 88- Added PCBDDCSetChangeOfBasisMat for user defined change of basis 89- PCBDDC: added adaptive selection of constraints: it is available 90 by command line options 91- PCJacobiSetUseAbs() now takes a PetscBool argument allowing 92 toggling the option 93- PCJacobiSetUseRowMax() and PCJacobiSetUseRowSum() have been merged 94 into PCJacobiSetType() 95- PCFactorSetUseInplace() now takes a PetscBool argument. Added 96 PCFactorGetUseInplace() 97- PCFactorSetAllowDiagonalFill() now takes a PetscBool argument. 98 Added PCFactorGetAllowDiagonalFill() 99- PCEisenstatNoDiagonalScaling() changed to 100 PCEisenstatSetNoDiagonalScaling() and takes a boolean 101- Added Interface to AMS solver from HYPRE for Nedelec 102 discretizations (-pc_hypre_type ams) 103- Added Interface to ADS solver from HYPRE for Raviart-Thomas 104 discretizations (-pc_hypre_type ads) 105- Contributed MKL PARDISO interface providing PCCholesky support. 106 Useable with: -pc_type cholesky -mat_type sbaij 107 -pc_factor_mat_solver_package mkl_pardiso 108- PCGASMSetTotalSubdomains() can now create multirank subdomains if 109 their number is less than comm size. 110- PCGAMGSetReuseProl() is changed to PCGAMGSetReuseInterpolation() 111 112```{rubric} KSP: 113``` 114 115- Removed KSPSetNullSpace() always use MatSetNullSpace() provided to 116 the FIRST matrix argument to KSPSetOperators(), or 117 SNESSetJacobian(), or TSSetIJacobian() 118- Added MatSetTransposeNullSpace() to indicate the null space of the 119 transpose operator 120- Removed KSPSPECEST since its functionality is replaced by the 121 esteig functionality within KSPChebyshev 122- Unified KSPChebyshev routines that work with estimating 123 eigenvalues with the prefix name KSPChebyshevEstEig... For example 124 KSPChebyshevSetEstimateEigenvalues() is now 125 KSPChebyshevEstEigSet() and 126 KSPChebyshevSetEstimateEigenvaluesRandom() is now 127 KSPChebyshevEstEigSetRandom() similarly 128 -ksp_chebyshev_estimate_eigenvalues_random is 129 -ksp_chebyshev_esteig_random. The previous for the (GMRES) KSP 130 used to estimate the eigenvalues is now esteig\_ not est\_ 131- KSPGetVecs() replaced with KSPCreateVecs() because it actually 132 does create the Vecs that need to be destroyed 133 134```{rubric} SNES: 135``` 136 137- Added KSPMonitorSNES() with command line option -ksp_monitor_snes 138 and -ksp_monitor_snes_lg to monitor SNES residual norm at each 139 linear iteration SNESMonitorVI() becomes SNESVIMonitor() 140- Added SNESVIMonitorResidual() and -snes_vi_monitor_residual 141 142```{rubric} SNESLineSearch: 143``` 144 145```{rubric} TS: 146``` 147 148- The postevent routine set with TSSetEventMonitor() now takes an 149 additional PetscBool argument 'forwardsolve'. The forwardsolve 150 flag is used to distinguish between a TS forward solve 151 (forwardsolve = 1) and adjoint solve (forwardsolve = 0). 152- Added TSAdjointSolve() for adjoint sensitivity analysis 153- EquationType is introduced to distinguish between ODEs and DAEs. 154 It needs to be set accordingly before solving the problem through 155 TSSetEquationType(). It currently only affects arkimex methods. 156 157```{rubric} DM/DA: 158``` 159 160- DMCreateInjection() now returns a Mat, rather than a VecScatter 161- The MatType argument is removed from DMCreateMatrix(), you can use 162 DMSetMatType() to indicate the type you want used with a DM, 163 defaults to MATAIJ 164- You can now use DMDASetAOType() to indicate the type of AO you 165 want used with a DMDA (defaults to AOBASIC) 166 167```{rubric} DMPlex: 168``` 169 170- Can now redistribute parallel meshes 171- Can now increase the overlap of parallel meshes 172- Added new mesh formats, Fluent CAS and Gmsh 173 174```{rubric} PetscViewer: 175``` 176 177- HDF5 viewer will save Vecs and DMDA Vecs with a dimension of 1 if 178 the bs/dof of the vector is 1. To always include this dimension as 179 a specific dimension in the HDF5 file even if it is of size 1 180 use PetscViewerHDF5SetBaseDimension2() or 181 -viewer_hdf5_base_dimension2 true 182 183```{rubric} SYS: 184``` 185 186- PetscOptionsHead() now takes a PetscOptions argument. 187- PetscObjectAddOptionsHandler() now takes an event handler that 188 includes a PetscOptions argument. 189 PetscObjectProcessOptionsHandlers() requires this as input. 190 191```{rubric} AO: 192``` 193 194```{rubric} Fortran: 195``` 196 197- Fortran include files are now in include/petsc/finclude instead of 198 include/finclude. Thus replace uses of #include "finclude/xxx.h" 199 with #include "petsc/finclude/xxx.h". Reason for change: to 200 namespace the finclude directory with PETSc for --prefix installs 201 of PETSc and for packaging systems 202