File: versionchecking.rst.txt

package info (click to toggle)
petsc 3.22.5%2Bdfsg1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 516,740 kB
  • sloc: ansic: 814,333; cpp: 50,948; python: 37,416; f90: 17,187; javascript: 3,493; makefile: 3,198; sh: 1,502; xml: 619; objc: 445; java: 13; csh: 1
file content (72 lines) | stat: -rw-r--r-- 2,206 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
.. _ch_versionchecking:

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 

   .. code-block:: console

      $ $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,

   .. code-block:: console

      $ $PETSC_DIR/lib/petsc/bin/petscversion eq 3.22

returns 1 if the PETSc version is 3.22 (any subminor version is allowed). While 

   .. code-block:: console

      $ $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

.. code-block:: console

   $ $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

.. code-block:: C

   char  version(lengthofversion);
   PetscErrorCode PetscGetVersion(char version[], size_t lengthofversion)

gives access to the version at runtime.