MultiBondLib.Mechanics3D.Forces

force elements

MultiBondLib.Mechanics3D.Forces.Damping MultiBondLib.Mechanics3D.Forces.Spring MultiBondLib.Mechanics3D.Forces.WorldForce MultiBondLib.Mechanics3D.Forces.WorldTorque MultiBondLib.Mechanics3D.Forces.SoftImpuls_SphereSphere

Information


This package contains force elements.
These elements cause a force to act on or between mechanical elements.

There are mainly three types of force elements:

Elements of this package do not create rigid connections and therefore do not close kinematic loops.

NameDescription
Damping linear damping element
Spring linear spring element
WorldForce world force acting on frame
WorldTorque world torque acting on frame
SoftImpuls_SphereSphere soft impact between two spheres


MultiBondLib.Mechanics3D.Forces.Damping MultiBondLib.Mechanics3D.Forces.Damping

linear damping element

MultiBondLib.Mechanics3D.Forces.Damping

Information


This is the model of a linear damper element.

The damper generates a counteracting force that is proportional to the relative velocity.

The damping coefficient can be set by the parameter d.


Parameters

NameDefaultDescription
d0Damping constant [N.s/m]

Modelica definition

model Damping "linear damping element" 
  parameter Real d(
    final unit="N.s/m",
    final min=0) = 0 "Damping constant";
  Interfaces.Frame_a frame_a;
  Interfaces.Frame_b frame_b;
  
  
protected 
  inner Defaults MBG_defaults(n=3);
  Interfaces.Mech2MBG Mech2MBG1;
  Interfaces.MBG2Mech MBG2Mech1;
  Junctions.J0 J0_1(n=3);
  Passive.R R1(R={d}, n=3);
  Junctions.J0 J0_2(n=3);
  Sources.Se Se1(n=3, e0={0});
  Bonds.MultiBond MultiBond8;
  Bonds.MultiBond MultiBond3;
  Bonds.MultiBond MultiBond1;
  Bonds.MultiBond MultiBond2;
  Bonds.MultiBond MultiBond4;
  Bonds.MultiBond MultiBond5;
  Bonds.Utilities.MultiBondTail MultiBondTail2;
  Bonds.Utilities.MultiBondTail MultiBondTail1;
  Bonds.Utilities.MultiBondTail MultiBondTail3;
  Bonds.Utilities.MultiBondTail MultiBondTail4;
  
equation 
  connect(Mech2MBG1.frame_a, frame_a);
  connect(MultiBond1.MultiBondCon2, J0_1.MultiBondCon1);
  connect(MultiBond4.MultiBondCon2,J0_2. MultiBondCon1);
  connect(MultiBond8.MultiBondCon2, J0_2.MultiBondCon3);
  connect(MultiBond8.MultiBondCon1, Se1.MultiBondCon1);
  connect(MultiBond5.MultiBondCon2, J0_2.MultiBondCon2);
  connect(J0_1.MultiBondCon2, MultiBond2.MultiBondCon2);
  connect(MBG2Mech1.frame_b, frame_b);
  connect(MultiBond3.MultiBondCon1, J0_1.MultiBondCon4);
  connect(R1.MultiBondCon1, MultiBond3.MultiBondCon2);
  connect(MultiBond4.MultiBondCon1, Mech2MBG1.MultiBondConRot);
  connect(MultiBond5.MultiBondCon1, MBG2Mech1.MultiBondConRot);
  connect(MultiBond2.MultiBondCon1, MBG2Mech1.MultiBondConTrans);
  connect(MultiBond1.MultiBondCon1, Mech2MBG1.MultiBondConTrans);
end Damping;

MultiBondLib.Mechanics3D.Forces.Spring MultiBondLib.Mechanics3D.Forces.Spring

linear spring element

MultiBondLib.Mechanics3D.Forces.Spring

Information


This is the model of a linear spring.

The spring generates a counteracting force that is linear dependent on the positional shift.

The spring coefficient can be set by the parameter c. The rest lenght can be specified by the parameter s0.

A spring with a rest length s0 unequal to zero, has a stiff behavior if its length is approaching zero. The parameter s_small in the advanced menu reduces this stiffness for spring lengths ranging from zero up to s_small.

Visualization

This element is visualized by a coil. Further specifications can be made by the parameters in the animation group.

Parameters

NameDefaultDescription
animationtrueanimate spring
c0Spring constant [N/m]
s00rest length of spring [m]
Advanced
s_small1e-4critical Spring length [m]
Animation
if animation = true
widthworld3D.defaultForceWidth Width of spring [m]
coilWidthwidth/5 Width of spring coil [m]
numberOfWindings5 Number of spring windings
colorworld3D.defaultForceElementC... Color of spring

Modelica definition

model Spring "linear spring element" 
  import SI = Modelica.SIunits;
  import MB = Modelica.Mechanics.MultiBody;
  
  Interfaces.Frame_a frame_a;
  Interfaces.Frame_b frame_b;
  
  parameter Boolean animation = true "animate spring";
  
  parameter Real c(
    final unit="N/m",
    final min=0) = 0 "Spring constant";
  
  parameter SI.Position s0 = 0 "rest length of spring";
  parameter SI.Position s_small = 1e-4 "|Advanced||critical Spring length";
  
  parameter SI.Distance width= world3D.defaultForceWidth 
    "|Animation|if animation = true| Width of spring";
  parameter SI.Distance coilWidth=width/5 
    "|Animation|if animation = true| Width of spring coil";
  parameter Integer numberOfWindings=5 
    "|Animation|if animation = true| Number of spring windings";
  parameter MB.Types.Color color= world3D.defaultForceElementColor 
    "|Animation|if animation = true| Color of spring";
  
  SI.Distance s;
  SI.Distance d[3];
  SI.Force f[3];
  
protected 
  outer World3D world3D;
  inner Defaults MBG_defaults(n=3);
  
  Interfaces.MBG2Mech MBG2Mech1;
  Interfaces.Mech2MBG Mech2MBG1;
  
  Junctions.J0 J0_1(n=3);
  Junctions.J0 J0_2(n=3);
  Sources.Se Se1(n=3, e0={0});
  Sources.mSe mSe1(n=3);
  Bonds.MultiBond MultiBond8;
  Bonds.MultiBond MultiBond3;
  Bonds.MultiBond MultiBond1;
  Bonds.MultiBond MultiBond2;
  Bonds.MultiBond MultiBond4;
  Bonds.MultiBond MultiBond5;
  Bonds.Utilities.MultiBondTail MultiBondTail2;
  Bonds.Utilities.MultiBondTail MultiBondTail1;
  Bonds.Utilities.MultiBondTail MultiBondTail3;
  Bonds.Utilities.MultiBondTail MultiBondTail4;
  
  parameter Integer ndim=if world3D.enableAnimation and animation then 1 else 0;
  MB.Visualizers.Advanced.Shape springShape[ndim](
    each shapeType="spring",
    each color=color,
    each length=s,
    each width=width,
    each height=coilWidth,
    each lengthDirection=d,
    each widthDirection={0,0,1},
    each r_shape={0,0,0},
    each r=MBG2Mech1.x,
    each extra=numberOfWindings,
    each R=MB.Frames.Orientation(T=identity(3),w=zeros(3)));
  
equation 
  d = Mech2MBG1.x - MBG2Mech1.x;
  s = sqrt(d*d);
  f = if s >= s_small then c*d - s0*c*(d/s) else c*d - s0*c*(d/s_small);
  mSe1.s = f;
  
  connect(Mech2MBG1.frame_a, frame_a);
  connect(MBG2Mech1.frame_b, frame_b);
  connect(MultiBond1.MultiBondCon2, J0_1.MultiBondCon1);
  connect(MultiBond4.MultiBondCon2,J0_2. MultiBondCon1);
  connect(MultiBond5.MultiBondCon2, J0_2.MultiBondCon2);
  connect(MultiBond3.MultiBondCon2, J0_1.MultiBondCon4);
  connect(mSe1.MultiBondCon1, MultiBond3.MultiBondCon1);
  connect(MultiBond1.MultiBondCon1, Mech2MBG1.MultiBondConTrans);
  connect(MultiBond8.MultiBondCon2, J0_2.MultiBondCon3);
  connect(Se1.MultiBondCon1, MultiBond8.MultiBondCon1);
  connect(MultiBond5.MultiBondCon1, MBG2Mech1.MultiBondConRot);
  connect(MultiBond4.MultiBondCon1, Mech2MBG1.MultiBondConRot);
  connect(MultiBond2.MultiBondCon2, MBG2Mech1.MultiBondConTrans);
  connect(MultiBond2.MultiBondCon1, J0_1.MultiBondCon2);
end Spring;

MultiBondLib.Mechanics3D.Forces.WorldForce MultiBondLib.Mechanics3D.Forces.WorldForce

world force acting on frame

MultiBondLib.Mechanics3D.Forces.WorldForce

Information


This element applies a constanst artificially generated force on the connector.

The force is resolved in the inertial system


Parameters

NameDefaultDescription
f[3]{1,0,0}world force [N]

Modelica definition

model WorldForce "world force acting on frame" 
  import SI = Modelica.SIunits;
  import MB = Modelica.Mechanics.MultiBody;
  
  Interfaces.Frame_b frame_b;
  
  parameter SI.Force f[3] = {1,0,0} "world force";
  
protected 
  outer World3D world3D;
  inner Defaults MBG_defaults(n=3);
  
  Interfaces.MBG2Mech MBG2Mech1;
  
  Bonds.MultiBond MultiBond1;
  
  Sources.Se Se1(n=3, e0=f);
  
  Sources.Se Se2(n=3, e0={0});
  Bonds.MultiBond MultiBond4;
equation 
  
  connect(MBG2Mech1.frame_b, frame_b);
  connect(MultiBond1.MultiBondCon2, MBG2Mech1.MultiBondConRot);
  connect(Se2.MultiBondCon1, MultiBond1.MultiBondCon1);
  connect(MultiBond4.MultiBondCon2, MBG2Mech1.MultiBondConTrans);
  connect(Se1.MultiBondCon1, MultiBond4.MultiBondCon1);
end WorldForce;

MultiBondLib.Mechanics3D.Forces.WorldTorque MultiBondLib.Mechanics3D.Forces.WorldTorque

world torque acting on frame

MultiBondLib.Mechanics3D.Forces.WorldTorque

Information


This element applies a constanst artificially generated torque on the connector.

The torque is resolved in the inertial system


Parameters

NameDefaultDescription
t[3]{1,0,0}world force [N.m]

Modelica definition

model WorldTorque "world torque acting on frame" 
  import SI = Modelica.SIunits;
  import MB = Modelica.Mechanics.MultiBody;
  
  Interfaces.Frame_b frame_b;
  
  parameter SI.Torque t[3] = {1,0,0} "world force";
  
protected 
  outer World3D world3D;
  inner Defaults MBG_defaults(n=3);
  Interfaces.MBG2Mech MBG2Mech1;
  Bonds.MultiBond MultiBond1;
  Sources.Se Se1(e0={0});
  Sources.Se Se2(n=3, e0=t);
  Bonds.MultiBond MultiBond4;
  Passive.mTF_effort mTF_effort1;
  Bonds.MultiBond MultiBond2;
  
equation 
  connect(MBG2Mech1.frame_b, frame_b);
  connect(Se2.MultiBondCon1, MultiBond1.MultiBondCon1);
  connect(MultiBond4.MultiBondCon2, MBG2Mech1.MultiBondConTrans);
  connect(Se1.MultiBondCon1, MultiBond4.MultiBondCon1);
  connect(MultiBond2.MultiBondCon2, MBG2Mech1.MultiBondConRot);
  connect(mTF_effort1.MultiBondCon2, MultiBond2.MultiBondCon1);
  connect(mTF_effort1.MultiBondCon1, MultiBond1.MultiBondCon2);
  connect(mTF_effort1.M, MBG2Mech1.R);
end WorldTorque;

MultiBondLib.Mechanics3D.Forces.SoftImpuls_SphereSphere MultiBondLib.Mechanics3D.Forces.SoftImpuls_SphereSphere

soft impact between two spheres

MultiBondLib.Mechanics3D.Forces.SoftImpuls_SphereSphere

Information


This element models the soft collision between two spheres.

The spheres are supposed to suround the two connector with the radii ra and rb.

The collision characteristics can be specified by the coefficients of the virtual spring and damper.


Parameters

NameDefaultDescription
c0Spring constant [N/m]
d0Damping constant [N.s/m]
ra1radius of sphere at frame a [m]
rb1radius of sphere at frame b [m]
Advanced
s_small1e-4critical Spring length [m]

Modelica definition

model SoftImpuls_SphereSphere "soft impact between two spheres" 
  import SI = Modelica.SIunits;
  import MB = Modelica.Mechanics.MultiBody;
  
  Interfaces.Frame_a frame_a;
  Interfaces.Frame_b frame_b;
  
  parameter Real c(
    final unit="N/m",
    final min=0) = 0 "Spring constant";
  
  parameter Real d(
    final unit="N.s/m",
    final min=0) = 0 "Damping constant";
  
  parameter SI.Radius ra = 1 "radius of sphere at frame a";
  parameter SI.Radius rb = 1 "radius of sphere at frame b";
  
  parameter SI.Position s_small = 1e-4 "|Advanced||critical Spring length";
  
//  parameter Real muR "friction coefficient";
//  parameter SI.Velocity vAdhesion "range of Adhesion";
  
  SI.Distance s;
  SI.Distance r[3];
  Real eR[3];
  SI.Force fI[3];
//  SI.Force fR[3];
//  SI.Velocity deltaV[3];
//  SI.Velocity vR[3];
  
  
protected 
  outer World3D world3D;
protected 
  inner Defaults MBG_defaults(n=3);
  
protected 
  Interfaces.MBG2Mech MBG2Mech1;
  Interfaces.Mech2MBG Mech2MBG1;
  
protected 
  Junctions.J0 J0_1(n=3);
  Junctions.J0 J0_2(n=3);
  Sources.Se Se1(n=3, e0={0});
  Sources.mSe mSe1(n=3);
  Bonds.MultiBond MultiBond8;
  Bonds.MultiBond MultiBond3;
  Bonds.MultiBond MultiBond1;
  Bonds.MultiBond MultiBond2;
  Bonds.MultiBond MultiBond4;
  Bonds.MultiBond MultiBond5;
  Bonds.Utilities.MultiBondTail MultiBondTail2;
  Bonds.Utilities.MultiBondTail MultiBondTail1;
  Bonds.Utilities.MultiBondTail MultiBondTail3;
  Bonds.Utilities.MultiBondTail MultiBondTail4;
  
equation 
  r = Mech2MBG1.x - MBG2Mech1.x;
  s = sqrt(r*r);
  eR = if s >= s_small then r/s else r/s_small;
  fI = if (s-ra-rb) < 0 then c*(s-ra-rb)*eR else zeros(3);
//  deltaV = Mech2MBG1.MultiBondConTrans.f - MBG2Mech1.MultiBondConTrans.f;
//  vR = deltaV - eR*(deltaV*eR);
//  fR = if sqrt(vR*vR) > vAdhesion then sqrt(fI*fI)*muR*vR/sqrt(vR*vR) else 
//            sqrt(fI*fI)*muR*(vR/vAdhesion);
//  mSe1.s = fI+fR;
  mSe1.s = fI;
  
  connect(Mech2MBG1.frame_a, frame_a);
  connect(MBG2Mech1.frame_b, frame_b);
  connect(MultiBond1.MultiBondCon2, J0_1.MultiBondCon1);
  connect(MultiBond4.MultiBondCon2,J0_2. MultiBondCon1);
  connect(MultiBond5.MultiBondCon2, J0_2.MultiBondCon2);
  connect(MultiBond3.MultiBondCon2, J0_1.MultiBondCon4);
  connect(mSe1.MultiBondCon1, MultiBond3.MultiBondCon1);
  connect(MultiBond1.MultiBondCon1, Mech2MBG1.MultiBondConTrans);
  connect(MultiBond8.MultiBondCon2, J0_2.MultiBondCon3);
  connect(Se1.MultiBondCon1, MultiBond8.MultiBondCon1);
  connect(MultiBond5.MultiBondCon1, MBG2Mech1.MultiBondConRot);
  connect(MultiBond4.MultiBondCon1, Mech2MBG1.MultiBondConRot);
  connect(MultiBond2.MultiBondCon2, MBG2Mech1.MultiBondConTrans);
  connect(MultiBond2.MultiBondCon1, J0_1.MultiBondCon2);
end SoftImpuls_SphereSphere;

HTML-documentation generated by Dymola Thu Feb 23 12:19:45 2006.