Files
linguist/samples/Modelica/Pendulum.mo
2015-07-07 12:40:37 +02:00

48 lines
1.7 KiB
Plaintext

within ModelicaByExample.Subsystems.Pendula;
model Pendulum "A single individual pendulum"
import Modelica.Mechanics.MultiBody.Parts;
import Modelica.Mechanics.MultiBody.Joints;
parameter Modelica.SIunits.Position x;
parameter Modelica.SIunits.Mass m "Mass of mass point";
parameter Modelica.SIunits.Angle phi "Initial angle";
parameter Modelica.SIunits.Length L "String length";
parameter Modelica.SIunits.Diameter d=0.01;
Parts.Fixed ground(r={0,0,x}, animation=false)
annotation (Placement(
transformation(
extent={{-10,-10},{10,10}},
rotation=270, origin={0,60})));
Parts.PointMass ball(m=m, sphereDiameter=5*d)
annotation (Placement(transformation(extent={{-10,-90},{10,-70}})));
Parts.BodyCylinder string(density=0, r={0,L,0}, diameter=d)
annotation (Placement(transformation(
extent={{-10,-10},{10,10}},
rotation=90,
origin={0,-30})));
Joints.Revolute revolute(phi(fixed=true, start=phi),
cylinderDiameter=d/2, animation=false)
annotation (Placement(
transformation(
extent={{-10,-10},{10,10}},
rotation=90,
origin={0,20})));
equation
connect(string.frame_a, ball.frame_a) annotation (Line(
points={{0,-40},{0,-40},{0,-80}},
color={95,95,95},
thickness=0.5,
smooth=Smooth.None));
connect(revolute.frame_b, ground.frame_b) annotation (Line(
points={{0,30},{0,40},{0,40},{0,50}},
color={95,95,95},
thickness=0.5,
smooth=Smooth.None));
connect(revolute.frame_a, string.frame_b) annotation (Line(
points={{0,10},{0,10},{0,-20},{0,-20}},
color={95,95,95},
thickness=0.5,
smooth=Smooth.None));
end Pendulum;