Model Mechanical Systems

A mechanical system can be thought of as being composed of a set of basic mechanical entities that interact with each other by exchanging energy or information in well-defined ways. For example, a simple pendulum system is composed of a rigid body connected to the ground by a revolute joint. MotionSolve provides physics-based, mathematical models of such entities and ways to assemble them into realistic models of complex mechanical systems. It then lets you simulate your models to gain insight into their behavior.

The basic set of mechanical entities in MotionSolve consists of the following eight types of modeling elements:
Mass and inertia elements
Those entities that are characterized by mass and inertia properties. These entities have volume and therefore a spatial extent associated with them.
Constraints
These elements restrict the behavior of the mass and inertia bearing elements. Constraints are mathematically represented by algebraic equations. The overall system is required to satisfy these equations. Idealized connections between mass and inertia bearing elements are modeled as constraints.
Forces
These elements apply forces to the mass and inertia bearing elements. The forces may arise from flexible connections such as springs, dampers, and bushings between the bodies. They may also be used to represent environmental forces, control forces, and contact.
Sensors
These elements are used to define events of interest in a simulation and user's response to the events.
Controllers
These elements are used to represent control laws and controller logic in mechanical systems.
Reference
These elements are used to create specific property sets that are then used by other elements. A coordinate system called Reference_Marker is one such entity.
Post
These elements usually do not directly affect the simulation. They cause the solver to write information into output files for post-processing.
User-subroutines
MotionSolve has an open architecture design, allowing it to be inherently user extensible. User-subroutines may be used to create many different kinds of user-defined constraints, forces, sensors, controllers, and so on. User-subroutines may be written in FORTRAN, C, or C++. They are required to be compiled and linked into a DLL (dynamically linked library) or shared library that the solver automatically loads during a simulation. It then makes calls to specific functions in the DLL as needed.

These elements are building blocks that you can combine to model a variety of mechanical systems. Subsequent topics provide an overview of each of these elements. For working examples, see the MotionSolve tutorials.

The tables below classify the modeling elements used in MotionSolve. The MotionSolve XML language names are used for various entities.
Element Type
Description
Body Elements
Body_Point, Body_Rigid, Body_Flexible
Constraint Elements - Time Dependent
Motion_Joint, Motion_Marker
Constraint Elements - Time Independent
Joint and Constraint Primitives
Constant_Velocity, Cylindrical, Fixed, Free, Inline, Inplane, Orientation, Parallel_Axes, Perpendicular, Planar, Rack_Pinion, Revolute, Screw, Spherical, Translational, Universal
Higher Pair and Other Constraints
Constraint_Coupler, Constraint_Gear, Constraint_Mate, Constraint_UserConstr, Constraint_PTCV, Constraint_PTdCV, Constraint_PTSF, Constraint_PTdSF, Constraint_CVCV, Constraint_CVSF, Constraint_SFSF, Constraint_General
Force Elements
Force_Beam , Force_Bushing, Force_Contact, Force_Field, Force_FlexModal, Force_Gravity, Force_JointFriction, Force_MultiPoint, Force_PTDSF, Force_Penalty, Force_Scalar_TwoBody, Force_StateEqn, Force_SpringDamper, Force_Vector_OneBody, Force_Vector_TwoBody
Sensor Elements
Sensor_Event, Sensor_Evaluate, Sensor_Proximity
Controller Elements
Control_Diff, Control_PlantInput, Control_PlantOutput, Control_SISO, Control_StateEqn
Reference Elements
Reference_2DCluster, Reference_Array, Reference_DeformCurve, Reference_DeformSurface, Reference_FlexData, Reference_Marker, Reference_Matrix, Reference_ParamCurve, Reference_ParamSurface, Reference_Spline, Reference_String, Reference_Variable
Post-processing Elements
Post_Request, Post_Graphic, Post_UserAPI
Other Elements
JointInitialvel_Cyl, JointInitialvel_Rev, JointInitialvel_Trans
User Subroutines
Modeling Subroutines
ARYSUB, CFFSUB, CNFSUB, COUSUB, COUXX, COUXX2, CURSUB, DIFSUB, DMPSUB, FIESUB, GCOSUB, GFOSUB, GSESUB, GSEXU, GSEXX, GSEYX, GSEYU, MARKER_READ, MATRIX_READ, MESSAGE_SUB, MOTSUB, POST_SUB, PTDSFSUB, RELSUB, REQSUB, SAVSUB, SENSUB, SEVSUB, SFOSUB, SPLINE_READ, STRING_READ, SURSUB, TUNSUB, UCOSUB, VARSUB, VFOSUB, VTOSUB, YFOSUB
Driver Subroutines
CONSUB
Utility Subroutines
Analysis Control Subroutines
ANALYS, DATOUT, MODIFY
Data Access Subroutines
ADD_MASS_PROPERTY, AKISPL, BODY_MASS_PROPERTY, CUBSPL, CUSFNC, ERRMES, FITSPL, FMIN_SLSQP, GET_FULL_MATRIX_DATA, GET_GRAVITY, GET_MATRIX_INFO, GET_POST_STATES, GET_SPARSE_MATRIX_DATA, GET_STEP_INFO, GETCPU, GETIDLIST, GETINM, GETINT, GETMOD, GETSLV, GETSTM, GETVER, GTARAY, GTCURV, GTINAM, GTONAM, GTSTRG, GTUNTS, MODFNC, MODINF, MODSET, NMODES, QUISPL, RELOAD_MODEL, RELPAR, SAVE_MODEL, SAVPAR, SET_ATTRIBUTE, SET_DAE_ERROR, SET_DAE_HMAX, SET_DISCRETE_INTERFACE, SET_GSE_ALGEBRAIC_EQN, SET_GSE_NONZERO_ENTRY, SUBTRACT_MASS_PROPERTY, SYSARY, SYSFNC, TIMGET, USRMES
Setup Subroutines
PUT_MARKER, PUT_SPLINE, UCOMAR, UCOVAR
General Subroutines
BISTOP, CHEBY, FORCOS, FORSIN, HAVSIN, IMPACT, ISTRNG, POLY, RCNVRT, RSTRNG, SHF, STEP, STEP5, STR2DBLARY, STR2INTARY, SWEEP, TCNVRT