LoadMassProportional
Load attached to MarkerBodyMass marker, applying a 3D vector load (e.g. the vector [0,-g,0] is used to apply gravitational loading of size g in negative y-direction).
Additional information for LoadMassProportional:
- Requested
Marker
type =Body
+BodyMass
- Short name for Python =
Gravity
- Short name for Python visualization object =
VGravity
The item LoadMassProportional with type = ‘MassProportional’ has the following parameters:
- name [type = String, default = ‘’]:load’s unique name
- markerNumber [type = MarkerIndex, default = invalid (-1)]:marker’s number to which load is applied
- loadVector [\({\mathbf{b}}\), type = Vector3D, default = [0.,0.,0.]]:vector-valued load [SI:N/kg = m/s\(^2\)]; typically, this will be the gravity vector in global coordinates; in case of a user function, this v is ignored
- loadVectorUserFunction [\(\mathrm{UF} \in \Rcal^3\), type = PyFunctionVector3DmbsScalarVector3D, default = 0]:A Python function which defines the time-dependent load; see description below; see also notes on loadFactor and drawing in LoadForceVector!
- visualization [type = VLoadMassProportional]:parameters for visualization of item
The item VLoadMassProportional has the following parameters:
- show [type = Bool, default = True]:set true, if item is shown in visualization and false if it is not shown
DESCRIPTION of LoadMassProportional
Details
The load applies a (translational) and distributed load proportional to the distributed body’s density.
The marker of type MarkerBodyMass
transforms the loadVector via an according jacobian matrix to object coordinates.
Userfunction: loadVectorUserFunction(mbs, t, loadVector)
A user function, which computes the mass proporitional load vector depending on time and object parameters, which is hereafter applied to object or node.
arguments / return
|
type or size
|
description
|
---|---|---|
mbs |
MainSystem
|
provides MainSystem mbs to which load belongs
|
t |
Real
|
current time in mbs
|
loadVector |
Vector3D
|
\({\mathbf{b}}\) copied from object; WARNING: this parameter does not work in combination with static computation, as it is changed by the solver over step time
|
returnValue
|
Vector3D
|
computed load vector
|
Example of user function: functionality same as in LoadForceVector
MINI EXAMPLE for LoadMassProportional
1node = mbs.AddNode(NodePoint(referenceCoordinates = [1,0,0]))
2body = mbs.AddObject(MassPoint(nodeNumber = node, physicsMass=2))
3mMass = mbs.AddMarker(MarkerBodyMass(bodyNumber=body))
4mbs.AddLoad(LoadMassProportional(markerNumber=mMass, loadVector=[0,0,-9.81]))
5
6#assemble and solve system for default parameters
7mbs.Assemble()
8mbs.SolveDynamic()
9
10#check result
11exudynTestGlobals.testResult = mbs.GetNodeOutput(node, exu.OutputVariableType.Position)[2]
12#final z-coordinate of position shall be -g/2 due to constant acceleration with g=-9.81
13#result independent of mass
Relevant Examples and TestModels with weblink:
CMSexampleCourse.py (Examples/), finiteSegmentMethod.py (Examples/), NGsolveCMStutorial.py (Examples/), NGsolvePostProcessingStresses.py (Examples/), ObjectFFRFconvergenceTestBeam.py (Examples/), ObjectFFRFconvergenceTestHinge.py (Examples/), pendulumGeomExactBeam2D.py (Examples/), pendulumVerify.py (Examples/), ALEANCFpipe.py (Examples/), ANCFmovingRigidbody.py (Examples/), ANCFslidingJoint2D.py (Examples/), ANCFslidingJoint2Drigid.py (Examples/), fourBarMechanismIftomm.py (TestModels/), genericJointUserFunctionTest.py (TestModels/), modelUnitTests.py (TestModels/)
The web version may not be complete. For details, consider also the Exudyn PDF documentation : theDoc.pdf