Archived OpenModelica forums. Posting is disabled.

Alternative forums include GitHub discussions or StackOverflow (make sure to read the Stack Overflow rules; you need to have well-formed questions)


Forgot password? | Forgot username? | Register

Solving Loops with Spherical Joints

Solving Loops with Spherical Joints

Hi,

i want to simulate arbitrary truss structures and want to determine which of the trusses form a structurally rigid group using Modelica.

In this example, I want to show that a triangle of spherical joints and trusses is fully stiff and stays in place. However currently, state selection fails:

https://i.imgur.com/l5MDt3y.png

Any hints (also on better debugging are) towards the solution and comments on the fundamental nature of the problem are appreciated.

Thanks a lot in advance.

Edited by: ramboldio - Dec-06-19 10:01:35

Re: Solving Loops with Spherical Joints

Code:

model balljointtest

  inner Modelica.Mechanics.MultiBody.World world(n = {0, 0, -1}) annotation(
    Placement(visible = true, transformation(origin = {-78, 18}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
  Modelica.Mechanics.MultiBody.Joints.Spherical spherical(angles_fixed = true, w_rel_a_fixed = true, z_rel_a_fixed = true)  annotation(
    Placement(visible = true, transformation(origin = {-46, 18}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
  Modelica.Mechanics.MultiBody.Parts.BodyCylinder bodyCylinder(a_0(fixed = false),angles_fixed = true, r = {0, 1, 1}, r_0(fixed = true), v_0(fixed = false), w_0_fixed = true, z_0_fixed = true)  annotation(
    Placement(visible = true, transformation(origin = {-16, 18}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
  Modelica.Mechanics.MultiBody.Joints.Spherical spherical1(angles_fixed = true, w_rel_a_fixed = true, z_rel_a_fixed = true) annotation(
    Placement(visible = true, transformation(origin = {20, 18}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
  Modelica.Mechanics.MultiBody.Parts.BodyCylinder bodyCylinder1(a_0(fixed = false), angles_fixed = true, r = {0, 0, -1}, r_0(fixed = true), v_0(fixed = false), w_0_fixed = true, z_0_fixed = true) annotation(
    Placement(visible = true, transformation(origin = {56, 18}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
  Modelica.Mechanics.MultiBody.Joints.Spherical spherical2(angles_fixed = true, w_rel_a_fixed = true, z_rel_a_fixed = true) annotation(
    Placement(visible = true, transformation(origin = {92, 18}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
  Modelica.Mechanics.MultiBody.Parts.BodyCylinder bodyCylinder2(a_0(fixed = false), angles_fixed = true, r = {0, -1, 0}, r_0(fixed = true), v_0(fixed = false), w_0_fixed = true, z_0_fixed = true) annotation(
    Placement(visible = true, transformation(origin = {124, 18}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
equation
  connect(world.frame_b, spherical.frame_a) annotation(
    Line(points = {{-68, 18}, {-56, 18}, {-56, 18}, {-56, 18}}));
  connect(spherical.frame_b, bodyCylinder.frame_a) annotation(
    Line(points = {{-36, 18}, {-26, 18}}, color = {95, 95, 95}));
  connect(bodyCylinder.frame_b, spherical1.frame_a) annotation(
    Line(points = {{-6, 18}, {10, 18}, {10, 18}, {10, 18}}));
  connect(spherical1.frame_b, bodyCylinder1.frame_a) annotation(
    Line(points = {{30, 18}, {46, 18}, {46, 18}, {46, 18}}, color = {95, 95, 95}));
  connect(bodyCylinder1.frame_b, spherical2.frame_a) annotation(
    Line(points = {{66, 18}, {82, 18}, {82, 18}, {82, 18}}, color = {95, 95, 95}));
  connect(spherical2.frame_b, bodyCylinder2.frame_a) annotation(
    Line(points = {{102, 18}, {112, 18}, {112, 18}, {114, 18}}, color = {95, 95, 95}));
  connect(bodyCylinder2.frame_b, world.frame_b) annotation(
    Line(points = {{134, 18}, {156, 18}, {156, 30}, {-62, 30}, {-62, 18}, {-68, 18}, {-68, 18}}, color = {95, 95, 95}));
  annotation(
    uses(Modelica(version = "3.2.2")));
end balljointtest;

There are 0 guests and 0 other users also viewing this topic
You are here: