1# Changes: 2.3.0 2 3```{rubric} General: 4``` 5 6- The equivalent of building BOPT=g, BOPT=O versions for 7 PETSC_ARCH=linux-gnu is now: config/configure.py [options] 8 -PETSC_ARCH=linux-gnu config/configure.py [options] 9 --with-debugging=0 -PETSC_ARCH=linux-gnu-opt 10- Python bindings added to PETSc. To use, configure with: 11 --with-python=1 ---with-shared=1 To build, use: 'make python' 12 after building PETSc libraries. Example in 13 src/snes/examples/tutorials/ex1.py 14- Options database keys -trmalloc[\_xxx] are changed to -malloc[\_xxx] 15- -get_resident_set_size and -trinfo are changed to -memory_info 16- PetscTrValid() -> PetscMallocValidate(), PetscTrDebug() -> 17 PetscMallocDebug() 18- -trdebug -> -malloc_debug 19- PetscGetResidentSetSize() -> PetscMemoryGetCurrentUsage(), added 20 PetscMemoryGetMaximumUsage() and PetscMemorySetGetMaximumUsage() 21- PetscTrSpace() -> PetscMallocGetCurrentUsage() and 22 PetscMallocGetMaximumUsage() 23- added PetscOptionsEnum() and PetscOptionsGetEnum() 24- added PetscBag object for managing user created structs including 25 initializing them and serializing them. 26- removed PetscSetCommWorld(). Now you can directly assign to 27 PETSC_COMM_WORLD before PetscInitialize(). 28 29```{rubric} Vec: 30``` 31 32- Faster generation of VecScatter for many processes when indices 33 are mostly sorted 34 35- Changed BLAS-type interfaces to PETSc-style: 36 37 - VecShift 38 - VecScale 39 - VecSet 40 - VecSetRandom 41 - VecAXPY 42 - VecAXPBY 43 - VecAYPX 44 - VecMAXPY 45 - VecWAXPY 46 47- Changed order of arguments in pointwise routines: 48 49 - VecPointwiseMult 50 - VecPointwiseMax 51 - VecPointwiseMin 52 - VecPointwiseMaxAbs 53 - VecPointwiseDivide 54 55```{rubric} Mat: 56``` 57 58- Changed MatConvert to require a reuse parameter to denote inplace 59 conversion 60 61- Added Cholesky and ICC support to SeqBAIJ 62 63- Added the argument MatFactorInfo to MatLUFactorNumeric() and 64 MatCholeskyFactorNumeric() 65 66- Faster MatSetValues() 67 68- Faster parallel-matrix vector products 69 70- Changed MatCreate() to take only a communicator 71 72- Added MatSetSize() to specify matrix sizes 73 74- Changed BLAS-type interfaces to PETSc-style: 75 76 - MatAXPY 77 - MatAYPX 78 - MatScale 79 - MatShift 80 81- Change MatZeroRows() and MatZeroRowsLocal() to use arrays, and 82 added IS versions 83 84```{rubric} PC: 85``` 86 87- Added PCILUReorderForNonzeroDiagonal() and 88 PCLUReorderForNonzeroDiagonal() 89- Replace PCLUSetDamping(), PCILUSetDamping(), 90 PCCholeskySetDamping() and PCICCSetDamping() by 91 PCFactorSetShiftNonzero(). Change the option database keys 92 -pc_lu_damping, -pc_ilu_damping, -pc_cholesky_damping and 93 -pc_icc_damping to -pc_factor_shift_nonzero 94- Replace PCLUSetShift(), PCILUSetShift(), PCCholeskySetShift() and 95 PCICCSetShift() by PCFactorSetShiftPd(). Change the option 96 database keys -pc_lu_shift, -pc_ilu_shift, -pc_cholesky_shift and 97 -pc_icc_shift to -pc_factor_shfit_positive_definite 98- PCMG: will automatically using the outer pmat operator to define 99 the finest level operator if not user supplied 100- PCMG: added MGUseGalerkin(), -pc_mg_galerkin option to have 101 coarser grid matrices computed from the finest grid matrix 102- PCMG: now does referencing counting on set vectors and 103 restriction/interpolation matrices so user need not keep reference 104 to free later 105- PCMG: if user does not provide restriction the interpolation is 106 used and vis versa 107- PCMG: if user does not provide Vecs for each level, will 108 automatically provide them 109- All routines that began with MG now begin with PCMG 110- Added PCShellSet/GetContext() and removed the context passed into 111 PCSetApply() and PCSetApplyRichardson() 112 113```{rubric} KSP: 114``` 115 116- -ksp_cg_Hermitian and -ksp_cg_symmetric have been changed to 117 -ksp_cg_type Hermitian or symmetric 118- Changed options for -ksp_gmres_cgs_refinement_type from never or 119 ifneeded or always to REFINE_NEVER or REFINE_IFNEEDED or 120 REFINE_ALWAYS 121 122```{rubric} config/configure.py: 123``` 124 125```{rubric} SNES: 126``` 127 128- Changed the name and calling sequence for SNESSetLineSearchCheck() 129 to SNESLineSearchSetPostCheck() and added a 130 SNESLineSearchSetPreCheck() 131 132- Changed the names of all SNESxxxxLineSearchyyyy() to 133 SNESLineSearchxxxxyyyy() per PETSc naming standard. 134 135- Now allow a constant vector to be specified in SNESSolve() 136 137- Removed the Vec argument from SNESSetUp() 138 139- Corrected the order of function and context arguments in: 140 141 - SNESGetFunction() 142 - SNESGetJacobian() 143 144```{rubric} TS: 145``` 146 147```{rubric} DA: 148``` 149 150- Added DAVecGet/RestoreArrayDOF() allowing indexing in the 151 dimension of degrees of freedom at each point on the lattice. 152- Faster DAGlobalToLocal() etc for dof > 1. 153 154```{rubric} DMMG: 155``` 156 157- Consolidated DMMG functionality into the new header file 158 "petscdmmg.h". 159 160```{rubric} SYS: 161``` 162 163- PetscSetCommWorld() removed. [one can directly do PETSC_COMM_WORLD 164 = comm - before PetscInitialize()] 165 166```{rubric} Fortran: 167``` 168 169```{rubric} ExternalPackages: 170``` 171 172- ML support added. 173