# Automatically generated. All your changes will be lost on recompilation!

"""
Gain solvers.

This package combines all gain solvers and helper functions that can
create solver classes without a need to explicitly import the proper binary
module.

Example:

    >>> import gain
    >>> gain.FreeCarrierCyl('mysolver')
    <gain.freecarrier.FreeCarrierCyl at 0x42ac2b8>

Solver classes
--------------

.. autosummary::
   :toctree: gain
   :template: solver.rst

   wasiak.WasiakOld2D
   wasiak.WasiakOldCyl
   wasiak.WasiakNew2D
   wasiak.WasiakNewCyl
   freecarrier.FreeCarrier2D
   freecarrier.FreeCarrierCyl
"""


def WasiakOld2D(name=''):
    """
    Create WasiakOld2D solver.

    This function automatically loads ``wasiak`` submodule and creates
    :class:`~wasiak.WasiakOld2D` class.

    Args:
        name (str): Solver name.
    """
    import gain.wasiak
    return gain.wasiak.WasiakOld2D(name)


def WasiakOldCyl(name=''):
    """
    Create WasiakOldCyl solver.

    This function automatically loads ``wasiak`` submodule and creates
    :class:`~wasiak.WasiakOldCyl` class.

    Args:
        name (str): Solver name.
    """
    import gain.wasiak
    return gain.wasiak.WasiakOldCyl(name)


def WasiakNew2D(name=''):
    """
    Create WasiakNew2D solver.

    This function automatically loads ``wasiak`` submodule and creates
    :class:`~wasiak.WasiakNew2D` class.

    Args:
        name (str): Solver name.
    """
    import gain.wasiak
    return gain.wasiak.WasiakNew2D(name)


def WasiakNewCyl(name=''):
    """
    Create WasiakNewCyl solver.

    This function automatically loads ``wasiak`` submodule and creates
    :class:`~wasiak.WasiakNewCyl` class.

    Args:
        name (str): Solver name.
    """
    import gain.wasiak
    return gain.wasiak.WasiakNewCyl(name)


def FreeCarrier2D(name=''):
    """
    Create FreeCarrier2D solver.

    This function automatically loads ``freecarrier`` submodule and creates
    :class:`~freecarrier.FreeCarrier2D` class.

    Args:
        name (str): Solver name.
    """
    import gain.freecarrier
    return gain.freecarrier.FreeCarrier2D(name)


def FreeCarrierCyl(name=''):
    """
    Create FreeCarrierCyl solver.

    This function automatically loads ``freecarrier`` submodule and creates
    :class:`~freecarrier.FreeCarrierCyl` class.

    Args:
        name (str): Solver name.
    """
    import gain.freecarrier
    return gain.freecarrier.FreeCarrierCyl(name)
