127710113SBarry Smith #include <petscsys.h> 227710113SBarry Smith /*@C 327710113SBarry Smith PetscGetVersion - Gets the PETSc version information in a string. 427710113SBarry Smith 527710113SBarry Smith Input Parameter: 627710113SBarry Smith . len - length of the string 727710113SBarry Smith 827710113SBarry Smith Output Parameter: 927710113SBarry Smith . version - version string 1027710113SBarry Smith 1127710113SBarry Smith Level: developer 1227710113SBarry Smith 13*811af0c4SBarry Smith Note: 14*811af0c4SBarry Smith For doing runtime checking of supported versions we recommend using `PetscGetVersionNumber()` instead of this routine. 15*811af0c4SBarry Smith 1627710113SBarry Smith Fortran Note: 1727710113SBarry Smith This routine is not supported in Fortran. 1827710113SBarry Smith 19db781477SPatrick Sanan .seealso: `PetscGetProgramName()`, `PetscGetVersionNumber()` 2027710113SBarry Smith @*/ 2127710113SBarry Smith 229371c9d4SSatish Balay PetscErrorCode PetscGetVersion(char version[], size_t len) { 238cf9f3d7SBarry Smith PetscFunctionBegin; 2427710113SBarry Smith #if (PETSC_VERSION_RELEASE == 1) 259566063dSJacob Faibussowitsch PetscCall(PetscSNPrintf(version, len, "Petsc Release Version %d.%d.%d, %s ", PETSC_VERSION_MAJOR, PETSC_VERSION_MINOR, PETSC_VERSION_SUBMINOR, PETSC_VERSION_DATE)); 2627710113SBarry Smith #else 279566063dSJacob Faibussowitsch PetscCall(PetscSNPrintf(version, len, "Petsc Development GIT revision: %s GIT Date: %s", PETSC_VERSION_GIT, PETSC_VERSION_DATE_GIT)); 2827710113SBarry Smith #endif 2927710113SBarry Smith PetscFunctionReturn(0); 3027710113SBarry Smith } 3127710113SBarry Smith 325f309d01SBarry Smith /*@C 335f309d01SBarry Smith PetscGetVersionNumber - Gets the PETSc version information from the library 345f309d01SBarry Smith 355f309d01SBarry Smith Not collective 365f309d01SBarry Smith 37d8d19677SJose E. Roman Output Parameters: 385f309d01SBarry Smith + major - the major version (optional, pass NULL if not requested) 395f309d01SBarry Smith . minor - the minor version (optional, pass NULL if not requested) 405f309d01SBarry Smith . subminor - the subminor version (patch number) (optional, pass NULL if not requested) 415f309d01SBarry Smith - release - indicates the library is from a release, not random git repository (optional, pass NULL if not requested) 425f309d01SBarry Smith 435f309d01SBarry Smith Level: developer 445f309d01SBarry Smith 4595452b02SPatrick Sanan Notes: 46*811af0c4SBarry Smith The C macros `PETSC_VERSION_MAJOR`, `PETSC_VERSION_MINOR`, `PETSC_VERSION_SUBMINOR`, `PETSC_VERSION_RELEASE` provide the information at 475f309d01SBarry Smith compile time. This can be used to confirm that the shared library being loaded at runtime has the appropriate version updates. 485f309d01SBarry Smith 49*811af0c4SBarry Smith This function can be called before `PetscInitialize()` 508cf9f3d7SBarry Smith 51db781477SPatrick Sanan .seealso: `PetscGetProgramName()`, `PetscGetVersion()`, `PetscInitialize()` 525f309d01SBarry Smith @*/ 539371c9d4SSatish Balay PetscErrorCode PetscGetVersionNumber(PetscInt *major, PetscInt *minor, PetscInt *subminor, PetscInt *release) { 545f309d01SBarry Smith if (major) *major = PETSC_VERSION_MAJOR; 555f309d01SBarry Smith if (minor) *minor = PETSC_VERSION_MINOR; 565f309d01SBarry Smith if (subminor) *subminor = PETSC_VERSION_SUBMINOR; 575f309d01SBarry Smith if (release) *release = PETSC_VERSION_RELEASE; 588cf9f3d7SBarry Smith return 0; 595f309d01SBarry Smith } 60