1# Changes: 3.5 2 3```{rubric} General: 4``` 5 6- --download-f-blas-lapack is now --download-fblaslapack. 7- PETSc built with --with-precision=\_\_float128 will now by default 8 read in binary files that have all 128 bits stored in the file, to 9 read in files with 64-bit double use the option 10 -binary_read_double 11- PETSc options of complex numbers must be passed as 12 [+/-][realnumber][+/-]realnumberi with no spaces, you can no 13 longer pass the real and complex part with a comma between them 14- PetscSynchronizedFlush() takes an additional argument, the file 15 pointer on rank 0 16- PetscObjectStateQuery() is now corrected with 17 PetscObjectStateGet() 18- A new PetscObjectState typedef is used by interface; 64-bit int to 19 prevent overflow. 20- The configure option `--with-dynamic-loading` has been removed 21 since this functionality is automatically available on systems 22 that support it. Use the runtime option 23 `-dynamic_library_preload` for similar functionality. 24- Default location of externalpackages is moved from 25 `PETSC_DIR/externalpackages` to 26 `PETSC_DIR/PETSC_ARCH/externalpackages` 27- Added `--with-clean` option to delete the build files in 28 `PETSC_DIR/PETSC_ARCH` at the beginning of the build 29- The `__SDIR__` macro (and `__INSDIR__`) is no longer used. We 30 recommend passing full paths or paths from the project root to the 31 compiler so that error messages contain enough context. 32- The "type" argument to `PetscMalloc2()` through 33 `PetscMalloc7()`, `PetscNew()`, and `PetscNewLog()` have 34 been removed. The type is now inferred from the pointer return 35 type. `PetscMalloc1()` is now available for allocating arrays, 36 and `PetscCalloc1()` through `PetscCalloc7()` have been added 37 for when cleared (zeroed) memory is needed. 38- Moved MATLAB scripts like PetscBinaryRead.m PetscBinaryWrite.m 39 from bin/matlab to share/petsc/matlab 40 41```{rubric} IS: 42``` 43 44- ISLocalToGlobalMappingCreate() now takes a blocksize. Added 45 ISLocalToGlobalMappingApplyBlock() removed 46 ISLocalToGlobalMappingBlock() and ISLocalToGlobalMappingUnblock() 47 48```{rubric} PF: 49``` 50 51```{rubric} Vec: 52``` 53 54```{rubric} VecScatter: 55``` 56 57```{rubric} PetscSection: 58``` 59 60- Now only the F90 binding for VecSetValuesSection() is present 61 62```{rubric} Mat: 63``` 64 65- Removed third argument to MatNullSpaceRemove(). Use VecDuplicate() 66 and VecCopy() if the original Vec must be kept. 67- MatGetRedundantMatrix(Mat mat,PetscInt nsubcomm,MPI_Comm 68 subcomm,PetscInt mlocal_red,MatReuse reuse,Mat \*matredundant) is 69 replaced by MatRedundantMatrix(Mat mat,PetscInt nsubcomm,MPI_Comm 70 subcomm,MatReuse reuse,Mat \*matredundant). 71- MatGetColoring() has been removed and replaced by the MatColoring 72 object. 73 74```{rubric} PC: 75``` 76 77- PCASA has been removed, it never worked properly 78- The documented, but semi-private function 79 `PCMGResidual_Default()` is now public and named 80 `PCMGResidualDefault()`. 81- PCGAMG default smoother changed from PCJACOBI to PCSOR. 82- Different logic for PCBDDC APIs: added 83 PCBDDCSet/GetDirichlet/NeumannBoundariesLocal, 84 PCBDDCSetDofsSplittingLocal. Previous call to PCBDDCXXXBoundaries 85 should be replaced by PCBDDCXXXBoundariesLocal. The same holds for 86 setting the fields split. In all cases, the index sets should have 87 the same communicator as the PC. 88- Added PCBDDCSetChangeOfBasisLocalMat for user defined change of 89 basis 90- `PCFieldSplitSchurPrecondition()` deprecated (replaced in 91 Fortran) in favor of `PCFieldSplitSetSchurPre()`. 92 93```{rubric} KSP: 94``` 95 96- `KSPSkipConverged()` renamed to `KSPConvergedSkip()`. 97- `KSPSetOperators()` no longer has the `MatStructure` argument. 98 The Mat objects now track that information themselves. Use 99 `KSP/PCSetReusePreconditioner()` to prevent the recomputation of 100 the preconditioner if the operator changed in the way that 101 `SAME_PRECONDITIONER` did with `KSPSetOperators()` 102- `KSPDefaultConverged()`, `KSPDefaultConvergedDestroy()`, 103 `KSPDefaultConvergedCreate()`, 104 `KSPDefaultConvergedSetUIRNorm()`, and 105 `KSPDefaultConvergedSetUMIRNorm()` are now 106 `KSPConvergedDefault()`, `KSPConvergedDefaultDestroy()`, 107 `KSPConvergedDefaultCreate()`, 108 `KSPConvergedDefaultSetUIRNorm()`, and 109 `KSPConvergedDefaultSetUMIRNorm()`. for consistency. 110 111```{rubric} SNES: 112``` 113 114- The matrix arguments to the user functions provided with 115 `SNESSetJacobian()` and `SNESSetPicard()` are now Mat not 116 Mat\*. 117- The `MatStructure` argument to the user functions provided with 118 `SNESSetJacobian()` and `SNESSetPicard()` are gone. 119- `SNESSetInitialFunctionNorm()` is removed as it's not necessary 120 given that the norm is cached on the Vec. Use only 121 `SNESSetInitialFunction()`. 122- `SNESSetFunctionNorm()` and `SNESGetFunctionNorm()` removed. 123 `Use SNESGetFunction()` and `VecNorm()` instead. 124- `SNESSkipConverged()` renamed to `SNESConvergedSkip()`. 125- `SNESGetPC()`/`SNESSetPC()` renamed to 126 `SNESGetNPC()`/`SNESSetNPC()`. 127- `GS` and \_gs used for nonlinear Gauss-Sidel changed to `NGS` 128 and \_ngs to match all the other nonlinear solver names. 129 130```{rubric} SNESLineSearch: 131``` 132 133```{rubric} TS: 134``` 135 136- The matrix arguments to the user functions provided with 137 `TSSetRHSJacobian()` and `TSSetIJacobian()` are now Mat not 138 Mat\*. 139- The `MatStructure` argument to the user functions provided with 140 `TSSetRHSJacobian()` and `TSSetIJacobian()` are gone. 141 142```{rubric} DM/DA: 143``` 144 145- DMDAGetLocalToGlobalMappingBlock() has been removed, the 146 DMDAGetLocalToGlobalMapping() now handles both block and non-block 147 cases 148- DMDAGetGlobalIndices(DM,PetscInt\*,const PetscInt\*[]) and 149 DMDARestoreGlobalIndices(DM,PetscInt\*,const PetscInt\*[]) are 150 removed, use DMGetLocalToGlobalMapping() to get this information 151- DMADDA has been removed, it never worked correctly 152- The MatType argument is removed from DMCreateMatrix(), you can use 153 DMSetMatType() to indicate the type you want used with a DM, 154 defaults to MATAIJ 155- `DMDABoundaryType` has become `DMBoundaryType`, and all the 156 enumeration values have also been renamed. 157 158```{rubric} DMPlex: 159``` 160 161```{rubric} PetscViewer: 162``` 163 164```{rubric} SYS: 165``` 166 167```{rubric} AO: 168``` 169 170```{rubric} Sieve: 171``` 172 173- Sieve/DMMesh has been removed entirely. Use DMPlex. 174 175```{rubric} Fortran: 176``` 177 178- PETSC_DEFAULT_DOUBLE_PRECISION has been replaced with 179 PETSC_DEFAULT_REAL 180 181```{rubric} ExternalPackages: 182``` 183 184- Configure options `--download-umfpack` and 185 `--download-cholmod` to download UMFPACK and CHOLMOD have been 186 removed. Use `--download-suitesparse` to download these 187 packages. 188- Added interface to PARDISO solver in Intel MKL. To use 189 MKL_Pardiso, PETSc should be configured with 190 `--blas-lapack-dir=LOCATION_OF_INTEL_MKL --with-mkl_pardiso-dir=LOCATION_OF_INTEL_MKL` 191 and then run the code with 192 `-pc_type lu -pc_factor_mat_solver_package mkl_pardiso` 193