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 users’ 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 table below classifies the modeling elements used in MotionSolve. The MotionSolve XML language names are used for various entities.
Body Elements |
Body_Point, Body_Rigid, Body_Flexible |
|||
Constraint Elements |
Time Dependent |
Motion_Joint, Motion_Marker |
||
|
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 |
Modelling 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 |
A summary of the MotionSolve modeling elements.