*SetCoupler() - asymmetric coupler pair with user subroutine
Sets the properties of an asymmetric coupler pair with a user subroutine.
Syntax
*SetCoupler(coupler_name, , USER,`left_expr`, `right_expr`)
*SetLocalUserDLLFlag(coupler_name.l,TRUE|FALSE)
*SetLocalUserDLLFlag(coupler_name.r,TRUE|FALSE)
*SetLocalUserDLL(coupler_name.l,"string")
*SetLocalUserDLL(coupler_name.r,"string")
*SetLocalUserFuncname(coupler_name.l,"functionname")
*SetLocalUserFuncname(coupler_name.r,"functionname")
Arguments
- coupler_name
- The variable name of the coupler pair.
- USER
- Indicates the user-written subroutine used to model the coupler pair.
- left expr
- The solver expression that sets the arguments for the left side of the user defined coupler pair.
- right expr
- The solver expression that sets the arguments for the right side of the user defined coupler pair.
Example
*BeginMDL(the_model, "Model", "11.0.0.130-HWDesktop")
*BodyPair(b_0, "Body 0", p_0, , , , , false, false)
*PointPair(p_0, "Point 0")
*SetPoint(p_0, LEFT, , -50)
*SetBodyInertia(b_0, LEFT)
*Set(b_0.usecm, true)
*SetOrientation(b_0.cm.l, TWOAXES, ZX, DXDYDZ, , , , DXDYDZ)
*PointPair(p_1, "Point 1" )
*SetPoint(p_1, LEFT, 50, -50)
*BodyPair(b_1, "Body 1", p_1, , , , , false, false)
*Set(b_1.usecm, true)
*RevJointPair(j_0, "Joint 0", b_0, B_Ground, p_0, VECTOR, V_Global_Y)
*TransJointPair(j_1, "Joint 1", b_1, B_Ground, p_1, POINT, p_0)
*CouplerPair(c_0, "Coupler 0", 2JOINT, j_0, j_1, TRANS, TRANS)
*SetCoupler(c_0, LEFT)
*SetCoupler(c_0, , -5 , -5)
*SetCoupler(c_0, , USER, `USER(500)` , `USER(500)`)
*SetLocalUserDLLFlag(c_0.l, true)
*SetLocalUserFunction(c_0.l, PYTHON)
*SetLocalUserDLL(c_0.l, mycoupler.py)
*SetLocalUserDLLFlag(c_0.r, true)
*SetLocalUserFunction(c_0.r, PYTHON)
*SetLocalUserDLL(c_0.r, "mycoupler.py")
*SetLocalUserFuncname(c_0.l, "COUSUB1")
*SetLocalUserFuncname(c_0.r, "COUSUB2")
*Set(c_0.l.local_der1_funcname, COUXX)
*Set(c_0.1.local_der2_funcname, COUXX2)
*Set(c_0.r.local_der1_funcname, COUXX)
*Set(c_0.r.local_der2_funcname, COUXX2)
*EndMDL()
Context
Comments
User-defined couplers are generally accompanied with *SetLocalUserDLLFlag, *SetLocalUserDLL, *SetLocalUserFunction, and *SetLocalUserFuncname statements to specify the local subroutines used by the coupler.
The first and second order derivative subroutines can be set using the *Set statement (as shown in the example above).