Working with PETSc options#

A very powerful feature of PETSc is that objects can be configured via command-line options. In this way, one can choose the method to be used or set different parameters.

In order to use command-line options in a petsc4py program, it is important to initialize the module as follows:

# We first import petsc4py and sys to initialize PETSc
import sys, petsc4py
petsc4py.init(sys.argv)

# Import the PETSc module
from petsc4py import PETSc

Then one can provide command-line options when running the script:

$ python ex1.py -ksp_type gmres -ksp_gmres_restart 100 -ksp_view

Note that in order to configure a given object from the command-line options, the setFromOptions() method must be called, that is:

ksp.setFromOptions()

It is also possible to add new, user-defined options, via the Options class. For instance:

OptDB = PETSc.Options()
n     = OptDB.getInt('n', 16)
eta   = OptDB.getReal('eta', 0.014)
alpha = OptDB.getScalar('alpha', -12.3)

In this way, if the program is run with the following options, n and alpha will get the values 50 and 8.8, respectively, while eta will be assigned the value specified as default, 0.014.

$ python ex1.py -n 50 -alpha 8.8

The options database is accessible also as a Python dictionary, so that one can for instance override an option or insert a new option:

OptDB['draw_pause'] = 1