1# Changes: 3.1 2 3```{rubric} General: 4``` 5 6- PetscOptionsHasName() and PetscOptionsName() now return PETSC_TRUE 7 if the options are set to any value, include false or 0. You may 8 need to change some of your PetscOptionsXXName() to 9 PetscOptionsXXTruth() 10- Added configure option --with-single-library that causes all PETSc 11 code to be compiled into the single library libpetsc.XXX 12- PetscMap changed to PetscLayout and PetscMapInitialize() changed 13 to PetscLayoutCreate() and it now allocates the space of the 14 object. 15- In makefiles include \$\{PETSC_DIR}/conf/base is replaced with two 16 lines include \$\{PETSC_DIR}/conf/variables and include 17 \$\{PETSC_DIR}/conf/rules 18- BlockSolve95 interface is removed 19- petsc.h and petscdef.h are replaced with petscsys.h and 20 petscsysdef.h; while petsc.h now includes ALL PETSc include files. 21- win32fe [used for MS/Intel compiler builds on windows] now 22 defaults to 'noautodetect' mode. However the previous behavior can 23 be restored by using the option '--autodetect'. For eg: 24 '--withcc=win32fe cl --autodetect'. This works primarily with old 25 VC6/VC7/Intel8 etc compilers anyway. 26 27```{rubric} Logging: 28``` 29 30- PetscLogFlops(int) ->PetscLogFlops(PetscLogDouble). [check fortran 31 usage] 32 33```{rubric} config/configure.py: 34``` 35 36- All ./configure options that state known values, so that 37 ./configure doesn't try to test for them. Often used with the 38 --with-batch option now begin with --known- 39 40```{rubric} IS: 41``` 42 43```{rubric} Vec: 44``` 45 46```{rubric} VecScatter: 47``` 48 49```{rubric} Mat: 50``` 51 52- MatGetSubMatrix: 53 54 - Now takes a parallel IS for the columns, the csize argument has 55 been dropped. The local part of this IS corresponds to the 56 local columns of the new submatrix. 57 58- MatGetSubMatrixRaw 59 60 - Removed, use MatGetSubMatrix 61 62- Changed name of option MAT_KEEP_ZEROED_ROWS to 63 MAT_KEEP_NONZERO_PATTERN to more clearly indicate what it does. 64 65- Added MAT_SHARE_NONZERO_PATTERN as option for MatDuplicate() this 66 allows several matrices to share the same data structures for the 67 nonzeros and thus save memory. 68 69- The function provided to MatNullSpaceSetFunction() now takes a 70 MatNullSpace() as the first argument. Added Fortran interface for 71 this function as well. 72 73- Removed MatPBRelax() merged its functionality into MatRelax() 74 75- Changed MatRelax() to MatSOR() to match MatSORType() and PCSOR 76 77- Removed requirement that rows be sorted in 78 MatCreateMPIAIJWithArrays() and MatMPIAIJSetPreallocationCSR(). 79 80- Changed MATOP_DIAGONAL_SHIFT to MATOP_DIAGONAL_SET to match 81 function name MatDiagonalSet(). 82 83- MATMPIROWBS i.e BlockSolve95 interface is now removed. 84 85```{rubric} PC: 86``` 87 88- PCShell All user-provided functions now have PC as first argument 89 instead of the application context. Users should obtain the 90 context with PCShellGetContext, similar to MatShell. 91- Removed -pc_asm_in_place and PCASMSetUseInPlace() since the option 92 made no sense 93- PCApplyRichardson() has an additional argument indicating if the 94 initial guess being passed in is nonzero. SOR will save some work 95 if it is zero. 96- MatSetBlockSize() is no longer an error for BAIJ matrices, but the 97 argument must be the same as when the matrix was preallocated. 98- PCFactorSetPivoting() renamed to PCFactorSetColumnPivot() 99- Replaced PCFactorSetShiftNonzero(), PCFactorSetShiftPd() and 100 PCFactorSetShiftInBlocks() with PCFactorSetShiftType() and 101 PCFactorSetShiftAmount(). Replaced -pc_factor_shift_nonzero, 102 -pc_factor_shift_positive_definite and -pc_factor_shift_in_blocks 103 with -pc_factor_shift_type \<shifttype> and -pc_factor_shift_amount 104 \<shiftamount>. 105- Added PCREDISTRIBUTE for load balancing and removal of Dirichlet 106 degrees of freedom. 107 108```{rubric} KSP: 109``` 110 111- Added KSPCGUseSingleReduction() -ksp_cg_single_reduction; 112 recommended for use with many processors when VecDot() starts to 113 take a large amount of time, Requires 2 extra work vectors. 114- Added KSPGCR (Generalized Conjugate Residuals), a flexible method 115 (like FGMRES) providing inexpensive residuals. 116 117```{rubric} SNES: 118``` 119 120```{rubric} TS: 121``` 122 123- Rename TS_EULER, TS_BEULER, etc like TSEULER for consistency with 124 other packages. 125- Add Theta and General Linear time integrators (TSTHETA, TSGL). 126 These can be used for solving differential algebraic equations 127 (DAE) using the new TSSetIFunction() and TSSetIJacobian(). 128- Add TSSSP which implements optimal strong stability preserving 129 time integrators of order 2, 3, and 4 using a low-storage explicit 130 Runge-Kutta scheme. 131- Change TSSetPreStep() and TSSetPostStep() to run before and after 132 each step instead of before and after each solve. 133 134```{rubric} DA: 135``` 136 137- DAGetColoring() now takes a MatType as an additional argument, 138 should be MATAIJ or MATBAIJ 139- Added DARefineHierarchy(), DMMG now always uses DMRefineHierarchy 140 to generate refined grids. Added options 141 -da_refine_hierarchy\_[xyz] to allow semi-coarsening at some levels 142 of the hierarchy. 143- DASetCoordinates() now references the vector, so the user should 144 release their reference by calling VecDestroy(). 145 146```{rubric} DMMG: 147``` 148 149```{rubric} PetscViewer: 150``` 151 152```{rubric} SYS: 153``` 154 155- PetscSleep(), PetscDrawGetPause(), and PetscDrawSetPause() now 156 take PetscReal instead of int. Also, -draw_pause takes a real 157 value. 158- PetscRandomGetValueImaginary() is removed. To get a complex number 159 with only a random imaginary part first call 160 PetscRandomSetInterval() with the same low and high real part. 161 Similarly one can obtain a complex number with only a random real 162 part by setting the low and high imaginary part to be the same. 163 164```{rubric} AO: 165``` 166 167```{rubric} Sieve: 168``` 169 170```{rubric} Fortran: 171``` 172 173- Removed the old compiler dependent implementation of f90 interface 174 sources in favor of the new compiler independent implementation. 175 Consequently the configure option --with-f90-interface is removed. 176 And the f90 interface is automatically built - if an f90 compiler 177 is detected. [this is the default behavior before this change 178 as well] 179- use petsc and use petscdef are now use petscsys and use 180 petscsysdef 181 182```{rubric} ExternalPackages: 183``` 184 185- Added MATORDERING_AMD for Tim Davis' Approximate Minimum Degree 186 package. 187