# Copyright 2014, 2015 The ODL development group
#
# This file is part of ODL.
#
# ODL is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# ODL is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with ODL.  If not, see <http://www.gnu.org/licenses/>.

"""Discretizations in ODL.

Abstract discretization classes (Module `discretization`)
=========================================================

+---------------------+------------------------------------------------+
|Class name           |Description                                     |
+=====================+================================================+
|`RawDiscretization`  |**Abstract** base class for discretizations     |
+---------------------+------------------------------------------------+
|`Discretization`     |**Abstract** base class for discretizations of  |
|                     |linear spaces                                   |
+---------------------+------------------------------------------------+

Discretizations of Lp spaces (Module `lp_discr`)
================================================

+--------------+-------------------------------------------------------+
|Class name    |Description                                            |
+==============+=======================================================+
|`DiscreteLp`  |Discretization of an :math:`L^p` space defined on an   |
|              |interval product                                       |
+--------------+-------------------------------------------------------+

Factory functions
-----------------

+-----------------------------+----------------------------------------+
|Name                         |Description                             |
+=============================+========================================+
|`uniform_discr()`            |Discretize an Lp space based on uniform |
|                             |sampling and interpolation between      |
|                             |samples                                 |
+-----------------------------+----------------------------------------+

Sampling grids (Module `grid`)
==============================

+---------------------+------------------------------------------------+
|Class name           |Description                                     |
+=====================+================================================+
|`TensorGrid`         |Tensor product of coordinate vectors, i.e.      |
|                     |points generated by all coordinate combinations |
+---------------------+------------------------------------------------+
|`RegularGrid`        |Tensor grid with regularly spaced coordinates   |
+---------------------+------------------------------------------------+

Factory functions
-----------------

+--------------------+-------------------------------------------------+
|Name                |Description                                      |
+====================+=================================================+
|`uniform_sampling()`|Create a regular grid from an interval product   |
|                    |by uniform sampling                              |
+--------------------+-------------------------------------------------+

Restriction and Extension operators (Module `discr_mappings`)
=============================================================

+---------------------------+------------------------------------------+
|Class name                 |Description                               |
+===========================+==========================================+
|`RawGridCollocation`       |Evaluation of functions in a function set |
|                           |on a sampling grid                        |
+---------------------------+------------------------------------------+
|`GridCollocation`          |TODO write doc                            |
+---------------------------+------------------------------------------+
|`RawNearestInterpolation`  |TODO write doc                            |
+---------------------------+------------------------------------------+
|`NearestInterpolation`     |TODO write doc                            |
+---------------------------+------------------------------------------+
|`LinearInterpolation`      |TODO write doc                            |
+---------------------------+------------------------------------------+
|`CubicInterpolation`       |TODO implement                            |
+---------------------------+------------------------------------------+
"""
# TODO: write intro documentation

from __future__ import absolute_import

__all__ = ()

from . import l2_discr
from .l2_discr import *
__all__ += l2_discr.__all__

from . import discretization
from .discretization import *
__all__ += discretization.__all__

from . import grid
from .grid import *
__all__ += grid.__all__

from . import discr_mappings
from .discr_mappings import *
__all__ += discr_mappings.__all__

@@ -5024,17 +5024,17 @@
 import l
-2
+p
 _discr%0Af
@@ -5039,17 +5039,17 @@
 %0Afrom .l
-2
+p
 _discr i
@@ -5068,17 +5068,17 @@
 l__ += l
-2
+p
 _discr._

Fix wrong name l2discr in __init__.py