.. _glossary:

Glossary
--------

.. glossary::

   AMG
      Algebraic multigrid method for solving sparse matrices.
      AMG solves linear systems with a general non-symmetric coefficient
      matrix.
      See https://en.wikipedia.org/wiki/Multigrid_method#Algebraic_multigrid_(AMG).

   AppVeyor
      A cloud-based :term:`Continuous Integration` tool.
      See https://www.appveyor.com.

   Azure
      A cloud-based :term:`Continuous Integration` tool.
      See https://dev.azure.com.

   BiCG
      Biconjugate gradient method for solving sparse matrices.
      BiCG solves linear systems with a general non-symmetric coefficient
      matrix.
      See https://en.wikipedia.org/wiki/Biconjugate_gradient_method.

   BiCGSTAB
      Biconjugate gradient (stabilized) method for solving sparse matrices.
      BiCGSTAB solves linear systems with a general non-symmetric
      coefficient matrix.
      See https://en.wikipedia.org/wiki/Biconjugate_gradient_stabilized_method.

   CG
      Conjugate Gradient method for solving sparse matrices.  CG solves
      linear systems with a symmetric positive-definite coefficient matrix.
      See https://en.wikipedia.org/wiki/Conjugate_gradient_method.

   CGS
      Conjugate Gradient Squared method for solving sparse matrices, a
      variant of :term:`BiCG`.  CGS solves linear systems with a general
      non-symmetric coefficient matrix.
      See https://en.wikipedia.org/wiki/Conjugate_gradient_squared_method.

   CircleCI
      A cloud-based :term:`Continuous Integration` tool.
      See https://circleci.com.

   conda
      An open source package management system and environment management
      system that runs on Windows, macOS and Linux.  Conda quickly
      installs, runs and updates packages and their dependencies.  Conda
      easily creates, saves, loads and switches between environments on
      your local computer.  It was created for Python programs, but it can
      package and distribute software for any language.
      See https://conda.io.

   Continuous Integration
      The practice of frequently testing and integrating one's new or
      changed code with the existing code repository.
      See https://en.wikipedia.org/wiki/Continuous_integration.

   FiPy
      The eponymous software package.
      See http://www.ctcms.nist.gov/fipy.

   FGMRES
      Flexible Inner-Outer Preconditioned :term:`GMRES` algorithm for
      solving sparse matrices.  FGMRES solves systems with a general
      non-symmetric coefficient matrix.
      See https://doi.org/10.1137/0914028.

   GitHub Actions
      A cloud-based :term:`Continuous Integration` tool.
      See https://github.com/features/actions.

   GMRES
      Generalized Minimal RESidual method for solving sparse matrices.
      GMRES solves systems with a general non-symmetric coefficient matrix.
      See https://en.wikipedia.org/wiki/Generalized_minimal_residual_method.

   Gmsh
      A free and Open Source 3D (and 2D!) finite element grid generator. It
      also has a CAD engine and post-processor that :term:`FiPy` does not
      make use of. See http://www.geuz.org/gmsh.

   IPython
      An improved :term:`Python` shell that integrates nicely with
      :ref:`MATPLOTLIB`. See http://ipython.scipy.org/.

   JOR
      Jacobi over-relaxation method for solving sparse matrices.  JOR
      solves systems with a general non-symmetric coefficient matrix.

   JSON
      JavaScript Object Notation.  A text format suitable for storing
      structured information such as :class:`dict` or :class:`list`.
      See https://www.json.org/.

   linux
      An operating system.
      See http://www.linux.org.

   LU
      Lower-Upper decomposition method for solving sparse matrices.  LU
      solves systems with a general non-symmetric coefficient matrix using
      partial pivoting.
      See https://en.wikipedia.org/wiki/LU_decomposition.

   macOS
      An operating system.
      See http://www.apple.com/macos.

   Matplotlib
      :mod:`matplotlib` :term:`Python` package displays publication quality
      results. It displays both 1D X-Y type plots and 2D contour plots for
      structured data. It does not display unstructured 2D data or 3D data.
      It works on all common platforms and produces publication quality hard
      copies. See
      http://matplotlib.sourceforge.net
      and :ref:`Matplotlib`.

   Mayavi
      The :mod:`mayavi` Data Visualizer is a free, easy to use scientific data
      visualizer.  It displays 1D, 2D and 3D data. It is the only :term:`FiPy`
      viewer available for 3D data. Other viewers are probably better for 1D
      or 2D viewing. See
      http://code.enthought.com/projects/mayavi
      and :ref:`MAYAVI`.

   MayaVi
      The predecessor to :term:`Mayavi`. Yes, it's confusing.

   MPI
      The Message Passing Interface is a standard that allows the use of
      multiple processors. See
      http://www.mpi-forum.org

   mpi4py
      MPI for Python provides bindings of the Message Passing Interface
      (:term:`MPI`) standard for the Python programming language, allowing
      any Python program to exploit multiple processors.  For
      :ref:`PARALLEL`, :term:`FiPy` requires this package, in addition to
      :ref:`PETSC` or :ref:`TRILINOS`.  See
      https://mpi4py.readthedocs.io.

   numarray
      An archaic predecessor to :term:`NumPy`.

   Numeric
      An archaic predecessor to :term:`NumPy`.

   NumPy
      The :mod:`numpy` :term:`Python` package provides array arithmetic
      facilities. See
      http://www.scipy.org/NumPy.

   OpenMP
      The Open Multi-Processing architecture is a specification for a set
      of compiler directives, library routines, and environment variables
      that can be used to specify high-level parallelism in Fortran and
      C/C++ programs. See
      https://www.openmp.org.

   pandas
      "Python Data Analysis Library" provides high-performance data structures
      for flexible, extensible analysis. See http://pandas.pydata.org.

   PCG
      Preconditioned conjugate gradient method for solving sparse matrices.
      PCG solves systems with a symmetric positive definite coefficient matrix.
      See https://en.wikipedia.org/wiki/Conjugate_gradient_method.

   petsc4py
      :term:`Python` wrapper for :ref:`PETSC`. See
      https://petsc4py.readthedocs.io/.

   pip
      "pip installs python" is a tool for installing and managing Python
      packages, such as those found in :term:`PyPI`.
      See http://www.pip-installer.org.

   PyPI
      The Python Package Index is a repository of software for the
      :term:`Python` programming language.
      See http://pypi.python.org/pypi.

   Pyrex
      A mechanism for mixing C and Python code.
      See http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/.

   Pysparse
      Pysparse is an archaic sparse matrix library for :term:`Python`.  As
      it requires :term:`Python` 2.7, Pysparse is no longer supported.  If
      absolutely required, Pysparse can be used in :term:`FiPy` 3.99.
      See http://pysparse.sourceforge.net.

   Python
      The programming language that :term:`FiPy` (and your scripts) are
      written in. See
      http://www.python.org/.

   Python 3
      The (likely) future of the :term:`Python` programming language.
      Third-party packages are slowly being adapted, but many that
      :term:`FiPy` uses are not yet available. See
      http://docs.python.org/py3k/
      and :pep:`3000`.

   PyTrilinos
      :term:`Python` wrapper for :ref:`TRILINOS`. See
      https://trilinos.github.io/pytrilinos.html.

   PyxViewer
      A now defunct python viewer.

   ScientificPython
      A collection of useful utilities for scientists. See
      http://dirac.cnrs-orleans.fr/plone/software/scientificpython.

   SciPy
      The :mod:`scipy` package provides a wide range of scientific and
      mathematical operations. :term:`FiPy` can use
      :ref:`SCIPY` solver suite for linear solutions. See
      http://www.scipy.org/.

   Sphinx
      The tools used to generate the :term:`FiPy` documentation.
      See
      http://sphinx.pocoo.org/.

   steppyngstounes
      This package provides iterators that simplify both deterministic and
      adaptive stepping in time (or other independent variables).
      See https://pages.nist.gov/steppyngstounes/en/latest.

   TravisCI
      A cloud-based :term:`Continuous Integration` tool.
      See https://travis-ci.org.

   Weave
      The :mod:`weave` package can enhance performance with C language
      inlining.  See https://github.com/scipy/weave.

   Windows
      An operating system.
      See http://www.microsoft.com/windows.

