Changes: 3.20#

General:

  • Add PetscOptionsBegin(), PetscOptionsEnd(), PetscOptionsInt(), PetscOptionsBool(), PetscOptionsIntArray(), PetscOptionsReal(), PetscOptionsRealArray(), and PetscOptionsScalar() for Fortran

  • Add PetscAssertPointer() as a replacement for PetscValidPointer(), PetscValidCharPointer(), PetscValidIntPointer(), PetscValidInt64Pointer(), PetscValidCountPointer(), PetscValidBoolPointer(), PetscvalidScalarPointer(), and PetscValidRealPointer()

  • Convert standard header-guards in PETSc header-files to #pragma once. Users relying on specific preprocessor definitions to determine whether particular PETSc headers (e.g. petscdm.h used to be guarded by PETSCDM_H) have been included will find that this no longer works. While header-guards are technically “public” (insofar that they appear in public header-files), their name and value are considered implementation details

Configure/Build:

  • Add support for external-packages to prefer tarball download for regular use - as currently all packages prefer git clones. MPICH is a package using this feature. Here MPICH tarball will be downloaded for regular use. However on providing --download-mpich-commit=main option - configure download and builds from MPICH git repository

  • Add support for external package SLATE, optional dependency for STRUMPACK

  • Add support for external package ZFP, optional dependency for STRUMPACK

  • Add support for external package ButterflyPACK, optional dependency for STRUMPACK

Sys:

Event Logging:

PetscViewer:

PetscDraw:

AO:

IS:

VecScatter / PetscSF:

PF:

Vec:

PetscSection:

PetscPartitioner:

Mat:

MatCoarsen:

PC:

KSP:

SNES:

  • Add a convenient, developer-level SNESConverged() function that runs the convergence test and updates the internal converged reason

  • Swap the order of monitor and convergence test. Now monitors are always called after a convergence test

  • Deprecate option -snes_ms_norms in favor of -snes_norm_schedule always

SNESLineSearch:

TS:

  • Remove TSErrorWeightedNormInfinity(), TSErrorWeightedNorm2(), TSErrorWeightedENormInfinity(), TSErrorWeightedENorm2() since the same functionality can be obtained with VecErrorWeightedNorms()

  • Add support for time-dependent solvers with varying solution size using TSSetResize()

  • Add support for Diagonally Implicit Runge-Kutta methods with the new TSDIRK type

TAO:

DM/DA:

DMSwarm:

  • Add scatter mode to DMSwarmProjectFields() and no longer create vectors

  • Promote DMSwarmDataFieldGetEntries(), DMSwarmDataFieldRestoreEntries(), DMSwarmDataBucketGetDMSwarmDataFieldByName(), DMSwarmDataBucketGetDMSwarmDataFieldIdByName(), and DMSwarmDataBucketQueryDMSwarmDataFieldByName() to public interface

DMPlex:

FE/FV:

  • Add PLEXFE_QFUNCTION macro to create CEED QFunctions from Plex pointwise functions

DMNetwork:

DMStag:

DT:

Fortran:

  • Add PetscCheck() and PetscCheckA() for Fortran

  • Change PETSC_HAVE_FORTRAN to PETSC_USE_FORTRAN_BINDINGS to indicate if PETSc is built with Fortran bindings