File petsclib.hxx#

Defines

PETSC_HAVE_BROKEN_RECURSIVE_MACRO#
BOUT_DO_PETSC(cmd)#
PETSC_VERSION_GE(MAJOR, MINOR, SUBMINOR)#
class PetscLib#
#include <petsclib.hxx>

Handles initialisation and finalisation of PETSc library. The first instance which is created initialises PETSc Keeps a count of the number of how many instances exist When the last instance is destroyed it finalises PETSc.

Public Functions

explicit PetscLib(Options *opt = nullptr)#

Ensure that PETSc has been initialised

PetscLib(const PetscLib&) = default#
PetscLib(PetscLib&&) = default#
PetscLib &operator=(const PetscLib&) = default#
PetscLib &operator=(PetscLib&&) = default#
~PetscLib()#

Calls PetscFinalize when all PetscLib instances are destroyed

void setOptionsFromInputFile(KSP &ksp)#

Set options for a KSP linear solver that uses the options specific to this PetscLib, by setting an options prefix for the KSP, and adding that prefix to all the options set in the [petsc] section, or [petsc] subsection of the options, if non-null ‘opt’ was passed to the constructor.

void setOptionsFromInputFile(SNES &snes)#

Set options for a SNES linear solver that uses the options specific to this PetscLib, by setting an options prefix for the SNES, and adding that prefix to all the options set in the [petsc] section, or [petsc] subsection of the options, if non-null ‘opt’ was passed to the constructor.

Public Static Functions

static inline void setArgs(int &argc, char **&argv)#

This is called once to set the command-line options. Should be done early in the program, before any instances of PetscLib are created. The arguments will be passed to PetscInitialize()

static void cleanup()#

Force cleanup. This will call PetscFinalize, printing a warning if any instances of PetscLib still exist

static inline void assertIerr(PetscErrorCode ierr, const std::string &petsc_op = "PETSc operation")#
static BoutException SNESFailure(SNES &snes)#

Private Members

std::string options_prefix#

Private Static Attributes

static int count = 0#

How many instances?

static int *pargc = nullptr#
static char ***pargv = nullptr#
static PetscLogEvent USER_EVENT#