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