- removed with-mpiuni-fortran-binding option
- removed with-fortran-interfaces option
- removed with-fortran-datatypes option
- Added --download-openblas --download-openblas-64-bit-blas-indices
- Changed IS_COLORING_GHOSTED to IS_COLORING_LOCAL to match convention.
- Added ISRenumber to renumber an IS into a contiguous set.
- ISGlobalToLocalMappingType is now ISGlobalToLocalMappingMode.
- Added ISGlobalToLocalMappingSetType() to change the algorithm used to apply the mapping. Choices are ISGLOBALTOLOCALMAPPINGBASIC (faster) or
ISGLOBALTOLOCALMAPPINGHASH (for large problems, much more scalable in memory usage)
- Added a new argument in MatCreateLRC() to express the low-rank correction as A+U*C*V'.
- MatTranspose() now properly handles MAT_INITIAL_MATRIX,
- Renamed MatCreateSubMatrix() to MatCreateSubMatrixVirtual().
- Renamed MatSubMatrixUpdate() to MatSubMatrixUpdateVirtual().
- Renamed MatGetSubMatrices() to MatCreateSubMatrices().
- Added MatDestroySubMatrices().
- Renamed MatGetSubMatricesMPI() to MatCreateSubMatricesMPI().
- Renamed MatGetSubMatrix() to MatCreateSubMatrix().
- Renamed MatGetSubMatrixOption() to MatCreateSubMatrixOption().
- MatSetOption(mat,MAT_IGNORE_ZERO_ENTRIES,PETSC_TRUE) no longer applies to zero values set or added to the matrix diagonal, they are now not ignored and are included in the matrix nonzero structure. This is useful for Jacobians passed to TS.
- Added PCMGSetNumberSmooth()
- PCMGSetGalerkin() and -pc_mg_galerkin now take PC_MG_GALERKIN_BOTH,PC_MG_GALERKIN_PMAT,PC_MG_GALERKIN_MAT, PC_MG_GALERKIN_NONE as arguments instead of PetscBool
- Added PCBDDCSetDivergenceMat to help BDDC to compute the flux across the subdomain interfaces.
- Removed PCBDDCSetNullSpace. Local nullspace information should now be attached to the subdomain matrix via MatSetNullSpace.
- Added additional PetscBool parameter to PCBDDCCreateFETIDPOperators for the specification of the type of multipliers.
- Added additional string parameter to PCBDDCCreateFETIDPOperators for the specification of the prefix (can be NULL).
- FIELDSPLIT now extracts off-diag fieldsplit blocks from the preconditioner instead of the jacobian by default. Use -pc_fieldsplit_off_diag_use_amat to use the jacobian matrix.
- Added KSPFETIDP, a linear system solver based on the FETI-DP method.
- Changed TSGL to TSGLLE.
- -ts_monitor binary now saves the timestep information as a REAL entry consisting of the REAL_FILE_CLASSID followed by the real value. PetscBinaryRead.m and PetscBinaryIO.py can read these in automatically.
- Added TSRK5BS scheme to TSRK.
- Changed prototypes for DMCompositeGather() and DMCompositeGatherArray()
- Replace calls to DMDACreateXd() with DMDACreateXd(), [DMSetFromOptions()] DMSetUp()
- DMDACreateXd() no longer can take negative values for dimensons, instead pass positive values and call DMSetFromOptions() immediately after
- Petsc64bitInt -> PetscInt64, PetscIntMult64bit() -> PetscInt64Mult(), PetscBagRegister64bitInt() -> PetscBagRegisterInt64()
- Simplified Fortran usage. Now you only include petsc/finclude/petscXXX and use petscXXX
- SETERRQ() from Fortran has one fewer argument, there is no ierr as the final argument
A) for each Fortran function (and main) use the following
For example if you are using SNES in your code you would have
B) Instead of PETSC_NULL_OBJECT you must pass PETSC_NULL_XXX (for example PETSC_NULL_VEC) using the specific object type XXX that the function call is expecting.
C) Objects can be declared either as XXX a or type(tXXX) a, for example Mat a or type(tMat) a. (Note that previously for those who used types it was type(Mat) but that can no longer be used.
1) There are no longer any .h90 files that may or need to be included
2) Like C the include files are now nested so you no longer need to include for example
you can just include
3) there is now type checking of most function calls. This will help eliminate bugs due to incorrect calling sequences. Note that Fortran distinguishes between a argument that is a scalar (zero dimensional array), a one dimensional array and a two dimensional array (etc). So you may get compile warnings because you are passing in an array when PETSc expects a scalar or vis-versa. If you get these simply fix your declaration of the variable to match what is expected. In some routines like MatSetValues() and friends you can pass either scalars, one dimensional arrays or two dimensional arrays, if you get errors here please send mail to firstname.lastname@example.org and include enough of your code so we can see the dimensions of all your variables so we can fix the problems.
4) You can continue to use either fixed (.F extension) or free format (.F90 extension) for your source
5) All the examples in PETSc have been updated so consult them for clarifications.