1# Changes: 2.0.29 2 3## Changes 4 5(See [Features] below) 6 7```{rubric} General: 8``` 9 10```{rubric} AO (Application Orderings): 11``` 12 13```{rubric} TS (Timestepping Solvers): 14``` 15 16```{rubric} SNES (Nonlinear Solvers): 17``` 18 19- The second argument to MatSNESMFSetType() is now a MatSNESMFType, 20 rather than a char\*. This should not affect any user code. Current 21 built in choices are MATSNESMF_DEFAULT "default" and MATSNESMF_WP 22 "wp" 23- SNESGetJacobian() now has an additional optional final argument 24 that can return the function pointer 25- SNESGetFunction() now has an additional optional final argument 26 that can return the function pointer 27 28```{rubric} SLES (Linear Solvers): 29``` 30 31```{rubric} KSP (Krylov Subspace Methods): 32``` 33 34```{rubric} PC (Preconditioners): 35``` 36 37- PCILUSetReuseFill() changed to PCILUDTSetReuseFill() and 38 -pc_ilu_reuse_fill changed to -pc_iludt_reuse_fill Note that 39 currently these functions don't work. 40- PCNullSpaceXXX changed to MatNullSpaceXXX except for 41 PCNullSpaceAttach() 42- MGSetLevels() now takes an additional optional final argument that 43 is an array of communicators to use on the SLES on each level 44 45```{rubric} MAT (Matrices): 46``` 47 48- Changed MatDiagonalShift(Mat,Vec) to 49 MatDiagonalSet(Mat,Vec,InsertMode); 50- Dropped the second to last argument to MatCreateRowbs() 51- -mat_ordering_type now should be either -pc_ilu_mat_ordering_type, 52 -pc_lu_mat_ordering_type, -pc_icc_mat_ordering_type or 53 -pc_cholesky_mat_ordering_type 54 55```{rubric} DA (Distributed Arrays): 56``` 57 58```{rubric} VEC (Vectors): 59``` 60 61```{rubric} IS (Index Sets): 62``` 63 64- ISEqual() now is collective and returns true only if each 65 processor has the same indices 66- ISGetSize() now returns global parallel size, ISGetLocalSize() 67 returns local size 68 69```{rubric} General: 70``` 71 72- All include files like mat.h vec.h sles.h snes.h ts.h etc are now 73 changed to petscmat.h petscvec.h petscsles.h petscsnes.h petscts.h 74 75```{rubric} Draw (Graphics): 76``` 77 78```{rubric} Viewers: 79``` 80 81```{rubric} System: 82``` 83 84- FListDestroy now takes FList * instead of FList 85 86```{rubric} Error Handling: 87``` 88 89```{rubric} Event Logging: 90``` 91 92- PLogEventBegin(), PLogEventEnd(), PLogFlops(), 93 PLogEventBarrierBegin() and PLogEventBarrierEnd() now return error 94 codes. 95 96```{rubric} Fortran Interface: 97``` 98 99## Features 100 101(See [Changes] above) 102 103```{rubric} General: 104``` 105 106```{rubric} AO (Application Orderings): 107``` 108 109```{rubric} TS (Timestepping Solvers): 110``` 111 112```{rubric} SNES (Nonlinear Solvers): 113``` 114 115```{rubric} SLES (Linear Solvers): 116``` 117 118```{rubric} KSP (Krylov Subspace Methods): 119``` 120 121- Minres solver contributed by: Robert Scheichl: 122 <mailto:maprs@maths.bath.ac.uk> 123- SYMMLQ solver contributed by Hong Zhang 124 125```{rubric} PC (Preconditioners): 126``` 127 128- ICC(k) and Cholesky() preconditioners are now available for the 129 new SeqSBAIJ matrices. 130- added -pc_ilu_damping and -pc_lu_damping, PCILUSetDamping(), 131 PCLUSetDamping() for handling singular or matrices that generate a 132 zero pivot. 133- Added DAMGCreate() etc to help easily write parallel multigrid 134 codes that use rectangular grids 135- Paulo Goldfeld contributed new PCType of nn, a version of Mandel's 136 balancing Neumann-Neumann preconditioner, see 137 src/contrib/oberman/laplacian_q1 for an example of its use 138 139```{rubric} MAT (Matrices): 140``` 141 142- added new matrix types SeqSBAIJ and MPISBAIJ for symmetric 143 matrices. These store only the upper triangular portion of the 144 matrix. We also provide ICC(k) and Cholesky factorization 145 (currently only for block size of 1) for the SeqSBAIJ matrices 146- augmented the SeqAIJ matrices to support -mat_aij_matlab that 147 causes the matrices to use the MATLAB engine for sparse LU, and 148 ILUDT factorization and solves. Which have pivoting and thus are 149 more robust than PETSc's default. 150 151```{rubric} DA (Distributed Arrays): 152``` 153 154- added -da_noao for DACreateXXX() makes them more scalable, but 155 cannot use the natural numbering DA routines with this option. 156- Added DAMGCreate() etc to help easily write parallel multigrid 157 codes that use rectangular grids 158 159```{rubric} VEC (Vectors): 160``` 161 162```{rubric} IS (Index Sets): 163``` 164 165```{rubric} PF: 166``` 167 168- added the type PFMATLAB with -pf_type matlab -pf_matlab 169 matlab_commands 170 171```{rubric} Draw (Graphics): 172``` 173 174```{rubric} Viewers: 175``` 176 177```{rubric} System: 178``` 179 180- Add PetscMatlabEngineCreate() which allows calling Matlab 181 functions from PETSc on each processor. Good for graphics or 182 numerical routines that PETSc does not have. for example for the 183 local evaluation of the parallel nonlinear function required for 184 SNES; see src/snes/examples/tutorials/ex5m.c. This functionality 185 is accessed via the commands 186 PetscMatlabEngineCreate(),Put(),Get(),Evaluate() and Destroy() It 187 even imports the MATLAB flop counts correctly. Obviously you need 188 enough MATLAB licenses for each node. Note: MATLAB itself is not 189 directly doing any parallel computing. 190- added PetscSetHelpVersionFunctions() for developers of other 191 libraries that use PETSc. 192- added PetscPoUpSelect(), see src/sys/examples/tests/ex15.c 193- added int PetscShowMemoryUsage(Viewer viewer,char \*message) 194- added PreLoadBegin(), PreLoadStage() and PreLoadEnd() to simplify 195 getting accurate timings by peloading. See 196 src/snes/examples/tutorials/ex10.c 197- added PetscSynchronizedFGets() 198 199```{rubric} Error Handling: 200``` 201 202```{rubric} Event Logging: 203``` 204 205```{rubric} Fortran Interface: 206``` 207