from abaqusConstants import *


class CohesiveBehavior:
    """The CohesiveBehaviour

    Notes
    -----
    This object can be accessed by:

    .. code-block:: python

        import interaction
        mdb.models[name].interactionProperties[name].cohesiveBehavior

    The table data for this object are:

    - If **coupling** = UNCOUPLED, the table data specify the following:
    
        - Stiffness coefficient in the normal direction, Knn.
        - Stiffness coefficient in the first shear direction, Kss.
        - Stiffness coefficient in the second shear direction, Ktt.
        - Temperature, if the data depend on temperature.
        - Value of the first field variable, if the data depend on field variables.
        - Value of the second field variable.
        - Etc.
    - If **coupling** = COUPLED, the table data specify the following:
    
        - Stiffness coefficient in the normal direction, Knn.
        - Stiffness coefficient in the first shear direction, Kss.
        - Stiffness coefficient in the second shear direction, Ktt.
        - Coupled stiffness coefficient, Kns.
        - Coupled stiffness coefficient, Knt.
        - Coupled stiffness coefficient, Kst.
        - Temperature, if the data depend on temperature.
        - Value of the first field variable, if the data depend on field variables.
        - Value of the second field variable.
        - Etc.

    The corresponding analysis keywords are:
    
    - COHESIVE BEHAVIOR
    """

    def __init__(
        self,
        repeatedContacts: Boolean = OFF,
        eligibility: SymbolicConstant = ALL_NODES,
        defaultPenalties: Boolean = ON,
        coupling: SymbolicConstant = UNCOUPLED,
        temperatureDependency: Boolean = OFF,
        dependencies: int = 0,
        table: tuple = (),
    ):
        """This method creates a CohesiveBehavior object.

        Notes
        -----
        This function can be accessed by:

        .. code-block:: python

            mdb.models[name].interactionProperties[name].CohesiveBehavior

        Parameters
        ----------
        repeatedContacts
            A Boolean specifying whether to enforce cohesive behavior for recurrent contacts at
            nodes on the secondary surface subsequent to ultimate failure. The default value is OFF.
        eligibility
            A SymbolicConstant specifying the eligible secondary nodes. Possible values are
            ALL_NODES, INITIAL_NODES, and SPECIFIED. The default value is ALL_NODES.
        defaultPenalties
            A Boolean specifying whether to use the default contact penalties. The default value is
            ON.
        coupling
            A SymbolicConstant specifying whether the traction-separation coefficients are coupled
            or uncoupled. This argument is valid only for **defaultPenalties** = OFF. Possible values
            are UNCOUPLED and COUPLED. The default value is UNCOUPLED.
        temperatureDependency
            A Boolean specifying whether the coefficient data depend on temperature. This argument
            is valid only for **defaultPenalties** = OFF. The default value is OFF.
        dependencies
            An Int specifying the number of field variables. This argument is valid only for
            **defaultPenalties** = OFF. The default value is 0.
        table
            A sequence of sequences of Floats specifying the traction-separation coefficients. The
            items in the table data are described below. This argument is valid only for
            **defaultPenalties** = OFF.

        Returns
        -------
        CohesiveBehavior
            A :py:class:`~abaqus.Interaction.CohesiveBehavior.CohesiveBehavior` object.
        """
        pass

    def setValues(self, *args, **kwargs):
        """This method modifies the CohesiveBehavior object."""
        pass
