xref: /petsc/doc/changes/36.md (revision 7f296bb328fcd4c99f2da7bfe8ba7ed8a4ebceee)
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