1*7f296bb3SBarry Smith# Changes: 2.0.22 2*7f296bb3SBarry Smith 3*7f296bb3SBarry Smith```{rubric} General: 4*7f296bb3SBarry Smith``` 5*7f296bb3SBarry Smith 6*7f296bb3SBarry Smith- The Fortran90-specific routines such as `VecGetArrayF90()` now 7*7f296bb3SBarry Smith work with the IBM Fortran compiler, the SGI Fortran 90 compiler, 8*7f296bb3SBarry Smith and the Cray T3E Fortran compiler. 9*7f296bb3SBarry Smith 10*7f296bb3SBarry Smith- The third argument for the Fortran versions of the routines 11*7f296bb3SBarry Smith `VecGetArray()/VecRestoreArray(),` 12*7f296bb3SBarry Smith `ISGetIndices()/ISRestoreIndices(), MatGetArray()/MatRestoreArray()` 13*7f296bb3SBarry Smith and `DAGetGlobalIndices()` has been changed from `integer` to 14*7f296bb3SBarry Smith `PetscOffset`. See src/snes/examples/tutorials/ex5f.F for 15*7f296bb3SBarry Smith example usage. 16*7f296bb3SBarry Smith 17*7f296bb3SBarry Smith- Changed the location of the manual pages from docs/www/www.html 18*7f296bb3SBarry Smith and docs/www to `docs/manualpages/manualpages.html` and 19*7f296bb3SBarry Smith `docs/manualpages`. 20*7f296bb3SBarry Smith 21*7f296bb3SBarry Smith- The location of the mpiuni include files (used in the base.site 22*7f296bb3SBarry Smith file when not compiling with an MPI) has moved from `src/mpiuni` 23*7f296bb3SBarry Smith to `src/sys/src/mpiuni` 24*7f296bb3SBarry Smith 25*7f296bb3SBarry Smith- Added the option `-log_summary_exclude <vec,mat,sles,snes>` to 26*7f296bb3SBarry Smith limit the information printed in the summary table 27*7f296bb3SBarry Smith 28*7f296bb3SBarry Smith- Added the option `-log_info_exclude <vec,mat,sles,snes>` 29*7f296bb3SBarry Smith 30*7f296bb3SBarry Smith- Changed the calling sequences of 31*7f296bb3SBarry Smith `PetscGetTime(), PetscGetCPUTime(), PetscGetFlops()` 32*7f296bb3SBarry Smith to return error codes like all other PETSc functions. 33*7f296bb3SBarry Smith 34*7f296bb3SBarry Smith- Changed the internal structure of the PETSc objects. This will not 35*7f296bb3SBarry Smith effect most users but makes PETSc more extensible for the future. 36*7f296bb3SBarry Smith 37*7f296bb3SBarry Smith- Removed the PETSc object child support and replaced it with 38*7f296bb3SBarry Smith 39*7f296bb3SBarry Smith - `PetscObjectCompose(PetscObject,char *name,PetscObject);` 40*7f296bb3SBarry Smith - `PetscObjectQuery(PetscObject,char *name,PetscObject *);` 41*7f296bb3SBarry Smith - `PetscObjectComposeFunction(PetscObject,char *name, void *);` 42*7f296bb3SBarry Smith - `PetscObjectQueryFunction(PetscObject,char *name,void **);` 43*7f296bb3SBarry Smith 44*7f296bb3SBarry Smith These allow the user to attach objects and functions to any PETSc 45*7f296bb3SBarry Smith object. 46*7f296bb3SBarry Smith 47*7f296bb3SBarry Smith- Added a feeble example that demonstrates how to manage 48*7f296bb3SBarry Smith partitioning a grid in parallel in 49*7f296bb3SBarry Smith `src/mat/examples/tutorials/ex2.c` 50*7f296bb3SBarry Smith 51*7f296bb3SBarry Smith- The build command 'make all' in \$\{PETSC_DIR} will build the PETSc 52*7f296bb3SBarry Smith libraries, including the fortran interface. 53*7f296bb3SBarry Smith 54*7f296bb3SBarry Smith```{rubric} AO (Application Orderings): 55*7f296bb3SBarry Smith``` 56*7f296bb3SBarry Smith 57*7f296bb3SBarry Smith```{rubric} TS (Timestepping Solvers): 58*7f296bb3SBarry Smith``` 59*7f296bb3SBarry Smith 60*7f296bb3SBarry Smith- The calling sequence of `TSSetType()` has changed; see the 61*7f296bb3SBarry Smith manual page. 62*7f296bb3SBarry Smith- `TSType` is now a string, rather than enum type 63*7f296bb3SBarry Smith 64*7f296bb3SBarry Smith```{rubric} SNES (Nonlinear Solvers): 65*7f296bb3SBarry Smith``` 66*7f296bb3SBarry Smith 67*7f296bb3SBarry Smith- The calling sequence of `SNESSetType()` has changed; see the 68*7f296bb3SBarry Smith manual page. 69*7f296bb3SBarry Smith- `SNESType` is now a string, rather than enum type 70*7f296bb3SBarry Smith 71*7f296bb3SBarry Smith```{rubric} SLES (Linear Solvers): 72*7f296bb3SBarry Smith``` 73*7f296bb3SBarry Smith 74*7f296bb3SBarry Smith- See PC and KSP 75*7f296bb3SBarry Smith 76*7f296bb3SBarry Smith```{rubric} KSP (Krylov Subspace Methods): 77*7f296bb3SBarry Smith``` 78*7f296bb3SBarry Smith 79*7f296bb3SBarry Smith- The calling sequence of `KSPSetType()` has changed; see the 80*7f296bb3SBarry Smith manual page. 81*7f296bb3SBarry Smith- `KSPType` is now a string, rather than enum type. 82*7f296bb3SBarry Smith 83*7f296bb3SBarry Smith```{rubric} PC (Preconditioners): 84*7f296bb3SBarry Smith``` 85*7f296bb3SBarry Smith 86*7f296bb3SBarry Smith- Added two new PC classes, `PCSLES` and `PCCOMPOSITE` that 87*7f296bb3SBarry Smith allow use of any `SLES` object as a preconditioner and enable 88*7f296bb3SBarry Smith combining several preconditioners. 89*7f296bb3SBarry Smith- The calling sequence of `PCSetType()` has changed; see the 90*7f296bb3SBarry Smith manual page. 91*7f296bb3SBarry Smith- `PCType` is now a string, rather than enum type. 92*7f296bb3SBarry Smith 93*7f296bb3SBarry Smith```{rubric} MAT (Matrices): 94*7f296bb3SBarry Smith``` 95*7f296bb3SBarry Smith 96*7f296bb3SBarry Smith- Added support for partitioning using the ParMETIS parallel 97*7f296bb3SBarry Smith partitioning package, see the manual page for 98*7f296bb3SBarry Smith `PartitioningCreate()` 99*7f296bb3SBarry Smith- Added `MatGetColumnVector()` 100*7f296bb3SBarry Smith- Added argument column size to `MatGetSubMatrix()` 101*7f296bb3SBarry Smith- Changed the memory allocation algorithm in 102*7f296bb3SBarry Smith `MatLUFactorSymbolic()` and `MatILUFactorSymbolic()` based on 103*7f296bb3SBarry Smith a suggestion by David Hysom of ODU. 104*7f296bb3SBarry Smith- The third argument for the Fortran version of the routines 105*7f296bb3SBarry Smith `MatGetArray()/MatRestoreArray()` has been changed from 106*7f296bb3SBarry Smith `integer` to `PetscOffset`. 107*7f296bb3SBarry Smith 108*7f296bb3SBarry Smith```{rubric} DA (Distributed Arrays): 109*7f296bb3SBarry Smith``` 110*7f296bb3SBarry Smith 111*7f296bb3SBarry Smith- Changed `DAGetDistributedVector()` and `DAGetLocalVector()` to 112*7f296bb3SBarry Smith `DACreateGlobalVector()` and `DACreateLocalVector()`. You 113*7f296bb3SBarry Smith should destroy these vectors with a usual call to 114*7f296bb3SBarry Smith `VecDestroy()`. 115*7f296bb3SBarry Smith- The third argument for the Fortran version of the routine 116*7f296bb3SBarry Smith `DAGetGlobalIndices()` has been changed from `integer` to 117*7f296bb3SBarry Smith `PetscOffset`. 118*7f296bb3SBarry Smith 119*7f296bb3SBarry Smith```{rubric} VEC (Vectors): 120*7f296bb3SBarry Smith``` 121*7f296bb3SBarry Smith 122*7f296bb3SBarry Smith- Added 123*7f296bb3SBarry Smith `VecSetBlockSize(), VecSetValuesBlocked(), VecSetValuesBlockedLocal(), VecSetLocalToGlobalMappingBlocked()` 124*7f296bb3SBarry Smith- Added`VecCreatedShared(),` which creates a parallel vector in 125*7f296bb3SBarry Smith shared memory on the SGI machines 126*7f296bb3SBarry Smith- Changed `VEC_IGNORE_OFF_PROCESSOR_ENTRIES` to 127*7f296bb3SBarry Smith `VEC_IGNORE_OFF_PROC_ENTRIES` 128*7f296bb3SBarry Smith- The third argument for the Fortran versions of the routines 129*7f296bb3SBarry Smith `VecGetArray()/VecRestoreArray(),` has been changed from 130*7f296bb3SBarry Smith `integer` to `PetscOffset`. See 131*7f296bb3SBarry Smith src/snes/examples/tutorials/ex5f.F for example usage. 132*7f296bb3SBarry Smith- `VecGetArray(), VecRestoreArray()` now work from Fortran on all 133*7f296bb3SBarry Smith machines, finally after 3 long years! 134*7f296bb3SBarry Smith- Changed the calling sequence of `VecCreate()`, now takes both 135*7f296bb3SBarry Smith local and global size, see the manual page. 136*7f296bb3SBarry Smith 137*7f296bb3SBarry Smith```{rubric} IS (Index Sets): 138*7f296bb3SBarry Smith``` 139*7f296bb3SBarry Smith 140*7f296bb3SBarry Smith- The third argument for the Fortran versions of the routines 141*7f296bb3SBarry Smith `ISGetIndices()/ISRestoreIndices()` has been changed from 142*7f296bb3SBarry Smith `integer` to `PetscOffset`. 143*7f296bb3SBarry Smith 144*7f296bb3SBarry Smith```{rubric} Draw (Graphics): 145*7f296bb3SBarry Smith``` 146*7f296bb3SBarry Smith 147*7f296bb3SBarry Smith```{rubric} Viewers: 148*7f296bb3SBarry Smith``` 149*7f296bb3SBarry Smith 150*7f296bb3SBarry Smith```{rubric} System: 151*7f296bb3SBarry Smith``` 152*7f296bb3SBarry Smith 153*7f296bb3SBarry Smith```{rubric} Error Handling: 154*7f296bb3SBarry Smith``` 155*7f296bb3SBarry Smith 156*7f296bb3SBarry Smith```{rubric} Event Logging: 157*7f296bb3SBarry Smith``` 158*7f296bb3SBarry Smith 159*7f296bb3SBarry Smith```{rubric} Fortran Interface: 160*7f296bb3SBarry Smith``` 161*7f296bb3SBarry Smith 162*7f296bb3SBarry Smith- `PETSC_NULL` has been replaced with `PETSC_NULL_INTEGER`, 163*7f296bb3SBarry Smith `PETSC_NULL_SCALAR`, `PETSC_NULL_DOUBLE` or 164*7f296bb3SBarry Smith `PETSC_NULL_CHARACTER` depending on the context for usage. If 165*7f296bb3SBarry Smith the function expects an integer, a scalar (double or complex 166*7f296bb3SBarry Smith depending if you compile with BOPT=\*\_complex), a double precision 167*7f296bb3SBarry Smith array, or a string. 168*7f296bb3SBarry Smith- The Fortran include files are now located in the directory 169*7f296bb3SBarry Smith "include/finclude/*.", rather than "include/FINCLUDE/*.h". The 170*7f296bb3SBarry Smith include files that used to be in "include/finclude/*.h" (not 171*7f296bb3SBarry Smith recommended) are now in "include/foldinclude/*.h" 172*7f296bb3SBarry Smith- If you have stored PETSc objects in Fortran integer arrays, such 173*7f296bb3SBarry Smith as `user(3) = vec` you have to declare those arrays to be of 174*7f296bb3SBarry Smith type `PetscFortranAddr` instead of as integer. Note that 175*7f296bb3SBarry Smith `PetscFortranAddr` is simply integer on 32 bit machines and 176*7f296bb3SBarry Smith integer\*8 on 64-bit machines. 177*7f296bb3SBarry Smith- The Fortran90-specific routines such as `VecGetArrayF90()` now 178*7f296bb3SBarry Smith work with the IBM Fortran compiler, the SGI Fortran 90 compiler, 179*7f296bb3SBarry Smith and the Cray T3E Fortran compiler. 180*7f296bb3SBarry Smith- PETSc objects can now be passed between C and Fortran directly. 181*7f296bb3SBarry Smith You do not have to use the commands 182*7f296bb3SBarry Smith `PetscCObjectToFortranObject()` and 183*7f296bb3SBarry Smith `PetscFortranObjectToCObject()` to translate the objects between 184*7f296bb3SBarry Smith languages. 185*7f296bb3SBarry Smith- Changed Fortran object argument from type int to type 186*7f296bb3SBarry Smith PetscFortranAddr in the routines `PetscCObjectToFortranObject()` 187*7f296bb3SBarry Smith and `PetscFortranObjectToCObject().` 188*7f296bb3SBarry Smith- Added the routine `PetscInitializeFortran()` to assist in 189*7f296bb3SBarry Smith mixed-language use of PETSc. See the manual page for details. 190