Opened 8 years ago

Last modified 8 years ago

#4203 closed defect

Problem with matching and sorting when using functions with multiple outputs — at Version 1

Reported by: Francesco Casella Owned by: Lennart Ochel
Priority: critical Milestone: 1.11.0
Component: Backend Version:
Keywords: evalFunc Cc: Volker Waurich

Description (last modified by Francesco Casella)

When compiling the model Gazebo.Examples.TestSphere2PlaneModelica from the attached package, the following error is obtained

Model is structurally singular, error found sorting equations 
1: depth_b[1] = 0.0;
2: normals_a[1,3] = 1.0;
3: normals_a[1,2] = 0.0;
4: normals_a[1,1] = 0.0;
5: normals_b[1,3] = 1.0;
6: normals_b[1,2] = 0.0;
7: normals_b[1,1] = 0.0;
 for variables 
sphere2Plane.cp_a[1,1](20), sphere2Plane.cp_b[1,3](15), sphere2Plane.cp_b[1,2](16),
sphere.frame_interaction.t[2](23), sphere2Plane.cp_a[1,3](18), sphere2Plane.cp_a[1,2](19), 
sphere2Plane.numberOfContactPoints(21), sphere2Plane.t[3](1), sphere2Plane.t[2](2),
sphere2Plane.t[1](3), sphere2Plane.f[3](4), sphere2Plane.f[2](5),
sphere2Plane.f[1](6), sphere2Plane.normals_b[1,3](7)

First of all, I do not understand how OMC figures out those seven equations. Since the functions in the Gazebo.InteractionModels.Sphere2PlaneModelica model have both annotation(Inline = false), the compiler should see the result from the function call as a black box, and not try to do any fancy optimization.

Second, the 7 equations contain variable names depth_b, normal_a, normal_b which are actually not found in the global scope, but rather belong to the instance sphere2Plane.

I guess there's something badly wrong with how functions with multiple outputs are handled by the back-end.

The model runs smoothly with Dymola 2017.

Can you please have a look at that?

Change History (2)

by Francesco Casella, 8 years ago

Attachment: Gazebo.zip added

comment:1 by Francesco Casella, 8 years ago

Description: modified (diff)
Note: See TracTickets for help on using tickets.