xref: /petsc/doc/changes/35.md (revision 174dc0c8cee294b82b85e4dd3b331b29396264fc)
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