#ifndef PROMECHINTERFACE_H
#define PROMECHINTERFACE_H


#include <ProToolkit.h>
#include <ProObjects.h>

#include <ProMechValue.h>

PRO_BEGIN_C_DECLS

typedef enum 
{
  PRO_MECH_INTERFACE_BOND_STRUCT    = 0,
  PRO_MECH_INTERFACE_BONDED         = PRO_MECH_INTERFACE_BOND_STRUCT, /* old */
  PRO_MECH_INTERFACE_FREE_STRUCT    = 1,
  PRO_MECH_INTERFACE_FREE           = PRO_MECH_INTERFACE_FREE_STRUCT, /* old */
  PRO_MECH_INTERFACE_BOND_THERM     = 2,
  PRO_MECH_INTERFACE_FREE_THERM     = 3,
  PRO_MECH_INTERFACE_CONTACT_STRUCT = 4,
  PRO_MECH_INTERFACE_RESIST_THERM   = 5
}
ProMechInterfaceType;

typedef enum 
{
  PRO_MECH_INTERFACE_FRICTION_NONE     = PRO_VALUE_UNUSED,
  PRO_MECH_INTERFACE_FRICTION_INFINITE = 0,
  PRO_MECH_INTERFACE_FRICTION_FINITE   = 1
}
ProMechInterfaceFrictionType;

typedef enum 
{
  PRO_MECH_INTERFACE_CALC_DETAIL_STRESS_DEFAULT = PRO_VALUE_UNUSED,
  PRO_MECH_INTERFACE_CALC_DETAIL_STRESS_YES = 0,
  PRO_MECH_INTERFACE_CALC_DETAIL_STRESS_NO = 1
}
ProMechInterfaceCalcDetailStressType;

/* To access model's default interface data,
 * use ProMechItem with one of the following IDs : */
#define PRO_MECH_INTERFACE_DEFAULT_STRUCT_ID (-1)
#define PRO_MECH_INTERFACE_DEFAULT_THERM_ID (-2)

typedef struct pro_connection_prop_bond * ProMechInterfaceBondData;
typedef struct pro_connection_prop_free* ProMechInterfaceFreeData;
typedef struct pro_connection_prop_contact* ProMechInterfaceContactData;
typedef struct pro_connection_prop_thr_resist* ProMechInterfaceThrresistData;


extern ProError ProMechinterfaceReferencesGet (ProMechItem* item, ProMechGeomref** references);
/*
    Purpose: Obtains the references used by this interface. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        item - The interface.

    Output Arguments:
        references - ProArray of references. Free this using 
                     ProMechgeomrefProarrayFree().

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.
        PRO_TK_INVALID_PTR - The Input ProMechItem Solid pointer is invalid.
        PRO_TK_GENERAL_ERROR - A general error is encountered.
        PRO_TK_OUT_OF_MEMORY - There is not enough memory to perform the 
                               operation.

*/

extern ProError ProMechinterfaceReferencesSet (ProMechItem* item, ProMechGeomref* references);
/*
    Purpose: Sets the references used by this interface. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        item - The interface.
        references - ProArray of references.

    Output Arguments:
        none

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_CANT_ACCESS - Cannot access the object in the current mode.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.
        PRO_TK_CANT_MODIFY - Cannot modify the item.
        PRO_TK_GENERAL_ERROR - A general error is encountered.
        PRO_TK_INVALID_PTR - The Input ProMechItem Solid pointer is invalid.
        PRO_TK_OUT_OF_MEMORY - There is not enough memory to perform the 
                               operation.

*/

extern ProError ProMechinterfaceTypeGet (ProMechItem* item, ProMechInterfaceType* type);
/*
    Purpose: Obtains the type of the interface 
             (Bonded/Free/Contact/ThermalResistance). 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        item - The interface.

    Output Arguments:
        type - The type.

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.
        PRO_TK_INVALID_PTR - The Input ProMechItem Solid pointer is invalid.
        PRO_TK_GENERAL_ERROR - A general error is encountered.

*/

extern ProError ProMechinterfaceBonddataGet (ProMechItem* item, ProMechInterfaceBondData* data);
/*
    Purpose: Obtains the handle to bonded interface data from the object 
             handle. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        item - The interface.

    Output Arguments:
        data - The handle to the interface data. Free this using 
               ProMechinterfaceBonddataFree().

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_INVALID_TYPE - This item does not contain this type of 
                              interface.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.
        PRO_TK_INVALID_PTR - The Input ProMechItem Solid pointer is invalid.
        PRO_TK_GENERAL_ERROR - A general error is encountered.

*/

extern ProError ProMechinterfacebonddataAlloc (ProMechInterfaceBondData* data);
/*
    Purpose: Allocates the memory for a Creo Simulate bonded interface data 
             handle. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        none

    Output Arguments:
        data - The handle.

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.
        PRO_TK_OUT_OF_MEMORY - There is not enough memory to perform the 
                               operation.

*/

extern ProError ProMechinterfacebonddataFree (ProMechInterfaceBondData data);
/*
    Purpose: Frees the memory for a Creo Simulate bonded interface data handle. 
             

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        data - The handle.

    Output Arguments:
        none

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.

*/

extern ProError ProMechinterfaceBonddataSet (ProMechItem* item, ProMechInterfaceBondData data);
/*
    Purpose: Assigns bonded interface data to the interface object. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        item - The interface.
        data - handle to the interface data

    Output Arguments:
        none

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_CANT_ACCESS - Cannot access the object in the current mode.
        PRO_TK_CANT_WRITE - Subtype cannot be changed.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.
        PRO_TK_INVALID_PTR - The Input ProMechItem Solid pointer is invalid.
        PRO_TK_CANT_MODIFY - Cannot modify the item.
        PRO_TK_GENERAL_ERROR - A general error is encountered.
        PRO_TK_OUT_OF_MEMORY - There is not enough memory to perform the 
                               operation.

*/

extern ProError ProMechinterfaceFreedataGet (ProMechItem* item, ProMechInterfaceFreeData* data);
/*
    Purpose: Obtains the handle to free Interface data from the object handle. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        item - The interface.

    Output Arguments:
        data - The handle to the Free interface data. Free this using 
               ProMechinterfaceFreedataFree().

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_INVALID_TYPE - This item does not contain this type of 
                              interface.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.
        PRO_TK_INVALID_PTR - The Input ProMechItem Solid pointer is invalid.
        PRO_TK_GENERAL_ERROR - A general error is encountered.
        PRO_TK_OUT_OF_MEMORY - There is not enough memory to perform the 
                               operation.

*/

extern ProError ProMechinterfacefreedataAlloc (ProMechInterfaceFreeData* data);
/*
    Purpose: Allocates the memory for a Creo Simulate free interface data 
             handle. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        none

    Output Arguments:
        data - The handle.

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.
        PRO_TK_OUT_OF_MEMORY - There is not enough memory to perform the 
                               operation.

*/

extern ProError ProMechinterfacefreedataFree (ProMechInterfaceFreeData data);
/*
    Purpose: Frees the memory for a Creo Simulate free interface data handle. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        data - The handle.

    Output Arguments:
        none

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.

*/

extern ProError ProMechinterfaceFreedataSet (ProMechItem* item, ProMechInterfaceFreeData data);
/*
    Purpose: Assigns the free interface data to the interface object. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        item - The interface.
        data - handle to the interface data

    Output Arguments:
        none

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_CANT_ACCESS - Cannot access the object in the current mode.
        PRO_TK_CANT_WRITE - Subtype cannot be changed.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.
        PRO_TK_INVALID_PTR - The Input ProMechItem Solid pointer is invalid.
        PRO_TK_GENERAL_ERROR - A general error is encountered.
        PRO_TK_CANT_MODIFY - Cannot modify the item.

*/

extern ProError ProMechinterfaceContactdataGet (ProMechItem* item, ProMechInterfaceContactData* data);
/*
    Purpose: Obtains the handle to contact interface data from the object 
             handle. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        item - The interface.

    Output Arguments:
        data - The handle to the interface data. Free this using 
               ProMechinterfaceContactdataFree().

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_INVALID_TYPE - This item does not contain this type of 
                              interface.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.
        PRO_TK_INVALID_PTR - The Input ProMechItem Solid pointer is invalid.
        PRO_TK_GENERAL_ERROR - A general error is encountered.
        PRO_TK_OUT_OF_MEMORY - There is not enough memory to perform the 
                               operation.

*/

extern ProError ProMechinterfacecontactdataAlloc (ProMechInterfaceContactData* data);
/*
    Purpose: Allocates the memory for a Creo Simulate contact interface data 
             handle. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        none

    Output Arguments:
        data - The handle.

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.
        PRO_TK_OUT_OF_MEMORY - There is not enough memory to perform the 
                               operation.

*/

extern ProError ProMechinterfacecontactdataFree (ProMechInterfaceContactData data);
/*
    Purpose: Frees the memory for a Creo Simulate contact interface data 
             handle. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        data - The handle.

    Output Arguments:
        none

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.

*/

extern ProError ProMechinterfaceContactdataSet (ProMechItem* item, ProMechInterfaceContactData data);
/*
    Purpose: Assigns the contact interface data to the interface object. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        item - The interface.
        data - handle to the interface data

    Output Arguments:
        none

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_CANT_ACCESS - Cannot access the object in the current mode.
        PRO_TK_CANT_WRITE - Subtype cannot be changed.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.
        PRO_TK_OUT_OF_MEMORY - There is not enough memory to perform the 
                               operation.
        PRO_TK_GENERAL_ERROR - A general error is encountered.
        PRO_TK_CANT_MODIFY - Cannot modify the item.

*/

extern ProError ProMechinterfaceThrresistdataGet (ProMechItem* item, ProMechInterfaceThrresistData* data);
/*
    Purpose: Obtains the handle to the thermal resistance interface data from 
             the object handle. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        item - The interface.

    Output Arguments:
        data - The handle to the interface data. Free this using 
               ProMechinterfaceThrresistdataFree().

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_INVALID_TYPE - This item does not contain this type of 
                              interface.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.
        PRO_TK_INVALID_PTR - The Input ProMechItem Solid pointer is invalid.
        PRO_TK_GENERAL_ERROR - A general error is encountered.

*/

extern ProError ProMechinterfacethrresistdataAlloc (ProMechInterfaceThrresistData* data);
/*
    Purpose: Allocates the memory for a Creo Simulate thermal resistance 
             interface data handle. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        none

    Output Arguments:
        data - The handle.

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.
        PRO_TK_OUT_OF_MEMORY - There is not enough memory to perform the 
                               operation.

*/

extern ProError ProMechinterfacethrresistdataFree (ProMechInterfaceThrresistData data);
/*
    Purpose: Frees the memory for a Creo Simulate thermal resistance interface 
             data handle. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        data - The handle.

    Output Arguments:
        none

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.

*/

extern ProError ProMechinterfaceThrresistdataSet (ProMechItem* item, ProMechInterfaceThrresistData data);
/*
    Purpose: Assigns the thermal resistance interface data to the interface 
             object. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        item - The interface.
        data - The handle to the interface data

    Output Arguments:
        none

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_CANT_ACCESS - Cannot access the object in the current mode.
        PRO_TK_CANT_WRITE - Subtype cannot be changed.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.
        PRO_TK_CANT_MODIFY - Cannot modify the item.
        PRO_TK_GENERAL_ERROR - A general error is encountered.
        PRO_TK_INVALID_PTR - The Input ProMechItem Solid pointer is invalid.

*/

extern ProError ProMechbondinterfacedataMergenodesGet (ProMechInterfaceBondData data, ProBoolean* merge_nodes);
/*
    Purpose: Obtains whether or not this bonded interface should merge 
             coincident nodes. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        data - The interface data.

    Output Arguments:
        merge_nodes - PRO_B_TRUE to merge nodes, PRO_B_FALSE otherwise.

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.

*/

extern ProError ProMechbondinterfacedataMergenodesSet (ProMechInterfaceBondData data, ProBoolean merge_nodes);
/*
    Purpose: Assigns whether or not this bonded interface should merge 
             coincident nodes. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        data - The interface data.
        merge_nodes - PRO_B_TRUE to merge nodes, PRO_B_FALSE otherwise.

    Output Arguments:
        none

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.

*/

extern ProError ProMechfreeinterfacedataSplitsurfacesGet (ProMechInterfaceFreeData data, ProBoolean* split_srf);
/*
    Purpose: Obtains whether or not this free interface should split surfaces. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        data - The interface data.

    Output Arguments:
        split_srf - PRO_B_TRUE to split surfaces, PRO_B_FALSE otherwise.

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.

*/

extern ProError ProMechfreeinterfacedataSplitsurfacesSet (ProMechInterfaceFreeData data, ProBoolean split_srf);
/*
    Purpose: Sets whether or not this free interface should split surfaces. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        data - The interface data.
        split_srf - PRO_B_TRUE to split surfaces, PRO_B_FALSE otherwise.

    Output Arguments:
        none

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.

*/

extern ProError ProMechcontactinterfacedataSplitsurfacesGet (ProMechInterfaceContactData data, ProBoolean* split_srf);
/*
    Purpose: Obtains whether or not this contact interface should split 
             surfaces. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        data - The interface data.

    Output Arguments:
        split_srf - PRO_B_TRUE to split surfaces, PRO_B_FALSE otherwise.

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.

*/

extern ProError ProMechcontactinterfacedataSplitsurfacesSet (ProMechInterfaceContactData data, ProBoolean split_srf);
/*
    Purpose: Sets whether or not this contact interface should split surfaces. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        data - The interface data.
        split_srf - PRO_B_TRUE to split surfaces, PRO_B_FALSE otherwise.

    Output Arguments:
        none

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.

*/

extern ProError ProMechcontactinterfacedataCompatiblemeshGet (ProMechInterfaceContactData data, ProBoolean* compatible_mesh);
/*
    Purpose: Obtains whether or not this contact interface should create 
             compatible mesh. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        data - The interface data.

    Output Arguments:
        compatible_mesh - PRO_B_TRUE for compatible meshes, PRO_B_FALSE 
                          otherwise.

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.

*/

extern ProError ProMechcontactinterfacedataCompatiblemeshSet (ProMechInterfaceContactData data, ProBoolean compatible_mesh);
/*
    Purpose: Sets whether or not this contact interface should create 
             compatible mesh. Setting this attribute also sets "split surfaces" 
             attribute. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        data - The interface data.
        compatible_mesh - PRO_B_TRUE for compatible meshes, PRO_B_FALSE 
                          otherwise.

    Output Arguments:
        none

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.

*/


extern ProError ProMechcontactinterfacedataFrictionGet (ProMechInterfaceContactData data, ProMechInterfaceFrictionType * friction_type);
/*
    Purpose: Obtains the type of Friction at the contact interface 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        data - The interface data.

    Output Arguments:
        friction_type - ProMechInterfaceFrictionType

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.

*/


extern ProError ProMechcontactinterfacedataFrictionSet (ProMechInterfaceContactData data, ProMechInterfaceFrictionType friction_type);
/*
    Purpose: Sets the type of Friction at the contact interface 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        data - The interface data.
        friction_type - ProMechInterfaceFrictionType

    Output Arguments:
        none

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.

*/

extern ProError ProMechcontactinterfacedataSlippageGet (ProMechInterfaceContactData data, ProBoolean * slippage);
/*
    Purpose: Obtains whether or not this contact interface should check for 
             slippage between pairs of nodes. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        data - The interface data.

    Output Arguments:
        slippage - PRO_B_TRUE to check for slippage, PRO_B_FALSE otherwise.

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_INVALID_TYPE - This item does not contain this type of 
                              interface.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.

*/

extern ProError ProMechcontactinterfacedataSlippageSet (ProMechInterfaceContactData data, ProBoolean slippage);
/*
    Purpose: Sets the flag whether or not this contact interface should check 
             for slippage between pairs of nodes. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        data - The interface data.
        slippage - PRO_B_TRUE to check for slippage, PRO_B_FALSE otherwise.

    Output Arguments:
        none

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.
        PRO_TK_CANT_WRITE - Subtype cannot be changed.

*/

extern ProError ProMechcontactinterfacedataCoefffrictionGet (ProMechInterfaceContactData data, ProMechExpression coeff_friction);
/*
    Purpose: Obtains the coefficient of friction for this contact type 
             interface. Use ProMathExpressionEvaluate() to evaluate it. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        data - The interface data.

    Output Arguments:
        coeff_friction - The coefficient of friction.

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_INVALID_TYPE - This item does not contain this type of 
                              interface.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.

*/

extern ProError ProMechcontactinterfacedataDynamicCoefffrictionGet (ProMechInterfaceContactData data, ProMechExpression dyn_coeff_friction);
/*
    Purpose: Obtains the dynamic coefficient of friction for this contact type 
             interface. Use ProMathExpressionEvaluate() to evaluate it. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        data - The interface data.

    Output Arguments:
        dyn_coeff_friction - The dynamic coefficient of friction.

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_INVALID_TYPE - This item does not contain this type of 
                              interface.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.

*/

extern ProError ProMechcontactinterfacedataCoefffrictionSet (ProMechInterfaceContactData data, ProMechExpression coeff_friction);
/*
    Purpose: Sets the coefficient of friction for this contact type interface. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        data - The interface data.
        coeff_friction - The coefficient of friction.

    Output Arguments:
        none

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.
        PRO_TK_CANT_WRITE - Subtype cannot be changed.

*/

extern ProError ProMechcontactinterfacedataDynamicCoefffrictionSet (ProMechInterfaceContactData data, ProMechExpression dyn_coeff_friction);
/*
    Purpose: Sets the dynamic coefficient of friction for this contact type 
             interface. The value being set should be less than or equal to the 
             value of static coefficient of friction for this interface. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        data - The interface data.
        dyn_coeff_friction - The dynamic coefficient of friction.

    Output Arguments:
        none

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.
        PRO_TK_CANT_WRITE - Subtype cannot be changed.

*/

extern ProError ProMechcontactinterfacedataDynamicCoeffSameAsStaticGet (ProMechInterfaceContactData data, ProBoolean * same_as_static);
/*
    Purpose: Obtains whether or not the dynamic coefficient of friction is same 
             as the static coefficient of friction. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        data - The interface data.

    Output Arguments:
        same_as_static - PRO_B_TRUE if the dynamic coefficient of friction is 
                         same as static coefficient of friction else 
                         PRO_B_FALSE

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_INVALID_TYPE - This item does not contain this type of 
                              interface.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.

*/

extern ProError ProMechcontactinterfacedataDynamicCoeffSameAsStaticSet (ProMechInterfaceContactData data, ProBoolean same_as_static);
/*
    Purpose: Sets whether or not the dynamic coefficient of friction is same as 
             the static coefficient of friction. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        data - The interface data.
        same_as_static - PRO_B_TRUE if the dynamic coefficient of friction is 
                         same as static coefficient of friction PRO_B_FALSE 
                         otherwise.

    Output Arguments:
        none

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.
        PRO_TK_CANT_WRITE - Subtype cannot be changed.

*/

extern ProError ProMechcontactinterfacedataUseSelectionFilterTolGet (ProMechInterfaceContactData data, ProBoolean * use_sel_filter_tol);
/*
    Purpose: Obtains whether or not this contact interface should use the 
             selection filter tolerances between contact surfaces 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        data - The interface data.

    Output Arguments:
        use_sel_filter_tol - PRO_B_TRUE if Use Selection Filter Tolerances is 
                             ON PRO_B_FALSE otherwise

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.

*/

extern ProError ProMechcontactinterfacedataUseSelectionFilterTolSet (ProMechInterfaceContactData data, ProBoolean use_sel_filter_tol);
/*
    Purpose: Obtains whether or not this contact interface should use the 
             selection filter tolerances between contact surfaces 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        data - The interface data.
        use_sel_filter_tol - PRO_B_TRUE if Use Selection Filter Tolerances is 
                             ON PRO_B_FALSE otherwise

    Output Arguments:
        none

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.

*/

extern ProError ProMechcontactinterfacedataSeparationdistanceGet (ProMechInterfaceContactData data, double* sep_dist);
/*
    Purpose: <B>Note</B>: This function is deprecated. Use 
             ProMechcontactinterfacedataSeparationdistanceExprGet() instead. 
             <p> Obtains the separation distance for selection filter tolerance 
             for creating contacts between surfaces in a component-component 
             type interface. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        data - The interface data.

    Output Arguments:
        sep_dist - The Separation distance.

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.

*/

extern ProError ProMechcontactinterfacedataSeparationdistanceExprGet (ProMechInterfaceContactData data, ProMechExpression sep_dist);
/*
    Purpose: Obtains the separation distance for selection filter tolerance for 
             creating contacts between surfaces in a component-component type 
             interface. Use ProMathExpressionEvaluate() to evaluate it. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        data - The interface data.

    Output Arguments:
        sep_dist - The Separation distance.

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.

*/

extern ProError ProMechcontactinterfacedataSeparationdistanceSet (ProMechInterfaceContactData data, double sep_dist);
/*
    Purpose: <B>Note</B>: This function is deprecated. Use 
             ProMechcontactinterfacedataSeparationdistanceExprSet() instead. 
             <p> Sets the separation distance for selection filter tolerance 
             while creating runtime contacts between surfaces in a 
             component-component type interface. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        data - The interface data.
        sep_dist - The Separation distance.

    Output Arguments:
        none

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.

*/

extern ProError ProMechcontactinterfacedataSeparationdistanceExprSet (ProMechInterfaceContactData data, ProMechExpression sep_dist);
/*
    Purpose: Sets the separation distance for selection filter tolerance while 
             creating runtime contacts between surfaces in a 
             component-component type interface. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        data - The interface data.
        sep_dist - The Separation distance.

    Output Arguments:
        none

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.

*/

extern ProError ProMechcontactinterfacedataAnglebetweensurfacesGet (ProMechInterfaceContactData data, double* angle);
/*
    Purpose: <B>Note</B>: This function is deprecated. Use 
             ProMechcontactinterfacedataAnglebetweensurfacesExprGet() instead. 
             <p> Obtains the angle between surfaces for selection filter 
             tolerance while creating runtime contacts between surfaces in a 
             component-component type interface. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        data - The interface data.

    Output Arguments:
        angle - The angle in degrees.

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.

*/

extern ProError ProMechcontactinterfacedataAnglebetweensurfacesExprGet (ProMechInterfaceContactData data, ProMechExpression angle);
/*
    Purpose: Obtains the angle between surfaces for selection filter tolerance 
             while creating runtime contacts between surfaces in a 
             component-component type interface. Use 
             ProMathExpressionEvaluate() to evaluate it. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        data - The interface data.

    Output Arguments:
        angle - The angle in degrees.

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.

*/

extern ProError ProMechcontactinterfacedataAnglebetweensurfacesSet (ProMechInterfaceContactData data, double angle);
/*
    Purpose: <B>Note</B>: This function is deprecated. Use 
             ProMechcontactinterfacedataAnglebetweensurfacesExprSet() instead. 
             <p> Sets the angle between surfaces for selection filter tolerance 
             while creating contacts between surfaces in a component-component 
             type interface. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        data - The interface data.
        angle - The angle in degrees.

    Output Arguments:
        none

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.

*/

extern ProError ProMechcontactinterfacedataAnglebetweensurfacesExprSet (ProMechInterfaceContactData data, ProMechExpression angle);
/*
    Purpose: Sets the angle between surfaces for selection filter tolerance 
             while creating contacts between surfaces in a component-component 
             type interface. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        data - The interface data.
        angle - The angle in degrees.

    Output Arguments:
        none

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.

*/

extern ProError ProMechcontactinterfacedataCheckonlyplanarGet (ProMechInterfaceContactData data, ProBoolean* planar_only);
/*
    Purpose: Obtains whether to check for contact between planar surfaces only, 
             for selection filter tolerance while creating runtime contacts 
             between surfaces in a component-component type interface. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        data - The interface data.

    Output Arguments:
        planar_only - PRO_B_TRUE to check for planar surface only, PRO_B_FALSE 
                      otherwise.

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.

*/

extern ProError ProMechcontactinterfacedataCheckonlyplanarSet (ProMechInterfaceContactData data, ProBoolean planar_only);
/*
    Purpose: Sets whether to check for contact between planar surfaces only, 
             for selection filter tolerance for creating contacts between 
             surfaces in a component-component type interface. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        data - The interface data.
        planar_only - PRO_B_TRUE to check for planar surface only, PRO_B_FALSE 
                      otherwise.

    Output Arguments:
        none

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.

*/

extern ProError ProMechthrresistinterfacedataConductivityGet (ProMechInterfaceThrresistData data, ProMechExpression conductivity);
/*
    Purpose: Obtains the conductivity for the thermal resistance type 
             interface. Use ProMathExpressionEvaluate() to evaluate it. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        data - The interface data.

    Output Arguments:
        conductivity - The conductivity.

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.

*/

extern ProError ProMechthrresistinterfacedataConductivitySet (ProMechInterfaceThrresistData data, ProMechExpression conductivity);
/*
    Purpose: Sets the conductivity for the thermal resistance type interface. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        data - The interface data.
        conductivity - The conductivity.

    Output Arguments:
        none

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.

*/

extern ProError ProMechinterfaceCompatiblemeshGet (ProMechItem* item, ProBoolean* compatible_mesh);
/*
    Purpose: <B>Note:</B> From release Wildfire 4.0 this function is superseded 
             by ProMechinterfaceFreedataGet(). PTC recommends using the new 
             function in place of this function in all new or updated user 
             applications. 
             <P>Obtains whether or not this Free interface should create 
             compatible mesh (split surfaces). 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        item - The interface.

    Output Arguments:
        compatible_mesh - the flag for compatible meshes.

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_INVALID_TYPE - This item does not contain this type of 
                              interface.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.
        PRO_TK_INVALID_PTR - The Input ProMechItem Solid pointer is invalid.
        PRO_TK_GENERAL_ERROR - A general error is encountered.

*/

extern ProError ProMechinterfaceUselinksGet (ProMechItem* item, ProBoolean* use_links);
/*
    Purpose: <B>Note:</B> From release Wildfire 4.0 this function is superseded 
             by ProMechinterfaceBonddataGet(). PTC recommends using the new 
             function in place of this function in all new or updated user 
             applications. 
             <P>Obtains whether or not this Bonded interface should use links. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        item - The interface.

    Output Arguments:
        use_links - the flag for use links.

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_INVALID_TYPE - This item does not contain this type of 
                              interface.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.
        PRO_TK_INVALID_PTR - The Input ProMechItem Solid pointer is invalid.
        PRO_TK_GENERAL_ERROR - A general error is encountered.

*/

extern ProError ProMechinterfaceDefaultGet (ProSolid owner, ProMechInterfaceType* default_type);
/*
    Purpose: <B>Note:</B> From release Wildfire 4.0 this function is superseded 
             by ProMechinterfaceTypeGet() using a ProMechitem with the 
             appropriate special id. PTC recommends using the new function in 
             place of this function in all new or updated user applications. 
             <P>Obtains the default interface connecton type. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        owner - The solid model.

    Output Arguments:
        default_type - The default type.

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.
        PRO_TK_INVALID_PTR - The Input ProMechItem Solid pointer is invalid.
        PRO_TK_GENERAL_ERROR - A general error is encountered.

*/

extern ProError ProMechinterfaceDefaultUselinksGet (ProSolid owner, ProBoolean* use_links);
/*
    Purpose: <B>Note:</B> From release Wildfire 4.0 this function is superseded 
             by ProMechinterfaceBonddataGet() using a ProMechitem with the 
             appropriate special id. PTC recommends using the new function in 
             place of this function in all new or updated user applications. 
             <P>Obtains whether or not Bonded default interface should use 
             links. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        owner - The solid model.

    Output Arguments:
        use_links - the flag for use links.

    Return Values:
        PRO_TK_NO_ERROR - The function succeeded.
        PRO_TK_BAD_INPUTS - One or more input arguments are invalid.
        PRO_TK_INVALID_TYPE - This item does not contain this type of 
                              interface.
        PRO_TK_BAD_CONTEXT - The Creo Simulate session is not initialized.
        PRO_TK_INVALID_PTR - The Input ProMechItem Solid pointer is invalid.
        PRO_TK_GENERAL_ERROR - A general error is encountered.

*/

PRO_END_C_DECLS

#endif /* PROMECHINTERFACE_H */