# 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 integer to 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.html and 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/mpiuni to 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.

• TSType is now a string, rather than enum type

SNES (Nonlinear Solvers):

• The calling sequence of SNESSetType() has changed; see the manual page.

• SNESType is 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.

• KSPType is now a string, rather than enum type.

PC (Preconditioners):

• Added two new PC classes, PCSLES and PCCOMPOSITE that allow use of any SLES object as a preconditioner and enable combining several preconditioners.

• The calling sequence of PCSetType() has changed; see the manual page.

• PCType is 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 integer to 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 integer to PetscOffset.

VEC (Vectors):

• Added VecSetBlockSize(), VecSetValuesBlocked(),             VecSetValuesBlockedLocal(),             VecSetLocalToGlobalMappingBlocked()

• AddedVecCreatedShared(), which creates a parallel vector in shared memory on the SGI machines

• Changed VEC_IGNORE_OFF_PROCESSOR_ENTRIES to VEC_IGNORE_OFF_PROC_ENTRIES

• The third argument for the Fortran versions of the routines VecGetArray()/VecRestoreArray(), has been changed from integer to 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 integer to PetscOffset.

Draw (Graphics):

Viewers:

System:

Error Handling:

Event Logging:

Fortran Interface:

• PETSC_NULL has been replaced with PETSC_NULL_INTEGER, PETSC_NULL_SCALAR, PETSC_NULL_DOUBLE or PETSC_NULL_CHARACTER depending 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) = vec you have to declare those arrays to be of type PetscFortranAddr instead of as integer. Note that PetscFortranAddr is 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.