petsc-3.14.6 2021-03-30
Documentation: Changes: 2.0.22
NEW FEATURES and CHANGES in PETSc 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):
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()
-
Added
VecCreatedShared(),
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.