Provided by: python-petsc4py-doc_3.12.0-4build1_all bug

NAME

       petsc4py - PETSc for Python

       Author Lisandro Dalcin

       Contact
              dalcinl@gmail.com

       Web Site
              https://bitbucket.org/petsc/petsc4py

       Date   Oct 11, 2019

   Abstract
       This document describes petsc4py, a Python port to the PETSc libraries.

       PETSc  (the  Portable,  Extensible  Toolkit for Scientific Computation) is a suite of data
       structures and routines for the scalable (parallel) solution  of  scientific  applications
       modeled   by  partial  differential  equations.  It  employs  the  MPI  standard  for  all
       message-passing communication.

       This package provides an important subset of  PETSc  functionalities  and  uses  NumPy  to
       efficiently manage input and output of array data.

       A good friend of petsc4py is:

          • mpi4py: Python bindings for MPI, the Message Passing Interface.

       Other projects depends on petsc4py:

          • slepc4py:  Python  bindings  for  SLEPc,  the Scalable Library for Eigenvalue Problem
            Computations.

CONTENTS

   Overview
       PETSc is a suite of data structures and routines for the scalable (parallel)  solution  of
       scientific  applications  modeled  by  partial  differential equations. It employs the MPI
       standard for all message-passing communication.

       PETSc is intended for use  in  large-scale  application  projects  [petsc-efficient],  and
       several  ongoing computational science projects are built around the PETSc libraries. With
       strict attention to component  interoperability,  PETSc  facilitates  the  integration  of
       independently  developed  application modules, which often most naturally employ different
       coding styles and data structures.

       PETSc is easy to use for beginners [petsc-user-ref]. Moreover, its careful  design  allows
       advanced  users  to  have  detailed  control  over the solution process. PETSc includes an
       expanding suite of parallel linear and nonlinear equation solvers that are easily used  in
       application  codes  written  in C, C++, and Fortran. PETSc provides many of the mechanisms
       needed within parallel application codes,  such  as  simple  parallel  matrix  and  vector
       assembly routines that allow the overlap of communication and computation.

       [petsc-user-ref]
            S.  Balay,  S.  Abhyankar, M. Adams, J. Brown, P. Brune, K. Buschelman, L. Dalcin, A.
            Dener, V. Eijkhout, W. Gropp, D. Karpeyev, D. Kaushik, M. Knepley, D. May, L. Curfman
            McInnes,  R. Mills, T. Munson, K. Rupp, P. Sanan, B. Smith, S. Zampini, H. Zhang, and
            H.   Zhang,   PETSc   Users   Manual,    ANL-95/11    -    Revision    3.12,    2019.
            http://www.mcs.anl.gov/petsc/petsc-current/docs/manual.pdf

       [petsc-efficient]
            Satish  Balay,  Victor  Eijkhout, William D. Gropp, Lois Curfman McInnes and Barry F.
            Smith. Efficient Management of Parallelism  in  Object  Oriented  Numerical  Software
            Libraries.  Modern Software Tools in Scientific Computing. E. Arge, A. M. Bruaset and
            H. P. Langtangen, editors. 163–202. Birkhauser Press. 1997.

   Components
       PETSc is designed with  an  object-oriented  style.  Almost  all  user-visible  types  are
       abstract  interfaces with implementations that may be chosen at runtime. Those objects are
       managed through handles  to  opaque  data  structures  which  are  created,  accessed  and
       destroyed by calling appropriate library routines.

       PETSc  consists of a variety of components. Each component manipulates a particular family
       of objects and the operations one would like to perform on these objects. These components
       provide the functionality required for many parallel solutions of PDEs.

       Vec    Provides  the  vector  operations  required  for setting up and solving large-scale
              linear and nonlinear problems. Includes easy-to-use  parallel  scatter  and  gather
              operations,  as  well as special-purpose code for handling ghost points for regular
              data structures.

       Mat    A large suite of data structures and code for the manipulation of  parallel  sparse
              matrices. Includes four different parallel matrix data structures, each appropriate
              for a different class of problems.

       PC     A collection of sequential and  parallel  preconditioners,  including  (sequential)
              ILU(k),  LU,  and (both sequential and parallel) block Jacobi, overlapping additive
              Schwarz methods and (through BlockSolve95) ILU(0) and ICC(0).

       KSP    Parallel  implementations  of  many  popular  Krylov  subspace  iterative  methods,
              including  GMRES, CG, CGS, Bi-CG-Stab, two variants of TFQMR, CR, and LSQR. All are
              coded so that they are immediately usable with any preconditioners and  any  matrix
              data structures, including matrix-free methods.

       SNES   Data-structure-neutral   implementations   of  Newton-like  methods  for  nonlinear
              systems. Includes both line search  and  trust  region  techniques  with  a  single
              interface.  Employs  by default the above data structures and linear solvers. Users
              can set custom monitoring routines, convergence criteria, etc.

       TS     Code  for  the  time  evolution  of  solutions  of  PDEs.  In  addition,   provides
              pseudo-transient continuation techniques for computing steady-state solutions.

   Installation
   Using pip or easy_install
       You  can  use  pip to install petsc4py and its dependencies (mpi4py is optional but highly
       recommended):

          $ pip install [--user] numpy mpi4py
          $ pip install [--user] petsc petsc4py

       Alternatively, you can use easy_install (deprecated):

          $ easy_install petsc4py

       If you already have a working PETSc installation, set environment variables PETSC_DIR  and
       PETSC_ARCH to appropriate values and next use pip:

          $ export PETSC_DIR=/path/to/petsc
          $ export PETSC_ARCH=arch-linux2-c-opt
          $ pip install petsc4py

   Using distutils
   Requirements
       You  need  to  have  the following software properly installed in order to build PETSc for
       Python:

       • Any MPI implementation [1] (e.g., MPICH or Open MPI), built with shared libraries.

       • A matching version of PETSc built with shared libraries.

       • NumPy package.

       [1]  Unless you have appropiatelly configured  and  built  PETSc  without  MPI  (configure
            option --with-mpi=0).

       [2]  You  may need to use a parallelized version of the Python interpreter with some MPI-1
            implementations (e.g. MPICH1).

   Downloading
       The PETSc for Python package is available for download at the project  website  generously
       hosted by Bitbucket. You can use curl or wget to get a release tarball.

       • Using curl:

            $ curl -O https://bitbucket.org/petsc/petsc4py/petsc4py-X.Y.Z.tar.gz

       • Using wget:

            $ wget https://bitbucket.org/petsc/petsc4py/petsc4py-X.Y.Z.tar.gz

   Building
       After unpacking the release tarball:

          $ tar -zxf petsc4py-X.Y.Z.tar.gz
          $ cd petsc4py-X.Y.Z

       the distribution is ready for building.

       NOTE:
          Mac  OS  X users employing a Python distribution built with universal binaries may need
          to set the environment variables MACOSX_DEPLOYMENT_TARGET, SDKROOT,  and  ARCHFLAGS  to
          appropriate  values. As an example, assume your Mac is running Snow Leopard on a 64-bit
          Intel processor and you want to override the hard-wired cross-development SDK in Python
          configuration, your environment should be modified like this:

              $ export MACOSX_DEPLOYMENT_TARGET=10.6
              $ export SDKROOT=/
              $ export ARCHFLAGS='-arch x86_64'

       Some  environment  configuration  is  needed  to inform the location of PETSc. You can set
       (using setenv, export or what applies to you shell or system)  the  environment  variables
       PETSC_DIR, and PETSC_ARCH indicating where you have built/installed PETSc:

          $ export PETSC_DIR=/usr/local/petsc
          $ export PETSC_ARCH=arch-linux2-c-opt

       Alternatively,  you can edit the file setup.cfg and provide the required information below
       the [config] section:

          [config]
          petsc_dir  = /usr/local/petsc
          petsc_arch = arch-linux2-c-opt
          ...

       Finally, you can build the distribution by typing:

          $ python setup.py build

   Installing
       After building, the distribution is ready for installation.

       If you have root privileges (either by log-in as the root user of by using sudo)  and  you
       want to install PETSc for Python in your system for all users, just do:

          $ python setup.py install

       The   previous   steps   will   install   the   petsc4py   package  at  standard  location
       prefix/lib/pythonX.Y/site-packages.

       If you do not have root privileges or you want  to  install  PETSc  for  Python  for  your
       private use, just do:

          $ python setup.py install --user

   Tutorial
       XXX To be written … Any contribution welcome!

   Citations
       If  PETSc  for Python been significant to a project that leads to an academic publication,
       please acknowledge that fact by citing the project.

       • L. Dalcin, P. Kler, R. Paz, and A. Cosimo, Parallel Distributed Computing using  Python,
         Advances         in         Water        Resources,        34(9):1124-1139,        2011.
         http://dx.doi.org/10.1016/j.advwatres.2011.04.013

       • S. Balay, S. Abhyankar, M. Adams, J. Brown, P.  Brune,  K.  Buschelman,  L.  Dalcin,  A.
         Dener,  V.  Eijkhout,  W. Gropp, D. Karpeyev, D. Kaushik, M. Knepley, D. May, L. Curfman
         McInnes, R. Mills, T. Munson, K. Rupp, P. Sanan, B. Smith, S. Zampini, H. Zhang, and  H.
         Zhang,     PETSc     Users     Manual,     ANL-95/11     -    Revision    3.12,    2019.
         http://www.mcs.anl.gov/petsc/petsc-current/docs/manual.pdf

AUTHOR

       Lisandro Dalcin

COPYRIGHT

       2019, Lisandro Dalcin