# 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.Fermi2D
   wasiak.FermiCyl
   wasiak.FermiNew2D
   wasiak.FermiNewCyl
   freecarrier.FreeCarrier2D
   freecarrier.FreeCarrierCyl
"""


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

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

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


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

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

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


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

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

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


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

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

    Args:
        name (str): Solver name.
    """
    import gain.wasiak
    return gain.wasiak.FermiNewCyl(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)
