xref: /petsc/doc/changes/38.md (revision b11d9968bc79904c690b122f9399be46447eb113) !
1*7f296bb3SBarry Smith# Changes: 3.8
2*7f296bb3SBarry Smith
3*7f296bb3SBarry Smith```{rubric} General:
4*7f296bb3SBarry Smith```
5*7f296bb3SBarry Smith
6*7f296bb3SBarry Smith- `--download-metis` is changed to not builds metis with flag
7*7f296bb3SBarry Smith  `-DMETIS_USE_DOUBLEPRECISION=1` to have consistent behavior
8*7f296bb3SBarry Smith  between single/double/quad precision builds (and with external
9*7f296bb3SBarry Smith  build of metis). This affects parmetis as well
10*7f296bb3SBarry Smith
11*7f296bb3SBarry Smith```{rubric} Configure/Build:
12*7f296bb3SBarry Smith```
13*7f296bb3SBarry Smith
14*7f296bb3SBarry Smith- removed with-mpiuni-fortran-binding option
15*7f296bb3SBarry Smith- removed with-fortran-interfaces option
16*7f296bb3SBarry Smith- removed with-fortran-datatypes option
17*7f296bb3SBarry Smith- Added --download-openblas --download-openblas-64-bit-blas-indices
18*7f296bb3SBarry Smith
19*7f296bb3SBarry Smith```{rubric} IS:
20*7f296bb3SBarry Smith```
21*7f296bb3SBarry Smith
22*7f296bb3SBarry Smith- Changed IS_COLORING_GHOSTED to IS_COLORING_LOCAL to match
23*7f296bb3SBarry Smith  convention.
24*7f296bb3SBarry Smith- Added ISRenumber to renumber an IS into a contiguous set.
25*7f296bb3SBarry Smith- ISGlobalToLocalMappingType is now ISGlobalToLocalMappingMode.
26*7f296bb3SBarry Smith- Added ISGlobalToLocalMappingSetType() to change the algorithm used
27*7f296bb3SBarry Smith  to apply the mapping. Choices are ISGLOBALTOLOCALMAPPINGBASIC
28*7f296bb3SBarry Smith  (faster) or ISGLOBALTOLOCALMAPPINGHASH (for large problems, much
29*7f296bb3SBarry Smith  more scalable in memory usage)
30*7f296bb3SBarry Smith
31*7f296bb3SBarry Smith```{rubric} PetscDraw:
32*7f296bb3SBarry Smith```
33*7f296bb3SBarry Smith
34*7f296bb3SBarry Smith```{rubric} PetscRandom:
35*7f296bb3SBarry Smith```
36*7f296bb3SBarry Smith
37*7f296bb3SBarry Smith- Added PETSCRANDOM123, a wrapper to the counter-based random number
38*7f296bb3SBarry Smith  generator
39*7f296bb3SBarry Smith  [Random123](http://www.deshawresearch.com/resources_random123.html).
40*7f296bb3SBarry Smith
41*7f296bb3SBarry Smith```{rubric} PF:
42*7f296bb3SBarry Smith```
43*7f296bb3SBarry Smith
44*7f296bb3SBarry Smith```{rubric} Vec:
45*7f296bb3SBarry Smith```
46*7f296bb3SBarry Smith
47*7f296bb3SBarry Smith```{rubric} VecScatter:
48*7f296bb3SBarry Smith```
49*7f296bb3SBarry Smith
50*7f296bb3SBarry Smith```{rubric} PetscSection:
51*7f296bb3SBarry Smith```
52*7f296bb3SBarry Smith
53*7f296bb3SBarry Smith```{rubric} Mat:
54*7f296bb3SBarry Smith```
55*7f296bb3SBarry Smith
56*7f296bb3SBarry Smith- Added a new argument in MatCreateLRC() to express the low-rank
57*7f296bb3SBarry Smith  correction as A+U\*C\*V'.
58*7f296bb3SBarry Smith- MatTranspose() now properly handles MAT_INITIAL_MATRIX,
59*7f296bb3SBarry Smith  MAT_REUSE_MATRIX, MAT_INPLACE_MATRIX.
60*7f296bb3SBarry Smith- Renamed MatCreateSubMatrix() to MatCreateSubMatrixVirtual().
61*7f296bb3SBarry Smith- Renamed MatSubMatrixUpdate() to MatSubMatrixUpdateVirtual().
62*7f296bb3SBarry Smith- Renamed MatGetSubMatrices() to MatCreateSubMatrices().
63*7f296bb3SBarry Smith- Added MatDestroySubMatrices().
64*7f296bb3SBarry Smith- Renamed MatGetSubMatricesMPI() to MatCreateSubMatricesMPI().
65*7f296bb3SBarry Smith- Renamed MatGetSubMatrix() to MatCreateSubMatrix().
66*7f296bb3SBarry Smith- Renamed MatGetSubMatrixOption() to MatCreateSubMatrixOption().
67*7f296bb3SBarry Smith- MatSetOption(mat,MAT_IGNORE_ZERO_ENTRIES,PETSC_TRUE) no longer
68*7f296bb3SBarry Smith  applies to zero values set or added to the matrix diagonal, they
69*7f296bb3SBarry Smith  are now not ignored and are included in the matrix nonzero
70*7f296bb3SBarry Smith  structure. This is useful for Jacobians passed to TS.
71*7f296bb3SBarry Smith- Added MatFactorSchurStatus.
72*7f296bb3SBarry Smith  MatFactorGet/Restore/CreateSchurComplement now take an extra
73*7f296bb3SBarry Smith  status argument.
74*7f296bb3SBarry Smith- Added MatMatSolveTranspose to solve transposed linear systems for
75*7f296bb3SBarry Smith  multiple right-hand sides.
76*7f296bb3SBarry Smith- Added MATAIJMKL and MATBAIJMKL to facilitate use of Intel MKL
77*7f296bb3SBarry Smith  sparse BLAS routines with matrices stored in AIJ/BAIJ format.
78*7f296bb3SBarry Smith
79*7f296bb3SBarry Smith```{rubric} PC:
80*7f296bb3SBarry Smith```
81*7f296bb3SBarry Smith
82*7f296bb3SBarry Smith- The is_local argument to PCASMSetLocalSubdomains() is now ignored
83*7f296bb3SBarry Smith  UNLESS the PCASMType is set to restrict
84*7f296bb3SBarry Smith- Added PCMGSetNumberSmooth()
85*7f296bb3SBarry Smith- PCMGSetGalerkin() and -pc_mg_galerkin now take
86*7f296bb3SBarry Smith  PC_MG_GALERKIN_BOTH,PC_MG_GALERKIN_PMAT,PC_MG_GALERKIN_MAT,
87*7f296bb3SBarry Smith  PC_MG_GALERKIN_NONE as arguments instead of PetscBool
88*7f296bb3SBarry Smith- Added PCBDDCSetDivergenceMat to help BDDC to compute the flux
89*7f296bb3SBarry Smith  across the subdomain interfaces.
90*7f296bb3SBarry Smith- Removed PCBDDCSetNullSpace. Local nullspace information should now
91*7f296bb3SBarry Smith  be attached to the subdomain matrix via MatSetNullSpace.
92*7f296bb3SBarry Smith- Added additional PetscBool parameter to
93*7f296bb3SBarry Smith  PCBDDCCreateFETIDPOperators for the specification of the type of
94*7f296bb3SBarry Smith  multipliers.
95*7f296bb3SBarry Smith- Added additional string parameter to PCBDDCCreateFETIDPOperators
96*7f296bb3SBarry Smith  for the specification of the prefix (can be NULL).
97*7f296bb3SBarry Smith- FIELDSPLIT now extracts off-diag fieldsplit blocks from the
98*7f296bb3SBarry Smith  preconditioner instead of the jacobian by default. Use
99*7f296bb3SBarry Smith  -pc_fieldsplit_off_diag_use_amat to use the jacobian matrix.
100*7f296bb3SBarry Smith- Added PCFieldSplitSetSchurScale to control the scaling factor of
101*7f296bb3SBarry Smith  the Schur complement with the DIAG factorization. The
102*7f296bb3SBarry Smith  corresponding command line option is -pc_fieldsplit_schur_scale.
103*7f296bb3SBarry Smith
104*7f296bb3SBarry Smith```{rubric} KSP:
105*7f296bb3SBarry Smith```
106*7f296bb3SBarry Smith
107*7f296bb3SBarry Smith- Added KSPFETIDP, a linear system solver based on the FETI-DP
108*7f296bb3SBarry Smith  method.
109*7f296bb3SBarry Smith- Added the KSPGuess class: available methods are KSPGUESSFISCHER
110*7f296bb3SBarry Smith  and KSPGUESSPOD. The new KSPGUESSPOD computes an initial guess
111*7f296bb3SBarry Smith  using the Proper Orthogonal Decomposition technique.
112*7f296bb3SBarry Smith- KSPFischerGuessCreate has been removed: see the man page of
113*7f296bb3SBarry Smith  KSPGUESSFISCHER for how to create a Fischer type initial guess.
114*7f296bb3SBarry Smith- KSPCHEBYSHEV: replace KSPChebyshevEstEigSetUseRandom() with
115*7f296bb3SBarry Smith  KSPChebyshevEstEigSetUseNoisy(), using a deterministic algorithm
116*7f296bb3SBarry Smith  to generate noisy vectors.
117*7f296bb3SBarry Smith
118*7f296bb3SBarry Smith```{rubric} SNES:
119*7f296bb3SBarry Smith```
120*7f296bb3SBarry Smith
121*7f296bb3SBarry Smith```{rubric} SNESLineSearch:
122*7f296bb3SBarry Smith```
123*7f296bb3SBarry Smith
124*7f296bb3SBarry Smith```{rubric} TS:
125*7f296bb3SBarry Smith```
126*7f296bb3SBarry Smith
127*7f296bb3SBarry Smith- Changed TSGL to TSGLLE.
128*7f296bb3SBarry Smith- -ts_monitor binary now saves the timestep information as a REAL
129*7f296bb3SBarry Smith  entry consisting of the REAL_FILE_CLASSID followed by the real
130*7f296bb3SBarry Smith  value. PetscBinaryRead.m and PetscBinaryIO.py can read these in
131*7f296bb3SBarry Smith  automatically.
132*7f296bb3SBarry Smith- Added TSRK5BS scheme to TSRK.
133*7f296bb3SBarry Smith- Added TSADAPTDSP adaptive controller based on digital signal
134*7f296bb3SBarry Smith  processing techniques.
135*7f296bb3SBarry Smith- Removed command line option `-ts_theta_adapt`, use
136*7f296bb3SBarry Smith  `-ts_adapt_type basic` to turn on adaptivity in TSTHETA.
137*7f296bb3SBarry Smith- Remove command line option `-ts_alpha_adapt` and routines
138*7f296bb3SBarry Smith  TSAlphaUseAdapt()/TSAlpha2UseAdapt(), use `-ts_adapt_type basic`
139*7f296bb3SBarry Smith  to turn on adaptivity in TSALPHA/TSALPHA2.
140*7f296bb3SBarry Smith- Removed TSBDFUseAdapt(), using time step adaptivity in TSBDF is
141*7f296bb3SBarry Smith  now the default, use `-ts_adapt_type none` to turn adaptivity
142*7f296bb3SBarry Smith  off.
143*7f296bb3SBarry Smith- Added TSAdaptSetAlwaysAccept() to set whether to always accept
144*7f296bb3SBarry Smith  steps.
145*7f296bb3SBarry Smith- Added TSAdapt{Set|Get}Safety() to set safety factors and renamed
146*7f296bb3SBarry Smith  option `-ts_adapt_basic_[reject_]safety` to
147*7f296bb3SBarry Smith  `-ts_adapt_[reject_]safety`.
148*7f296bb3SBarry Smith- Renamed TSAdaptBasic{Set|Get}Clip() and option
149*7f296bb3SBarry Smith  `-ts_adapt_basic_clip` to TSAdapt{Set|Get}Clip() and
150*7f296bb3SBarry Smith  `-ts_adapt_clip`.
151*7f296bb3SBarry Smith- Added TSAdaptGetStepLimits() to get minimum and maximum allowed
152*7f296bb3SBarry Smith  time step.
153*7f296bb3SBarry Smith- Calling TSAdaptSetType() will reset all option values (safety
154*7f296bb3SBarry Smith  factors, clipping factors, etc) to default values.
155*7f296bb3SBarry Smith- Added TS{Set|Get}MaxSteps() and TS{Set|Get}MaxTime(), deprecated
156*7f296bb3SBarry Smith  TS{Set|Get}Duration().
157*7f296bb3SBarry Smith- Added TSGetStepNumber(), deprecated TSGetTimeStepNumber() and
158*7f296bb3SBarry Smith  TSGetTotalSteps().
159*7f296bb3SBarry Smith- Deprecated TSSetInitialTimeStep(), use TSSetTime() and
160*7f296bb3SBarry Smith  TSSetTimeStep().
161*7f296bb3SBarry Smith
162*7f296bb3SBarry Smith```{rubric} DM/DA:
163*7f296bb3SBarry Smith```
164*7f296bb3SBarry Smith
165*7f296bb3SBarry Smith- Changed prototypes for DMCompositeGather() and
166*7f296bb3SBarry Smith  DMCompositeGatherArray()
167*7f296bb3SBarry Smith- Replace calls to DMDACreateXd() with DMDACreateXd(),
168*7f296bb3SBarry Smith  [DMSetFromOptions()] DMSetUp()
169*7f296bb3SBarry Smith- DMDACreateXd() no longer can take negative values for dimensions,
170*7f296bb3SBarry Smith  instead pass positive values and call DMSetFromOptions()
171*7f296bb3SBarry Smith  immediately after
172*7f296bb3SBarry Smith- Added DMSwarm which supports data management and data movement of
173*7f296bb3SBarry Smith  arbitrary fields defined on a point set. Such functionality is
174*7f296bb3SBarry Smith  useful for partcle based methods. High level support for
175*7f296bb3SBarry Smith  particle-in-cell methods is provided when using either a DMDA or
176*7f296bb3SBarry Smith  DMPLEX mesh.
177*7f296bb3SBarry Smith
178*7f296bb3SBarry Smith```{rubric} DMPlex:
179*7f296bb3SBarry Smith```
180*7f296bb3SBarry Smith
181*7f296bb3SBarry Smith- Added DMPlexRefineSimplexToTensor to refine simplicial into tensor
182*7f296bb3SBarry Smith  product cell meshes.
183*7f296bb3SBarry Smith- Added PTScotch partitioner.
184*7f296bb3SBarry Smith
185*7f296bb3SBarry Smith```{rubric} PetscViewer:
186*7f296bb3SBarry Smith```
187*7f296bb3SBarry Smith
188*7f296bb3SBarry Smith```{rubric} SYS:
189*7f296bb3SBarry Smith```
190*7f296bb3SBarry Smith
191*7f296bb3SBarry Smith- -help now has the option -help intro that only prints the programs
192*7f296bb3SBarry Smith  help string and then exits the program
193*7f296bb3SBarry Smith- Petsc64bitInt -> PetscInt64, PetscIntMult64bit() ->
194*7f296bb3SBarry Smith  PetscInt64Mult(), PetscBagRegister64bitInt() ->
195*7f296bb3SBarry Smith  PetscBagRegisterInt64()
196*7f296bb3SBarry Smith
197*7f296bb3SBarry Smith```{rubric} AO:
198*7f296bb3SBarry Smith```
199*7f296bb3SBarry Smith
200*7f296bb3SBarry Smith```{rubric} Sieve:
201*7f296bb3SBarry Smith```
202*7f296bb3SBarry Smith
203*7f296bb3SBarry Smith```{rubric} Fortran:
204*7f296bb3SBarry Smith```
205*7f296bb3SBarry Smith
206*7f296bb3SBarry SmithPETSC_NULL_INTEGER, PETSC_NULL_REAL etc are now declared as arrays of
207*7f296bb3SBarry Smithsize one instead of as scalar values.
208*7f296bb3SBarry SmithNew shorter calling sequence for PetscError() from Fortran
209*7f296bb3SBarry SmithSETERRQ(), and CHKERRQ from Fortran now have the same behavior as in
210*7f296bb3SBarry SmithC and automatically return on errors, they do not abort.
211*7f296bb3SBarry SmithCorrespondingly SERERRA() and CHKERRA() should be used in 'program
212*7f296bb3SBarry Smithmain' - as return is not possible from it. These macros should be
213*7f296bb3SBarry Smithused from .F90 files because they require long lines
214*7f296bb3SBarry SmithSimplified Fortran usage. Now you only include
215*7f296bb3SBarry Smithpetsc/finclude/petscXXX and use petscXXX
216*7f296bb3SBarry Smith
217*7f296bb3SBarry Smith- For each Fortran function (and main) use the following
218*7f296bb3SBarry Smith
219*7f296bb3SBarry Smith  ```
220*7f296bb3SBarry Smith       subroutine mysubroutine(.....)
221*7f296bb3SBarry Smith  #include <petsc/finclude/petscxxx.h>
222*7f296bb3SBarry Smith       use petscxxx
223*7f296bb3SBarry Smith       implicit none
224*7f296bb3SBarry Smith  ```
225*7f296bb3SBarry Smith
226*7f296bb3SBarry Smith  For example if you are using SNES in your code you would have
227*7f296bb3SBarry Smith
228*7f296bb3SBarry Smith  ```
229*7f296bb3SBarry Smith  #include <petsc/finclude/petscsnes.h>
230*7f296bb3SBarry Smith       use petscsnes
231*7f296bb3SBarry Smith       implicit none
232*7f296bb3SBarry Smith  ```
233*7f296bb3SBarry Smith
234*7f296bb3SBarry Smith- Instead of PETSC_NULL_OBJECT you must pass PETSC_NULL_XXX (for
235*7f296bb3SBarry Smith  example PETSC_NULL_VEC) using the specific object type XXX that
236*7f296bb3SBarry Smith  the function call is expecting.
237*7f296bb3SBarry Smith
238*7f296bb3SBarry Smith- Objects can be declared either as XXX a or type(tXXX) a, for
239*7f296bb3SBarry Smith  example Mat a or type(tMat) a. (Note that previously for those who
240*7f296bb3SBarry Smith  used types it was type(Mat) but that can no longer be used.
241*7f296bb3SBarry Smith
242*7f296bb3SBarry SmithNotes:
243*7f296bb3SBarry Smith
244*7f296bb3SBarry Smith- There are no longer any .h90 files that may or need to be included
245*7f296bb3SBarry Smith
246*7f296bb3SBarry Smith- Like C the include files are now nested so you no longer need to
247*7f296bb3SBarry Smith  include for example
248*7f296bb3SBarry Smith
249*7f296bb3SBarry Smith  ```
250*7f296bb3SBarry Smith  #include <petsc/finclude/petscsys.h>
251*7f296bb3SBarry Smith  #include <petsc/finclude/petscvec.h>
252*7f296bb3SBarry Smith  #include <petsc/finclude/petscmat.h>
253*7f296bb3SBarry Smith  #include <petsc/finclude/petscpc.h>
254*7f296bb3SBarry Smith  #include <petsc/finclude/petscksp.h>
255*7f296bb3SBarry Smith  ```
256*7f296bb3SBarry Smith
257*7f296bb3SBarry Smith  you can just include
258*7f296bb3SBarry Smith
259*7f296bb3SBarry Smith  ```
260*7f296bb3SBarry Smith  #include <petsc/finclude/petscksp.h>
261*7f296bb3SBarry Smith  ```
262*7f296bb3SBarry Smith
263*7f296bb3SBarry Smith- there is now type checking of most function calls. This will help
264*7f296bb3SBarry Smith  eliminate bugs due to incorrect calling sequences. Note that
265*7f296bb3SBarry Smith  Fortran distinguishes between a argument that is a scalar (zero
266*7f296bb3SBarry Smith  dimensional array), a one dimensional array and a two dimensional
267*7f296bb3SBarry Smith  array (etc). So you may get compile warnings because you are
268*7f296bb3SBarry Smith  passing in an array when PETSc expects a scalar or vis-versa. If
269*7f296bb3SBarry Smith  you get these simply fix your declaration of the variable to match
270*7f296bb3SBarry Smith  what is expected. In some routines like MatSetValues() and friends
271*7f296bb3SBarry Smith  you can pass either scalars, one dimensional arrays or two
272*7f296bb3SBarry Smith  dimensional arrays, if you get errors here please send mail to
273*7f296bb3SBarry Smith  <mailto:petsc-maint@mcs.anl.gov> and include enough of your code so we can
274*7f296bb3SBarry Smith  see the dimensions of all your variables so we can fix the
275*7f296bb3SBarry Smith  problems.
276*7f296bb3SBarry Smith
277*7f296bb3SBarry Smith- You can continue to use either fixed (.F extension) or free format
278*7f296bb3SBarry Smith  (.F90 extension) for your source
279*7f296bb3SBarry Smith
280*7f296bb3SBarry Smith- All the examples in PETSc have been updated so consult them for
281*7f296bb3SBarry Smith  clarifications.
282