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

"""
Thermal solvers.

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

Example:

    >>> import thermal
    >>> thermal.Static3D('mysolver')
    <thermal.static.Static3D at 0x42ac2b8>

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

.. autosummary::
   :toctree: thermal
   :template: solver.rst

   dynamic.Dynamic2D
   dynamic.DynamicCyl
   dynamic.Dynamic3D
   static.Static2D
   static.StaticCyl
   static.Static3D
"""


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

    This function automatically loads ``dynamic`` submodule and creates
    :class:`~dynamic.Dynamic2D` class.

    Args:
        name (str): Solver name.
    """
    import thermal.dynamic
    return thermal.dynamic.Dynamic2D(name)


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

    This function automatically loads ``dynamic`` submodule and creates
    :class:`~dynamic.DynamicCyl` class.

    Args:
        name (str): Solver name.
    """
    import thermal.dynamic
    return thermal.dynamic.DynamicCyl(name)


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

    This function automatically loads ``dynamic`` submodule and creates
    :class:`~dynamic.Dynamic3D` class.

    Args:
        name (str): Solver name.
    """
    import thermal.dynamic
    return thermal.dynamic.Dynamic3D(name)


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

    This function automatically loads ``static`` submodule and creates
    :class:`~static.Static2D` class.

    Args:
        name (str): Solver name.
    """
    import thermal.static
    return thermal.static.Static2D(name)


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

    This function automatically loads ``static`` submodule and creates
    :class:`~static.StaticCyl` class.

    Args:
        name (str): Solver name.
    """
    import thermal.static
    return thermal.static.StaticCyl(name)


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

    This function automatically loads ``static`` submodule and creates
    :class:`~static.Static3D` class.

    Args:
        name (str): Solver name.
    """
    import thermal.static
    return thermal.static.Static3D(name)
