# This file was automatically generated by SWIG (http://www.swig.org).
# Version 3.0.12
#
# Do not make changes to this file unless you know what you are doing--modify
# the SWIG interface file instead.

"""

PyTrilinos.Pliris is the python interface to the Trilinos package
Pliris, an LU solver for dense matrices:

    http://trilinos.sandia.gov/packages/pliris

The purpose of Pliris is to provide an object-oriented interface to an
LU solver for dense matrices on parallel platforms. These matrices are
double precision real matrices distributed on a parallel machine.  The
python version of the Pliris package supports the following class:

    * Pliris  - Primary solver class.

"""


from sys import version_info as _swig_python_version_info
if _swig_python_version_info >= (2, 7, 0):
    def swig_import_helper():
        import importlib
        pkg = __name__.rpartition('.')[0]
        mname = '.'.join((pkg, '_Pliris')).lstrip('.')
        try:
            return importlib.import_module(mname)
        except ImportError:
            return importlib.import_module('_Pliris')
    _Pliris = swig_import_helper()
    del swig_import_helper
elif _swig_python_version_info >= (2, 6, 0):
    def swig_import_helper():
        from os.path import dirname
        import imp
        fp = None
        try:
            fp, pathname, description = imp.find_module('_Pliris', [dirname(__file__)])
        except ImportError:
            import _Pliris
            return _Pliris
        try:
            _mod = imp.load_module('_Pliris', fp, pathname, description)
        finally:
            if fp is not None:
                fp.close()
        return _mod
    _Pliris = swig_import_helper()
    del swig_import_helper
else:
    import _Pliris
del _swig_python_version_info

try:
    _swig_property = property
except NameError:
    pass  # Python < 2.2 doesn't have 'property'.

try:
    import builtins as __builtin__
except ImportError:
    import __builtin__

def _swig_setattr_nondynamic(self, class_type, name, value, static=1):
    if (name == "thisown"):
        return self.this.own(value)
    if (name == "this"):
        if type(value).__name__ == 'SwigPyObject':
            self.__dict__[name] = value
            return
    method = class_type.__swig_setmethods__.get(name, None)
    if method:
        return method(self, value)
    if (not static):
        if _newclass:
            object.__setattr__(self, name, value)
        else:
            self.__dict__[name] = value
    else:
        raise AttributeError("You cannot add attributes to %s" % self)


def _swig_setattr(self, class_type, name, value):
    return _swig_setattr_nondynamic(self, class_type, name, value, 0)


def _swig_getattr(self, class_type, name):
    if (name == "thisown"):
        return self.this.own()
    method = class_type.__swig_getmethods__.get(name, None)
    if method:
        return method(self)
    raise AttributeError("'%s' object has no attribute '%s'" % (class_type.__name__, name))


def _swig_repr(self):
    try:
        strthis = "proxy of " + self.this.__repr__()
    except __builtin__.Exception:
        strthis = ""
    return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,)

try:
    _object = object
    _newclass = 1
except __builtin__.Exception:
    class _object:
        pass
    _newclass = 0


__version__ = PACKAGE_VERSION

class Pliris(_object):
    """Proxy of C++ Pliris class."""

    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, Pliris, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, Pliris, name)
    __repr__ = _swig_repr

    def __init__(self, *args):
        """
        __init__(Pliris self, Epetra_Vector * A, Epetra_MultiVector * X, Epetra_MultiVector * B) -> Pliris
        __init__(Pliris self) -> Pliris
        """
        this = _Pliris.new_Pliris(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def SetLHS(self, X):
        """SetLHS(Pliris self, Epetra_MultiVector * X) -> int"""
        return _Pliris.Pliris_SetLHS(self, X)


    def SetRHS(self, B):
        """SetRHS(Pliris self, Epetra_MultiVector * B) -> int"""
        return _Pliris.Pliris_SetRHS(self, B)


    def SetMatrix(self, *args):
        """
        SetMatrix(Pliris self, Epetra_Vector * A) -> int
        SetMatrix(Pliris self, Epetra_SerialDenseVector * A) -> int
        """
        return _Pliris.Pliris_SetMatrix(self, *args)


    def GetDistribution(self, nprocs_row, number_of_unknowns, nrhs, my_rows, my_cols, my_first_row, my_first_col, my_rhs, my_row, my_col):
        """GetDistribution(Pliris self, int * nprocs_row, int * number_of_unknowns, int * nrhs, int * my_rows, int * my_cols, int * my_first_row, int * my_first_col, int * my_rhs, int * my_row, int * my_col) -> int"""
        return _Pliris.Pliris_GetDistribution(self, nprocs_row, number_of_unknowns, nrhs, my_rows, my_cols, my_first_row, my_first_col, my_rhs, my_row, my_col)


    def FactorSolve(self, *args):
        """
        FactorSolve(Pliris self, Epetra_Vector * A, int my_rows, int my_cols, int * matrix_size, int * num_procsr, int * num_rhs, double * secs) -> int
        FactorSolve(Pliris self, Epetra_SerialDenseVector * AA, int my_rows, int my_cols, int * matrix_size, int * num_procsr, int * num_rhs, double * secs) -> int
        """
        return _Pliris.Pliris_FactorSolve(self, *args)


    def Factor(self, A, matrix_size, num_procsr, permute, secs):
        """Factor(Pliris self, Epetra_Vector * A, int * matrix_size, int * num_procsr, int * permute, double * secs) -> int"""
        return _Pliris.Pliris_Factor(self, A, matrix_size, num_procsr, permute, secs)


    def Solve(self, permute, num_rhs):
        """Solve(Pliris self, int * permute, int * num_rhs) -> int"""
        return _Pliris.Pliris_Solve(self, permute, num_rhs)

    __swig_destroy__ = _Pliris.delete_Pliris
Pliris_swigregister = _Pliris.Pliris_swigregister
Pliris_swigregister(Pliris)

# This file is compatible with both classic and new-style classes.


