Checking the PETSc version#
The PETSc version
is defined in $PETSC_DIR/include/petscversion.h
with the three macros
PETSC_VERSION_MAJOR
, PETSC_VERSION_MINOR
, and PETSC_VERSION_SUBMINOR
.
The shell commands make getversion
or $PETSC_DIR/lib/petsc/bin/petscversion
prints out the PETSc version.
The command
$ $PETSC_DIR/lib/petsc/bin/petscversion <eq,gt,lt,ge,le> major.minor<.subminor>
allows one to add tests to make files, CMake files, configure scripts etc, to ensure the PETSc version is compatible with your applications. For example,
$ $PETSC_DIR/lib/petsc/bin/petscversion eq 3.22
returns 1 if the PETSc version is 3.22 (any subminor version is allowed). While
$ $PETSC_DIR/lib/petsc/bin/petscversion ge 3.21
returns 1 if the PETSc version is 3.21 or higher.
Though we try to avoid making changes to the PETSc API, they are inevitable; thus we provide tools to help manage one’s application to be robust to such changes.
During configure/make time#
The command
$ $PETSC_DIR/lib/petsc/bin/petscversion eq xxx.yyy[.zzz]
prints out 1 if the PETSc version matches xxx.yyy[.zzz]
and 0 otherwise. The command works in a similar
way for lt
, le
, gt
, and ge
. This allows your application configure script, or makefile
or CMake
file
to check if the PETSc version is compatible with application even before beginning to compile your code.
During compile time#
The CPP macros
PETSC_VERSION_EQ(MAJOR,MINOR,SUBMINOR)
PETSC_VERSION_LT(MAJOR,MINOR,SUBMINOR)
PETSC_VERSION_LE(MAJOR,MINOR,SUBMINOR)
PETSC_VERSION_GT(MAJOR,MINOR,SUBMINOR)
PETSC_VERSION_GE(MAJOR,MINOR,SUBMINOR)
may be used in the source code to choose different code paths or error out depending on the PETSc version.
At Runtime#
The command
char version(lengthofversion);
PetscErrorCode PetscGetVersion(char version[], size_t lengthofversion)
gives access to the version at runtime.