The SFORCE statement applies a single-component force or a torque to one or both of the parts it connects.
Format
Arguments
ACTIONONLY | Indicates that you are describing an action-only force rather than an action-reaction force. Adams Solver (C++) applies no reaction at the J marker. |
| Specifies an expression or defines and passes constants to a user-written subroutine to define the single-component force. To define the force with an expression, follow FUNCTION with an equal sign and the expression. To define the force with a user-written subroutine, follow FUNCTION with an equal sign, the character string USER, and the values (r1[,...,r30]) that Adams Solver (C++) is to pass to the user-written evaluation subroutine SFOSUB. If the FUNCTION argument is used, it must either be the last argument in the SFORCE statement or be followed by a backslash (\). |
I=id, J=id | Specifies the identifiers of two markers necessary to define the force. If SFORCE defines a translational action-reaction force, I and J specify the identifiers of the two markers between which you want to exert the force. Adams Solver (C++) applies the translational action-reaction force along the line of action defined by the line segment connecting I and J. If SFORCE defines an action-only force, I specifies the point of application, and the z-axis of J specifies the direction of the force. If SFORCE defines a torque, the z-axis of the J marker specifies the axis of rotation. In the case of action-reaction torques, the z-axis of the J marker must be parallel to, and pointed in the same direction as, the z-axis of the I marker. Note: You can use the same marker for both the I and J markers when you are specifying an action-only SFORCE. For example, you would do this when specifying rocket thrust forces. |
ROTATION | Designates a rotational force, that is, a torque. For an action-reaction torque, the z-axes of the I and the J markers must be parallel and must point in the same direction. Adams Solver (C++) applies a torque about each z-axis. By definition, the right-hand rule defines a positive torque. |
ROUTINE=libname::subname | Specifies an alternative library and name for the user subroutine SFOSUB. Learn more about the ROUTINE Argument. |
TRANSLATION | Designates a translational force. Adams Solver (C++) applies the translational force between the I and the J markers. |
Extended Definition
The SFORCE statement applies a force or torque to two parts. You specify a marker on each part for force or torque application. The magnitude of the force may be defined as a function of any combination of displacements, velocities, other applied forces, user-defined variables, and time. An SFORCE statement can apply action-reaction forces or can apply action-only forces.
For translational action-reaction forces, Adams Solver (C++) applies an action and reaction force along the line connecting the I and the J markers. The force exerted on I is directed from J toward I, while the force exerted on J is directed from I toward J. The magnitude of each is specified in the FUNCTION argument.
For translational action-only forces, Adams Solver (C++) applies the force on the I marker only. There is no reaction on the J marker. The force on the I marker is directed along a vector parallel to and co-directed with the z-axis of the J marker.
For rotational action-reaction forces, Adams Solver (C++) applies an action torque on the I marker about the z-axes of the I marker and a reaction torque on the J marker about the z-axis of the J marker. Furthermore, Adams Solver (C++) assumes that the z-axes of the I and the J markers are parallel.
For rotational action-only forces, Adams Solver (C++) applies the torque on the I marker only. There is no reaction on the J marker. The torque on the I marker is applied about a vector parallel to and co-directed with the z-axis of the J marker.
You write a function expression or a user-written subroutine (SFOSUB) to define the constitutive equation for the force applied at the I marker. Adams Solver (C++) evaluates the reaction forces at the J marker.
Tip: | ■When an SFORCE statement defines a translational action-reaction force, Adams Solver (C++) applies a translational force along the line connecting the I and the J markers. But when an SFORCE statement defines a translational action-only force, Adams applies the force to the I marker in the J marker z-axis direction. ■For action-reaction translational forces in Adams, a positive force (that is, positive value of the FUNCTION argument) between two markers causes them to repel each other and a negative force causes them to attract each other. |
Caution: | For rotational action-reaction SFORCEs, the z-axes of the I and the J markers must be parallel and pointed in the same direction. If they are not, the results are unpredictable and may differ between the Adams Solver (C++) and Adams Solver (FORTRAN). |
Examples
SFORCE/0104, I=0409, J=0109, TRANSLATION
, FUNCTION=IF((DM(0409,0109)-10.0):
, -100.00*(DM(0409,0109)-10.0),0,0)
This SFORCE statement describes an action-reaction, compression-only force exerted on Marker 0409 by Marker 0109. The argument TRANSLATION designates a translational force, and the argument FUNCTION gives the free length (10.0), establishes that the force is active only in compression, and defines the force in terms of the displacement (DM) of the I marker with respect to the J marker.
In a second example, suppose you wish to model a translational spring that transmits a nonlinear, dissipative force between two parts of a mechanical system. Let the following equations represent the magnitude of the attracting force acting between the two connecting parts.
F= k0 + k1(x-1) + k2(x-1)2 + cx'
where k0 is a static preload, x is the instantaneous length of the translational spring, x' is the time derivative of x, l is the natural, unstretched spring length, k1 and k2 are stiffness coefficients, and c is a damping coefficient. This equation representing the force magnitude can be rewritten in the following polynomial format:
If k0 = -10.1, k1 = 15.2, k2 = 4.1, c = 1.5, and l = 3.142, then the Adams Solver (C++) statement that represents this translational spring acting between two parts containing Markers 12 and 34, respectively, appears as
SFORCE/123, I=12, J=34, TRANSLATION
, FUNCTION=-POLY(DM(12,34), 3.142, -10.1, 15.2, 4.1)
, VR(12,34) * 1.5
The DM function is used to calculate the instantaneous spring length x, the VR function is used to calculate x', and the POLY function is used to simplify the input and computation of the nondissipative portion of the force. Note that Adams Solver (C++) interprets the value of the FUNCTION argument as the magnitude of the repelling force between two markers; hence, a negative sign was prepended to the attracting force expression defined earlier.
See other
Forces available.