# Constraint: User

Model ElementThe Constraint_UserConstr element is used to specify a user defined constraint. Your constraint equations may involve the configuration as well as velocity of the system.

## Description

Although MotionSolve provides a large set of constraints to choose from (see Constraint_Joint), there are situations that require non-standard constraints. For example, the constraint that a wheel rolls without slipping is a non-holonomic constraint that can be modeled using the Constraint_UserConstr element.

## Format

< Constraint_UserConstr
id                    =  "integer"
[ label                 =  "string" ]
usrsub_dll_name       =  "valid_path_name"
usrsub_param_string   = "USER([[par_1[,...][,par_n]])"
[ usrsub_fnc_name       =  "custom_fnc_name" > ]
|
script_name          = "valid_path_name"
interpreter          = "PYTHON" | "MATLAB"
usrsub_param_string  = "USER([[par_1[,...][,par_n]])"
[ usrsub_fnc_name      =  "custom_fnc_name" > ]
}
</Constraint_UserConstr>

## Attributes

id
Element identification number, (integer>0). This number is unique among all Constraint_UserConstr elements.
label
The name of the Constraint_UserConstr element.
usrsub_dll_name
Specifies the path and name of the DLL or shared library containing a user subroutine. MotionSolve uses this information to load the user subroutine in the DLL at run time.
usrsub_param_string
The list of parameters that are passed from the data file to the user defined subroutine, UCOSUB. This attribute is common to all types of user subroutines and scripts.
usrsub_fnc_name
Specifies an alternative name for the user subroutine UCOSUB.
script_name
Specifies the path and name of the user written script that contains the routine specified by usrsub_fnc_name.
interpreter
Specifies the interpreted language that the user script is written in. Valid choices are MATLAB or PYTHON.