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