1*7f296bb3SBarry Smith# Changes: 3.2 2*7f296bb3SBarry Smith 3*7f296bb3SBarry Smith```{rubric} General: 4*7f296bb3SBarry Smith``` 5*7f296bb3SBarry Smith 6*7f296bb3SBarry Smith- --download-c-blas-lapack is replaced with --download-f2cblaslapack 7*7f296bb3SBarry Smith- --with-precision=\_\_float128 --download-f2cblaslapack is now 8*7f296bb3SBarry Smith support for newish GNU gcc compiler 9*7f296bb3SBarry Smith- Calling sequence of PetscBinarRead.m has been changed 10*7f296bb3SBarry Smith- All XXXDestroy() functions now take a pointer to the object itself 11*7f296bb3SBarry Smith so that it can be nullified after destruction. 12*7f296bb3SBarry Smith- PetscError() and SETERRQX() now take a MPI_Comm as the first 13*7f296bb3SBarry Smith argument to indicate where the error is known. If you don't know 14*7f296bb3SBarry Smith what communicator use then pass in PETSC_COMM_SELF 15*7f296bb3SBarry Smith- Added PetscObjectAddOptionsHandler() that allows adding new 16*7f296bb3SBarry Smith routines to any object that are called to process options when 17*7f296bb3SBarry Smith XXXSetFromOptions() is called. 18*7f296bb3SBarry Smith- Changed PetscTruth to PetscBool, PETSC_TRUTH to PETSC_BOOL, 19*7f296bb3SBarry Smith PetscOptionsTruth to PetscOptionsBool, etc. 20*7f296bb3SBarry Smith- Introduced PetscCopyMode 21*7f296bb3SBarry Smith- Changed -log_history to -history and PetscLogOpenHistory() 22*7f296bb3SBarry Smith PetscLogCloseHistory() to PetscOpenHistory(), PetscCloseHistory() 23*7f296bb3SBarry Smith because "log" is reserved for related to the performance logging 24*7f296bb3SBarry Smith- Changed PetscOptionsPrint() to PetscOptionsView() 25*7f296bb3SBarry Smith- Changed PetscLogPrintSummary() to PetscLogView() 26*7f296bb3SBarry Smith- Using gcc 4.6 you can now ./configure --with-precision=\_\_float128 27*7f296bb3SBarry Smith --download-qblaslapack to get computations in quad precision. 28*7f296bb3SBarry Smith gfortran 4.6 is also supported. Warning some of the PETSc printing 29*7f296bb3SBarry Smith of numbers in some places will print garbage. I haven't figured 30*7f296bb3SBarry Smith out a way to handle the %G format. Can be run in parallel :-) 31*7f296bb3SBarry Smith- PetscFListFind() now takes a searchlibraries flag, if this is set 32*7f296bb3SBarry Smith and the function is NOT found in the function list then the 33*7f296bb3SBarry Smith libraries and executable are searched (when shared or dynamic 34*7f296bb3SBarry Smith libraries are used). Previously it always search the libraries and 35*7f296bb3SBarry Smith executables if not found in the list. 36*7f296bb3SBarry Smith- PetscOpenMPxxx() utilities are now PetscHMPIxxx() for hierarchical 37*7f296bb3SBarry Smith MPI, the previous name was bad 38*7f296bb3SBarry Smith 39*7f296bb3SBarry Smith```{rubric} Logging: 40*7f296bb3SBarry Smith``` 41*7f296bb3SBarry Smith 42*7f296bb3SBarry Smith- PetscCookie changed to PetscClassId in all forms. 43*7f296bb3SBarry Smith 44*7f296bb3SBarry Smith```{rubric} config/configure.py: 45*7f296bb3SBarry Smith``` 46*7f296bb3SBarry Smith 47*7f296bb3SBarry Smith- --with-64-bit-pointers option removed. It doesn't work properly 48*7f296bb3SBarry Smith anyway. The user should specify the correct 32bit or 64bit 49*7f296bb3SBarry Smith compilers to configure. For eg: 50*7f296bb3SBarry Smith `configure --with-cc='gcc -m64' --with-fc='gfortran -m64'` 51*7f296bb3SBarry Smith- Python requirement is changed from 2.2 to 2.3 52*7f296bb3SBarry Smith- Changed --with-shared to --with-shared-libraries, 53*7f296bb3SBarry Smith --known-mpi-shared to --known-mpi-shared-libraries and 54*7f296bb3SBarry Smith --with-dynamic to --with-dynamic-loading 55*7f296bb3SBarry Smith- 'ifneeded' support removed. '--download-package=ifneeded' should 56*7f296bb3SBarry Smith now be '--download-package' 57*7f296bb3SBarry Smith- The make macro PETSC_INCLUDE has been replaced by 58*7f296bb3SBarry Smith PETSC_CC_INCLUDES and PETSC_FC_INCLUDES for C and Fortran, 59*7f296bb3SBarry Smith respectively. 60*7f296bb3SBarry Smith 61*7f296bb3SBarry Smith```{rubric} IS: 62*7f296bb3SBarry Smith``` 63*7f296bb3SBarry Smith 64*7f296bb3SBarry Smith- ISBlock(),ISStride() are removed. Use 65*7f296bb3SBarry Smith PetscTypeCompare((PetscObject)is,ISBLOCK,&flag), 66*7f296bb3SBarry Smith PetscTypeCompare((PetscObject)is,ISSTRIDE,&flag) instead. 67*7f296bb3SBarry Smith- Added ISCreate(), ISSetType(), ISRegister() etc to match style of 68*7f296bb3SBarry Smith other PETSc objects. Also added ISGeneralSetIndices(), 69*7f296bb3SBarry Smith ISBlockSetIndices(), ISStrideSetStride() 70*7f296bb3SBarry Smith- ISCreateGeneral() and ISCreateBlock() now takes PetscCopyMode as 71*7f296bb3SBarry Smith an argument and hence ISCreateGeneralNC() and 72*7f296bb3SBarry Smith ISCreateGeneralWithArray() are not needed and removed. Use 73*7f296bb3SBarry Smith ISCreateGeneral() with the argument PETSC_OWN_POINTER and 74*7f296bb3SBarry Smith PETSC_USE_POINTER instead. 75*7f296bb3SBarry Smith- ISLocalToGlobalMappingCreate() now takes PetscCopyMode as an 76*7f296bb3SBarry Smith additional argument and ISLocalToGlobalMappingCreateNC() is no 77*7f296bb3SBarry Smith longer needed and removed 78*7f296bb3SBarry Smith- ISStrideToGeneral() is replaced with ISToGeneral() that works for 79*7f296bb3SBarry Smith all basic IS types. 80*7f296bb3SBarry Smith- ISCreateBlock() now takes indexing relative to block, no longer 81*7f296bb3SBarry Smith relative to element. This is to match the paradigm of 82*7f296bb3SBarry Smith Vec/MatSetValuesBlocked() 83*7f296bb3SBarry Smith- ISBlockGetBlockSize() is now ISGetBlockSize(). Block sizes can be 84*7f296bb3SBarry Smith set for conforming ISGENERAL and ISSTRIDE using ISSetBlockSize(). 85*7f296bb3SBarry Smith- ISAllGatherIndices() is removed, use ISCreateGeneral() then 86*7f296bb3SBarry Smith ISAllGather(). 87*7f296bb3SBarry Smith 88*7f296bb3SBarry Smith```{rubric} PF: 89*7f296bb3SBarry Smith``` 90*7f296bb3SBarry Smith 91*7f296bb3SBarry Smith- The source array is marked constant in PFApply and the callback. 92*7f296bb3SBarry Smith 93*7f296bb3SBarry Smith```{rubric} Vec: 94*7f296bb3SBarry Smith``` 95*7f296bb3SBarry Smith 96*7f296bb3SBarry Smith- changed VecSqrt() to VecSqrtAbs() 97*7f296bb3SBarry Smith- VecLoad() and VecLoadIntoVector() have been merged into a single 98*7f296bb3SBarry Smith NEW VecLoad() that takes a partially constructed vector as input 99*7f296bb3SBarry Smith and loads according to any type or sizes that have previously been 100*7f296bb3SBarry Smith set into the Vec. 101*7f296bb3SBarry Smith- VecDestroyVecs(PetscInt n,Vec \*\*) instead of 102*7f296bb3SBarry Smith VecDestroyVecs(Vec\*\*,PetscInt n), also VecDestroyVecsF90(PetscInt 103*7f296bb3SBarry Smith n,{Vec, pointer :: x},PetscErrorCode ierr) 104*7f296bb3SBarry Smith- VecLoad() does NOT access the options database to check for the 105*7f296bb3SBarry Smith VecType, call VecSetFromOptions() first if you wish to check it. 106*7f296bb3SBarry Smith- VecDestroyVecs() now takes the pointer to the first array and 107*7f296bb3SBarry Smith zeros it on return 108*7f296bb3SBarry Smith- VecDestroy() now zeros the pointer to the destroyed vector so it 109*7f296bb3SBarry Smith cannot be reused 110*7f296bb3SBarry Smith- VecDestroyVecs(PetscInt n,Vec \*\*) instead of 111*7f296bb3SBarry Smith VecDestroyVecs(Vec\*\*,PetscInt n) 112*7f296bb3SBarry Smith 113*7f296bb3SBarry Smith```{rubric} VecScatter: 114*7f296bb3SBarry Smith``` 115*7f296bb3SBarry Smith 116*7f296bb3SBarry Smith- The ghost indices for VecCreateGhostBlock() and 117*7f296bb3SBarry Smith VecCreateGhostBlockWithArray() are now by block instead of by 118*7f296bb3SBarry Smith entry. 119*7f296bb3SBarry Smith 120*7f296bb3SBarry Smith```{rubric} Mat: 121*7f296bb3SBarry Smith``` 122*7f296bb3SBarry Smith 123*7f296bb3SBarry Smith- MAT_SOLVER_XXX is now MATSOLVERXXX 124*7f296bb3SBarry Smith- MAT_PARTIONING_XXX is now MATPARTITIONINGXXX 125*7f296bb3SBarry Smith- MATCOLORING_XXX is now MATCOLORINGXXX 126*7f296bb3SBarry Smith- MATORDERING_XXX is now MATORDERINGXXX 127*7f296bb3SBarry Smith- It is an error to call MatSetOption() before the implementation 128*7f296bb3SBarry Smith has been created (after MatSetSizes() and MatSetType()). Formerly, 129*7f296bb3SBarry Smith options were silently ignored in this circumstance. 130*7f296bb3SBarry Smith- Added MatSetMumpsIcntl() 131*7f296bb3SBarry Smith- MatLoad() now takes a created Mat as input (and no longer a Mat 132*7f296bb3SBarry Smith type), if you provide the size and type in the Mat then that is 133*7f296bb3SBarry Smith used other defaults are used. 134*7f296bb3SBarry Smith- MATCRL -> MATAIJCRL, MATSEQCRL -> MATSEQAIJCRL, MATMPICRL -> 135*7f296bb3SBarry Smith MATMPIAIJCRL 136*7f296bb3SBarry Smith- MatCreateSeqCRL() -> MatCreateSeqAIJCRL() MatCreateMPICRL() -> 137*7f296bb3SBarry Smith MatCreateMPIAIJCRL() 138*7f296bb3SBarry Smith- MATCSRPERM -> MATAIJPERM, MATSEQCSRPERM -> MATSEQAIJPERM, 139*7f296bb3SBarry Smith MATMPICSRPERM -> MATMPIAIJPERM 140*7f296bb3SBarry Smith- MatCreateSeqCSRPERM() -> MatCreateSeqAIJPERM() 141*7f296bb3SBarry Smith MatCreateMPICSRPERM() -> MatCreateMPIAIJPERM() 142*7f296bb3SBarry Smith- Added MatZeroRowsColumns() and MatZeroRowsColumnsIS(). 143*7f296bb3SBarry Smith- MatZeroRows() and MatZeroRowsIS() now take an x and b vector as 144*7f296bb3SBarry Smith optional arguments; if these are provided then the b\[idx[i]\] is 145*7f296bb3SBarry Smith set to diag\*x\[idx[i]\]\] for all rows listed in idx[]. 146*7f296bb3SBarry Smith- MatSetLocalToGlobalMapping() and MatSetLocalToGlobalMappingBlock() 147*7f296bb3SBarry Smith now take separate row and column maps. MatPreallocateSetLocal() 148*7f296bb3SBarry Smith has an extra argument for the column mapping. 149*7f296bb3SBarry Smith- MatLoad() does NOT access the options database to check for the 150*7f296bb3SBarry Smith MatType, call MatSetFromOptions() first if you wish to check it. 151*7f296bb3SBarry Smith- Removed MatMFFDSetFromOptions() since one can call 152*7f296bb3SBarry Smith MatSetFromOptions() 153*7f296bb3SBarry Smith- MatGetLocalMat() and MatGetLocalMatCondensed() are now 154*7f296bb3SBarry Smith MatMPIAIJGetLocalMat() and MatMPIAIJGetLocalMatCondensed() 155*7f296bb3SBarry Smith- MatOption MAT_USE_COMPRESSEDROW changed to 156*7f296bb3SBarry Smith MAT_CHECK_COMPRESSED_ROW 157*7f296bb3SBarry Smith 158*7f296bb3SBarry Smith```{rubric} PC: 159*7f296bb3SBarry Smith``` 160*7f296bb3SBarry Smith 161*7f296bb3SBarry Smith- PCFieldSplitSetIS() and PCFieldSplitSetFields() now take a 162*7f296bb3SBarry Smith split-name parameter which is used to define the options database 163*7f296bb3SBarry Smith keys. 164*7f296bb3SBarry Smith- CHOLMOD can be used for Cholesky factorization using AIJ or 165*7f296bb3SBarry Smith SBAIJ(1) matrix formats. 166*7f296bb3SBarry Smith- PCREDUNDANT now uses the inner KSP with the inner PC. Default is 167*7f296bb3SBarry Smith still preonly for KSP and LU for PC so default behavior is the 168*7f296bb3SBarry Smith same but now you can use for example -redundant_ksp_gmres. 169*7f296bb3SBarry Smith PCRedundantGetPC() is now changed to PCRedundantGetKSP() 170*7f296bb3SBarry Smith- The header "petscmg.h" is renamed to "petscpcmg.h", "petscasa.h" 171*7f296bb3SBarry Smith is renamed to "petscpcasa.h". 172*7f296bb3SBarry Smith- The preconditioner PCBFBT has been removed. The same functionality 173*7f296bb3SBarry Smith is available in PCFIELDSPLIT. 174*7f296bb3SBarry Smith- PCOPENMP is now PCHMPI and its prefix is now -hmpi\_ for 175*7f296bb3SBarry Smith heirarchical MPI 176*7f296bb3SBarry Smith- PCMGSetGalerkin() has a second argument of type PetscBool. 177*7f296bb3SBarry Smith 178*7f296bb3SBarry Smith```{rubric} KSP: 179*7f296bb3SBarry Smith``` 180*7f296bb3SBarry Smith 181*7f296bb3SBarry Smith- KSPSetPreconditionerSide() changed to KSPSetPCSide() to match name 182*7f296bb3SBarry Smith of second argument 183*7f296bb3SBarry Smith- -ksp_right_pc -ksp_left_pc changed to -ksp_pc_side 184*7f296bb3SBarry Smith left,right,symmetric to match KSPSetPCSide() 185*7f296bb3SBarry Smith- Added KSPGMRESGetRestart() and KSPGMRESGetCGSRefinementType() 186*7f296bb3SBarry Smith- Added KSPGMRESGetOrthogonalization() 187*7f296bb3SBarry Smith- KSPAddOptionsChecker() is replaced with 188*7f296bb3SBarry Smith PetscObjectAddOptionsHandler() 189*7f296bb3SBarry Smith- Added KSPSPECEST which estimates the spectrum on the first solve 190*7f296bb3SBarry Smith and uses it to configure a reduction-free method for subsequent 191*7f296bb3SBarry Smith solves, intended for use when reductions are expensive such as 192*7f296bb3SBarry Smith levels of multigrid. 193*7f296bb3SBarry Smith 194*7f296bb3SBarry Smith```{rubric} SNES: 195*7f296bb3SBarry Smith``` 196*7f296bb3SBarry Smith 197*7f296bb3SBarry Smith- Added SNESLineSearchSetMonitor() and -snes_ls_monitor. 198*7f296bb3SBarry Smith- Add SNESKSPONLY, for solving linear problems with SNES. 199*7f296bb3SBarry Smith- Added the minlambda argument to SNESLineSearchGetParams() and 200*7f296bb3SBarry Smith SNESLineSearchSetParams(). 201*7f296bb3SBarry Smith 202*7f296bb3SBarry Smith```{rubric} TS: 203*7f296bb3SBarry Smith``` 204*7f296bb3SBarry Smith 205*7f296bb3SBarry Smith- Rename TSCRANK_NICHOLSON to TSCN and TSRUNGE_KUTTA to TSRK for 206*7f296bb3SBarry Smith consistency. 207*7f296bb3SBarry Smith- TSSetIFunction() and TSSetRHSFunction() have an additional 208*7f296bb3SBarry Smith argument for the vector to compute the function value in. If 209*7f296bb3SBarry Smith PETSC_NULL is used, then one is created by the TS. 210*7f296bb3SBarry Smith- TSSetMatrices() has been removed, use TSSetIFunction() and 211*7f296bb3SBarry Smith TSSetRHSFunction(), perhaps providing Jacobian matrices and 212*7f296bb3SBarry Smith TSComputeRHSFunctionLinear() and/or 213*7f296bb3SBarry Smith TSComputeRHSJacobianConstant(). See 214*7f296bb3SBarry Smith src/ts/examples/tutorials/ex{2,4,5,6}.c for an example. 215*7f296bb3SBarry Smith- Added TSARKIMEX: additive Runge-Kutta implicit-explicit methods 216*7f296bb3SBarry Smith for multi-rate systems. 217*7f296bb3SBarry Smith- Changed TSStep() interface to only perform one step, added 218*7f296bb3SBarry Smith TSSolve() to perform multiple steps with callbacks and monitors if 219*7f296bb3SBarry Smith desired. 220*7f296bb3SBarry Smith- Added TSSetExactFinalTime(), replaces 221*7f296bb3SBarry Smith TSSundialsSetExactFinalTime(). 222*7f296bb3SBarry Smith 223*7f296bb3SBarry Smith```{rubric} DM/DA: 224*7f296bb3SBarry Smith``` 225*7f296bb3SBarry Smith 226*7f296bb3SBarry Smith- Change array argument of DAGetArray and related functions from 227*7f296bb3SBarry Smith void\*\* to void\* to avoid the need for an explicit cast (the 228*7f296bb3SBarry Smith argument still has the meaning of a pointer to d-dimensionally 229*7f296bb3SBarry Smith indexed array of user-defined node type, old code will still 230*7f296bb3SBarry Smith compile correctly but the cast is no longer necessary). 231*7f296bb3SBarry Smith- DAGetCoordinates(), DAGetGhostedCoordinates(), and 232*7f296bb3SBarry Smith DAGetCoordinateDA() now return borrowed references. The returned 233*7f296bb3SBarry Smith object should not be destroyed by the user. 234*7f296bb3SBarry Smith- Added DAVecGetArrayF90() 235*7f296bb3SBarry Smith- Changed DASetVertexDivision to DASetOwnershipRanges 236*7f296bb3SBarry Smith- The SDA object and all its method have been removed 237*7f296bb3SBarry Smith- The DA, ADDA, Slice and DMComposite objects are now all 238*7f296bb3SBarry Smith represented by a DM object. 239*7f296bb3SBarry Smith- Routines that began with ADDA and Slice now begin with DMADDA and 240*7f296bb3SBarry Smith DMSlice 241*7f296bb3SBarry Smith- DA/ADDA/Slice/DMCompositeGetMatrix() -> DMGetMatrix(), similar for 242*7f296bb3SBarry Smith all other routines that have a DM version 243*7f296bb3SBarry Smith- Removed DASetType(), DARegister() etc since they will all be 244*7f296bb3SBarry Smith handled via DMSetType() etc 245*7f296bb3SBarry Smith- Added DMSetUp() that is called, for example, after all the 246*7f296bb3SBarry Smith parameters are passed to the DM object to actually construct the 247*7f296bb3SBarry Smith data structures; replace all calls to DASetType() with calls to 248*7f296bb3SBarry Smith DMSetUp() 249*7f296bb3SBarry Smith- DAXXX() routines are now either DMXXX() or DMDAXXX() see 250*7f296bb3SBarry Smith petscdmda.h for details 251*7f296bb3SBarry Smith- The operation DALocalToGlobal() which performed no communication 252*7f296bb3SBarry Smith can now be performed with DMLocalToGlobalBegin/End() with 253*7f296bb3SBarry Smith INSERT_VALUES. 254*7f296bb3SBarry Smith- petscda.h, petscdadef.h and petscda.h90 are now petscdmda.h, 255*7f296bb3SBarry Smith petscdmdadef.h, and petscdmda.h90 256*7f296bb3SBarry Smith- DAGetISLocalToGlobalMapping() and 257*7f296bb3SBarry Smith DAGetISLocalToGlobalMappingBlck() are now 258*7f296bb3SBarry Smith DMGetLocalToGlobalMapping() and DMGetLocalToGlobalMappingBlock() 259*7f296bb3SBarry Smith and are collective since they may be constructed lazily. 260*7f296bb3SBarry Smith- DMGetBlockSize() is added. 261*7f296bb3SBarry Smith- Changed DMDAPeriodicType to DMDABoundaryType, and changed this 262*7f296bb3SBarry Smith enum to only specify one boundary (one for each dimension). This 263*7f296bb3SBarry Smith enum is now one of DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_GHOSTED, or 264*7f296bb3SBarry Smith DMDA_BOUNDARY_PERIODIC. See DMDABoundaryType man page for more. 265*7f296bb3SBarry Smith- DMDASetPeriodicity() is now DMDASetBoundaryType(), and API is 266*7f296bb3SBarry Smith changed to take three DMDABoundaryType arguments. 267*7f296bb3SBarry Smith- Changed API for DMDACreate\*D(), DMDAGetInfo() to take the correct 268*7f296bb3SBarry Smith number of DMDABoundaryType enums for the dimension. 269*7f296bb3SBarry Smith- DMDASetGhostedCoordinates() is added to set coordinates of 270*7f296bb3SBarry Smith non-periodic ghost cells. 271*7f296bb3SBarry Smith 272*7f296bb3SBarry Smith```{rubric} DMMG: 273*7f296bb3SBarry Smith``` 274*7f296bb3SBarry Smith 275*7f296bb3SBarry Smith```{rubric} PetscViewer: 276*7f296bb3SBarry Smith``` 277*7f296bb3SBarry Smith 278*7f296bb3SBarry Smith- PETSC_VIEWER_XXX is now PETSCVIEWERXXX 279*7f296bb3SBarry Smith- Added PetscViewerASCIIOpenWithFILE() and PetscViewerASCIISetFILE() 280*7f296bb3SBarry Smith- Added PetscViewerASCIISynchronizedAllow() which must be called 281*7f296bb3SBarry Smith before using PetscViewerASCIISynchronizedPrintf() 282*7f296bb3SBarry Smith 283*7f296bb3SBarry Smith```{rubric} SYS: 284*7f296bb3SBarry Smith``` 285*7f296bb3SBarry Smith 286*7f296bb3SBarry Smith- PetscOptionsAtoi(),PetscOptionsAtod(),PetscOptionsAtol() -> 287*7f296bb3SBarry Smith PetscOptionsStringToInt(), PetscOptionsStringToReal(), 288*7f296bb3SBarry Smith PetscOptionsStringToBool() 289*7f296bb3SBarry Smith- PetscFListFind() takes an additional argument to look up the 290*7f296bb3SBarry Smith symbol in dynamically loaded libraries if not already in the list. 291*7f296bb3SBarry Smith- Added PetscBagSetOptionsPrefix(), which allows a prefix for the 292*7f296bb3SBarry Smith option names of bag items. 293*7f296bb3SBarry Smith- The preloading macros as well as developer-level logging and 294*7f296bb3SBarry Smith profiling functions have been namespaced, e.g. PreLoadBegin() is 295*7f296bb3SBarry Smith now PetscPreLoadBegin(). 296*7f296bb3SBarry Smith 297*7f296bb3SBarry Smith```{rubric} AO: 298*7f296bb3SBarry Smith``` 299*7f296bb3SBarry Smith 300*7f296bb3SBarry Smith```{rubric} Sieve: 301*7f296bb3SBarry Smith``` 302*7f296bb3SBarry Smith 303*7f296bb3SBarry Smith```{rubric} Fortran: 304*7f296bb3SBarry Smith``` 305*7f296bb3SBarry Smith 306*7f296bb3SBarry Smith```{rubric} ExternalPackages: 307*7f296bb3SBarry Smith``` 308