1*7f296bb3SBarry Smith# Changes: 3.8 2*7f296bb3SBarry Smith 3*7f296bb3SBarry Smith```{rubric} General: 4*7f296bb3SBarry Smith``` 5*7f296bb3SBarry Smith 6*7f296bb3SBarry Smith- `--download-metis` is changed to not builds metis with flag 7*7f296bb3SBarry Smith `-DMETIS_USE_DOUBLEPRECISION=1` to have consistent behavior 8*7f296bb3SBarry Smith between single/double/quad precision builds (and with external 9*7f296bb3SBarry Smith build of metis). This affects parmetis as well 10*7f296bb3SBarry Smith 11*7f296bb3SBarry Smith```{rubric} Configure/Build: 12*7f296bb3SBarry Smith``` 13*7f296bb3SBarry Smith 14*7f296bb3SBarry Smith- removed with-mpiuni-fortran-binding option 15*7f296bb3SBarry Smith- removed with-fortran-interfaces option 16*7f296bb3SBarry Smith- removed with-fortran-datatypes option 17*7f296bb3SBarry Smith- Added --download-openblas --download-openblas-64-bit-blas-indices 18*7f296bb3SBarry Smith 19*7f296bb3SBarry Smith```{rubric} IS: 20*7f296bb3SBarry Smith``` 21*7f296bb3SBarry Smith 22*7f296bb3SBarry Smith- Changed IS_COLORING_GHOSTED to IS_COLORING_LOCAL to match 23*7f296bb3SBarry Smith convention. 24*7f296bb3SBarry Smith- Added ISRenumber to renumber an IS into a contiguous set. 25*7f296bb3SBarry Smith- ISGlobalToLocalMappingType is now ISGlobalToLocalMappingMode. 26*7f296bb3SBarry Smith- Added ISGlobalToLocalMappingSetType() to change the algorithm used 27*7f296bb3SBarry Smith to apply the mapping. Choices are ISGLOBALTOLOCALMAPPINGBASIC 28*7f296bb3SBarry Smith (faster) or ISGLOBALTOLOCALMAPPINGHASH (for large problems, much 29*7f296bb3SBarry Smith more scalable in memory usage) 30*7f296bb3SBarry Smith 31*7f296bb3SBarry Smith```{rubric} PetscDraw: 32*7f296bb3SBarry Smith``` 33*7f296bb3SBarry Smith 34*7f296bb3SBarry Smith```{rubric} PetscRandom: 35*7f296bb3SBarry Smith``` 36*7f296bb3SBarry Smith 37*7f296bb3SBarry Smith- Added PETSCRANDOM123, a wrapper to the counter-based random number 38*7f296bb3SBarry Smith generator 39*7f296bb3SBarry Smith [Random123](http://www.deshawresearch.com/resources_random123.html). 40*7f296bb3SBarry Smith 41*7f296bb3SBarry Smith```{rubric} PF: 42*7f296bb3SBarry Smith``` 43*7f296bb3SBarry Smith 44*7f296bb3SBarry Smith```{rubric} Vec: 45*7f296bb3SBarry Smith``` 46*7f296bb3SBarry Smith 47*7f296bb3SBarry Smith```{rubric} VecScatter: 48*7f296bb3SBarry Smith``` 49*7f296bb3SBarry Smith 50*7f296bb3SBarry Smith```{rubric} PetscSection: 51*7f296bb3SBarry Smith``` 52*7f296bb3SBarry Smith 53*7f296bb3SBarry Smith```{rubric} Mat: 54*7f296bb3SBarry Smith``` 55*7f296bb3SBarry Smith 56*7f296bb3SBarry Smith- Added a new argument in MatCreateLRC() to express the low-rank 57*7f296bb3SBarry Smith correction as A+U\*C\*V'. 58*7f296bb3SBarry Smith- MatTranspose() now properly handles MAT_INITIAL_MATRIX, 59*7f296bb3SBarry Smith MAT_REUSE_MATRIX, MAT_INPLACE_MATRIX. 60*7f296bb3SBarry Smith- Renamed MatCreateSubMatrix() to MatCreateSubMatrixVirtual(). 61*7f296bb3SBarry Smith- Renamed MatSubMatrixUpdate() to MatSubMatrixUpdateVirtual(). 62*7f296bb3SBarry Smith- Renamed MatGetSubMatrices() to MatCreateSubMatrices(). 63*7f296bb3SBarry Smith- Added MatDestroySubMatrices(). 64*7f296bb3SBarry Smith- Renamed MatGetSubMatricesMPI() to MatCreateSubMatricesMPI(). 65*7f296bb3SBarry Smith- Renamed MatGetSubMatrix() to MatCreateSubMatrix(). 66*7f296bb3SBarry Smith- Renamed MatGetSubMatrixOption() to MatCreateSubMatrixOption(). 67*7f296bb3SBarry Smith- MatSetOption(mat,MAT_IGNORE_ZERO_ENTRIES,PETSC_TRUE) no longer 68*7f296bb3SBarry Smith applies to zero values set or added to the matrix diagonal, they 69*7f296bb3SBarry Smith are now not ignored and are included in the matrix nonzero 70*7f296bb3SBarry Smith structure. This is useful for Jacobians passed to TS. 71*7f296bb3SBarry Smith- Added MatFactorSchurStatus. 72*7f296bb3SBarry Smith MatFactorGet/Restore/CreateSchurComplement now take an extra 73*7f296bb3SBarry Smith status argument. 74*7f296bb3SBarry Smith- Added MatMatSolveTranspose to solve transposed linear systems for 75*7f296bb3SBarry Smith multiple right-hand sides. 76*7f296bb3SBarry Smith- Added MATAIJMKL and MATBAIJMKL to facilitate use of Intel MKL 77*7f296bb3SBarry Smith sparse BLAS routines with matrices stored in AIJ/BAIJ format. 78*7f296bb3SBarry Smith 79*7f296bb3SBarry Smith```{rubric} PC: 80*7f296bb3SBarry Smith``` 81*7f296bb3SBarry Smith 82*7f296bb3SBarry Smith- The is_local argument to PCASMSetLocalSubdomains() is now ignored 83*7f296bb3SBarry Smith UNLESS the PCASMType is set to restrict 84*7f296bb3SBarry Smith- Added PCMGSetNumberSmooth() 85*7f296bb3SBarry Smith- PCMGSetGalerkin() and -pc_mg_galerkin now take 86*7f296bb3SBarry Smith PC_MG_GALERKIN_BOTH,PC_MG_GALERKIN_PMAT,PC_MG_GALERKIN_MAT, 87*7f296bb3SBarry Smith PC_MG_GALERKIN_NONE as arguments instead of PetscBool 88*7f296bb3SBarry Smith- Added PCBDDCSetDivergenceMat to help BDDC to compute the flux 89*7f296bb3SBarry Smith across the subdomain interfaces. 90*7f296bb3SBarry Smith- Removed PCBDDCSetNullSpace. Local nullspace information should now 91*7f296bb3SBarry Smith be attached to the subdomain matrix via MatSetNullSpace. 92*7f296bb3SBarry Smith- Added additional PetscBool parameter to 93*7f296bb3SBarry Smith PCBDDCCreateFETIDPOperators for the specification of the type of 94*7f296bb3SBarry Smith multipliers. 95*7f296bb3SBarry Smith- Added additional string parameter to PCBDDCCreateFETIDPOperators 96*7f296bb3SBarry Smith for the specification of the prefix (can be NULL). 97*7f296bb3SBarry Smith- FIELDSPLIT now extracts off-diag fieldsplit blocks from the 98*7f296bb3SBarry Smith preconditioner instead of the jacobian by default. Use 99*7f296bb3SBarry Smith -pc_fieldsplit_off_diag_use_amat to use the jacobian matrix. 100*7f296bb3SBarry Smith- Added PCFieldSplitSetSchurScale to control the scaling factor of 101*7f296bb3SBarry Smith the Schur complement with the DIAG factorization. The 102*7f296bb3SBarry Smith corresponding command line option is -pc_fieldsplit_schur_scale. 103*7f296bb3SBarry Smith 104*7f296bb3SBarry Smith```{rubric} KSP: 105*7f296bb3SBarry Smith``` 106*7f296bb3SBarry Smith 107*7f296bb3SBarry Smith- Added KSPFETIDP, a linear system solver based on the FETI-DP 108*7f296bb3SBarry Smith method. 109*7f296bb3SBarry Smith- Added the KSPGuess class: available methods are KSPGUESSFISCHER 110*7f296bb3SBarry Smith and KSPGUESSPOD. The new KSPGUESSPOD computes an initial guess 111*7f296bb3SBarry Smith using the Proper Orthogonal Decomposition technique. 112*7f296bb3SBarry Smith- KSPFischerGuessCreate has been removed: see the man page of 113*7f296bb3SBarry Smith KSPGUESSFISCHER for how to create a Fischer type initial guess. 114*7f296bb3SBarry Smith- KSPCHEBYSHEV: replace KSPChebyshevEstEigSetUseRandom() with 115*7f296bb3SBarry Smith KSPChebyshevEstEigSetUseNoisy(), using a deterministic algorithm 116*7f296bb3SBarry Smith to generate noisy vectors. 117*7f296bb3SBarry Smith 118*7f296bb3SBarry Smith```{rubric} SNES: 119*7f296bb3SBarry Smith``` 120*7f296bb3SBarry Smith 121*7f296bb3SBarry Smith```{rubric} SNESLineSearch: 122*7f296bb3SBarry Smith``` 123*7f296bb3SBarry Smith 124*7f296bb3SBarry Smith```{rubric} TS: 125*7f296bb3SBarry Smith``` 126*7f296bb3SBarry Smith 127*7f296bb3SBarry Smith- Changed TSGL to TSGLLE. 128*7f296bb3SBarry Smith- -ts_monitor binary now saves the timestep information as a REAL 129*7f296bb3SBarry Smith entry consisting of the REAL_FILE_CLASSID followed by the real 130*7f296bb3SBarry Smith value. PetscBinaryRead.m and PetscBinaryIO.py can read these in 131*7f296bb3SBarry Smith automatically. 132*7f296bb3SBarry Smith- Added TSRK5BS scheme to TSRK. 133*7f296bb3SBarry Smith- Added TSADAPTDSP adaptive controller based on digital signal 134*7f296bb3SBarry Smith processing techniques. 135*7f296bb3SBarry Smith- Removed command line option `-ts_theta_adapt`, use 136*7f296bb3SBarry Smith `-ts_adapt_type basic` to turn on adaptivity in TSTHETA. 137*7f296bb3SBarry Smith- Remove command line option `-ts_alpha_adapt` and routines 138*7f296bb3SBarry Smith TSAlphaUseAdapt()/TSAlpha2UseAdapt(), use `-ts_adapt_type basic` 139*7f296bb3SBarry Smith to turn on adaptivity in TSALPHA/TSALPHA2. 140*7f296bb3SBarry Smith- Removed TSBDFUseAdapt(), using time step adaptivity in TSBDF is 141*7f296bb3SBarry Smith now the default, use `-ts_adapt_type none` to turn adaptivity 142*7f296bb3SBarry Smith off. 143*7f296bb3SBarry Smith- Added TSAdaptSetAlwaysAccept() to set whether to always accept 144*7f296bb3SBarry Smith steps. 145*7f296bb3SBarry Smith- Added TSAdapt{Set|Get}Safety() to set safety factors and renamed 146*7f296bb3SBarry Smith option `-ts_adapt_basic_[reject_]safety` to 147*7f296bb3SBarry Smith `-ts_adapt_[reject_]safety`. 148*7f296bb3SBarry Smith- Renamed TSAdaptBasic{Set|Get}Clip() and option 149*7f296bb3SBarry Smith `-ts_adapt_basic_clip` to TSAdapt{Set|Get}Clip() and 150*7f296bb3SBarry Smith `-ts_adapt_clip`. 151*7f296bb3SBarry Smith- Added TSAdaptGetStepLimits() to get minimum and maximum allowed 152*7f296bb3SBarry Smith time step. 153*7f296bb3SBarry Smith- Calling TSAdaptSetType() will reset all option values (safety 154*7f296bb3SBarry Smith factors, clipping factors, etc) to default values. 155*7f296bb3SBarry Smith- Added TS{Set|Get}MaxSteps() and TS{Set|Get}MaxTime(), deprecated 156*7f296bb3SBarry Smith TS{Set|Get}Duration(). 157*7f296bb3SBarry Smith- Added TSGetStepNumber(), deprecated TSGetTimeStepNumber() and 158*7f296bb3SBarry Smith TSGetTotalSteps(). 159*7f296bb3SBarry Smith- Deprecated TSSetInitialTimeStep(), use TSSetTime() and 160*7f296bb3SBarry Smith TSSetTimeStep(). 161*7f296bb3SBarry Smith 162*7f296bb3SBarry Smith```{rubric} DM/DA: 163*7f296bb3SBarry Smith``` 164*7f296bb3SBarry Smith 165*7f296bb3SBarry Smith- Changed prototypes for DMCompositeGather() and 166*7f296bb3SBarry Smith DMCompositeGatherArray() 167*7f296bb3SBarry Smith- Replace calls to DMDACreateXd() with DMDACreateXd(), 168*7f296bb3SBarry Smith [DMSetFromOptions()] DMSetUp() 169*7f296bb3SBarry Smith- DMDACreateXd() no longer can take negative values for dimensions, 170*7f296bb3SBarry Smith instead pass positive values and call DMSetFromOptions() 171*7f296bb3SBarry Smith immediately after 172*7f296bb3SBarry Smith- Added DMSwarm which supports data management and data movement of 173*7f296bb3SBarry Smith arbitrary fields defined on a point set. Such functionality is 174*7f296bb3SBarry Smith useful for partcle based methods. High level support for 175*7f296bb3SBarry Smith particle-in-cell methods is provided when using either a DMDA or 176*7f296bb3SBarry Smith DMPLEX mesh. 177*7f296bb3SBarry Smith 178*7f296bb3SBarry Smith```{rubric} DMPlex: 179*7f296bb3SBarry Smith``` 180*7f296bb3SBarry Smith 181*7f296bb3SBarry Smith- Added DMPlexRefineSimplexToTensor to refine simplicial into tensor 182*7f296bb3SBarry Smith product cell meshes. 183*7f296bb3SBarry Smith- Added PTScotch partitioner. 184*7f296bb3SBarry Smith 185*7f296bb3SBarry Smith```{rubric} PetscViewer: 186*7f296bb3SBarry Smith``` 187*7f296bb3SBarry Smith 188*7f296bb3SBarry Smith```{rubric} SYS: 189*7f296bb3SBarry Smith``` 190*7f296bb3SBarry Smith 191*7f296bb3SBarry Smith- -help now has the option -help intro that only prints the programs 192*7f296bb3SBarry Smith help string and then exits the program 193*7f296bb3SBarry Smith- Petsc64bitInt -> PetscInt64, PetscIntMult64bit() -> 194*7f296bb3SBarry Smith PetscInt64Mult(), PetscBagRegister64bitInt() -> 195*7f296bb3SBarry Smith PetscBagRegisterInt64() 196*7f296bb3SBarry Smith 197*7f296bb3SBarry Smith```{rubric} AO: 198*7f296bb3SBarry Smith``` 199*7f296bb3SBarry Smith 200*7f296bb3SBarry Smith```{rubric} Sieve: 201*7f296bb3SBarry Smith``` 202*7f296bb3SBarry Smith 203*7f296bb3SBarry Smith```{rubric} Fortran: 204*7f296bb3SBarry Smith``` 205*7f296bb3SBarry Smith 206*7f296bb3SBarry SmithPETSC_NULL_INTEGER, PETSC_NULL_REAL etc are now declared as arrays of 207*7f296bb3SBarry Smithsize one instead of as scalar values. 208*7f296bb3SBarry SmithNew shorter calling sequence for PetscError() from Fortran 209*7f296bb3SBarry SmithSETERRQ(), and CHKERRQ from Fortran now have the same behavior as in 210*7f296bb3SBarry SmithC and automatically return on errors, they do not abort. 211*7f296bb3SBarry SmithCorrespondingly SERERRA() and CHKERRA() should be used in 'program 212*7f296bb3SBarry Smithmain' - as return is not possible from it. These macros should be 213*7f296bb3SBarry Smithused from .F90 files because they require long lines 214*7f296bb3SBarry SmithSimplified Fortran usage. Now you only include 215*7f296bb3SBarry Smithpetsc/finclude/petscXXX and use petscXXX 216*7f296bb3SBarry Smith 217*7f296bb3SBarry Smith- For each Fortran function (and main) use the following 218*7f296bb3SBarry Smith 219*7f296bb3SBarry Smith ``` 220*7f296bb3SBarry Smith subroutine mysubroutine(.....) 221*7f296bb3SBarry Smith #include <petsc/finclude/petscxxx.h> 222*7f296bb3SBarry Smith use petscxxx 223*7f296bb3SBarry Smith implicit none 224*7f296bb3SBarry Smith ``` 225*7f296bb3SBarry Smith 226*7f296bb3SBarry Smith For example if you are using SNES in your code you would have 227*7f296bb3SBarry Smith 228*7f296bb3SBarry Smith ``` 229*7f296bb3SBarry Smith #include <petsc/finclude/petscsnes.h> 230*7f296bb3SBarry Smith use petscsnes 231*7f296bb3SBarry Smith implicit none 232*7f296bb3SBarry Smith ``` 233*7f296bb3SBarry Smith 234*7f296bb3SBarry Smith- Instead of PETSC_NULL_OBJECT you must pass PETSC_NULL_XXX (for 235*7f296bb3SBarry Smith example PETSC_NULL_VEC) using the specific object type XXX that 236*7f296bb3SBarry Smith the function call is expecting. 237*7f296bb3SBarry Smith 238*7f296bb3SBarry Smith- Objects can be declared either as XXX a or type(tXXX) a, for 239*7f296bb3SBarry Smith example Mat a or type(tMat) a. (Note that previously for those who 240*7f296bb3SBarry Smith used types it was type(Mat) but that can no longer be used. 241*7f296bb3SBarry Smith 242*7f296bb3SBarry SmithNotes: 243*7f296bb3SBarry Smith 244*7f296bb3SBarry Smith- There are no longer any .h90 files that may or need to be included 245*7f296bb3SBarry Smith 246*7f296bb3SBarry Smith- Like C the include files are now nested so you no longer need to 247*7f296bb3SBarry Smith include for example 248*7f296bb3SBarry Smith 249*7f296bb3SBarry Smith ``` 250*7f296bb3SBarry Smith #include <petsc/finclude/petscsys.h> 251*7f296bb3SBarry Smith #include <petsc/finclude/petscvec.h> 252*7f296bb3SBarry Smith #include <petsc/finclude/petscmat.h> 253*7f296bb3SBarry Smith #include <petsc/finclude/petscpc.h> 254*7f296bb3SBarry Smith #include <petsc/finclude/petscksp.h> 255*7f296bb3SBarry Smith ``` 256*7f296bb3SBarry Smith 257*7f296bb3SBarry Smith you can just include 258*7f296bb3SBarry Smith 259*7f296bb3SBarry Smith ``` 260*7f296bb3SBarry Smith #include <petsc/finclude/petscksp.h> 261*7f296bb3SBarry Smith ``` 262*7f296bb3SBarry Smith 263*7f296bb3SBarry Smith- there is now type checking of most function calls. This will help 264*7f296bb3SBarry Smith eliminate bugs due to incorrect calling sequences. Note that 265*7f296bb3SBarry Smith Fortran distinguishes between a argument that is a scalar (zero 266*7f296bb3SBarry Smith dimensional array), a one dimensional array and a two dimensional 267*7f296bb3SBarry Smith array (etc). So you may get compile warnings because you are 268*7f296bb3SBarry Smith passing in an array when PETSc expects a scalar or vis-versa. If 269*7f296bb3SBarry Smith you get these simply fix your declaration of the variable to match 270*7f296bb3SBarry Smith what is expected. In some routines like MatSetValues() and friends 271*7f296bb3SBarry Smith you can pass either scalars, one dimensional arrays or two 272*7f296bb3SBarry Smith dimensional arrays, if you get errors here please send mail to 273*7f296bb3SBarry Smith <mailto:petsc-maint@mcs.anl.gov> and include enough of your code so we can 274*7f296bb3SBarry Smith see the dimensions of all your variables so we can fix the 275*7f296bb3SBarry Smith problems. 276*7f296bb3SBarry Smith 277*7f296bb3SBarry Smith- You can continue to use either fixed (.F extension) or free format 278*7f296bb3SBarry Smith (.F90 extension) for your source 279*7f296bb3SBarry Smith 280*7f296bb3SBarry Smith- All the examples in PETSc have been updated so consult them for 281*7f296bb3SBarry Smith clarifications. 282