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