1*7f296bb3SBarry Smith# Changes: 3.3 2*7f296bb3SBarry Smith 3*7f296bb3SBarry Smith```{rubric} config/configure.py: 4*7f296bb3SBarry Smith``` 5*7f296bb3SBarry Smith 6*7f296bb3SBarry Smith- Building PETSc using CMake is enabled automatically if CMake is 7*7f296bb3SBarry Smith installed (enabling parallel builds and fast incremental builds), 8*7f296bb3SBarry Smith otherwise the plain make-based system is used. 9*7f296bb3SBarry Smith- Added --with-cuda-only flag to allow compiling CUDA files without 10*7f296bb3SBarry Smith requiring Thrust and Cusp 11*7f296bb3SBarry Smith 12*7f296bb3SBarry Smith```{rubric} Vec: 13*7f296bb3SBarry Smith``` 14*7f296bb3SBarry Smith 15*7f296bb3SBarry Smith- VecCreateSeqWithArray() and VecCreateMPIWithArray() now take a 16*7f296bb3SBarry Smith blocksize argument before the local length 17*7f296bb3SBarry Smith- VecSetBlockSize() cannot be called after VecCreateSeq() or 18*7f296bb3SBarry Smith VecCreateMPI() and must be called before VecSetUp() or 19*7f296bb3SBarry Smith VecSetFromOptions() or before either VecSetType() or VecSetSizes() 20*7f296bb3SBarry Smith 21*7f296bb3SBarry Smith```{rubric} Mat: 22*7f296bb3SBarry Smith``` 23*7f296bb3SBarry Smith 24*7f296bb3SBarry Smith- MatScaleSystem() and MatUnScaleSystem() are gone, they didn't do 25*7f296bb3SBarry Smith anything. 26*7f296bb3SBarry Smith- Renamed MatNullSpaceAttach() to MatSetNullSpace() 27*7f296bb3SBarry Smith- MatMult() no longer removes the nullspace set by MatSetNullSpace() 28*7f296bb3SBarry Smith- Renamed MatMatMultTranspose() for C=A^T\*B to MatTransposeMatMult() 29*7f296bb3SBarry Smith- Added MatMatTransposeMult() for C=A\*B^T 30*7f296bb3SBarry Smith- Added MatRARt() for C=R\*A\*R^T 31*7f296bb3SBarry Smith- Preallocation routines now automatically set 32*7f296bb3SBarry Smith MAT_NEW_NONZERO_ALLOCATION_ERR, if you intentionally preallocate 33*7f296bb3SBarry Smith less than necessary then use 34*7f296bb3SBarry Smith MatSetOption(mat,MAT_NEW_NONZERO_ALLOCATION_ERR,PETSC_FALSE) to 35*7f296bb3SBarry Smith disable the error generation. 36*7f296bb3SBarry Smith- MatSetBlockSize() must be called before MatSetUp() or 37*7f296bb3SBarry Smith MatXXXXSetPreallocation() or block size defaults to 1 38*7f296bb3SBarry Smith- -mat_block_size is NOT processed by MatXXXXSetPreallocation() you 39*7f296bb3SBarry Smith MUST call MatSetFromOptions() before MatSetUp() to have it 40*7f296bb3SBarry Smith processed 41*7f296bb3SBarry Smith- You MUST now call MatXXXSetPreallocation() or MatSetUp() on any 42*7f296bb3SBarry Smith matrix you create directly (not using DMCreateMatrix()) before 43*7f296bb3SBarry Smith calling MatSetValues(), MatSetValuesBlocked() etc. 44*7f296bb3SBarry Smith- MatGetOwnershipRange() will not work without setting up the 45*7f296bb3SBarry Smith matrix. 46*7f296bb3SBarry Smith- MatSetUpPreallocation() and MatPreallocated() are removed, use 47*7f296bb3SBarry Smith MatSetUp() 48*7f296bb3SBarry Smith- MatPreallocateSymmetricInitialize() is removed, use 49*7f296bb3SBarry Smith MatPreallocateInitialize() 50*7f296bb3SBarry Smith- MatCreateMPIAIJ(), MatCreateMPIBAIJ(), MatCreateMPISBAIJ(), 51*7f296bb3SBarry Smith MatCreateMPIDense() are now MatCreateAIJ(), MatCreateBAIJ(), 52*7f296bb3SBarry Smith MatCreateSBAIJ(), MatCreateDense(). Note that on a single process 53*7f296bb3SBarry Smith they have always created the sequential version of the matrix so 54*7f296bb3SBarry Smith this naming is more accurate. 55*7f296bb3SBarry Smith- Renamed MatMerge_SeqsToMPI() to MatCreateMPIAIJSumSeqAIJ() 56*7f296bb3SBarry Smith- Renamed MatMerge() to MatCreateMPIAIJConcatenateSeqAIJ() 57*7f296bb3SBarry Smith- Added block size in call to MatCreateIS() 58*7f296bb3SBarry Smith- MatInvertBlockDiagonal() now returns a const pointer 59*7f296bb3SBarry Smith 60*7f296bb3SBarry Smith```{rubric} PC: 61*7f296bb3SBarry Smith``` 62*7f296bb3SBarry Smith 63*7f296bb3SBarry Smith- Remove PCASASetDM(), use PCSetDM() instead. 64*7f296bb3SBarry Smith- Add PCFieldSplitSetSchurFactType(), rename 65*7f296bb3SBarry Smith -pc_fieldsplit_schur_factorization_type to 66*7f296bb3SBarry Smith -pc_fieldsplit_schur_fact_type. 67*7f296bb3SBarry Smith- Added native algebraic multigrid method -pc_type gamg. Aggregation 68*7f296bb3SBarry Smith method is recommended: -pc_gamg_type agg and for elliptic 69*7f296bb3SBarry Smith operators smoothing is recommended: -pc_gamg_agg_nsmooths 1. 70*7f296bb3SBarry Smith- PCSetCoordinates(PC,PetscInt,PetscInt,PetscReal\*) added second 71*7f296bb3SBarry Smith integer argument for number of local vertices. 72*7f296bb3SBarry Smith- Added PCISSetSubdomainScalingFactor(PC,PetscScalar). 73*7f296bb3SBarry Smith- ```{rubric} PCGASM: 74*7f296bb3SBarry Smith ``` 75*7f296bb3SBarry Smith - Remove PCGASMSetLocalSubdomains(), use PCGASMSetSubdomains(); 76*7f296bb3SBarry Smith **note:** the first argument is now the list of "inner" 77*7f296bb3SBarry Smith subdomains (without overlap), unlike before and for PCASM 78*7f296bb3SBarry Smith - PCGASMSetTotalSubdomains(PC,PetscInt,PetscBool); added third 79*7f296bb3SBarry Smith argument to indicate whether local subdomains should be 80*7f296bb3SBarry Smith constructed. 81*7f296bb3SBarry Smith - Removed PCGASMCreateSubdomains(), use 82*7f296bb3SBarry Smith PCGASMCreateLocalSubdomains(Mat,PetscInt,PetscInt,IS\*[],IS\*[]); 83*7f296bb3SBarry Smith second PetscInt argument is requested overlap 84*7f296bb3SBarry Smith - PCGASMCreateSubdomains2D(PC,PetscInt,PetscInt,PetscInt,PetscInt,PetscInt,PetscInt,PetscInt\*,IS[]\*,IS[]\*): 85*7f296bb3SBarry Smith the 9-th and 10-th argument have been swapped: the 9-th outputs 86*7f296bb3SBarry Smith the inner subdomains, the 10-th outputs the outer subdomains. 87*7f296bb3SBarry Smith- PCMG multigrid defaults changed to use a Chebyshev smoother with 88*7f296bb3SBarry Smith block Jacobi Gauss-Seidel relaxation. This is a linear 89*7f296bb3SBarry Smith preconditioner so it can be used with normal Krylov methods rather 90*7f296bb3SBarry Smith than only flexible methods, as well as having fewer 91*7f296bb3SBarry Smith synchronization pointst. Use 92*7f296bb3SBarry Smith `-mg_levels_ksp_type gmres -mg_levels_ksp_max_it 1 -mg_levels_pc_type bjacobi` 93*7f296bb3SBarry Smith for the original behavior. 94*7f296bb3SBarry Smith 95*7f296bb3SBarry Smith```{rubric} KSP: 96*7f296bb3SBarry Smith``` 97*7f296bb3SBarry Smith 98*7f296bb3SBarry Smith- KSPSetOperators() will automatically set the null space present on 99*7f296bb3SBarry Smith the input matrix 100*7f296bb3SBarry Smith- Renamed KSPCHEBYCHEV to KSPCHEBYSHEV 101*7f296bb3SBarry Smith- Added Hybrid CHEBYCHEV (-ksp_chebyshev_hybrid) 102*7f296bb3SBarry Smith- Added pipelined GMRES (KSPPGMRES) which performs one non-blocking 103*7f296bb3SBarry Smith reduction per iteration instead of two blocking reductions. 104*7f296bb3SBarry Smith- Added flexible BiCGStab (KSPFBCGS) which tolerates a nonlinear 105*7f296bb3SBarry Smith preconditioner (like KSPFGMRES). 106*7f296bb3SBarry Smith- Added improved flexible BiCGStab (KSPIFBCGS) which tolerates a 107*7f296bb3SBarry Smith nonlinear preconditioner and performs one reduction every other 108*7f296bb3SBarry Smith iteration (like KSPIBCGS). 109*7f296bb3SBarry Smith 110*7f296bb3SBarry Smith```{rubric} SNES: 111*7f296bb3SBarry Smith``` 112*7f296bb3SBarry Smith 113*7f296bb3SBarry Smith- Added SNESGetSNESLineSearch 114*7f296bb3SBarry Smith- Changed default max_its and max_funcs for non-newton SNES solvers 115*7f296bb3SBarry Smith to 10000 and 30000 respectively 116*7f296bb3SBarry Smith- Changed options and command-line arguments for SNESFAS to be in 117*7f296bb3SBarry Smith line with PCMG 118*7f296bb3SBarry Smith- Added quasi-Newton (SNESQN), Nonlinear GMRES (SNESNGMRES), 119*7f296bb3SBarry Smith nonlinear conjugate gradients (SNESNCG), and multi-stage methods 120*7f296bb3SBarry Smith (SNESMS, used as a smoother for nonlinear multigrid). 121*7f296bb3SBarry Smith- Support for Full Approximation Scheme nonlinear multigrid 122*7f296bb3SBarry Smith (SNESFAS) moved from DMMG to SNES and made composable with the 123*7f296bb3SBarry Smith methods above. 124*7f296bb3SBarry Smith- SNES line search type should be set by name with 125*7f296bb3SBarry Smith SNESLineSearchSetType rather than with SNESLineSearchSet, see 126*7f296bb3SBarry Smith below. 127*7f296bb3SBarry Smith 128*7f296bb3SBarry Smith```{rubric} SNESLineSearch: 129*7f296bb3SBarry Smith``` 130*7f296bb3SBarry Smith 131*7f296bb3SBarry Smith- SNESLineSearch object added 132*7f296bb3SBarry Smith- The default SNESLineSearch of a SNES may be gotten with 133*7f296bb3SBarry Smith SNESGetSNESLineSearch(SNES snes, SNESLineSearch \*linesearch) 134*7f296bb3SBarry Smith- The linesearch type may be set with SNESLineSearchSetType() or 135*7f296bb3SBarry Smith -snes_linesearch_type 136*7f296bb3SBarry Smith- The line search (and pre and post checks) is applied using 137*7f296bb3SBarry Smith SNESLineSearchApply() 138*7f296bb3SBarry Smith- Pre/Post-check methods may be set with 139*7f296bb3SBarry Smith SNESLineSearchSetPre/PostCheck() 140*7f296bb3SBarry Smith- The previous steplength may be accessed through 141*7f296bb3SBarry Smith SNESLineSearchSetLambda() 142*7f296bb3SBarry Smith- The damping parameter may be set through 143*7f296bb3SBarry Smith SNESLineSearchSetDamping() or -snes_linesearch_damping 144*7f296bb3SBarry Smith- Success of the line search is determined using 145*7f296bb3SBarry Smith SNESLineSearchGetSuccess() 146*7f296bb3SBarry Smith- Custom linesearches may be built through 147*7f296bb3SBarry Smith SNESLINESEARCHSHELL,("shell") or by registering a new linesearch 148*7f296bb3SBarry Smith type with SNESLineSearchRegisterDynamic() 149*7f296bb3SBarry Smith- SNESLINESEARCHBT,("bt") replaces SNES_LS_CUBIC and 150*7f296bb3SBarry Smith SNES_LS_QUADRATIC, and order may be set with 151*7f296bb3SBarry Smith SNESLineSearchSetOrder() or -snes_linesearch_order 152*7f296bb3SBarry Smith- SNESLINESEARCHBASIC,("basic") replaces SNES_LS_BASIC and 153*7f296bb3SBarry Smith SNES_LS_BASICNONORMS. Norms may be turned off with 154*7f296bb3SBarry Smith SNESLineSearchSetComputeNorms() or -snes_linesearch_norms 0 155*7f296bb3SBarry Smith- SNESLineSearchSetTolerances() replaces SNESLSSetParams(), with the 156*7f296bb3SBarry Smith former alpha parameter set with SNESLineSearchBTSetAlpha() or 157*7f296bb3SBarry Smith -snes_linesearch_alpha 158*7f296bb3SBarry Smith- Added Line Search type SNESLINESEARCHL2,("l2") as the default for 159*7f296bb3SBarry Smith NRICHARDSON 160*7f296bb3SBarry Smith- SNESLINESEARCHCP,("cp") added as the default line search method 161*7f296bb3SBarry Smith for SNESNCG and SNESQN 162*7f296bb3SBarry Smith 163*7f296bb3SBarry Smith```{rubric} TS: 164*7f296bb3SBarry Smith``` 165*7f296bb3SBarry Smith 166*7f296bb3SBarry Smith- -ts_max_time changed to -ts_final_time 167*7f296bb3SBarry Smith- TSDefaultComputeJacobian() and TSDefaultComputeJacobianColor() 168*7f296bb3SBarry Smith have been removed. Configure TS to use coloring with 169*7f296bb3SBarry Smith SNESSetJacobian(). 170*7f296bb3SBarry Smith- Added TSROSW for Rosenbrock-W methods. 171*7f296bb3SBarry Smith- Added a common, extensible system for adaptive controllers, see 172*7f296bb3SBarry Smith TSGetAdapt(). 173*7f296bb3SBarry Smith 174*7f296bb3SBarry Smith```{rubric} DM/DA: 175*7f296bb3SBarry Smith``` 176*7f296bb3SBarry Smith 177*7f296bb3SBarry Smith- Added DMCreateDecomposition(DM,PetscInt,char\*[]\*,IS[]\*,DM[]\*) for 178*7f296bb3SBarry Smith use with PCFIELDSPLIT,PCASM,PCGASM 179*7f296bb3SBarry Smith- Added DMCreateDecompositionDM(DM,const char\*,DM\*) to create a 180*7f296bb3SBarry Smith version of the DM encapsulating a named decomposition; use with 181*7f296bb3SBarry Smith DMCreateDecomposition() 182*7f296bb3SBarry Smith- Added DMRedundant for managing globally coupled degrees of 183*7f296bb3SBarry Smith freedom. 184*7f296bb3SBarry Smith- Removed DMCompositeAddArray(), use DMRedundantCreate() and 185*7f296bb3SBarry Smith DMCompositeAddDM(). 186*7f296bb3SBarry Smith- Renamed DMGetMatrix(), DMGetInterpolation(), DMGetInjection(), and 187*7f296bb3SBarry Smith DMGetColoring() to DMCreateMatrix(), etc for semantic consistency. 188*7f296bb3SBarry Smith- The communicator argument to DMRefine() and DMCoarsen() can be 189*7f296bb3SBarry Smith MPI_COMM_NULL, but not PETSC_NULL, because the latter may not be 190*7f296bb3SBarry Smith the correct type. 191*7f296bb3SBarry Smith- Added DMCoarsenHookAdd() and DMRefineHookAdd() for shepherding 192*7f296bb3SBarry Smith persistent resolution-dependent data between levels. 193*7f296bb3SBarry Smith- Added DMGetNamedGlobalVector() for storing persistent 194*7f296bb3SBarry Smith resolution-dependent data. 195*7f296bb3SBarry Smith- DMDASNESSetFunctionLocal() and DMDASNESSetJacobianLocal() can be 196*7f296bb3SBarry Smith used for convenient local evaluation; these routines will 197*7f296bb3SBarry Smith eventually replace DMDASetLocalFunction() and 198*7f296bb3SBarry Smith DMDASetLocalJacobian(). 199*7f296bb3SBarry Smith 200*7f296bb3SBarry Smith```{rubric} DMMG: 201*7f296bb3SBarry Smith``` 202*7f296bb3SBarry Smith 203*7f296bb3SBarry Smith- DMMG is now completely removed from PETSc. Equivalent (and better) 204*7f296bb3SBarry Smith functionality can now be obtained by calling SNESSetDM() or 205*7f296bb3SBarry Smith KSPSetDM(). Make sure to avoid resolution-dependent data in the 206*7f296bb3SBarry Smith user context. Use SNESGetDM() or KSPGetDM() in the function 207*7f296bb3SBarry Smith evaluation context to obtain the grid. DMGetNamedGlobalVector(), 208*7f296bb3SBarry Smith DMCoarsenHookAdd(), and DMRefineHookAdd() can be used to manage 209*7f296bb3SBarry Smith persistent resolution-dependent data. 210*7f296bb3SBarry Smith 211*7f296bb3SBarry Smith```{rubric} PetscViewer: 212*7f296bb3SBarry Smith``` 213*7f296bb3SBarry Smith 214*7f296bb3SBarry Smith- A VTK binary viewer was added, see PETSCVIEWERVTK. 215*7f296bb3SBarry Smith 216*7f296bb3SBarry Smith```{rubric} SYS: 217*7f296bb3SBarry Smith``` 218*7f296bb3SBarry Smith 219*7f296bb3SBarry Smith- PetscBagLoad() now requires you previously created and registered 220*7f296bb3SBarry Smith all the records in the PETSc bag, allows loading on systems with 221*7f296bb3SBarry Smith different struct layout/endianness. 222*7f296bb3SBarry Smith- PetscSF added as a type-generic graph communication mechanism. The 223*7f296bb3SBarry Smith current implementation requires MPI-2 one-sided and the interface 224*7f296bb3SBarry Smith is currently optional. 225*7f296bb3SBarry Smith 226*7f296bb3SBarry Smith```{rubric} Fortran: 227*7f296bb3SBarry Smith``` 228*7f296bb3SBarry Smith 229*7f296bb3SBarry Smith- PETSC_NULL_TRUTH is now PETSC_NULL_BOOL 230*7f296bb3SBarry Smith- PetscOptionsGetEnum() now available from Fortran 231*7f296bb3SBarry Smith 232*7f296bb3SBarry Smith```{rubric} ExternalPackages: 233*7f296bb3SBarry Smith``` 234*7f296bb3SBarry Smith 235*7f296bb3SBarry Smith- The Hypre interface was updated to 2.8.0b and now supports 64-bit 236*7f296bb3SBarry Smith integers. 237*7f296bb3SBarry Smith- SuperLU_DIST interface updated to 3.1. 238*7f296bb3SBarry Smith- SuperLU interface updated to 4.3. 239*7f296bb3SBarry Smith- Sundials interface updated to 2.5.0. 240*7f296bb3SBarry Smith- FFTW interface updated to 3.3.2. 241*7f296bb3SBarry Smith- ParMetis updated to 4.0.2 and split from Metis 5.0.2 which is now 242*7f296bb3SBarry Smith separate. 243*7f296bb3SBarry Smith 244*7f296bb3SBarry Smith```{rubric} Build: 245*7f296bb3SBarry Smith``` 246*7f296bb3SBarry Smith 247*7f296bb3SBarry Smith- If Python 2.7 is available, the config/builder2.py is now 248*7f296bb3SBarry Smith available for a complete build, including dependency tracking. 249*7f296bb3SBarry Smith 250*7f296bb3SBarry Smith```{rubric} Examples: 251*7f296bb3SBarry Smith``` 252*7f296bb3SBarry Smith 253*7f296bb3SBarry Smith- SNES ex62 illustrates the use of DMComplex to solve the Stokes 254*7f296bb3SBarry Smith equation on an unstructured mesh. The Python tests show how to use 255*7f296bb3SBarry Smith block preconditioning strategies from the command line. 256*7f296bb3SBarry Smith- SNES ex52 illustrates the use of CUDA for FEM integration 257