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

"""
FEmTool module, see official documentation at
https://www.opencascade.com/doc/occt-7.7.0/refman/html/package_femtool.html
"""

from sys import version_info as _swig_python_version_info
# Import the low-level C/C++ module
if __package__ or "." in __name__:
    from . import _FEmTool
else:
    import _FEmTool

try:
    import builtins as __builtin__
except ImportError:
    import __builtin__

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,)


def _swig_setattr_nondynamic_instance_variable(set):
    def set_instance_attr(self, name, value):
        if name == "this":
            set(self, name, value)
        elif name == "thisown":
            self.this.own(value)
        elif hasattr(self, name) and isinstance(getattr(type(self), name), property):
            set(self, name, value)
        else:
            raise AttributeError("You cannot add instance attributes to %s" % self)
    return set_instance_attr


def _swig_setattr_nondynamic_class_variable(set):
    def set_class_attr(cls, name, value):
        if hasattr(cls, name) and not isinstance(getattr(cls, name), property):
            set(cls, name, value)
        else:
            raise AttributeError("You cannot add class attributes to %s" % cls)
    return set_class_attr


def _swig_add_metaclass(metaclass):
    """Class decorator for adding a metaclass to a SWIG wrapped class - a slimmed down version of six.add_metaclass"""
    def wrapper(cls):
        return metaclass(cls.__name__, cls.__bases__, cls.__dict__.copy())
    return wrapper


class _SwigNonDynamicMeta(type):
    """Meta class to enforce nondynamic attributes (no new attributes) for a class"""
    __setattr__ = _swig_setattr_nondynamic_class_variable(type.__setattr__)


class SwigPyIterator(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr
    __swig_destroy__ = _FEmTool.delete_SwigPyIterator

    def value(self):
        return _FEmTool.SwigPyIterator_value(self)

    def incr(self, n=1):
        return _FEmTool.SwigPyIterator_incr(self, n)

    def decr(self, n=1):
        return _FEmTool.SwigPyIterator_decr(self, n)

    def distance(self, x):
        return _FEmTool.SwigPyIterator_distance(self, x)

    def equal(self, x):
        return _FEmTool.SwigPyIterator_equal(self, x)

    def copy(self):
        return _FEmTool.SwigPyIterator_copy(self)

    def next(self):
        return _FEmTool.SwigPyIterator_next(self)

    def __next__(self):
        return _FEmTool.SwigPyIterator___next__(self)

    def previous(self):
        return _FEmTool.SwigPyIterator_previous(self)

    def advance(self, n):
        return _FEmTool.SwigPyIterator_advance(self, n)

    def __eq__(self, x):
        return _FEmTool.SwigPyIterator___eq__(self, x)

    def __ne__(self, x):
        return _FEmTool.SwigPyIterator___ne__(self, x)

    def __iadd__(self, n):
        return _FEmTool.SwigPyIterator___iadd__(self, n)

    def __isub__(self, n):
        return _FEmTool.SwigPyIterator___isub__(self, n)

    def __add__(self, n):
        return _FEmTool.SwigPyIterator___add__(self, n)

    def __sub__(self, *args):
        return _FEmTool.SwigPyIterator___sub__(self, *args)
    def __iter__(self):
        return self

# Register SwigPyIterator in _FEmTool:
_FEmTool.SwigPyIterator_swigregister(SwigPyIterator)

def _dumps_object(klass):
    """ Overwrite default string output for any wrapped object.
    By default, __repr__ method returns something like:
    <OCC.Core.TopoDS.TopoDS_Shape; proxy of <Swig Object of type 'TopoDS_Shape *' at 0x02BB0758> >
    This is too much verbose.
    We prefer :
    <class 'gp_Pnt'>
    or
    <class 'TopoDS_Shape'>
    """
    klass_name = str(klass.__class__).split(".")[3].split("'")[0]
    repr_string = "<class '" + klass_name + "'"
# for TopoDS_Shape, we also look for the base type
    if klass_name == "TopoDS_Shape":
        if klass.IsNull():
            repr_string += ": Null>"
            return repr_string
        st = klass.ShapeType()
        types = {OCC.Core.TopAbs.TopAbs_VERTEX: "Vertex",
                 OCC.Core.TopAbs.TopAbs_SOLID: "Solid",
                 OCC.Core.TopAbs.TopAbs_EDGE: "Edge",
                 OCC.Core.TopAbs.TopAbs_FACE: "Face",
                 OCC.Core.TopAbs.TopAbs_SHELL: "Shell",
                 OCC.Core.TopAbs.TopAbs_WIRE: "Wire",
                 OCC.Core.TopAbs.TopAbs_COMPOUND: "Compound",
                 OCC.Core.TopAbs.TopAbs_COMPSOLID: "Compsolid"}
        repr_string += "; Type:%s" % types[st]        
    elif hasattr(klass, "IsNull"):
        if klass.IsNull():
            repr_string += "; Null"
    repr_string += ">"
    return repr_string


def process_exception(error, method_name, class_name):
    return _FEmTool.process_exception(error, method_name, class_name)

from six import with_metaclass
import warnings
from OCC.Wrapper.wrapper_utils import Proxy, deprecated

import OCC.Core.Standard
import OCC.Core.NCollection
import OCC.Core.TColStd
import OCC.Core.TCollection
import OCC.Core.math
import OCC.Core.Message
import OCC.Core.OSD
import OCC.Core.gp
import OCC.Core.PLib
import OCC.Core.TColgp
import OCC.Core.GeomAbs

from enum import IntEnum
from OCC.Core.Exception import *




def Handle_FEmTool_Curve_Create():
    return _FEmTool.Handle_FEmTool_Curve_Create()

def Handle_FEmTool_Curve_DownCast(t):
    return _FEmTool.Handle_FEmTool_Curve_DownCast(t)

def Handle_FEmTool_Curve_IsNull(t):
    return _FEmTool.Handle_FEmTool_Curve_IsNull(t)

def Handle_FEmTool_ElementaryCriterion_Create():
    return _FEmTool.Handle_FEmTool_ElementaryCriterion_Create()

def Handle_FEmTool_ElementaryCriterion_DownCast(t):
    return _FEmTool.Handle_FEmTool_ElementaryCriterion_DownCast(t)

def Handle_FEmTool_ElementaryCriterion_IsNull(t):
    return _FEmTool.Handle_FEmTool_ElementaryCriterion_IsNull(t)

def Handle_FEmTool_SparseMatrix_Create():
    return _FEmTool.Handle_FEmTool_SparseMatrix_Create()

def Handle_FEmTool_SparseMatrix_DownCast(t):
    return _FEmTool.Handle_FEmTool_SparseMatrix_DownCast(t)

def Handle_FEmTool_SparseMatrix_IsNull(t):
    return _FEmTool.Handle_FEmTool_SparseMatrix_IsNull(t)

def Handle_FEmTool_LinearFlexion_Create():
    return _FEmTool.Handle_FEmTool_LinearFlexion_Create()

def Handle_FEmTool_LinearFlexion_DownCast(t):
    return _FEmTool.Handle_FEmTool_LinearFlexion_DownCast(t)

def Handle_FEmTool_LinearFlexion_IsNull(t):
    return _FEmTool.Handle_FEmTool_LinearFlexion_IsNull(t)

def Handle_FEmTool_LinearJerk_Create():
    return _FEmTool.Handle_FEmTool_LinearJerk_Create()

def Handle_FEmTool_LinearJerk_DownCast(t):
    return _FEmTool.Handle_FEmTool_LinearJerk_DownCast(t)

def Handle_FEmTool_LinearJerk_IsNull(t):
    return _FEmTool.Handle_FEmTool_LinearJerk_IsNull(t)

def Handle_FEmTool_LinearTension_Create():
    return _FEmTool.Handle_FEmTool_LinearTension_Create()

def Handle_FEmTool_LinearTension_DownCast(t):
    return _FEmTool.Handle_FEmTool_LinearTension_DownCast(t)

def Handle_FEmTool_LinearTension_IsNull(t):
    return _FEmTool.Handle_FEmTool_LinearTension_IsNull(t)

def Handle_FEmTool_ProfileMatrix_Create():
    return _FEmTool.Handle_FEmTool_ProfileMatrix_Create()

def Handle_FEmTool_ProfileMatrix_DownCast(t):
    return _FEmTool.Handle_FEmTool_ProfileMatrix_DownCast(t)

def Handle_FEmTool_ProfileMatrix_IsNull(t):
    return _FEmTool.Handle_FEmTool_ProfileMatrix_IsNull(t)

def Handle_FEmTool_HAssemblyTable_Create():
    return _FEmTool.Handle_FEmTool_HAssemblyTable_Create()

def Handle_FEmTool_HAssemblyTable_DownCast(t):
    return _FEmTool.Handle_FEmTool_HAssemblyTable_DownCast(t)

def Handle_FEmTool_HAssemblyTable_IsNull(t):
    return _FEmTool.Handle_FEmTool_HAssemblyTable_IsNull(t)
class FEmTool_AssemblyTable(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _FEmTool.FEmTool_AssemblyTable_swiginit(self, _FEmTool.new_FEmTool_AssemblyTable(*args))

    def Init(self, theValue):
        return _FEmTool.FEmTool_AssemblyTable_Init(self, theValue)

    def Size(self):
        return _FEmTool.FEmTool_AssemblyTable_Size(self)

    def Length(self):
        return _FEmTool.FEmTool_AssemblyTable_Length(self)

    def NbRows(self):
        return _FEmTool.FEmTool_AssemblyTable_NbRows(self)

    def NbColumns(self):
        return _FEmTool.FEmTool_AssemblyTable_NbColumns(self)

    def RowLength(self):
        return _FEmTool.FEmTool_AssemblyTable_RowLength(self)

    def ColLength(self):
        return _FEmTool.FEmTool_AssemblyTable_ColLength(self)

    def LowerRow(self):
        return _FEmTool.FEmTool_AssemblyTable_LowerRow(self)

    def UpperRow(self):
        return _FEmTool.FEmTool_AssemblyTable_UpperRow(self)

    def LowerCol(self):
        return _FEmTool.FEmTool_AssemblyTable_LowerCol(self)

    def UpperCol(self):
        return _FEmTool.FEmTool_AssemblyTable_UpperCol(self)

    def IsDeletable(self):
        return _FEmTool.FEmTool_AssemblyTable_IsDeletable(self)

    def Assign(self, theOther):
        return _FEmTool.FEmTool_AssemblyTable_Assign(self, theOther)

    def Move(self, theOther):
        return _FEmTool.FEmTool_AssemblyTable_Move(self, theOther)

    def Set(self, *args):
        return _FEmTool.FEmTool_AssemblyTable_Set(self, *args)

    def Value(self, theRow, theCol):
        return _FEmTool.FEmTool_AssemblyTable_Value(self, theRow, theCol)

    def ChangeValue(self, theRow, theCol):
        return _FEmTool.FEmTool_AssemblyTable_ChangeValue(self, theRow, theCol)

    def __call__(self, *args):
        return _FEmTool.FEmTool_AssemblyTable___call__(self, *args)

    def SetValue(self, theRow, theCol, theItem):
        return _FEmTool.FEmTool_AssemblyTable_SetValue(self, theRow, theCol, theItem)

    def Resize(self, theRowLower, theRowUpper, theColLower, theColUpper, theToCopyData):
        return _FEmTool.FEmTool_AssemblyTable_Resize(self, theRowLower, theRowUpper, theColLower, theColUpper, theToCopyData)
    __swig_destroy__ = _FEmTool.delete_FEmTool_AssemblyTable

# Register FEmTool_AssemblyTable in _FEmTool:
_FEmTool.FEmTool_AssemblyTable_swigregister(FEmTool_AssemblyTable)
class FEmTool_ListIteratorOfListOfVectors(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _FEmTool.FEmTool_ListIteratorOfListOfVectors_swiginit(self, _FEmTool.new_FEmTool_ListIteratorOfListOfVectors(*args))

    def More(self):
        return _FEmTool.FEmTool_ListIteratorOfListOfVectors_More(self)

    def Next(self):
        return _FEmTool.FEmTool_ListIteratorOfListOfVectors_Next(self)

    def Value(self):
        return _FEmTool.FEmTool_ListIteratorOfListOfVectors_Value(self)

    def ChangeValue(self):
        return _FEmTool.FEmTool_ListIteratorOfListOfVectors_ChangeValue(self)
    __swig_destroy__ = _FEmTool.delete_FEmTool_ListIteratorOfListOfVectors

# Register FEmTool_ListIteratorOfListOfVectors in _FEmTool:
_FEmTool.FEmTool_ListIteratorOfListOfVectors_swigregister(FEmTool_ListIteratorOfListOfVectors)
class FEmTool_ListOfVectors(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def begin(self):
        return _FEmTool.FEmTool_ListOfVectors_begin(self)

    def end(self):
        return _FEmTool.FEmTool_ListOfVectors_end(self)

    def cbegin(self):
        return _FEmTool.FEmTool_ListOfVectors_cbegin(self)

    def cend(self):
        return _FEmTool.FEmTool_ListOfVectors_cend(self)

    def __init__(self, *args):
        _FEmTool.FEmTool_ListOfVectors_swiginit(self, _FEmTool.new_FEmTool_ListOfVectors(*args))

    def Size(self):
        return _FEmTool.FEmTool_ListOfVectors_Size(self)

    def Assign(self, theOther):
        return _FEmTool.FEmTool_ListOfVectors_Assign(self, theOther)

    def Set(self, theOther):
        return _FEmTool.FEmTool_ListOfVectors_Set(self, theOther)

    def Clear(self, theAllocator=0):
        return _FEmTool.FEmTool_ListOfVectors_Clear(self, theAllocator)

    def First(self):
        return _FEmTool.FEmTool_ListOfVectors_First(self)

    def Last(self):
        return _FEmTool.FEmTool_ListOfVectors_Last(self)

    def Append(self, *args):
        return _FEmTool.FEmTool_ListOfVectors_Append(self, *args)

    def Prepend(self, *args):
        return _FEmTool.FEmTool_ListOfVectors_Prepend(self, *args)

    def RemoveFirst(self):
        return _FEmTool.FEmTool_ListOfVectors_RemoveFirst(self)

    def Remove(self, theIter):
        return _FEmTool.FEmTool_ListOfVectors_Remove(self, theIter)

    def InsertBefore(self, *args):
        return _FEmTool.FEmTool_ListOfVectors_InsertBefore(self, *args)

    def InsertAfter(self, *args):
        return _FEmTool.FEmTool_ListOfVectors_InsertAfter(self, *args)

    def Reverse(self):
        return _FEmTool.FEmTool_ListOfVectors_Reverse(self)
    __swig_destroy__ = _FEmTool.delete_FEmTool_ListOfVectors

    def __len__(self):
        return self.Size()


# Register FEmTool_ListOfVectors in _FEmTool:
_FEmTool.FEmTool_ListOfVectors_swigregister(FEmTool_ListOfVectors)
class FEmTool_SeqOfLinConstr(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def begin(self):
        return _FEmTool.FEmTool_SeqOfLinConstr_begin(self)

    def end(self):
        return _FEmTool.FEmTool_SeqOfLinConstr_end(self)

    def cbegin(self):
        return _FEmTool.FEmTool_SeqOfLinConstr_cbegin(self)

    def cend(self):
        return _FEmTool.FEmTool_SeqOfLinConstr_cend(self)

    def __init__(self, *args):
        _FEmTool.FEmTool_SeqOfLinConstr_swiginit(self, _FEmTool.new_FEmTool_SeqOfLinConstr(*args))

    def Size(self):
        return _FEmTool.FEmTool_SeqOfLinConstr_Size(self)

    def Length(self):
        return _FEmTool.FEmTool_SeqOfLinConstr_Length(self)

    def Lower(self):
        return _FEmTool.FEmTool_SeqOfLinConstr_Lower(self)

    def Upper(self):
        return _FEmTool.FEmTool_SeqOfLinConstr_Upper(self)

    def IsEmpty(self):
        return _FEmTool.FEmTool_SeqOfLinConstr_IsEmpty(self)

    def Reverse(self):
        return _FEmTool.FEmTool_SeqOfLinConstr_Reverse(self)

    def Exchange(self, I, J):
        return _FEmTool.FEmTool_SeqOfLinConstr_Exchange(self, I, J)

    @staticmethod
    def delNode(theNode, theAl):
        return _FEmTool.FEmTool_SeqOfLinConstr_delNode(theNode, theAl)

    def Clear(self, theAllocator=0):
        return _FEmTool.FEmTool_SeqOfLinConstr_Clear(self, theAllocator)

    def Assign(self, theOther):
        return _FEmTool.FEmTool_SeqOfLinConstr_Assign(self, theOther)

    def Set(self, theOther):
        return _FEmTool.FEmTool_SeqOfLinConstr_Set(self, theOther)

    def Remove(self, *args):
        return _FEmTool.FEmTool_SeqOfLinConstr_Remove(self, *args)

    def Append(self, *args):
        return _FEmTool.FEmTool_SeqOfLinConstr_Append(self, *args)

    def Prepend(self, *args):
        return _FEmTool.FEmTool_SeqOfLinConstr_Prepend(self, *args)

    def InsertBefore(self, *args):
        return _FEmTool.FEmTool_SeqOfLinConstr_InsertBefore(self, *args)

    def InsertAfter(self, *args):
        return _FEmTool.FEmTool_SeqOfLinConstr_InsertAfter(self, *args)

    def Split(self, theIndex, theSeq):
        return _FEmTool.FEmTool_SeqOfLinConstr_Split(self, theIndex, theSeq)

    def First(self):
        return _FEmTool.FEmTool_SeqOfLinConstr_First(self)

    def ChangeFirst(self):
        return _FEmTool.FEmTool_SeqOfLinConstr_ChangeFirst(self)

    def Last(self):
        return _FEmTool.FEmTool_SeqOfLinConstr_Last(self)

    def ChangeLast(self):
        return _FEmTool.FEmTool_SeqOfLinConstr_ChangeLast(self)

    def Value(self, theIndex):
        return _FEmTool.FEmTool_SeqOfLinConstr_Value(self, theIndex)

    def ChangeValue(self, theIndex):
        return _FEmTool.FEmTool_SeqOfLinConstr_ChangeValue(self, theIndex)

    def __call__(self, *args):
        return _FEmTool.FEmTool_SeqOfLinConstr___call__(self, *args)

    def SetValue(self, theIndex, theItem):
        return _FEmTool.FEmTool_SeqOfLinConstr_SetValue(self, theIndex, theItem)
    __swig_destroy__ = _FEmTool.delete_FEmTool_SeqOfLinConstr

    def __len__(self):
        return self.Size()


# Register FEmTool_SeqOfLinConstr in _FEmTool:
_FEmTool.FEmTool_SeqOfLinConstr_swigregister(FEmTool_SeqOfLinConstr)
class FEmTool_Assembly(object):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""

        Parameters
        ----------
        Dependence: TColStd_Array2OfInteger
        Table: FEmTool_HAssemblyTable

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        _FEmTool.FEmTool_Assembly_swiginit(self, _FEmTool.new_FEmTool_Assembly(*args))

    def AddConstraint(self, *args):
        r"""

        Parameters
        ----------
        IndexofConstraint: int
        Element: int
        Dimension: int
        LinearForm: math_Vector
        Value: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _FEmTool.FEmTool_Assembly_AddConstraint(self, *args)

    def AddMatrix(self, *args):
        r"""

        Parameters
        ----------
        Element: int
        Dimension1: int
        Dimension2: int
        Mat: math_Matrix

        Return
        -------
        None

        Description
        -----------
        Add an elementary matrix in the assembly matrix if dependence(dimension1,dimension2) is false.

        """
        return _FEmTool.FEmTool_Assembly_AddMatrix(self, *args)

    def AddVector(self, *args):
        r"""

        Parameters
        ----------
        Element: int
        Dimension: int
        Vec: math_Vector

        Return
        -------
        None

        Description
        -----------
        Add an elementary vector in the assembly vector (second member).

        """
        return _FEmTool.FEmTool_Assembly_AddVector(self, *args)

    def GetAssemblyTable(self, *args):
        r"""

        Parameters
        ----------
        AssTable: FEmTool_HAssemblyTable

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _FEmTool.FEmTool_Assembly_GetAssemblyTable(self, *args)

    def NbGlobVar(self, *args):
        r"""
        Return
        -------
        int

        Description
        -----------
        No available documentation.

        """
        return _FEmTool.FEmTool_Assembly_NbGlobVar(self, *args)

    def NullifyConstraint(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        Nullify all constraints.

        """
        return _FEmTool.FEmTool_Assembly_NullifyConstraint(self, *args)

    def NullifyMatrix(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        Nullify all matrix 's coefficient.

        """
        return _FEmTool.FEmTool_Assembly_NullifyMatrix(self, *args)

    def NullifyVector(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        Nullify all coordinate of assembly vector (second member).

        """
        return _FEmTool.FEmTool_Assembly_NullifyVector(self, *args)

    def ResetConstraint(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        Delete all constraints.

        """
        return _FEmTool.FEmTool_Assembly_ResetConstraint(self, *args)

    def Solution(self, *args):
        r"""

        Parameters
        ----------
        Solution: math_Vector

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _FEmTool.FEmTool_Assembly_Solution(self, *args)

    def Solve(self, *args):
        r"""
        Return
        -------
        bool

        Description
        -----------
        Solve the assembly system returns standard_false if the computation failed.

        """
        return _FEmTool.FEmTool_Assembly_Solve(self, *args)

    __repr__ = _dumps_object

    __swig_destroy__ = _FEmTool.delete_FEmTool_Assembly

# Register FEmTool_Assembly in _FEmTool:
_FEmTool.FEmTool_Assembly_swigregister(FEmTool_Assembly)
class FEmTool_Curve(OCC.Core.Standard.Standard_Transient):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""

        Parameters
        ----------
        Dimension: int
        NbElements: int
        TheBase: PLib_Base
        Tolerance: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        _FEmTool.FEmTool_Curve_swiginit(self, _FEmTool.new_FEmTool_Curve(*args))

    def Base(self, *args):
        r"""
        Return
        -------
        opencascade::handle<PLib_Base>

        Description
        -----------
        No available documentation.

        """
        return _FEmTool.FEmTool_Curve_Base(self, *args)

    def D0(self, *args):
        r"""

        Parameters
        ----------
        U: float
        Pnt: TColStd_Array1OfReal

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _FEmTool.FEmTool_Curve_D0(self, *args)

    def D1(self, *args):
        r"""

        Parameters
        ----------
        U: float
        Vec: TColStd_Array1OfReal

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _FEmTool.FEmTool_Curve_D1(self, *args)

    def D2(self, *args):
        r"""

        Parameters
        ----------
        U: float
        Vec: TColStd_Array1OfReal

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _FEmTool.FEmTool_Curve_D2(self, *args)

    def Degree(self, *args):
        r"""

        Parameters
        ----------
        IndexOfElement: int

        Return
        -------
        int

        Description
        -----------
        No available documentation.

        """
        return _FEmTool.FEmTool_Curve_Degree(self, *args)

    def Dimension(self, *args):
        r"""
        Return
        -------
        int

        Description
        -----------
        No available documentation.

        """
        return _FEmTool.FEmTool_Curve_Dimension(self, *args)

    def GetElement(self, *args):
        r"""

        Parameters
        ----------
        IndexOfElement: int
        Coeffs: TColStd_Array2OfReal

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _FEmTool.FEmTool_Curve_GetElement(self, *args)

    def GetPolynom(self, *args):
        r"""

        Parameters
        ----------
        Coeffs: TColStd_Array1OfReal

        Return
        -------
        None

        Description
        -----------
        Returns coefficients of all elements in canonical base.

        """
        return _FEmTool.FEmTool_Curve_GetPolynom(self, *args)

    def Knots(self, *args):
        r"""
        Return
        -------
        TColStd_Array1OfReal

        Description
        -----------
        No available documentation.

        """
        return _FEmTool.FEmTool_Curve_Knots(self, *args)

    def Length(self, *args):
        r"""

        Parameters
        ----------
        FirstU: float
        LastU: float

        Return
        -------
        Length: float

        Description
        -----------
        No available documentation.

        """
        return _FEmTool.FEmTool_Curve_Length(self, *args)

    def NbElements(self, *args):
        r"""
        Return
        -------
        int

        Description
        -----------
        No available documentation.

        """
        return _FEmTool.FEmTool_Curve_NbElements(self, *args)

    def ReduceDegree(self, *args):
        r"""

        Parameters
        ----------
        IndexOfElement: int
        Tol: float

        Return
        -------
        NewDegree: int
        MaxError: float

        Description
        -----------
        No available documentation.

        """
        return _FEmTool.FEmTool_Curve_ReduceDegree(self, *args)

    def SetDegree(self, *args):
        r"""

        Parameters
        ----------
        IndexOfElement: int
        Degree: int

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _FEmTool.FEmTool_Curve_SetDegree(self, *args)

    def SetElement(self, *args):
        r"""

        Parameters
        ----------
        IndexOfElement: int
        Coeffs: TColStd_Array2OfReal

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _FEmTool.FEmTool_Curve_SetElement(self, *args)


    @staticmethod
    def DownCast(t):
      return Handle_FEmTool_Curve_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _FEmTool.delete_FEmTool_Curve

# Register FEmTool_Curve in _FEmTool:
_FEmTool.FEmTool_Curve_swigregister(FEmTool_Curve)
class FEmTool_ElementaryCriterion(OCC.Core.Standard.Standard_Transient):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    def DependenceTable(self, *args):
        r"""
        Return
        -------
        opencascade::handle<TColStd_HArray2OfInteger>

        Description
        -----------
        To know if two dimension are independent.

        """
        return _FEmTool.FEmTool_ElementaryCriterion_DependenceTable(self, *args)

    def Gradient(self, *args):
        r"""

        Parameters
        ----------
        Dim: int
        G: math_Vector

        Return
        -------
        None

        Description
        -----------
        To compute the coefficients in the dimension <dim> of the j(e)'s gradient where e is the current element.

        """
        return _FEmTool.FEmTool_ElementaryCriterion_Gradient(self, *args)

    def Hessian(self, *args):
        r"""

        Parameters
        ----------
        Dim1: int
        Dim2: int
        H: math_Matrix

        Return
        -------
        None

        Description
        -----------
        To compute j(e) the coefficients of hessian matrix of j(e) which are crossed derivatives in dimensions <dim1> and <dim2>. if dependencetable(dimension1,dimension2) is false.

        """
        return _FEmTool.FEmTool_ElementaryCriterion_Hessian(self, *args)

    def Set(self, *args):
        r"""

        Parameters
        ----------
        Coeff: TColStd_HArray2OfReal

        Return
        -------
        None

        Description
        -----------
        Set the coefficient of the element (the curve).

        Parameters
        ----------
        FirstKnot: float
        LastKnot: float

        Return
        -------
        None

        Description
        -----------
        Set the definition interval of the element.

        """
        return _FEmTool.FEmTool_ElementaryCriterion_Set(self, *args)

    def Value(self, *args):
        r"""
        Return
        -------
        float

        Description
        -----------
        To compute j(e) where e is the current element.

        """
        return _FEmTool.FEmTool_ElementaryCriterion_Value(self, *args)


    @staticmethod
    def DownCast(t):
      return Handle_FEmTool_ElementaryCriterion_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _FEmTool.delete_FEmTool_ElementaryCriterion

# Register FEmTool_ElementaryCriterion in _FEmTool:
_FEmTool.FEmTool_ElementaryCriterion_swigregister(FEmTool_ElementaryCriterion)
class FEmTool_ElementsOfRefMatrix(OCC.Core.math.math_FunctionSet):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""

        Parameters
        ----------
        TheBase: PLib_Base
        DerOrder: int

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        _FEmTool.FEmTool_ElementsOfRefMatrix_swiginit(self, _FEmTool.new_FEmTool_ElementsOfRefMatrix(*args))

    __repr__ = _dumps_object

    __swig_destroy__ = _FEmTool.delete_FEmTool_ElementsOfRefMatrix

# Register FEmTool_ElementsOfRefMatrix in _FEmTool:
_FEmTool.FEmTool_ElementsOfRefMatrix_swigregister(FEmTool_ElementsOfRefMatrix)
class FEmTool_SparseMatrix(OCC.Core.Standard.Standard_Transient):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined")
    __repr__ = _swig_repr

    def ChangeValue(self, *args):
        r"""

        Parameters
        ----------
        I: int
        J: int

        Return
        -------
        float

        Description
        -----------
        No available documentation.

        """
        return _FEmTool.FEmTool_SparseMatrix_ChangeValue(self, *args)

    def ColNumber(self, *args):
        r"""
        Return
        -------
        int

        Description
        -----------
        Returns the column range of the matrix.

        """
        return _FEmTool.FEmTool_SparseMatrix_ColNumber(self, *args)

    def Decompose(self, *args):
        r"""
        Return
        -------
        bool

        Description
        -----------
        To make a factorization of <self>.

        """
        return _FEmTool.FEmTool_SparseMatrix_Decompose(self, *args)

    def Init(self, *args):
        r"""

        Parameters
        ----------
        Value: float

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _FEmTool.FEmTool_SparseMatrix_Init(self, *args)

    def Multiplied(self, *args):
        r"""

        Parameters
        ----------
        X: math_Vector
        MX: math_Vector

        Return
        -------
        None

        Description
        -----------
        Returns the product of a sparsematrix by a vector. an exception is raised if the dimensions are different.

        """
        return _FEmTool.FEmTool_SparseMatrix_Multiplied(self, *args)

    def Prepare(self, *args):
        r"""
        Return
        -------
        bool

        Description
        -----------
        Make preparation to iterative solve.

        """
        return _FEmTool.FEmTool_SparseMatrix_Prepare(self, *args)

    def RowNumber(self, *args):
        r"""
        Return
        -------
        int

        Description
        -----------
        Returns the row range of a matrix.

        """
        return _FEmTool.FEmTool_SparseMatrix_RowNumber(self, *args)

    def Solve(self, *args):
        r"""

        Parameters
        ----------
        B: math_Vector
        X: math_Vector

        Return
        -------
        None

        Description
        -----------
        Direct solve of ax = b.

        Parameters
        ----------
        B: math_Vector
        Init: math_Vector
        X: math_Vector
        Residual: math_Vector
        Tolerance: float (optional, default to 1.0e-8)
        NbIterations: int (optional, default to 50)

        Return
        -------
        None

        Description
        -----------
        Iterative solve of ax = b.

        """
        return _FEmTool.FEmTool_SparseMatrix_Solve(self, *args)


    @staticmethod
    def DownCast(t):
      return Handle_FEmTool_SparseMatrix_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _FEmTool.delete_FEmTool_SparseMatrix

# Register FEmTool_SparseMatrix in _FEmTool:
_FEmTool.FEmTool_SparseMatrix_swigregister(FEmTool_SparseMatrix)
class FEmTool_LinearFlexion(FEmTool_ElementaryCriterion):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""

        Parameters
        ----------
        WorkDegree: int
        ConstraintOrder: GeomAbs_Shape

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        _FEmTool.FEmTool_LinearFlexion_swiginit(self, _FEmTool.new_FEmTool_LinearFlexion(*args))


    @staticmethod
    def DownCast(t):
      return Handle_FEmTool_LinearFlexion_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _FEmTool.delete_FEmTool_LinearFlexion

# Register FEmTool_LinearFlexion in _FEmTool:
_FEmTool.FEmTool_LinearFlexion_swigregister(FEmTool_LinearFlexion)
class FEmTool_LinearJerk(FEmTool_ElementaryCriterion):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""

        Parameters
        ----------
        WorkDegree: int
        ConstraintOrder: GeomAbs_Shape

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        _FEmTool.FEmTool_LinearJerk_swiginit(self, _FEmTool.new_FEmTool_LinearJerk(*args))


    @staticmethod
    def DownCast(t):
      return Handle_FEmTool_LinearJerk_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _FEmTool.delete_FEmTool_LinearJerk

# Register FEmTool_LinearJerk in _FEmTool:
_FEmTool.FEmTool_LinearJerk_swigregister(FEmTool_LinearJerk)
class FEmTool_LinearTension(FEmTool_ElementaryCriterion):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""

        Parameters
        ----------
        WorkDegree: int
        ConstraintOrder: GeomAbs_Shape

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        _FEmTool.FEmTool_LinearTension_swiginit(self, _FEmTool.new_FEmTool_LinearTension(*args))


    @staticmethod
    def DownCast(t):
      return Handle_FEmTool_LinearTension_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _FEmTool.delete_FEmTool_LinearTension

# Register FEmTool_LinearTension in _FEmTool:
_FEmTool.FEmTool_LinearTension_swigregister(FEmTool_LinearTension)
class FEmTool_ProfileMatrix(FEmTool_SparseMatrix):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        r"""

        Parameters
        ----------
        FirstIndexes: TColStd_Array1OfInteger

        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        _FEmTool.FEmTool_ProfileMatrix_swiginit(self, _FEmTool.new_FEmTool_ProfileMatrix(*args))

    def GetChangeValue(self, I, J):
        r"""GetChangeValue(FEmTool_ProfileMatrix self, Standard_Integer const I, Standard_Integer const J) -> Standard_Real"""
        return _FEmTool.FEmTool_ProfileMatrix_GetChangeValue(self, I, J)

    def SetChangeValue(self, I, J, value):
        r"""SetChangeValue(FEmTool_ProfileMatrix self, Standard_Integer const I, Standard_Integer const J, Standard_Real value)"""
        return _FEmTool.FEmTool_ProfileMatrix_SetChangeValue(self, I, J, value)

    def IsInProfile(self, *args):
        r"""

        Parameters
        ----------
        i: int
        j: int

        Return
        -------
        bool

        Description
        -----------
        No available documentation.

        """
        return _FEmTool.FEmTool_ProfileMatrix_IsInProfile(self, *args)

    def OutM(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _FEmTool.FEmTool_ProfileMatrix_OutM(self, *args)

    def OutS(self, *args):
        r"""
        Return
        -------
        None

        Description
        -----------
        No available documentation.

        """
        return _FEmTool.FEmTool_ProfileMatrix_OutS(self, *args)

    def Solve(self, *args):
        r"""

        Parameters
        ----------
        B: math_Vector
        X: math_Vector

        Return
        -------
        None

        Description
        -----------
        Direct solve of ax = b.

        Parameters
        ----------
        B: math_Vector
        Init: math_Vector
        X: math_Vector
        Residual: math_Vector
        Tolerance: float (optional, default to 1.0e-8)
        NbIterations: int (optional, default to 50)

        Return
        -------
        None

        Description
        -----------
        Iterative solve of ax = b.

        """
        return _FEmTool.FEmTool_ProfileMatrix_Solve(self, *args)


    @staticmethod
    def DownCast(t):
      return Handle_FEmTool_ProfileMatrix_DownCast(t)


    __repr__ = _dumps_object

    __swig_destroy__ = _FEmTool.delete_FEmTool_ProfileMatrix

# Register FEmTool_ProfileMatrix in _FEmTool:
_FEmTool.FEmTool_ProfileMatrix_swigregister(FEmTool_ProfileMatrix)
class FEmTool_HAssemblyTable(FEmTool_AssemblyTable, OCC.Core.Standard.Standard_Transient):
    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr

    def __init__(self, *args):
        _FEmTool.FEmTool_HAssemblyTable_swiginit(self, _FEmTool.new_FEmTool_HAssemblyTable(*args))

    def Array2(self):
        return _FEmTool.FEmTool_HAssemblyTable_Array2(self)

    def ChangeArray2(self):
        return _FEmTool.FEmTool_HAssemblyTable_ChangeArray2(self)


    @staticmethod
    def DownCast(t):
      return Handle_FEmTool_HAssemblyTable_DownCast(t)

    __swig_destroy__ = _FEmTool.delete_FEmTool_HAssemblyTable

# Register FEmTool_HAssemblyTable in _FEmTool:
_FEmTool.FEmTool_HAssemblyTable_swigregister(FEmTool_HAssemblyTable)



