Changes: 2.0.22¶
General:
- The Fortran90-specific routines such as - VecGetArrayF90()now work with the IBM Fortran compiler, the SGI Fortran 90 compiler, and the Cray T3E Fortran compiler.
- The third argument for the Fortran versions of the routines - VecGetArray()/VecRestoreArray(),- ISGetIndices()/ISRestoreIndices(), MatGetArray()/MatRestoreArray()and- DAGetGlobalIndices()has been changed from- integerto- PetscOffset. See src/snes/examples/tutorials/ex5f.F for example usage.
- Changed the location of the manual pages from docs/www/www.html and docs/www to - docs/manualpages/manualpages.htmland- docs/manualpages.
- The location of the mpiuni include files (used in the base.site file when not compiling with an MPI) has moved from - src/mpiunito- src/sys/src/mpiuni
- Added the option - -log_summary_exclude <vec,mat,sles,snes>to limit the information printed in the summary table
- Added the option - -log_info_exclude <vec,mat,sles,snes>
- Changed the calling sequences of - PetscGetTime(), PetscGetCPUTime(), PetscGetFlops()to return error codes like all other PETSc functions.
- Changed the internal structure of the PETSc objects. This will not effect most users but makes PETSc more extensible for the future. 
- Removed the PETSc object child support and replaced it with - PetscObjectCompose(PetscObject,char *name,PetscObject);
- PetscObjectQuery(PetscObject,char *name,PetscObject *);
- PetscObjectComposeFunction(PetscObject,char *name, void *);
- PetscObjectQueryFunction(PetscObject,char *name,void **);
 - These allow the user to attach objects and functions to any PETSc object. 
- Added a feeble example that demonstrates how to manage partitioning a grid in parallel in - src/mat/examples/tutorials/ex2.c
- The build command ‘make all’ in ${PETSC_DIR} will build the PETSc libraries, including the fortran interface. 
AO (Application Orderings):
TS (Timestepping Solvers):
- The calling sequence of - TSSetType()has changed; see the manual page.
- TSTypeis now a string, rather than enum type
SNES (Nonlinear Solvers):
- The calling sequence of - SNESSetType()has changed; see the manual page.
- SNESTypeis now a string, rather than enum type
SLES (Linear Solvers):
- See PC and KSP 
KSP (Krylov Subspace Methods):
- The calling sequence of - KSPSetType()has changed; see the manual page.
- KSPTypeis now a string, rather than enum type.
PC (Preconditioners):
- Added two new PC classes, - PCSLESand- PCCOMPOSITEthat allow use of any- SLESobject as a preconditioner and enable combining several preconditioners.
- The calling sequence of - PCSetType()has changed; see the manual page.
- PCTypeis now a string, rather than enum type.
MAT (Matrices):
- Added support for partitioning using the ParMETIS parallel partitioning package, see the manual page for - PartitioningCreate()
- Added - MatGetColumnVector()
- Added argument column size to - MatGetSubMatrix()
- Changed the memory allocation algorithm in - MatLUFactorSymbolic()and- MatILUFactorSymbolic()based on a suggestion by David Hysom of ODU.
- The third argument for the Fortran version of the routines - MatGetArray()/MatRestoreArray()has been changed from- integerto- PetscOffset.
DA (Distributed Arrays):
- Changed - DAGetDistributedVector()and- DAGetLocalVector()to- DACreateGlobalVector()and- DACreateLocalVector(). You should destroy these vectors with a usual call to- VecDestroy().
- The third argument for the Fortran version of the routine - DAGetGlobalIndices()has been changed from- integerto- PetscOffset.
VEC (Vectors):
- Added - VecSetBlockSize(), VecSetValuesBlocked(), VecSetValuesBlockedLocal(), VecSetLocalToGlobalMappingBlocked()
- Added - VecCreatedShared(),which creates a parallel vector in shared memory on the SGI machines
- Changed - VEC_IGNORE_OFF_PROCESSOR_ENTRIESto- VEC_IGNORE_OFF_PROC_ENTRIES
- The third argument for the Fortran versions of the routines - VecGetArray()/VecRestoreArray(),has been changed from- integerto- PetscOffset. See src/snes/examples/tutorials/ex5f.F for example usage.
- VecGetArray(), VecRestoreArray()now work from Fortran on all machines, finally after 3 long years!
- Changed the calling sequence of - VecCreate(), now takes both local and global size, see the manual page.
IS (Index Sets):
- The third argument for the Fortran versions of the routines - ISGetIndices()/ISRestoreIndices()has been changed from- integerto- PetscOffset.
Draw (Graphics):
Viewers:
System:
Error Handling:
Event Logging:
Fortran Interface:
- PETSC_NULLhas been replaced with- PETSC_NULL_INTEGER,- PETSC_NULL_SCALAR,- PETSC_NULL_DOUBLEor- PETSC_NULL_CHARACTERdepending on the context for usage. If the function expects an integer, a scalar (double or complex depending if you compile with BOPT=*_complex), a double precision array, or a string.
- The Fortran include files are now located in the directory “include/finclude/.”, rather than “include/FINCLUDE/.h”. The include files that used to be in “include/finclude/.h” (not recommended) are now in “include/foldinclude/.h” 
- If you have stored PETSc objects in Fortran integer arrays, such as - user(3) = vecyou have to declare those arrays to be of type- PetscFortranAddrinstead of as integer. Note that- PetscFortranAddris simply integer on 32 bit machines and integer*8 on 64 bit machines.
- The Fortran90-specific routines such as - VecGetArrayF90()now work with the IBM Fortran compiler, the SGI Fortran 90 compiler, and the Cray T3E Fortran compiler.
- PETSc objects can now be passed between C and Fortran directly. You do not have to use the commands - PetscCObjectToFortranObject()and- PetscFortranObjectToCObject()to translate the objects between languages.
- Changed Fortran object argument from type int to type PetscFortranAddr in the routines - PetscCObjectToFortranObject()and- PetscFortranObjectToCObject().
- Added the routine - PetscInitializeFortran()to assist in mixed-language use of PETSc. See the manual page for details.